The branch, master has been updated via b2d2aa6 gitlab-ci: Setup CI for resolv_wrapper via c7b6088 cmake: Use GNUInstallDirs via dc67cd2 cmake: Use target_include_directories() via e104f28 cmake: Update AddCMockaTest.cmake via 58d7c40 cmake: Require at least cmocka 1.1.0 via db37dc6 cmake: Support running the tests with AddressSanitizer via d11f482 cmake: Add AddressSanitizer and UndefinedSanitizer via bc5ec24 cmake: Move Compiler flags to new file via 4f564ff cmake: Improve checks for compiler flags via 49f26dd cmake: Update defaults for cmake via 1483419 cmake: Use unset() instead of setting an empty string via 21ef0d0 cmake: Use _REQUIRED_LIBRARIES for system libs via 78f8f27 cmake: Require at least cmake 3.5.0 via 64508d9 README: Rename to a markdown file via 2dc7342 tests: Wait longer for dns_srv to start via 1d6402e tests: Set socket_wrapper to be required for testing via f311332 Added fake resolving of TXT records via 5aaed66 rwrap: Fix alignment issues on FreeBSD via 21df1e3 doc: Document RESOLV_WRAPPER_DISABLE_DEEPBIND via 997249f rwrap: Don't do a deep bind if we run with libasan from 3523aa2 rwrap: Always build with rwrap_str_lib()
https://git.samba.org/?p=resolv_wrapper.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit b2d2aa6ff9e431c50a47cd0858a33cb79ad2ef5f Author: Andreas Schneider <a...@samba.org> Date: Thu Oct 17 16:59:28 2019 +0200 gitlab-ci: Setup CI for resolv_wrapper Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> commit c7b6088b94511a4a62c1bc2c4c46937cf3d920a4 Author: Andreas Schneider <a...@samba.org> Date: Thu Oct 17 16:06:36 2019 +0200 cmake: Use GNUInstallDirs Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> commit dc67cd2271bc77378ebbc3ea58e22fdddcc0ef1f Author: Andreas Schneider <a...@samba.org> Date: Thu Oct 17 15:57:17 2019 +0200 cmake: Use target_include_directories() Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> commit e104f28dcd43436bcfca8826fe117641c21b8bf2 Author: Andreas Schneider <a...@samba.org> Date: Thu Oct 17 15:53:01 2019 +0200 cmake: Update AddCMockaTest.cmake Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> commit 58d7c4089e07bb1b9fd6206f76e4e902fcf742ce Author: Andreas Schneider <a...@samba.org> Date: Thu Oct 17 15:49:48 2019 +0200 cmake: Require at least cmocka 1.1.0 Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> commit db37dc617ff6685163974b5ffa9746408c00a113 Author: Andreas Schneider <a...@samba.org> Date: Thu Oct 17 15:48:16 2019 +0200 cmake: Support running the tests with AddressSanitizer Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> commit d11f482b8e9df9c4d6917a34727fbbfbf257549f Author: Andreas Schneider <a...@samba.org> Date: Thu Oct 17 15:37:28 2019 +0200 cmake: Add AddressSanitizer and UndefinedSanitizer Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> commit bc5ec246d6e173ae4e742a516bd5ca865f36f8ab Author: Andreas Schneider <a...@samba.org> Date: Thu Oct 17 15:37:05 2019 +0200 cmake: Move Compiler flags to new file Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> commit 4f564ffd30219bc61d8f5ea476550873e3a2277a Author: Andreas Schneider <a...@samba.org> Date: Thu Oct 17 15:34:21 2019 +0200 cmake: Improve checks for compiler flags Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> commit 49f26dd25f27d56866856a84d68926313dd2c6ff Author: Andreas Schneider <a...@samba.org> Date: Thu Oct 17 15:26:05 2019 +0200 cmake: Update defaults for cmake Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> commit 14834192550c95815b1a4c403038e7aa89599a45 Author: Andreas Schneider <a...@samba.org> Date: Thu Oct 17 15:25:05 2019 +0200 cmake: Use unset() instead of setting an empty string Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> commit 21ef0d04d492b3d843184b48ae76a0fb99252c90 Author: Andreas Schneider <a...@samba.org> Date: Thu Oct 17 15:24:16 2019 +0200 cmake: Use _REQUIRED_LIBRARIES for system libs This drops support for Solaris as we can't test it in CI anyway. Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> commit 78f8f278d3aa46b1e8230f1dc2e40f9c15790cbc Author: Andreas Schneider <a...@samba.org> Date: Thu Oct 17 15:18:38 2019 +0200 cmake: Require at least cmake 3.5.0 Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> commit 64508d9dfe62d1c1d9ccce6c5514d0ebdbc8f516 Author: Andreas Schneider <a...@samba.org> Date: Thu Oct 17 15:12:29 2019 +0200 README: Rename to a markdown file Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> commit 2dc73425e0db5b2a8ffcbf2de793979df4fd2751 Author: Andreas Schneider <a...@samba.org> Date: Thu Oct 17 17:44:51 2019 +0200 tests: Wait longer for dns_srv to start Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> commit 1d6402e065e4a9f729249b5d33841315c35f0282 Author: Andreas Schneider <a...@samba.org> Date: Fri Feb 15 14:41:11 2019 +0100 tests: Set socket_wrapper to be required for testing Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> commit f311332a634b42c3962a2b89c01adf435c4ccd4a Author: Carson Reinke <car...@reinke.co> Date: Sat Dec 29 19:03:43 2018 -0500 Added fake resolving of TXT records Signed-off-by: Carson Reinke <car...@reinke.co> Reviewed-by: Andreas Schneider <a...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> commit 5aaed66e6fe7a4d9598889b5532d6cf6d407e3d0 Author: Andreas Schneider <a...@samba.org> Date: Thu Oct 17 17:49:47 2019 +0200 rwrap: Fix alignment issues on FreeBSD Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> commit 21df1e35775e9e39fe4b268328aec138da6c1f09 Author: Andreas Schneider <a...@samba.org> Date: Fri Jan 4 08:40:44 2019 +0100 doc: Document RESOLV_WRAPPER_DISABLE_DEEPBIND Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> commit 997249fe43f6664b1e4f78f47cf20a025cce2cb7 Author: Andreas Schneider <a...@samba.org> Date: Sat Sep 1 19:47:35 2018 +0200 rwrap: Don't do a deep bind if we run with libasan Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> ----------------------------------------------------------------------- Summary of changes: .gitlab-ci.yml | 236 ++++++++++++++++++++++++++++ CMakeLists.txt | 35 +++-- CPackConfig.cmake | 11 +- CompilerChecks.cmake | 114 ++++++++++++++ ConfigureChecks.cmake | 65 +++++--- DefineOptions.cmake | 1 + README => README.md | 4 +- cmake/Modules/AddCCompilerFlag.cmake | 21 +++ cmake/Modules/AddCMockaTest.cmake | 125 +++++++++++++-- cmake/Modules/CheckCCompilerFlagSSP.cmake | 36 ++++- cmake/Modules/DefineCMakeDefaults.cmake | 15 +- cmake/Modules/DefineCompilerFlags.cmake | 112 +++++-------- cmake/Modules/DefineInstallationPaths.cmake | 109 ------------- cmake/Toolchain-Debian-mips.cmake | 21 +++ config.h.cmake | 11 +- doc/CMakeLists.txt | 6 +- doc/resolv_wrapper.1 | 13 +- doc/resolv_wrapper.1.txt | 8 +- resolv_wrapper.pc.cmake | 4 +- src/CMakeLists.txt | 18 ++- src/resolv_wrapper.c | 123 ++++++++++----- tests/CMakeLists.txt | 109 +++++++------ tests/fake_hosts.in | 1 + tests/test_dns_fake.c | 35 +++++ tests/torture.c | 3 +- 25 files changed, 856 insertions(+), 380 deletions(-) create mode 100644 .gitlab-ci.yml create mode 100644 CompilerChecks.cmake rename README => README.md (84%) create mode 100644 cmake/Modules/AddCCompilerFlag.cmake delete mode 100644 cmake/Modules/DefineInstallationPaths.cmake create mode 100644 cmake/Toolchain-Debian-mips.cmake Changeset truncated at 500 lines: diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..4fe2971 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,236 @@ +variables: + GIT_DEPTH: 3 + BUILD_IMAGES_PROJECT: cmocka/gitlab-build-images + FEDORA_BUILD: buildenv-fedora + CENTOS7_BUILD: buildenv-centos7 + TUMBLEWEED_BUILD: buildenv-tumbleweed + MINGW_BUILD: buildenv-mingw + DEBIAN_CROSS_BUILD: buildenv-debian-cross + +centos7/x86_64: + image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$CENTOS7_BUILD + script: + - mkdir -p obj && cd obj && cmake3 + -DCMAKE_BUILD_TYPE=RelWithDebInfo + -DPICKY_DEVELOPER=ON + -DUNIT_TESTING=ON .. && + make -j$(nproc) && ctest --output-on-failure + tags: + - shared + except: + - tags + artifacts: + expire_in: 1 week + when: on_failure + paths: + - obj/ + +fedora/x86_64: + image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$FEDORA_BUILD + script: + - mkdir -p obj && cd obj && cmake + -DCMAKE_INSTALL_PREFIX=/tmp/local + -DCMAKE_BUILD_TYPE=RelWithDebInfo + -DPICKY_DEVELOPER=ON + -DUNIT_TESTING=ON .. && + make -j$(nproc) && ctest --output-on-failure && make install + tags: + - shared + except: + - tags + artifacts: + expire_in: 1 week + when: on_failure + paths: + - obj/ + +fedora/address-sanitizer: + image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$FEDORA_BUILD + script: + - mkdir -p obj && cd obj && cmake + -DCMAKE_BUILD_TYPE=AddressSanitizer + -DPICKY_DEVELOPER=ON + -DUNIT_TESTING=ON .. && + make -j$(nproc) && ctest --output-on-failure + tags: + - shared + except: + - tags + artifacts: + expire_in: 1 week + when: on_failure + paths: + - obj/ + +fedora/undefined-sanitizer: + image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$FEDORA_BUILD + script: + - mkdir -p obj && cd obj && cmake + -DCMAKE_BUILD_TYPE=UndefinedSanitizer + -DPICKY_DEVELOPER=ON + -DUNIT_TESTING=ON .. + && make -j$(nproc) && ctest --output-on-failure + tags: + - shared + except: + - tags + artifacts: + expire_in: 1 week + when: on_failure + paths: + - obj/ + +fedora/csbuild: + variables: + GIT_DEPTH: 20 + image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$FEDORA_BUILD + script: + - | + if [[ -z "$CI_COMMIT_BEFORE_SHA" ]]; then + export CI_COMMIT_BEFORE_SHA=$(git rev-parse "${CI_COMMIT_SHA}~15") + fi + + # Check if the commit exists in this branch + # This is not the case for a force push + git branch --contains $CI_COMMIT_BEFORE_SHA 2>/dev/null || export CI_COMMIT_BEFORE_SHA=$(git rev-parse "${CI_COMMIT_SHA}~15") + + export CI_COMMIT_RANGE="$CI_COMMIT_BEFORE_SHA..$CI_COMMIT_SHA" + + - csbuild + --build-dir=obj-csbuild + --prep-cmd="cmake -DCMAKE_BUILD_TYPE=Debug -DPICKY_DEVELOPER=ON -DUNIT_TESTING=ON @SRCDIR@" + --build-cmd "make clean && make -j$(nproc)" + --git-commit-range $CI_COMMIT_RANGE + --color + --print-current --print-fixed + tags: + - shared + except: + - tags + artifacts: + expire_in: 1 week + when: on_failure + paths: + - obj-csbuild/ + +freebsd/x86_64: + image: + script: + - mkdir -p obj && cd obj && cmake + -DCMAKE_BUILD_TYPE=RelWithDebInfo + -DPICKY_DEVELOPER=ON + -DUNIT_TESTING=ON .. && + make && ctest --output-on-failure + tags: + - freebsd + except: + - tags + only: + - branches@cwrap/resolv_wrapper + - branches@cryptomilk/resolv_wrapper + artifacts: + expire_in: 1 week + when: on_failure + paths: + - obj/ + +.Debian.cross.template: &Debian_cross_template + stage: test + image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$DEBIAN_CROSS_BUILD + script: + - build=$(dpkg-architecture -qDEB_HOST_GNU_TYPE) + - host="${CI_JOB_NAME#*.cross.}" + - mkdir -p obj && cd obj && cmake + -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-Debian-mips.cmake + -DCMAKE_BUILD_TYPE=RelWithDebInfo + -DUNIT_TESTING=ON .. && make -j$(nproc) && + ctest --output-on-failure + tags: + - shared + except: + - tags + artifacts: + expire_in: 1 week + when: on_failure + paths: + - obj/ + +Debian.cross.mips-linux-gnu: + <<: *Debian_cross_template + +tumbleweed/x86_64/gcc: + image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$TUMBLEWEED_BUILD + script: + - mkdir -p obj && cd obj && cmake + -DCMAKE_BUILD_TYPE=RelWithDebInfo + -DPICKY_DEVELOPER=ON + -DUNIT_TESTING=ON .. && + make -j$(nproc) && ctest --output-on-failure + tags: + - shared + except: + - tags + artifacts: + expire_in: 1 week + when: on_failure + paths: + - obj/ + +tumbleweed/x86_64/gcc7: + image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$TUMBLEWEED_BUILD + script: + - mkdir -p obj && cd obj && cmake + -DCMAKE_C_COMPILER=gcc-7 -DCMAKE_CXX_COMPILER=g++-7 + -DCMAKE_BUILD_TYPE=RelWithDebInfo + -DPICKY_DEVELOPER=ON + -DUNIT_TESTING=ON .. && + make -j$(nproc) && ctest --output-on-failure + tags: + - shared + except: + - tags + artifacts: + expire_in: 1 week + when: on_failure + paths: + - obj/ + +tumbleweed/x86_64/clang: + image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$TUMBLEWEED_BUILD + script: + - mkdir -p obj && cd obj && cmake + -DCMAKE_BUILD_TYPE=RelWithDebInfo + -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ + -DPICKY_DEVELOPER=ON + -DUNIT_TESTING=ON .. && + make -j$(nproc) && ctest --output-on-failure + tags: + - shared + except: + - tags + artifacts: + expire_in: 1 week + when: on_failure + paths: + - obj/ + +tumbleweed/static-analysis: + image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$TUMBLEWEED_BUILD + script: + - export CCC_CC=clang + - export CCC_CXX=clang++ + - mkdir -p obj && cd obj && scan-build cmake + -DCMAKE_BUILD_TYPE=Debug + -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ + -DPICKY_DEVELOPER=ON + -DUNIT_TESTING=ON .. && + scan-build --status-bugs -o scan make -j$(nproc) + tags: + - shared + except: + - tags + artifacts: + expire_in: 1 week + when: on_failure + paths: + - obj/scan diff --git a/CMakeLists.txt b/CMakeLists.txt index 364ca2f..004372a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,16 +1,20 @@ -project(resolv_wrapper C) - # Required cmake version -cmake_minimum_required(VERSION 2.8.0) +cmake_minimum_required(VERSION 3.5.0) +cmake_policy(SET CMP0048 NEW) -# global needed variables -set(APPLICATION_NAME ${PROJECT_NAME}) +# Specify search path for CMake modules to be loaded by include() +# and find_package() +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules") -set(APPLICATION_VERSION_MAJOR "1") -set(APPLICATION_VERSION_MINOR "1") -set(APPLICATION_VERSION_PATCH "5") +# Add defaults for cmake +# Those need to be set before the project() call. +include(DefineCMakeDefaults) +include(DefineCompilerFlags) -set(APPLICATION_VERSION "${APPLICATION_VERSION_MAJOR}.${APPLICATION_VERSION_MINOR}.${APPLICATION_VERSION_PATCH}") +project(resolv_wrapper VERSION 1.1.5 LANGUAGES C) + +# global needed variables +set(APPLICATION_NAME ${PROJECT_NAME}) # SOVERSION scheme: CURRENT.AGE.REVISION # If there was an incompatible interface change: @@ -28,11 +32,11 @@ set(CMAKE_MODULE_PATH ) # add definitions -include(DefineCMakeDefaults) include(DefinePlatformDefaults) -include(DefineInstallationPaths) +include(GNUInstallDirs) include(DefineOptions.cmake) include(CPackConfig.cmake) +include(CompilerChecks.cmake) # disallow in-source build include(MacroEnsureOutOfSourceBuild) @@ -46,9 +50,6 @@ find_package(Threads) include(ConfigureChecks.cmake) configure_file(config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h) -# Add compiler flags for the project now. -include(DefineCompilerFlags) - # check subdirectories add_subdirectory(src) @@ -60,7 +61,7 @@ install( FILES ${CMAKE_CURRENT_BINARY_DIR}/resolv_wrapper.pc DESTINATION - ${LIB_INSTALL_DIR}/pkgconfig + ${CMAKE_INSTALL_LIBDIR}/pkgconfig COMPONENT pkgconfig ) @@ -73,14 +74,14 @@ install( ${CMAKE_CURRENT_BINARY_DIR}/resolv_wrapper-config-version.cmake ${CMAKE_CURRENT_BINARY_DIR}/resolv_wrapper-config.cmake DESTINATION - ${CMAKE_INSTALL_DIR}/resolv_wrapper + ${CMAKE_INSTALL_LIBDIR}/cmake/resolv_wrapper COMPONENT devel ) add_subdirectory(doc) if (UNIT_TESTING) - find_package(cmocka REQUIRED) + find_package(cmocka 1.1.0 REQUIRED) include(AddCMockaTest) add_subdirectory(tests) endif (UNIT_TESTING) diff --git a/CPackConfig.cmake b/CPackConfig.cmake index 36086cf..b19eabf 100644 --- a/CPackConfig.cmake +++ b/CPackConfig.cmake @@ -2,19 +2,16 @@ # http://www.cmake.org/Wiki/CMake:CPackConfiguration ### general settings -set(CPACK_PACKAGE_NAME ${APPLICATION_NAME}) +set(CPACK_PACKAGE_NAME ${PROJECT_NAME}) set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "The resolv wrapper") -set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_SOURCE_DIR}/README") +set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_SOURCE_DIR}/README.md") set(CPACK_PACKAGE_VENDOR "The Samba Team") set(CPACK_PACKAGE_INSTALL_DIRECTORY ${CPACK_PACKAGE_NAME}) set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE") ### versions -set(CPACK_PACKAGE_VERSION_MAJOR "${APPLICATION_VERSION_MAJOR}") -set(CPACK_PACKAGE_VERSION_MINOR "${APPLICATION_VERSION_MINOR}") -set(CPACK_PACKAGE_VERSION_PATCH "${APPLICATION_VERSION_PATCH}") -set(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") +set(CPACK_PACKAGE_VERSION "${PROJECT_VERSION_MAJOR}") ### source generator @@ -37,7 +34,7 @@ endif (WIN32) set(CPACK_PACKAGE_INSTALL_DIRECTORY "libssh") -set(CPACK_PACKAGE_FILE_NAME ${APPLICATION_NAME}-${CPACK_PACKAGE_VERSION}) +set(CPACK_PACKAGE_FILE_NAME ${PROJECT_NAME}-${CPACK_PACKAGE_VERSION}) set(CPACK_COMPONENT_LIBRARIES_DISPLAY_NAME "Libraries") set(CPACK_COMPONENT_HEADERS_DISPLAY_NAME "C/C++ Headers") diff --git a/CompilerChecks.cmake b/CompilerChecks.cmake new file mode 100644 index 0000000..4fa1a83 --- /dev/null +++ b/CompilerChecks.cmake @@ -0,0 +1,114 @@ +include(AddCCompilerFlag) +include(CheckCCompilerFlagSSP) + +if (UNIX) + # + # Check for -Werror turned on if possible + # + # This will prevent that compiler flags are detected incorrectly. + # + check_c_compiler_flag("-Werror" REQUIRED_FLAGS_WERROR) + if (REQUIRED_FLAGS_WERROR) + set(CMAKE_REQUIRED_FLAGS "-Werror") + + if (PICKY_DEVELOPER) + list(APPEND SUPPORTED_COMPILER_FLAGS "-Werror") + endif() + endif() + + add_c_compiler_flag("-std=gnu99" SUPPORTED_COMPILER_FLAGS) + #add_c_compiler_flag("-Wpedantic" SUPPORTED_COMPILER_FLAGS) + add_c_compiler_flag("-Wall" SUPPORTED_COMPILER_FLAGS) + add_c_compiler_flag("-Wshadow" SUPPORTED_COMPILER_FLAGS) + add_c_compiler_flag("-Wmissing-prototypes" SUPPORTED_COMPILER_FLAGS) + add_c_compiler_flag("-Wcast-align" SUPPORTED_COMPILER_FLAGS) + #add_c_compiler_flag("-Wcast-qual" SUPPORTED_COMPILER_FLAGS) + add_c_compiler_flag("-Werror=address" SUPPORTED_COMPILER_FLAGS) + add_c_compiler_flag("-Wstrict-prototypes" SUPPORTED_COMPILER_FLAGS) + add_c_compiler_flag("-Werror=strict-prototypes" SUPPORTED_COMPILER_FLAGS) + add_c_compiler_flag("-Wwrite-strings" SUPPORTED_COMPILER_FLAGS) + add_c_compiler_flag("-Werror=write-strings" SUPPORTED_COMPILER_FLAGS) + add_c_compiler_flag("-Werror-implicit-function-declaration" SUPPORTED_COMPILER_FLAGS) + add_c_compiler_flag("-Wpointer-arith" SUPPORTED_COMPILER_FLAGS) + add_c_compiler_flag("-Werror=pointer-arith" SUPPORTED_COMPILER_FLAGS) + add_c_compiler_flag("-Wdeclaration-after-statement" SUPPORTED_COMPILER_FLAGS) + add_c_compiler_flag("-Werror=declaration-after-statement" SUPPORTED_COMPILER_FLAGS) + add_c_compiler_flag("-Wreturn-type" SUPPORTED_COMPILER_FLAGS) + add_c_compiler_flag("-Werror=return-type" SUPPORTED_COMPILER_FLAGS) + add_c_compiler_flag("-Wuninitialized" SUPPORTED_COMPILER_FLAGS) + add_c_compiler_flag("-Werror=uninitialized" SUPPORTED_COMPILER_FLAGS) + add_c_compiler_flag("-Wimplicit-fallthrough" SUPPORTED_COMPILER_FLAGS) + add_c_compiler_flag("-Werror=strict-overflow" SUPPORTED_COMPILER_FLAGS) + add_c_compiler_flag("-Wstrict-overflow=2" SUPPORTED_COMPILER_FLAGS) + add_c_compiler_flag("-Wno-format-zero-length" SUPPORTED_COMPILER_FLAGS) + + check_c_compiler_flag("-Wformat" REQUIRED_FLAGS_WFORMAT) + if (REQUIRED_FLAGS_WFORMAT) + list(APPEND SUPPORTED_COMPILER_FLAGS "-Wformat") + set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -Wformat") + endif() + add_c_compiler_flag("-Wformat-security" SUPPORTED_COMPILER_FLAGS) + add_c_compiler_flag("-Werror=format-security" SUPPORTED_COMPILER_FLAGS) + + # Allow zero for a variadic macro argument + string(TOLOWER "${CMAKE_C_COMPILER_ID}" _C_COMPILER_ID) + if ("${_C_COMPILER_ID}" STREQUAL "clang") + add_c_compiler_flag("-Wno-gnu-zero-variadic-macro-arguments" SUPPORTED_COMPILER_FLAGS) + endif() + + add_c_compiler_flag("-fno-common" SUPPORTED_COMPILER_FLAGS) + + if (CMAKE_BUILD_TYPE) + string(TOLOWER "${CMAKE_BUILD_TYPE}" CMAKE_BUILD_TYPE_LOWER) + if (CMAKE_BUILD_TYPE_LOWER MATCHES (release|relwithdebinfo|minsizerel)) + add_c_compiler_flag("-Wp,-D_FORTIFY_SOURCE=2" SUPPORTED_COMPILER_FLAGS) + endif() + endif() + + if (NOT SOLARIS) + check_c_compiler_flag_ssp("-fstack-protector-strong" WITH_STACK_PROTECTOR_STRONG) + if (WITH_STACK_PROTECTOR_STRONG) + list(APPEND SUPPORTED_COMPILER_FLAGS "-fstack-protector-strong") + # This is needed as Solaris has a seperate libssp + if (SOLARIS) + list(APPEND SUPPORTED_LINKER_FLAGS "-fstack-protector-strong") + endif() + else (WITH_STACK_PROTECTOR_STRONG) + check_c_compiler_flag_ssp("-fstack-protector" WITH_STACK_PROTECTOR) + if (WITH_STACK_PROTECTOR) + list(APPEND SUPPORTED_COMPILER_FLAGS "-fstack-protector") + # This is needed as Solaris has a seperate libssp + if (SOLARIS) + list(APPEND SUPPORTED_LINKER_FLAGS "-fstack-protector") + endif() + endif() + endif (WITH_STACK_PROTECTOR_STRONG) + + check_c_compiler_flag_ssp("-fstack-clash-protection" WITH_STACK_CLASH_PROTECTION) + if (WITH_STACK_CLASH_PROTECTION) + list(APPEND SUPPORTED_COMPILER_FLAGS "-fstack-clash-protection") + endif() + endif() + + if (PICKY_DEVELOPER) + add_c_compiler_flag("-Wno-error=deprecated-declarations" SUPPORTED_COMPILER_FLAGS) + add_c_compiler_flag("-Wno-error=tautological-compare" SUPPORTED_COMPILER_FLAGS) + endif() + + # Unset CMAKE_REQUIRED_FLAGS + unset(CMAKE_REQUIRED_FLAGS) +endif() + +if (MSVC) + add_c_compiler_flag("/D _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1" SUPPORTED_COMPILER_FLAGS) + add_c_compiler_flag("/D _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1" SUPPORTED_COMPILER_FLAGS) + add_c_compiler_flag("/D _CRT_NONSTDC_NO_WARNINGS=1" SUPPORTED_COMPILER_FLAGS) + add_c_compiler_flag("/D _CRT_SECURE_NO_WARNINGS=1" SUPPORTED_COMPILER_FLAGS) +endif() + +if (SUPPORTED_COMPILER_FLAGS) + set(DEFAULT_C_COMPILE_FLAGS ${SUPPORTED_COMPILER_FLAGS} CACHE INTERNAL "Default C Compiler Flags" FORCE) +endif() +if (SUPPORTED_LINKER_FLAGS) + set(DEFAULT_LINK_FLAGS ${SUPPORTED_LINKER_FLAGS} CACHE INTERNAL "Default C Linker Flags" FORCE) +endif() diff --git a/ConfigureChecks.cmake b/ConfigureChecks.cmake index 0990940..579d114 100644 --- a/ConfigureChecks.cmake +++ b/ConfigureChecks.cmake @@ -7,15 +7,8 @@ include(CheckStructHasMember) include(CheckPrototypeDefinition) include(TestBigEndian) -set(PACKAGE ${APPLICATION_NAME}) -set(VERSION ${APPLICATION_VERSION}) -set(DATADIR ${DATA_INSTALL_DIR}) -set(LIBDIR ${LIB_INSTALL_DIR}) -set(PLUGINDIR "${PLUGIN_INSTALL_DIR}-${LIBRARY_SOVERSION}") -set(SYSCONFDIR ${SYSCONF_INSTALL_DIR}) - -set(BINARYDIR ${CMAKE_BINARY_DIR}) -set(SOURCEDIR ${CMAKE_SOURCE_DIR}) +set(BINARYDIR ${resolv_wrapper_BINARY_DIR}) -- Resolv Wrapper Repository