2
1
mirror of https://github.com/qpdf/qpdf.git synced 2024-09-28 04:59:05 +00:00

Fix test for whether atomic library is needed

Some platforms need it for atomic<long long> but not for atomic<int>.
This commit is contained in:
Jay Berkenbilt 2022-03-19 18:19:44 -04:00
parent 198b96471a
commit 6dcb26d21e
2 changed files with 13 additions and 3 deletions

View File

@ -154,6 +154,7 @@ if(WIN32 AND NOT SKIP_OS_SECURE_RANDOM)
endif() endif()
include(CheckCXXSourceCompiles) include(CheckCXXSourceCompiles)
set(ATOMIC_LIBRARY)
function(check_atomic) function(check_atomic)
foreach(I 0 1) foreach(I 0 1)
if(I) if(I)
@ -162,8 +163,8 @@ function(check_atomic)
check_cxx_source_compiles( check_cxx_source_compiles(
"#include <atomic> "#include <atomic>
int main() { int main() {
static std::atomic<int> a{0}; static std::atomic<unsigned long long> a{0};
a = a.fetch_add(1); a = a.fetch_add(1LL);
return 0; return 0;
}" }"
ATOMIC_WORKED${I}) ATOMIC_WORKED${I})
@ -172,7 +173,7 @@ int main() {
endif() endif()
endforeach() endforeach()
if(ATOMIC_WORKED1) if(ATOMIC_WORKED1)
list(APPEND CMAKE_REQUIRED_LIBRARIES atomic) set(ATOMIC_WORKED1 atomic PARENT_SCOPE)
endif() endif()
endfunction() endfunction()
check_atomic() check_atomic()

View File

@ -410,6 +410,9 @@ target_include_directories(${OBJECT_LIB}
${CMAKE_CURRENT_BINARY_DIR}) ${CMAKE_CURRENT_BINARY_DIR})
target_link_directories(${OBJECT_LIB} INTERFACE ${dep_link_directories}) target_link_directories(${OBJECT_LIB} INTERFACE ${dep_link_directories})
target_link_libraries(${OBJECT_LIB} INTERFACE ${dep_link_libraries}) target_link_libraries(${OBJECT_LIB} INTERFACE ${dep_link_libraries})
if(ATOMIC_LIBRARY)
target_link_libraries(${OBJECT_LIB} INTERFACE ${ATOMIC_LIBRARY})
endif()
set(LD_VERSION_FLAGS "") set(LD_VERSION_FLAGS "")
function(ld_version_script) function(ld_version_script)
@ -490,6 +493,9 @@ if(BUILD_SHARED_LIBS)
$<INSTALL_INTERFACE:include>) $<INSTALL_INTERFACE:include>)
target_link_directories(${SHARED_LIB} PRIVATE ${dep_link_directories}) target_link_directories(${SHARED_LIB} PRIVATE ${dep_link_directories})
target_link_libraries(${SHARED_LIB} PRIVATE ${dep_link_libraries}) target_link_libraries(${SHARED_LIB} PRIVATE ${dep_link_libraries})
if(ATOMIC_LIBRARY)
target_link_libraries(${SHARED_LIB} PRIVATE ${ATOMIC_LIBRARY})
endif()
if(LD_VERSION_FLAGS) if(LD_VERSION_FLAGS)
target_link_options(${SHARED_LIB} PRIVATE ${LD_VERSION_FLAGS}) target_link_options(${SHARED_LIB} PRIVATE ${LD_VERSION_FLAGS})
endif() endif()
@ -527,6 +533,9 @@ if(BUILD_STATIC_LIBS)
INTERFACE $<BUILD_INTERFACE:${dep_link_directories}> INTERFACE $<BUILD_INTERFACE:${dep_link_directories}>
PRIVATE $<INSTALL_INTERFACE:${dep_link_directories}>) PRIVATE $<INSTALL_INTERFACE:${dep_link_directories}>)
target_link_libraries(${STATIC_LIB} INTERFACE ${dep_link_libraries}) target_link_libraries(${STATIC_LIB} INTERFACE ${dep_link_libraries})
if(ATOMIC_LIBRARY)
target_link_libraries(${STATIC_LIB} INTERFACE ${ATOMIC_LIBRARY})
endif()
# Avoid name clashes on Windows with the the DLL import library. # Avoid name clashes on Windows with the the DLL import library.
if(NOT DEFINED STATIC_SUFFIX AND BUILD_SHARED_LIBS) if(NOT DEFINED STATIC_SUFFIX AND BUILD_SHARED_LIBS)