From 59e92540b68220d75cd276ec3bcc27b8c72e57cd Mon Sep 17 00:00:00 2001 From: DL6ER Date: Wed, 22 Jul 2020 21:19:18 +0200 Subject: [PATCH] Do not link libm dynamically when building the static musl binary Signed-off-by: DL6ER --- .circleci/build-CI.sh | 2 +- .circleci/config.yml | 2 +- src/CMakeLists.txt | 8 +++++--- test/arch_test.sh | 12 ++++++------ 4 files changed, 13 insertions(+), 11 deletions(-) diff --git a/.circleci/build-CI.sh b/.circleci/build-CI.sh index fbcb7376..96fb2151 100644 --- a/.circleci/build-CI.sh +++ b/.circleci/build-CI.sh @@ -12,6 +12,6 @@ rm -rf cmake/ && \ mkdir cmake && \ cd cmake && \ -cmake "${1}" .. && \ +cmake ${1} .. && \ cmake --build . -- GIT_BRANCH="${2}" GIT_TAG="${3}" CIRCLE_JOB="${4}" -j 4 && \ mv pihole-FTL ../ diff --git a/.circleci/config.yml b/.circleci/config.yml index 96201b7b..a224ec26 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -13,7 +13,7 @@ version: 2 command: | BRANCH=$([ -z "$CIRCLE_TAG" ] && echo "$CIRCLE_BRANCH" || echo "master") [[ $CIRCLE_JOB == *"qemu"* ]] && DOCKERIFNEEDED="docker run --rm -v $(pwd):/workspace -w /workspace pihole/ftl-build:arm-qemu " - $DOCKERIFNEEDED bash .circleci/build-CI.sh "-DSTATIC=${STATIC}" "${BRANCH}" "${CIRCLE_TAG}" "${CIRCLE_JOB} -DLUA_READLINE=true" + $DOCKERIFNEEDED bash .circleci/build-CI.sh "-DSTATIC=${STATIC} -DLUA_READLINE=true" "${BRANCH}" "${CIRCLE_TAG}" "${CIRCLE_JOB}" - run: name: "Binary checks" command: bash test/arch_test.sh diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 5781af84..e3d4c113 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -164,7 +164,11 @@ if(STATIC STREQUAL "true") set_target_properties(pihole-FTL PROPERTIES LINK_SEARCH_START_STATIC ON) set_target_properties(pihole-FTL PROPERTIES LINK_SEARCH_END_STATIC ON) target_link_libraries(pihole-FTL -static-libgcc -static -static-pie) +else() + find_library(LIBMATH m${CMAKE_STATIC_LIBRARY_SUFFIX}) + target_link_libraries(pihole-FTL ${LIBMATH}) endif() + target_compile_options(pihole-FTL PRIVATE ${EXTRAWARN}) target_compile_definitions(pihole-FTL PRIVATE DNSMASQ_VERSION=\"${DNSMASQ_VERSION}\") target_include_directories(pihole-FTL PRIVATE ${PROJECT_SOURCE_DIR}/src) @@ -180,10 +184,8 @@ find_library(LIBHOGWEED libhogweed${CMAKE_STATIC_LIBRARY_SUFFIX}) find_library(LIBGMP libgmp${CMAKE_STATIC_LIBRARY_SUFFIX}) find_library(LIBNETTLE libnettle${CMAKE_STATIC_LIBRARY_SUFFIX}) find_library(LIBIDN libidn${CMAKE_STATIC_LIBRARY_SUFFIX}) -# for LUA we need libdl (lookforfunc) and libm (linking libm and libdl statically is discouraged) -find_library(LIBMATH m) -target_link_libraries(pihole-FTL rt Threads::Threads ${LIBHOGWEED} ${LIBGMP} ${LIBNETTLE} ${LIBIDN} ${LIBMATH}) +target_link_libraries(pihole-FTL rt Threads::Threads ${LIBHOGWEED} ${LIBGMP} ${LIBNETTLE} ${LIBIDN}) if(LUA_DL STREQUAL "true") find_library(LIBDL dl) diff --git a/test/arch_test.sh b/test/arch_test.sh index 60a4fe46..fa1fa518 100644 --- a/test/arch_test.sh +++ b/test/arch_test.sh @@ -67,7 +67,7 @@ check_file() { if [[ "${CIRCLE_JOB}" == "x86_64" ]]; then check_machine "ELF64" "Advanced Micro Devices X86-64" - check_libs "[librt.so.1] [libpthread.so.0] [libc.so.6]" + check_libs "[librt.so.1] [libm.so.6] [libpthread.so.0] [libc.so.6]" check_file "ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, not stripped" elif [[ "${CIRCLE_JOB}" == "x86_64-musl" ]]; then @@ -79,19 +79,19 @@ elif [[ "${CIRCLE_JOB}" == "x86_64-musl" ]]; then elif [[ "${CIRCLE_JOB}" == "x86_32" ]]; then check_machine "ELF32" "Intel 80386" - check_libs "[librt.so.1] [libpthread.so.0] [libc.so.6]" + check_libs "[librt.so.1] [libm.so.6] [libpthread.so.0] [libc.so.6]" check_file "ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.32, not stripped" elif [[ "${CIRCLE_JOB}" == "aarch64" ]]; then check_machine "ELF64" "AArch64" - check_libs "[librt.so.1] [libpthread.so.0] [libc.so.6] [ld-linux-aarch64.so.1]" + check_libs "[librt.so.1] [libm.so.6] [libpthread.so.0] [libc.so.6] [ld-linux-aarch64.so.1]" check_file "ELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.7.0, not stripped" elif [[ "${CIRCLE_JOB}" == "arm" ]]; then check_machine "ELF32" "ARM" - check_libs "[librt.so.1] [libgcc_s.so.1] [libpthread.so.0] [libc.so.6] [ld-linux-armhf.so.3]" + check_libs "[librt.so.1] [libm.so.6] [libgcc_s.so.1] [libpthread.so.0] [libc.so.6] [ld-linux-armhf.so.3]" check_file "ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 2.6.32, not stripped" check_CPU_arch "v6" @@ -100,7 +100,7 @@ elif [[ "${CIRCLE_JOB}" == "arm" ]]; then elif [[ "${CIRCLE_JOB}" == "armhf" ]]; then check_machine "ELF32" "ARM" - check_libs "[librt.so.1] [libgcc_s.so.1] [libpthread.so.0] [libc.so.6] [ld-linux-armhf.so.3]" + check_libs "[librt.so.1] [libm.so.6] [libgcc_s.so.1] [libpthread.so.0] [libc.so.6] [ld-linux-armhf.so.3]" check_file "ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 3.2.0, not stripped" check_CPU_arch "v7" @@ -109,7 +109,7 @@ elif [[ "${CIRCLE_JOB}" == "armhf" ]]; then elif [[ "${CIRCLE_JOB}" == "arm-qemu" ]]; then check_machine "ELF32" "ARM" - check_libs "[librt.so.1] [libgcc_s.so.1] [libpthread.so.0] [libc.so.6] [ld-linux.so.3]" + check_libs "[librt.so.1] [libm.so.6] [libgcc_s.so.1] [libpthread.so.0] [libc.so.6] [ld-linux.so.3]" check_file "ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 3.2.0, not stripped" check_CPU_arch "v6"