From 02fb2767a823af47ee38467c8d11e5bba9d5c9b6 Mon Sep 17 00:00:00 2001 From: Timerix Date: Sun, 9 Nov 2025 23:27:21 +0500 Subject: [PATCH] updated to cbuild 2.3.0 --- project.config | 72 ++++++++++++++++++------------------- project.config.user.default | 11 ++++++ tlibc.config | 14 ++++---- 3 files changed, 54 insertions(+), 43 deletions(-) create mode 100644 project.config.user.default diff --git a/project.config b/project.config index 4eab4e0..8b53210 100644 --- a/project.config +++ b/project.config @@ -1,5 +1,5 @@ #!/usr/bin/env bash -CBUILD_VERSION=2.2.3 +CBUILD_VERSION=2.3.0 PROJECT="tlibc" CMP_C="gcc" @@ -22,7 +22,7 @@ SRC_CPP="$(find src -name '*.cpp')" # Directory with dependency configs. # See cbuild/example_dependency_configs -DEPENDENCY_CONFIGS_DIR='.' +DEPENDENCY_CONFIGS_DIR='dependencies' # List of dependency config files in DEPENDENCY_CONFIGS_DIR separated by space. ENABLED_DEPENDENCIES='' @@ -69,61 +69,61 @@ case "$TASK" in C_ARGS="-O2 -flto=auto -fuse-linker-plugin -fprofile-use -fprofile-prefix-path=$(realpath $OBJDIR)/objects -fdata-sections -ffunction-sections -Wl,--gc-sections" CPP_ARGS="$C_ARGS" LINKER_ARGS="$CPP_ARGS $LINKER_LIBS" - PRE_TASK_SCRIPT= - TASK_SCRIPT=cbuild/default_tasks/build_exec.sh - POST_TASK_SCRIPT= + PRE_TASK_SCRIPT="" + TASK_SCRIPT="@cbuild/default_tasks/build_exec.sh" + POST_TASK_SCRIPT="" ;; # creates executable with debug info and no optimizations build_exec_dbg) C_ARGS="-O0 -g3" CPP_ARGS="$C_ARGS" LINKER_ARGS="$CPP_ARGS $LINKER_LIBS" - PRE_TASK_SCRIPT= - TASK_SCRIPT=cbuild/default_tasks/build_exec.sh - POST_TASK_SCRIPT= + PRE_TASK_SCRIPT="" + TASK_SCRIPT="@cbuild/default_tasks/build_exec.sh" + POST_TASK_SCRIPT="" ;; # creates shared library build_shared_lib) C_ARGS="-O2 -fpic -flto -shared" CPP_ARGS="$C_ARGS" LINKER_ARGS="$CPP_ARGS $LINKER_LIBS -Wl,-soname,$SHARED_LIB_FILE" - PRE_TASK_SCRIPT= - TASK_SCRIPT=cbuild/default_tasks/build_shared_lib.sh - POST_TASK_SCRIPT= + PRE_TASK_SCRIPT="" + TASK_SCRIPT="@cbuild/default_tasks/build_shared_lib.sh" + POST_TASK_SCRIPT="" ;; # creates shared library with debug symbols and no optimizations build_shared_lib_dbg) C_ARGS="-O0 -g3 -fpic -shared" CPP_ARGS="$C_ARGS" LINKER_ARGS="$CPP_ARGS $LINKER_LIBS -Wl,-soname,$SHARED_LIB_FILE" - PRE_TASK_SCRIPT= - TASK_SCRIPT=cbuild/default_tasks/build_shared_lib.sh - POST_TASK_SCRIPT= + PRE_TASK_SCRIPT="" + TASK_SCRIPT="@cbuild/default_tasks/build_shared_lib.sh" + POST_TASK_SCRIPT="" ;; # creates static library build_static_lib) C_ARGS="-O2 -fpic -fdata-sections -ffunction-sections" CPP_ARGS="$C_ARGS" - PRE_TASK_SCRIPT= - TASK_SCRIPT=cbuild/default_tasks/build_static_lib.sh - POST_TASK_SCRIPT= + PRE_TASK_SCRIPT="" + TASK_SCRIPT="@cbuild/default_tasks/build_static_lib.sh" + POST_TASK_SCRIPT="" ;; # creates static library with debug symbols and no optimizations build_static_lib_dbg) C_ARGS="-O0 -g3" CPP_ARGS="$C_ARGS" - PRE_TASK_SCRIPT= - TASK_SCRIPT=cbuild/default_tasks/build_static_lib.sh - POST_TASK_SCRIPT= + PRE_TASK_SCRIPT="" + TASK_SCRIPT="@cbuild/default_tasks/build_static_lib.sh" + POST_TASK_SCRIPT="" ;; # executes $EXEC_FILE exec) - TASK_SCRIPT=cbuild/default_tasks/exec.sh + TASK_SCRIPT="@cbuild/default_tasks/exec.sh" ;; # executes $EXEC_FILE with valgrind memory checker valgrind) VALGRIND_ARGS="-s --read-var-info=yes --track-origins=yes --fullpath-after=$(pwd)/ --leak-check=full --show-leak-kinds=all" - TASK_SCRIPT=cbuild/default_tasks/valgrind.sh + TASK_SCRIPT="@cbuild/default_tasks/valgrind.sh" ;; # generates profiling info profile) @@ -137,9 +137,9 @@ case "$TASK" in C_ARGS="-O2 -flto=auto -fuse-linker-plugin -fprofile-generate -fprofile-prefix-path=$(realpath $OBJDIR)/objects" CPP_ARGS="$C_ARGS" LINKER_ARGS="$CPP_ARGS $LINKER_LIBS" - PRE_TASK_SCRIPT=cbuild/default_tasks/build_exec.sh - TASK_SCRIPT=cbuild/default_tasks/profile.sh - POST_TASK_SCRIPT= + PRE_TASK_SCRIPT="@cbuild/default_tasks/build_exec.sh" + TASK_SCRIPT="@cbuild/default_tasks/profile.sh" + POST_TASK_SCRIPT="" ;; # compiles program with -pg and runs it with gprof # uses gprof2dot python script to generate function call tree (pip install gprof2dot) @@ -150,9 +150,9 @@ case "$TASK" in C_ARGS="-O2 -flto=auto -fuse-linker-plugin -pg" CPP_ARGS="$C_ARGS" LINKER_ARGS="$CPP_ARGS $LINKER_LIBS" - PRE_TASK_SCRIPT=cbuild/default_tasks/build_exec.sh - TASK_SCRIPT=cbuild/default_tasks/gprof.sh - POST_TASK_SCRIPT= + PRE_TASK_SCRIPT="@cbuild/default_tasks/build_exec.sh" + TASK_SCRIPT="@cbuild/default_tasks/gprof.sh" + POST_TASK_SCRIPT="" ;; # compiles program and runs it with callgrind (part of valgrind) # uses gprof2dot python script to generate function call tree (pip install gprof2dot) @@ -164,9 +164,9 @@ case "$TASK" in C_ARGS="-O2 -flto=auto -fuse-linker-plugin" CPP_ARGS="$C_ARGS" LINKER_ARGS="$CPP_ARGS $LINKER_LIBS" - PRE_TASK_SCRIPT=cbuild/default_tasks/build_exec.sh - TASK_SCRIPT=cbuild/default_tasks/callgrind.sh - POST_TASK_SCRIPT= + PRE_TASK_SCRIPT="@cbuild/default_tasks/build_exec.sh" + TASK_SCRIPT="@cbuild/default_tasks/callgrind.sh" + POST_TASK_SCRIPT="" ;; # compiles executable with sanitizers and executes it to find errors and warnings sanitize) @@ -174,19 +174,19 @@ case "$TASK" in C_ARGS="-O0 -g3 -fsanitize=undefined,address" CPP_ARGS="$C_ARGS" LINKER_ARGS="$CPP_ARGS $LINKER_LIBS" - PRE_TASK_SCRIPT=cbuild/default_tasks/build_exec.sh - TASK_SCRIPT=cbuild/default_tasks/exec.sh - POST_TASK_SCRIPT= + PRE_TASK_SCRIPT="@cbuild/default_tasks/build_exec.sh" + TASK_SCRIPT="@cbuild/default_tasks/exec.sh" + POST_TASK_SCRIPT="" ;; # rebuilds specified dependencies # EXAMPLE: `cbuild rebuild_dependencies=libexample1,fonts` # 'all' can be specified to rebuild all dependencies rebuild_dependencies) - TASK_SCRIPT=cbuild/default_tasks/rebuild_dependencies.sh + TASK_SCRIPT="@cbuild/default_tasks/rebuild_dependencies.sh" ;; # deletes generated files clean) - TASK_SCRIPT=cbuild/default_tasks/clean.sh + TASK_SCRIPT="@cbuild/default_tasks/clean.sh" ;; # nothing to do "" | no_task) diff --git a/project.config.user.default b/project.config.user.default new file mode 100644 index 0000000..901aa1d --- /dev/null +++ b/project.config.user.default @@ -0,0 +1,11 @@ +#!/usr/bin/env bash +# Project user config is ignored by git. +# Here you can add variables that users might want to change +# on their local machine, without commiting to the repository. + +# Directory where you install dependencies. +# Do not confuse with DEPENDENCY_CONFIGS_DIR +# Example: +# libexample source code is at `../libexample`, and dependency config +# that specifies how to build this lib is at `dependencies/libexample.config` +DEPENDENCIES_DIR=".." diff --git a/tlibc.config b/tlibc.config index 94d8d2f..3db058f 100644 --- a/tlibc.config +++ b/tlibc.config @@ -1,17 +1,17 @@ #!/usr/bin/env bash -########################################################### -# Copy this file to your cbuild DEPENDENCY_CONFIGS_DIR # -# and enable it (ENABLED_DEPENDENCIES=tlibc). # -########################################################### -DEP_WORKING_DIR="dependencies/tlibc" -DEP_PRE_BUILD_COMMAND="" -DEP_POST_BUILD_COMMAND="" + +# This is a dependency config. +# You can copy it to another project to add tlibc dependency. + +DEP_WORKING_DIR="$DEPENDENCIES_DIR/tlibc" if [[ "$TASK" = *_dbg ]]; then dep_build_target="build_static_lib_dbg" else dep_build_target="build_static_lib" fi +DEP_PRE_BUILD_COMMAND="" DEP_BUILD_COMMAND="cbuild $dep_build_target" +DEP_POST_BUILD_COMMAND="" DEP_CLEAN_COMMAND="cbuild clean" DEP_DYNAMIC_OUT_FILES="" DEP_STATIC_OUT_FILES="bin/tlibc.a"