Browse Source

Update ocaml

master
Taylor Bockman 2 years ago
parent
commit
2ff9744f17
  1. 109
      dotfiles/zsh/scripts/cgen.sh
  2. 16
      dotfiles/zsh/scripts/cgen_etc/clang_format_template
  3. 97
      dotfiles/zsh/scripts/cgen_etc/gitignore_template
  4. 16
      dotfiles/zsh/zshrc

109
dotfiles/zsh/scripts/cgen.sh

@ -0,0 +1,109 @@
#! /usr/bin/env bash
name=$1
cmake_version=$2
c_standard=$3
# Finds the directory of this script
if [[ "$OS_TYPE" == "linux-gnu" ]]; then
script_dir=$(cd "$( dirname "`readlink -f ${BASH_SOURCE[0]}`")" && pwd)
else
script_dir=$(cd "$( dirname "`greadlink -f ${BASH_SOURCE[0]}`")" && pwd)
fi
if [ -z $name ]
then
echo "Name must be specified"
echo ""
echo "./cgen.sh <name> [cmake version] [C Standard]"
exit -1
fi
if [ -z $cmake_version ]
then
echo "No CMake version supplied...defaulting to 3.15"
cmake_version="3.15"
fi
if [ -z $c_standard ]
then
echo "No C Standard supplied...defaulting to 11"
c_standard="11"
fi
mkdir $name
mkdir $name/src
mkdir $name/include
cmake_config=$name/CMakeLists.txt
touch $cmake_config
echo "cmake_minimum_required(VERSION $cmake_version)" >> $cmake_config
echo "project($name)" >> $cmake_config
echo "" >> $cmake_config
echo "set (CMAKE_C_STANDARD $c_standard)" >> $cmake_config
echo "" >> $cmake_config
echo "# Output to bin and lib" >> $cmake_config
echo "set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY \${CMAKE_BINARY_DIR}/lib)" >> $cmake_config
echo "set(CMAKE_LIBRARY_OUTPUT_DIRECTORY \${CMAKE_BINARY_DIR}/lib)" >> $cmake_config
echo "set(CMAKE_RUNTIME_OUTPUT_DIRECTORY \${CMAKE_BINARY_DIR}/bin)" >> $cmake_config
echo "" >> $cmake_config
echo "" >> $cmake_config
echo "# The following lines enable compile_commands.json and dump it in the root of the project" >> $cmake_config
echo "# This is needed for clangd and lsp to work" >> $cmake_config
echo "" >> $cmake_config
echo "set(CMAKE_EXPORT_COMPILE_COMMANDS ON)" >> $cmake_config
echo "" >> $cmake_config
echo "if(EXISTS \"\${CMAKE_CURRENT_BINARY_DIR}/compile_commands.json\")" >> $cmake_config
echo " execute_process(COMMAND \${CMAKE_COMMAND} -E copy_if_different" >> $cmake_config
echo " \${CMAKE_CURRENT_BINARY_DIR}/compile_commands.json" >> $cmake_config
echo " \${CMAKE_CURRENT_SOURCE_DIR}/compile_commands.json" >> $cmake_config
echo " )" >> $cmake_config
echo "endif()" >> $cmake_config
echo "#-------- END COMPILE_COMMANDS.JSON SECTION --------#" >> $cmake_config
echo "" >> $cmake_config
echo "" >> $cmake_config
echo "file(GLOB SOURCE \${PROJECT_SOURCE_DIR}/src/*.c)" >> $cmake_config
echo "file(GLOB INCLUDE \${PROJECT_SOURCE_DIR}/include/*.h)" >> $cmake_config
echo "" >> $cmake_config
echo "" >> $cmake_config
echo "include_directories(\${PROJECT_SOURCE_DIR}/include)" >> $cmake_config
echo "" >> $cmake_config
echo "" >> $cmake_config
echo "# Controls debug printing based on the compiled binary mode - check with #ifdef DEBUG_BUILD" >> $cmake_config
echo "IF(CMAKE_BUILD_TYPE MATCHES DEBUG)" >> $cmake_config
echo "message(\"-- Configuring debug build...\")" >> $cmake_config
echo "add_compile_definitions(DEBUG_BUILD)" >> $cmake_config
echo "ENDIF(CMAKE_BUILD_TYPE MATCHES DEBUG)" >> $cmake_config
echo "" >> $cmake_config
echo "add_executable(\${PROJECT_NAME} \${SOURCE} \${INCLUDE})" >> $cmake_config
echo "Copying .clang-format..."
cp $script_dir/cgen_etc/clang_format_template $name/.clang-format
echo "Copying .gitignore..."
cp $script_dir/cgen_etc/gitignore_template $name/.gitignore
sample_file=$name/src/main.c
echo "#include <stdio.h>" >> $sample_file
echo "" >> $sample_file
echo "" >> $sample_file
echo "int main(int argc, char **argv)" >> $sample_file
echo "{" >> $sample_file
echo " printf(\"Hello, world!\\n\");" >> $sample_file
echo " return 0;" >> $sample_file
echo "}" >> $sample_file
echo "" >> $sample_file
git --version 2>&1 >/dev/null
GIT_IS_AVAILABLE=$?
if [ $GIT_IS_AVAILABLE -eq 0 ]
then
git init $name
fi
echo "Created project $name."

16
dotfiles/zsh/scripts/cgen_etc/clang_format_template

@ -0,0 +1,16 @@
AlignAfterOpenBracket: Align
AlignConsecutiveMacros: 'true'
AlignConsecutiveAssignments: 'true'
AlignConsecutiveDeclarations: 'true'
AlignTrailingComments: 'true'
BreakBeforeBraces: Allman
IndentCaseLabels: 'true'
IndentWidth: '4'
Language: Cpp
PointerAlignment: Right
SortIncludes: 'true'
SpaceBeforeParens: ControlStatements
SpaceBeforeRangeBasedForLoopColon: 'true'
SpaceInEmptyParentheses: 'false'
UseTab: Never
ColumnLimit: 80

97
dotfiles/zsh/scripts/cgen_etc/gitignore_template

@ -0,0 +1,97 @@
# Prerequisites
*.d
# Object files
*.o
*.ko
*.obj
*.elf
# Linker output
*.ilk
*.map
*.exp
# Precompiled Headers
*.gch
*.pch
# Libraries
*.lib
*.a
*.la
*.lo
# Shared objects (inc. Windows DLLs)
*.dll
*.so
*.so.*
*.dylib
# Executables
*.exe
*.out
*.app
*.i*86
*.x86_64
*.hex
# Debug files
*.dSYM/
*.su
*.idb
*.pdb
# Kernel Module Compile Results
*.mod*
*.cmd
.tmp_versions/
modules.order
Module.symvers
Mkfile.old
dkms.conf
# VSCode
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
*.code-workspace
# Vim
# Swap
[._]*.s[a-v][a-z]
!*.svg # comment out if you don't need vector files
[._]*.sw[a-p]
[._]s[a-rt-v][a-z]
[._]ss[a-gi-z]
[._]sw[a-p]
# Session
Session.vim
Sessionx.vim
# Temporary
.netrwhist
*~
# Auto-generated tag files
tags
# Persistent undo
[._]*.un~
# CMake
CMakeLists.txt.user
CMakeCache.txt
CMakeFiles
CMakeScripts
Testing
Makefile
cmake_install.cmake
install_manifest.txt
compile_commands.json
CTestTestfile.cmake
_deps

16
dotfiles/zsh/zshrc

@ -44,11 +44,6 @@ if [[ -x go ]]; then
mkdir -p $HOME/.go mkdir -p $HOME/.go
fi fi
test -r /home/vm/.opam/opam-init/init.sh && . /home/vm/.opam/opam-init/init.sh > /dev/null 2> /dev/null || true
if [ -f "$HOME/.cargo/env" ]; then
. "$HOME/.cargo/env"
fi
# Install zsh completion in ~/.zsh if it doesn't exist # Install zsh completion in ~/.zsh if it doesn't exist
if [[ ! -d $HOME/.zsh ]]; then if [[ ! -d $HOME/.zsh ]]; then
@ -99,3 +94,14 @@ source $HOME/.zsh/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
# Created by `userpath` on 2022-09-05 23:32:41 # Created by `userpath` on 2022-09-05 23:32:41
export PATH="$PATH:$HOME/.local/bin" export PATH="$PATH:$HOME/.local/bin"
# ghcup config - Haskell
[ -f "/home/taylor/.ghcup/env" ] && source "/home/taylor/.ghcup/env" # ghcup-env
# Ocaml
test -r $HOME/.opam/opam-init/init.sh && . $HOME/.opam/opam-init/init.sh > /dev/null 2> /dev/null || true
# Rust
if [ -f "$HOME/.cargo/env" ]; then
. "$HOME/.cargo/env"
fi

Loading…
Cancel
Save