diff --git a/call_task.sh b/call_task.sh new file mode 100644 index 0000000..2077b40 --- /dev/null +++ b/call_task.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +tabs 4 +TASK=$1 +print "${CYAN}===========[$TASK]===========\n" +source cbuild/init.sh + +#pre_build +clear_dir $OBJDIR +clear_dir $OUTDIR +if [ -f "$PRE_BUILD_SCRIPT" ]; then + print "${BLUE}executing $PRE_BUILD_SCRIPT" + source "$PRE_BUILD_SCRIPT" +fi + +./$TASK_SCRIPT diff --git a/default.Makefile b/default.Makefile index c00ea21..c61ed41 100644 --- a/default.Makefile +++ b/default.Makefile @@ -1,24 +1,24 @@ ###### Build cbuild/default_tasks ####### build_exec: - @cbuild/default_tasks/build_exec.sh + @cbuild/call_task.sh build_exec build_exec_dbg: - @cbuild/default_tasks/build_exec_dbg.sh + @cbuild/call_task.sh build_exec_dbg build_shared_lib: - @cbuild/default_tasks/build_shared_lib.sh + @cbuild/call_task.sh build_shared_lib build_shared_lib_dbg: - @cbuild/default_tasks/build_shared_lib_dbg.sh + @cbuild/call_task.sh build_shared_lib_dbg build_static_lib: - @cbuild/default_tasks/build_static_lib.sh + @cbuild/call_task.sh build_static_lib build_static_lib_dbg: - @cbuild/default_tasks/build_static_lib_dbg.sh + @cbuild/call_task.sh build_static_lib_dbg ###### Launch cbuild/default_tasks ####### exec: build_exec - @cbuild/default_tasks/exec.sh + @cbuild/call_task.sh exec valgrind: build_exec_dbg - @cbuild/default_tasks/valgrind.sh + @cbuild/call_task.sh valgrind all: build_exec diff --git a/default.config.sh b/default.config.sh index 2a2e095..bc75879 100644 --- a/default.config.sh +++ b/default.config.sh @@ -1,8 +1,6 @@ #!/bin/bash PROJECT=some_project -OUTDIR=bin -OBJDIR=obj CMP_C=gcc CMP_CPP=g++ STD_C=c11 @@ -13,34 +11,55 @@ SRC_C="$( find src -name '*.c')" SRC_CPP="$( find src -name '*.cpp')" TESTS_C="$( find tests -name '*.c')" TESTS_CPP="$(find tests -name '*.cpp')" -VALGRIND_ARGS="-s --log-file=valgrind.log --read-var-info=yes --track-origins=yes --fullpath-after=$PROJECT/ --leak-check=full --show-leak-kinds=all" + +OUTDIR=bin +OBJDIR=obj +EXEC_FILE=$PROJECT.com +SHARED_LIB_FILE=$PROJECT.so +STATIC_LIB_FILE=$PROJECT.a PRE_BUILD_SCRIPT=tasks/pre_build.sh -# build_exec -EXEC_FILE=$PROJECT.com -BUILD_EXEC_C_ARGS="-O2" -BUILD_EXEC_CPP_ARGS="$BUILD_EXEC_C_ARGS" -BUILD_EXEC_LINKER_ARGS="" -# build_exec_dbg -BUILD_EXEC_DBG_C_ARGS="-O0 -g" -BUILD_EXEC_DBG_CPP_ARGS="$BUILD_EXEC_DBG_C_ARGS" -BUILD_EXEC_DBG_LINKER_ARGS="" - -# build_shared_lib -SHARED_LIB_FILE=$PROJECT.so -BUILD_SHARED_LIB_C_ARGS="-O2 -fpic -flto -shared" -BUILD_SHARED_LIB_CPP_ARGS="$BUILD_SHARED_LIB_C_ARGS" -BUILD_SHARED_LIB_LINKER_ARGS="-Wl,-soname,$SHARED_LIB_FILE" -# build_shared_lib_dbg -BUILD_SHARED_LIB_DBG_C_ARGS="-O0 -g -fpic -shared" -BUILD_SHARED_LIB_DBG_CPP_ARGS="$BUILD_SHARED_LIB_C_ARGS" -BUILD_SHARED_LIB_DBG_LINKER_ARGS="-Wl,-soname,$SHARED_LIB_FILE" - -# build_static_lib -STATIC_LIB_FILE=$PROJECT.a -BUILD_STATIC_LIB_C_ARGS="-O2 -fpic" -BUILD_STATIC_LIB_CPP_ARGS="$BUILD_STATIC_LIB_C_ARGS" -# build_static_lib_dbg -BUILD_STATIC_LIB_DBG_C_ARGS="-O0 -g" -BUILD_STATIC_LIB_DBG_CPP_ARGS="$BUILD_STATIC_LIB_DBG_C_ARGS" +case $TASK in + build_exec) + C_ARGS="-O2" + CPP_ARGS="$C_ARGS" + LINKER_ARGS="" + TASK_SCRIPT="cbuild/build_exec.sh" + ;; + build_exec_dbg) + C_ARGS="-O0 -g" + CPP_ARGS="$C_ARGS" + LINKER_ARGS="" + TASK_SCRIPT="cbuild/build_exec.sh" + ;; + build_shared_lib) + C_ARGS="-O2 -fpic -flto -shared" + CPP_ARGS="$C_ARGS" + LINKER_ARGS="-Wl,-soname,$SHARED_LIB_FILE" + TASK_SCRIPT="cbuild/build_shared_lib.sh" + ;; + build_shared_lib_dbg + C_ARGS="-O0 -g -fpic -shared" + CPP_ARGS="$C_ARGS" + LINKER_ARGS="-Wl,-soname,$SHARED_LIB_FILE" + TASK_SCRIPT="cbuild/build_shared_lib.sh" + ;; + build_static_lib) + C_ARGS="-O2 -fpic" + CPP_ARGS="$C_ARGS" + TASK_SCRIPT="cbuild/build_static_lib.sh" + ;; + build_static_lib_dbg) + C_ARGS="-O0 -g" + CPP_ARGS="$C_ARGS" + TASK_SCRIPT="cbuild/build_static_lib.sh" + ;; + exec) + TASK_SCRIPT="cbuild/exec.sh" + ;; + valgrind) + VALGRIND_ARGS="-s --log-file=valgrind.log --read-var-info=yes --track-origins=yes --fullpath-after=$PROJECT/ --leak-check=full --show-leak-kinds=all" + TASK_SCRIPT="cbuild/valgrind.sh" + ;; +esac diff --git a/default_tasks/build_exec.sh b/default_tasks/build_exec.sh index 69945a6..2df894e 100644 --- a/default_tasks/build_exec.sh +++ b/default_tasks/build_exec.sh @@ -1,8 +1,5 @@ #!/bin/bash -source cbuild/init.sh - -print "${CYAN}=============[build_exec]=============\n" -compile_c "$BUILD_EXEC_C_ARGS" "$SRC_C $TESTS_C" -compile_cpp "$BUILD_EXEC_CPP_ARGS" "$SRC_CPP $TESTS_CPP" -link "$BUILD_EXEC_CPP_ARGS $BUILD_EXEC_LINKER_ARGS" "$EXEC_FILE" +compile_c "$C_ARGS" "$SRC_C $TESTS_C" +compile_cpp "$CPP_ARGS" "$SRC_CPP $TESTS_CPP" +link "$CPP_ARGS $LINKER_ARGS" "$EXEC_FILE" diff --git a/default_tasks/build_exec_dbg.sh b/default_tasks/build_exec_dbg.sh deleted file mode 100644 index ac123de..0000000 --- a/default_tasks/build_exec_dbg.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash - -source cbuild/init.sh - -print "${CYAN}===========[build_exec_dbg]===========\n" -compile_c "$BUILD_EXEC_DBG_C_ARGS" "$SRC_C $TESTS_C" -compile_cpp "$BUILD_EXEC_DBG_CPP_ARGS" "$SRC_CPP $TESTS_CPP" -link "$BUILD_EXEC_DBG_CPP_ARGS $BUILD_EXEC_DBG_LINKER_ARGS" "$EXEC_FILE" diff --git a/default_tasks/build_shared_lib.sh b/default_tasks/build_shared_lib.sh index 8f8ab75..91ee693 100644 --- a/default_tasks/build_shared_lib.sh +++ b/default_tasks/build_shared_lib.sh @@ -1,8 +1,5 @@ #!/bin/bash -source cbuild/init.sh - -print "${CYAN}==========[build_shared_lib]==========\n" -compile_c "$BUILD_SHARED_LIB_C_ARGS" "$SRC_C" -compile_cpp "$BUILD_SHARED_LIB_CPP_ARGS" "$SRC_CPP" -link "$BUILD_SHARED_LIB_CPP_ARGS $BUILD_SHARED_LIB_LINKER_ARGS" "$SHARED_LIB_FILE" +compile_c "$C_ARGS" "$SRC_C" +compile_cpp "$CPP_ARGS" "$SRC_CPP" +link "$CPP_ARGS $LINKER_ARGS" "$SHARED_LIB_FILE" diff --git a/default_tasks/build_shared_lib_dbg.sh b/default_tasks/build_shared_lib_dbg.sh deleted file mode 100644 index 1b05a2b..0000000 --- a/default_tasks/build_shared_lib_dbg.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash - -source cbuild/init.sh - -print "${CYAN}========[build_shared_lib_dbg]========\n" -compile_c "$BUILD_SHARED_LIB_DBG_C_ARGS" "$SRC_C" -compile_cpp "$BUILD_SHARED_LIB_DBG_CPP_ARGS" "$SRC_CPP" -link "$BUILD_SHARED_LIB_DBG_CPP_ARGS $BUILD_SHARED_LIB_DBG_LINKER_ARGS" "$SHARED_LIB_FILE" diff --git a/default_tasks/build_static_lib.sh b/default_tasks/build_static_lib.sh index 225ea63..dbe768f 100644 --- a/default_tasks/build_static_lib.sh +++ b/default_tasks/build_static_lib.sh @@ -1,8 +1,5 @@ #!/bin/bash -source cbuild/init.sh - -print "${CYAN}==========[build_static_lib]==========\n" -compile_c "$BUILD_STATIC_LIB_C_ARGS" "$SRC_C" -compile_cpp "$BUILD_STATIC_LIB_CPP_ARGS" "$SRC_CPP" +compile_c "$C_ARGS" "$SRC_C" +compile_cpp "$CPP_ARGS" "$SRC_CPP" pack_static_lib "$STATIC_LIB_FILE" diff --git a/default_tasks/build_static_lib_dbg.sh b/default_tasks/build_static_lib_dbg.sh deleted file mode 100644 index 433c0ff..0000000 --- a/default_tasks/build_static_lib_dbg.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash - -source cbuild/init.sh - -print "${CYAN}==========[build_static_lib_dbg]==========\n" -compile_c "$BUILD_STATIC_LIB_DBG_C_ARGS" "$SRC_C" -compile_cpp "$BUILD_STATIC_LIB_DBG_CPP_ARGS" "$SRC_CPP" -pack_static_lib "$STATIC_LIB_FILE" diff --git a/default_tasks/exec.sh b/default_tasks/exec.sh index 0e56438..d638b1a 100644 --- a/default_tasks/exec.sh +++ b/default_tasks/exec.sh @@ -1,8 +1,5 @@ #!/bin/bash -source cbuild/init.sh - -print "${CYAN}================[exec]================\n" cd $OUTDIR ./$EXEC_FILE cd .. diff --git a/default_tasks/valgrind.sh b/default_tasks/valgrind.sh index aa34a2d..b01ef46 100644 --- a/default_tasks/valgrind.sh +++ b/default_tasks/valgrind.sh @@ -1,8 +1,5 @@ #!/bin/bash -source cbuild/init.sh - -print "${CYAN}==============[valgrind]==============\n" cd $OUTDIR valgrind $VALGRIND_ARGS ./$EXEC_FILE cat "valgrind.log" diff --git a/init.sh b/init.sh index b2c9921..9cac2a0 100644 --- a/init.sh +++ b/init.sh @@ -1,7 +1,5 @@ #!/bin/bash -tabs 4 - source cbuild/colors.sh source cbuild/functions.sh @@ -16,14 +14,4 @@ if [ ! -f ".config" ]; then print "${YELLOW}Default config created.\nEdit it's values.\n" exit fi - source .config - -clear_dir $OBJDIR -clear_dir $OUTDIR - -#pre_build -if [ -f "$PRE_BUILD_SCRIPT" ]; then - print "${BLUE}executing $PRE_BUILD_SCRIPT" - source "$PRE_BUILD_SCRIPT" -fi \ No newline at end of file