From: A. Maitland Bottoms Date: Tue, 1 Dec 2020 16:29:12 +0000 (-0500) Subject: [PATCH] cpu_features CMake option X-Git-Tag: archive/raspbian/2.4.0-3+rpi1^2~1 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=af80cac4735c0fdfd8d026ef4eb91dde041e6f15;p=volk.git [PATCH] cpu_features CMake option Make use of cpu_features a CMake option with sensible defaults per arch. (avoiding CMake failures of cpu_features for unknown architectures) Gbp-Pq: Name cpu_features-CMake-option --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 7618494..ac89b4d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -114,14 +114,25 @@ endif(MSVC) # Dependencies setup ######################################################################## -# cpu_features -set(BUILD_PIC ON CACHE BOOL +# cpu_features - sensible defaults, user settable option +if(CMAKE_SYSTEM_PROCESSOR MATCHES + "(^mips)|(^arm)|(^aarch64)|(x86_64)|(AMD64|amd64)|(^i.86$)|(^powerpc)|(^ppc)") + option(VOLK_CPU_FEATURES "Volk uses cpu_features" ON) +else() + option(VOLK_CPU_FEATURES "Volk uses cpu_features" OFF) +endif() +if (VOLK_CPU_FEATURES) + message(STATUS "Building Volk with cpu_features") + set(BUILD_PIC ON CACHE BOOL "Build cpu_features with Position Independent Code (PIC)." FORCE) -set(BUILD_SHARED_LIBS_SAVED "${BUILD_SHARED_LIBS}") -set(BUILD_SHARED_LIBS OFF) -add_subdirectory(cpu_features) -set(BUILD_SHARED_LIBS "${BUILD_SHARED_LIBS_SAVED}") + set(BUILD_SHARED_LIBS_SAVED "${BUILD_SHARED_LIBS}") + set(BUILD_SHARED_LIBS OFF) + add_subdirectory(cpu_features) + set(BUILD_SHARED_LIBS "${BUILD_SHARED_LIBS_SAVED}") +else() + message(STATUS "Building Volk without cpu_features") +endif() # Python include(VolkPython) #sets PYTHON_EXECUTABLE and PYTHON_DASH_B diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index 7458530..9fbdb92 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -511,10 +511,15 @@ target_include_directories(volk_obj PRIVATE $ PRIVATE $ PRIVATE $ - PRIVATE $ PRIVATE ${CMAKE_CURRENT_BINARY_DIR} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ) +if(VOLK_CPU_FEATURES) + set_source_files_properties(volk_cpu.c PROPERTIES COMPILE_DEFINITIONS "VOLK_CPU_FEATURES=1") + target_include_directories(volk_obj + PRIVATE $ +) +endif() #Configure object target properties if(NOT MSVC) @@ -530,7 +535,10 @@ endif() #include directories is taken as provided; it -might- matter, but #probably doesn't. add_library(volk SHARED $) -target_link_libraries(volk PUBLIC ${volk_libraries} PRIVATE cpu_features) +target_link_libraries(volk PUBLIC ${volk_libraries}) +if(VOLK_CPU_FEATURES) + target_link_libraries(volk PRIVATE cpu_features) +endif() target_include_directories(volk PUBLIC $ PUBLIC $ diff --git a/tmpl/volk_cpu.tmpl.c b/tmpl/volk_cpu.tmpl.c index 1266250..f879eb6 100644 --- a/tmpl/volk_cpu.tmpl.c +++ b/tmpl/volk_cpu.tmpl.c @@ -25,6 +25,7 @@ #include +#if defined(VOLK_CPU_FEATURES) #include "cpu_features_macros.h" #if defined(CPU_FEATURES_ARCH_X86) #include "cpuinfo_x86.h" @@ -42,6 +43,7 @@ #if defined(__cplusplus) using namespace cpu_features; #endif +#endif struct VOLK_CPU volk_cpu;