diff options
author | Lasse Collin <lasse.collin@tukaani.org> | 2020-02-25 20:42:31 +0200 |
---|---|---|
committer | Lasse Collin <lasse.collin@tukaani.org> | 2020-02-25 20:44:10 +0200 |
commit | 474320e9908786ba2021035f9013191e16cde08a (patch) | |
tree | bd221ac4a0d61f8b5db1e0681ae5268d1dbbedd4 /cmake/tuklib_cpucores.cmake | |
parent | Build: Add very limited experimental CMake support. (diff) | |
download | xz-474320e9908786ba2021035f9013191e16cde08a.tar.xz |
Build: Fix bugs in the CMake files.
Seems that the phrase "add more quotes" from sh/bash scripting
applies to CMake as well. E.g. passing an unquoted list ${FOO}
to a function that expects one argument results in only the
first element of the list being passed as an argument and
the rest get ignored. Adding quotes helps ("${FOO}").
list(INSERT ...) is weird. Inserting an empty string to an empty
variable results in empty list, but inserting it to a non-empty
variable does insert an empty element to the list.
Since INSERT requires at least one element,
"${CMAKE_THREAD_LIBS_INIT}" needs to be quoted in CMakeLists.txt.
It might result in an empty element in the list. It seems to not
matter as empty elements consistently get ignored in that variable.
In fact, calling cmake_check_push_state() and cmake_check_pop_state()
will strip the empty elements from CMAKE_REQUIRED_LIBRARIES!
In addition to quoting fixes, this fixes checks for the cache
variables in tuklib_cpucores.cmake and tuklib_physmem.cmake.
Thanks to Martin Matuška for testing and reporting the problems.
These fixes aren't tested yet but hopefully they soon will be.
Diffstat (limited to 'cmake/tuklib_cpucores.cmake')
-rw-r--r-- | cmake/tuklib_cpucores.cmake | 30 |
1 files changed, 16 insertions, 14 deletions
diff --git a/cmake/tuklib_cpucores.cmake b/cmake/tuklib_cpucores.cmake index 34546b0d..5844e4b2 100644 --- a/cmake/tuklib_cpucores.cmake +++ b/cmake/tuklib_cpucores.cmake @@ -7,15 +7,11 @@ # You can do whatever you want with this file. # -include(${CMAKE_CURRENT_LIST_DIR}/tuklib_common.cmake) +include("${CMAKE_CURRENT_LIST_DIR}/tuklib_common.cmake") include(CheckCSourceCompiles) include(CheckIncludeFile) function(tuklib_cpucores_internal_check) - if(CACHE{TUKLIB_CPUCORES_DEFINITIONS}) - return() - endif() - if(WIN32 OR CYGWIN) # Nothing to do, the tuklib_cpucores.c handles it. set(TUKLIB_CPUCORES_DEFINITIONS "" CACHE INTERNAL "") @@ -158,16 +154,22 @@ function(tuklib_cpucores_internal_check) endfunction() function(tuklib_cpucores TARGET_OR_ALL) - message(STATUS "Checking how to detect the number of available CPU cores") + if(NOT DEFINED CACHE{TUKLIB_CPUCORES_FOUND}) + message(STATUS + "Checking how to detect the number of available CPU cores") + tuklib_cpucores_internal_check() - tuklib_cpucores_internal_check() + if(DEFINED CACHE{TUKLIB_CPUCORES_DEFINITIONS}) + set(TUKLIB_CPUCORES_FOUND 1 CACHE INTERNAL "") + else() + set(TUKLIB_CPUCORES_FOUND 0 CACHE INTERNAL "") + message(WARNING + "No method to detect the number of CPU cores was found") + endif() + endif() - if(NOT DEFINED CACHE{TUKLIB_CPUCORES_DEFINITIONS}) - set(TUKLIB_CPUCORES_FOUND 0 PARENT_SCOPE) - message(WARNING - "No method to detect the number of CPU cores was found") - else() - set(TUKLIB_CPUCORES_FOUND 1 PARENT_SCOPE) - tuklib_add_definitions(${TARGET_OR_ALL} ${TUKLIB_CPUCORES_DEFINITIONS}) + if(TUKLIB_CPUCORES_FOUND) + tuklib_add_definitions("${TARGET_OR_ALL}" + "${TUKLIB_CPUCORES_DEFINITIONS}") endif() endfunction() |