# HG changeset patch # User Mike Becker # Date 1739985130 -3600 # Node ID cc9d74d5eb46651be50d127fdb2ce0e4e142958d # Parent 52c1464e27f8f7a41b0c6b822e9b37d3414977e7 add configure option for static linking diff -r 52c1464e27f8 -r cc9d74d5eb46 configure --- a/configure Tue Feb 18 19:09:02 2025 +0100 +++ b/configure Wed Feb 19 18:12:10 2025 +0100 @@ -110,6 +110,9 @@ --debug add extra compile flags for debug builds --release add extra compile flags for release builds +Optional Features: + --enable-static statically link libstdc++ + __EOF__ } @@ -174,6 +177,8 @@ "--help"*) printhelp; abort_configure ;; "--debug") BUILD_TYPE="debug" ;; "--release") BUILD_TYPE="release" ;; + "--enable-static") FEATURE_STATIC=on ;; + "--disable-static") unset FEATURE_STATIC ;; "-"*) echo "unknown option: $ARG"; abort_configure ;; esac done @@ -274,6 +279,37 @@ fi } +dependency_error_static() +{ + print_check_msg "$dep_checked_static" "checking for static... " + # dependency static toolchain="gcc" + while true + do + if notistoolchain "gcc"; then + break + fi + TEMP_LDFLAGS="$TEMP_LDFLAGS -static" + print_check_msg "$dep_checked_static" "yes\n" + dep_checked_static=1 + return 1 + done + + # dependency static toolchain="clang" + while true + do + if notistoolchain "clang"; then + break + fi + TEMP_LDFLAGS="$TEMP_LDFLAGS -static" + print_check_msg "$dep_checked_static" "yes\n" + dep_checked_static=1 + return 1 + done + + print_check_msg "$dep_checked_static" "no\n" + dep_checked_static=1 + return 0 +} # start collecting dependency information echo > "$TEMP_DIR/flags.mk" @@ -320,14 +356,34 @@ # echo >> "$TEMP_DIR/flags.mk" -echo "configuring target: default" -echo "# flags for target default" >> "$TEMP_DIR/flags.mk" +echo "configuring global target" +echo "# flags for unnamed target" >> "$TEMP_DIR/flags.mk" TEMP_CFLAGS= TEMP_CXXFLAGS= TEMP_LDFLAGS= # Features +if [ -n "$FEATURE_STATIC" ]; then + # check dependency + if dependency_error_static ; then + # "auto" features can fail and are just disabled in this case + if [ "$FEATURE_STATIC" = "auto" ]; then + DISABLE_FEATURE_STATIC=1 + else + DEPENDENCIES_FAILED="$DEPENDENCIES_FAILED static " + ERROR=1 + fi + fi + if [ -n "$DISABLE_FEATURE_STATIC" ]; then + unset FEATURE_STATIC + fi +fi +if [ -n "$FEATURE_STATIC" ]; then + : +else + : +fi if [ -n "${TEMP_CFLAGS}" ] && [ -n "$lang_c" ]; then @@ -370,6 +426,12 @@ echo "Build Config:" echo " PREFIX: $prefix" echo " TOOLCHAIN: $TOOLCHAIN_NAME" +echo "Features:" +if [ -n "$FEATURE_STATIC" ]; then +echo " static: on" +else +echo " static: off" +fi echo # generate the config.mk file diff -r 52c1464e27f8 -r cc9d74d5eb46 make/project.xml --- a/make/project.xml Tue Feb 18 19:09:02 2025 +0100 +++ b/make/project.xml Wed Feb 19 18:12:10 2025 +0100 @@ -4,5 +4,17 @@ cpp -std=c++23 + + -static + + + -static + + + + statically link libstdc++ + static + + diff -r 52c1464e27f8 -r cc9d74d5eb46 src/main.cpp --- a/src/main.cpp Tue Feb 18 19:09:02 2025 +0100 +++ b/src/main.cpp Wed Feb 19 18:12:10 2025 +0100 @@ -36,7 +36,7 @@ using namespace std::chrono; -static constexpr auto program_version = "1.0.0"; +static constexpr auto program_version = "1.0.1 (beta)"; static void print_help() { fputs(