From 7ecd6c66b3aa13489d126f3a5d96e07bf3858435 Mon Sep 17 00:00:00 2001 From: Johannes Demel Date: Fri, 12 Jan 2024 21:39:01 +0100 Subject: [PATCH] cmake: Fix 64bit host CPU detection In cases where we don't cross-compile, we might want to detect if a CPU is 32bit or 64bit. CMake provides functionality for this case starting in CMake 3.10. Let's use it. Ubuntu 20.04 uses CMake 3.16. From the top of my head, this is the oldest supported distribution. Debian buster ships with CMake 3.13. Signed-off-by: Johannes Demel --- CMakeLists.txt | 18 +++++++++++------- lib/CMakeLists.txt | 15 +++++++-------- 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d6401845..042523e2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,7 +10,9 @@ ######################################################################## # Project setup ######################################################################## -cmake_minimum_required(VERSION 3.8) +cmake_minimum_required(VERSION 3.10) + +# We use `IS_64BIT now: https://cmake.org/cmake/help/latest/command/cmake_host_system_information.html set(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE} CACHE STRING "Choose build type: None Debug Release RelWithDebInfo MinSizeRel") @@ -82,7 +84,7 @@ message(STATUS "Build type set to ${CMAKE_BUILD_TYPE}.") set(VERSION_INFO_MAJOR_VERSION 3) set(VERSION_INFO_MINOR_VERSION 1) -set(VERSION_INFO_MAINT_VERSION 2) +set(VERSION_INFO_MAINT_VERSION 0) include(VolkVersion) #setup version info math(EXPR VOLK_VERSION_DECIMAL "${VERSION_INFO_MAJOR_VERSION} * 10000 @@ -213,7 +215,9 @@ add_subdirectory(docs) ######################################################################## # Detect /lib versus /lib64 ######################################################################## -include(GNUInstallDirs) +if(${CMAKE_INSTALL_LIBDIR} MATCHES lib64) + set(LIB_SUFFIX 64) +endif() ######################################################################## # Setup the package config file @@ -221,7 +225,7 @@ include(GNUInstallDirs) #set variables found in the pc.in file set(prefix ${CMAKE_INSTALL_PREFIX}) set(exec_prefix "\${prefix}") -set(libdir "\${exec_prefix}/${CMAKE_INSTALL_LIBDIR}") +set(libdir "\${exec_prefix}/lib${LIB_SUFFIX}") set(includedir "\${prefix}/include") configure_file(${CMAKE_CURRENT_SOURCE_DIR}/tmpl/volk.pc.in @@ -229,14 +233,14 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/tmpl/volk.pc.in install( FILES ${CMAKE_CURRENT_BINARY_DIR}/volk.pc - DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig + DESTINATION lib${LIB_SUFFIX}/pkgconfig COMPONENT "volk_devel") ######################################################################## # Install all headers in the include directories ######################################################################## set(VOLK_RUNTIME_DIR bin) -set(VOLK_LIBRARY_DIR ${CMAKE_INSTALL_LIBDIR}) +set(VOLK_LIBRARY_DIR lib${LIB_SUFFIX}) set(VOLK_INCLUDE_DIR include) install( @@ -318,7 +322,7 @@ configure_file(${CMAKE_SOURCE_DIR}/cmake/Modules/VolkConfigVersion.cmake.in ######################################################################## if(NOT CMAKE_MODULES_DIR) - set(CMAKE_MODULES_DIR ${CMAKE_INSTALL_LIBDIR}/cmake) + set(CMAKE_MODULES_DIR lib${LIB_SUFFIX}/cmake) endif(NOT CMAKE_MODULES_DIR) install( diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index 074f46f8..66dcbe90 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -255,17 +255,16 @@ endif() ######################################################################## if(NOT CROSSCOMPILE_MULTILIB AND CPU_IS_x86) include(CheckTypeSize) - check_type_size("void*[8]" SIZEOF_CPU BUILTIN_TYPES_ONLY) - if(${SIZEOF_CPU} EQUAL 64) + cmake_host_system_information(RESULT ASSUME_64BIT_HOST QUERY IS_64BIT) + if(ASSUME_64BIT_HOST) overrule_arch(32 "CPU width is 64 bits") - endif() - if(${SIZEOF_CPU} EQUAL 32) + else() overrule_arch(64 "CPU width is 32 bits") endif() #MSVC 64 bit does not have MMX, overrule it if(MSVC) - if(${SIZEOF_CPU} EQUAL 64) + if(ASSUME_64BIT_HOST) overrule_arch(mmx "No MMX for Win64") endif() force_arch(sse "Built-in for MSVC > 2013") @@ -592,8 +591,8 @@ set_target_properties(volk PROPERTIES DEFINE_SYMBOL "volk_EXPORTS") install( TARGETS volk EXPORT VOLK-export - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT "volk_runtime" # .so file - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT "volk_devel" # .lib file + LIBRARY DESTINATION lib${LIB_SUFFIX} COMPONENT "volk_runtime" # .so file + ARCHIVE DESTINATION lib${LIB_SUFFIX} COMPONENT "volk_devel" # .lib file RUNTIME DESTINATION bin COMPONENT "volk_runtime" # .dll file ) @@ -635,7 +634,7 @@ if(ENABLE_STATIC_LIBS) install( TARGETS volk_static EXPORT VOLK-export - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT "volk_devel") + ARCHIVE DESTINATION lib${LIB_SUFFIX} COMPONENT "volk_devel") endif(ENABLE_STATIC_LIBS) ########################################################################