diff --git a/default.config b/default.config index 50a2a53..27e2a1e 100644 --- a/default.config +++ b/default.config @@ -1,5 +1,5 @@ #!/bin/bash -CBUILD_VERSION=3 +CBUILD_VERSION=4 CONFIG_VERSION=1 PROJECT="NULL" @@ -25,6 +25,7 @@ case $TASK in C_ARGS="-O2" CPP_ARGS="$C_ARGS" LINKER_ARGS="" + LINK_LIBS="" TASK_SCRIPT=cbuild/default_tasks/build_exec.sh PRE_TASK_SCRIPT= POST_TASK_SCRIPT= @@ -33,6 +34,7 @@ case $TASK in C_ARGS="-O0 -g" CPP_ARGS="$C_ARGS" LINKER_ARGS="" + LINK_LIBS="" TASK_SCRIPT=cbuild/default_tasks/build_exec.sh PRE_TASK_SCRIPT= POST_TASK_SCRIPT= @@ -40,6 +42,7 @@ case $TASK in build_shared_lib) C_ARGS="-O2 -fpic -flto -shared" CPP_ARGS="$C_ARGS" + LINK_LIBS="" LINKER_ARGS="-Wl,-soname,$SHARED_LIB_FILE" TASK_SCRIPT=cbuild/default_tasks/build_shared_lib.sh PRE_TASK_SCRIPT= @@ -48,6 +51,7 @@ case $TASK in build_shared_lib_dbg) C_ARGS="-O0 -g -fpic -shared" CPP_ARGS="$C_ARGS" + LINK_LIBS="" LINKER_ARGS="-Wl,-soname,$SHARED_LIB_FILE" TASK_SCRIPT=cbuild/default_tasks/build_shared_lib.sh PRE_TASK_SCRIPT= @@ -55,14 +59,14 @@ case $TASK in ;; build_static_lib) C_ARGS="-O2 -fpic" - CPP_ARGS="$C_ARGS" + CPP_ARGS="$C_ARGS" TASK_SCRIPT=cbuild/default_tasks/build_static_lib.sh PRE_TASK_SCRIPT= POST_TASK_SCRIPT= ;; build_static_lib_dbg) C_ARGS="-O0 -g" - CPP_ARGS="$C_ARGS" + CPP_ARGS="$C_ARGS" TASK_SCRIPT=cbuild/default_tasks/build_static_lib.sh PRE_TASK_SCRIPT= POST_TASK_SCRIPT= @@ -75,3 +79,14 @@ case $TASK in TASK_SCRIPT=cbuild/default_tasks/valgrind.sh ;; esac + +case $OS in + WINDOWS) + ;; + LINUX) + ;; + *) + printf "${RED}operating system $OS has no configuration variants\n" + exit 1 + ;; +esac diff --git a/detect_os.sh b/detect_os.sh new file mode 100644 index 0000000..d08d8c5 --- /dev/null +++ b/detect_os.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +source cbuild/colors.sh + +uname_rezult=$(uname -o); +printf "${GRAY}uname rezult: '$uname_rezult'\n" + +case $uname_rezult in + Msys | Cygwin | "MS/Windows") + OS=WINDOWS + ;; + GNU/Linux) + OS=LINUX + ;; + FreeBSD) + OS=FREEBSD + ;; + Darwin) + OS=MACOS + ;; + *) + printf "${RED}unknown operating system: $uname_rezult\n" + exit 1 + ;; +esac + +printf "${GREEN}detected OS: $OS\n" diff --git a/functions.sh b/functions.sh index 118d6cd..cdaa299 100755 --- a/functions.sh +++ b/functions.sh @@ -60,7 +60,9 @@ function link { local objects="$(find $OBJDIR -name '*.o') $(find $OBJDIR -name '*.a')" printf "${BLUE}objects: ${GRAY}$objects\n" - if $CMP_CPP $args -o $outfile $(echo $objects | tr '\n' ' ') + local command="$CMP_CPP $args $(echo $objects | tr '\n' ' ') $LINK_LIBS -o $outfile" + printf "$command" + if $command then printf "${GREEN}file $CYAN$outfile ${GREEN}created\n${GRAY}" else diff --git a/init.sh b/init.sh index 0bc8b08..3c121ea 100755 --- a/init.sh +++ b/init.sh @@ -1,6 +1,7 @@ #!/bin/bash source cbuild/colors.sh source cbuild/functions.sh +source cbuild/detect_os.sh # exit on errors set -eo pipefail