Changeset View
Changeset View
Standalone View
Standalone View
src/CMakeLists.txt
Show All 10 Lines | |||||
option(BUILD_BITCOIN_WALLET "Activate the wallet functionality" ON) | option(BUILD_BITCOIN_WALLET "Activate the wallet functionality" ON) | ||||
option(BUILD_BITCOIN_ZMQ "Activate the ZeroMQ functionalities" ON) | option(BUILD_BITCOIN_ZMQ "Activate the ZeroMQ functionalities" ON) | ||||
option(BUILD_BITCOIN_SEEDER "Build bitcoin-seeder" ON) | option(BUILD_BITCOIN_SEEDER "Build bitcoin-seeder" ON) | ||||
option(BUILD_BITCOIN_CLI "Build bitcoin-cli" ON) | option(BUILD_BITCOIN_CLI "Build bitcoin-cli" ON) | ||||
option(BUILD_BITCOIN_TX "Build bitcoin-tx" ON) | option(BUILD_BITCOIN_TX "Build bitcoin-tx" ON) | ||||
option(BUILD_BITCOIN_QT "Build bitcoin-qt" ON) | option(BUILD_BITCOIN_QT "Build bitcoin-qt" ON) | ||||
option(ENABLE_HARDENING "Harden the executables" ON) | option(ENABLE_HARDENING "Harden the executables" ON) | ||||
option(ENABLE_GLIBC_BACK_COMPAT "Enable Glibc compatibility features" OFF) | |||||
# Cmake uses the CMAKE_BUILD_TYPE variable to select the build configuration. | # Cmake uses the CMAKE_BUILD_TYPE variable to select the build configuration. | ||||
# By default it supports more configurations that needed for Bitcoin ABC, and | # By default it supports more configurations that needed for Bitcoin ABC, and | ||||
# all the releases types set NDEBUG which is unwanted as it disables the assert | # all the releases types set NDEBUG which is unwanted as it disables the assert | ||||
# completely. | # completely. | ||||
# Remove the -DNDEBUG flag from the CFLAGS/CXXFLAGS in all the configurations | # Remove the -DNDEBUG flag from the CFLAGS/CXXFLAGS in all the configurations | ||||
include(AddCompilerFlags) | include(AddCompilerFlags) | ||||
remove_compiler_flags(-DNDEBUG) | remove_compiler_flags(-DNDEBUG) | ||||
▲ Show 20 Lines • Show All 123 Lines • ▼ Show 20 Lines | |||||
target_compile_definitions(util PUBLIC HAVE_CONFIG_H) | target_compile_definitions(util PUBLIC HAVE_CONFIG_H) | ||||
target_include_directories(util | target_include_directories(util | ||||
PUBLIC | PUBLIC | ||||
. | . | ||||
# To access the config. | # To access the config. | ||||
${CMAKE_CURRENT_BINARY_DIR} | ${CMAKE_CURRENT_BINARY_DIR} | ||||
) | ) | ||||
if(ENABLE_GLIBC_BACK_COMPAT) | |||||
# glibc absorbed clock_gettime in 2.17. librt (its previous location) is | |||||
# safe to link in anyway for back-compat. | |||||
target_link_libraries(util rt) | |||||
deadalnix: You should check for rt's presence. This is a miracle that it works at all, you probably have… | |||||
#__fdelt_chk's params and return type have changed from long unsigned int to | |||||
# long int. See which one is present here. | |||||
include(CheckPrototypeDefinition) | |||||
set(CMAKE_REQUIRED_DEFINITIONS -D_FORTIFY_SOURCE=2) | |||||
# Without some optimization the compiler won't detect the prototype conflict | |||||
# and always succeed to build. | |||||
set(CMAKE_REQUIRED_FLAGS -O2) | |||||
check_prototype_definition( | |||||
__fdelt_warn | |||||
"extern long unsigned int __fdelt_warn(long unsigned int a)" | |||||
"0" | |||||
"sys/select.h" | |||||
FDELT_PROTOTYPE_LONG_UNSIGNED_INT | |||||
) | |||||
if(FDELT_PROTOTYPE_LONG_UNSIGNED_INT) | |||||
set(FDELT_TYPE "long unsigned int") | |||||
else() | |||||
set(FDELT_TYPE "long int") | |||||
endif() | |||||
target_compile_definitions(util PRIVATE "-DFDELT_TYPE=${FDELT_TYPE}") | |||||
# Wrap some glibc functions with ours | |||||
add_linker_flag(-Wl,--wrap=__divmoddi4) | |||||
add_linker_flag(-Wl,--wrap=log2f) | |||||
target_sources(util PRIVATE compat/glibc_compat.cpp) | |||||
endif() | |||||
# Target specific configs | # Target specific configs | ||||
if(${CMAKE_SYSTEM_NAME} MATCHES "Windows") | if(${CMAKE_SYSTEM_NAME} MATCHES "Windows") | ||||
set(Boost_USE_STATIC_LIBS ON) | set(Boost_USE_STATIC_LIBS ON) | ||||
set(Boost_THREADAPI win32) | set(Boost_THREADAPI win32) | ||||
find_package(SHLWAPI REQUIRED) | find_package(SHLWAPI REQUIRED) | ||||
target_link_libraries(util ${SHLWAPI_LIBRARY}) | target_link_libraries(util ${SHLWAPI_LIBRARY}) | ||||
target_include_directories(util PUBLIC ${SHLWAPI_INCLUDE_DIR}) | target_include_directories(util PUBLIC ${SHLWAPI_INCLUDE_DIR}) | ||||
▲ Show 20 Lines • Show All 194 Lines • Show Last 20 Lines |
You should check for rt's presence. This is a miracle that it works at all, you probably have something in your build that requires rt transitively ?