mirror of
https://github.com/google/cpu_features.git
synced 2025-04-27 23:22:31 +02:00
Fix discovery of <sys/auxv.h>
This commit is contained in:
parent
347065af95
commit
b3bb9048f4
@ -23,8 +23,8 @@ option(BUILD_SHARED_LIBS "Build library as shared." OFF)
|
|||||||
include (CheckIncludeFile)
|
include (CheckIncludeFile)
|
||||||
include (CheckSymbolExists)
|
include (CheckSymbolExists)
|
||||||
|
|
||||||
check_symbol_exists(getauxval sys/auxv.h HAVE_STRONG_GETAUXVAL)
|
|
||||||
check_include_file(dlfcn.h HAVE_DLFCN_H)
|
check_include_file(dlfcn.h HAVE_DLFCN_H)
|
||||||
|
check_symbol_exists(getauxval "sys/auxv.h" HAVE_STRONG_GETAUXVAL)
|
||||||
|
|
||||||
set(_HDRS
|
set(_HDRS
|
||||||
include/cpu_features_macros.h
|
include/cpu_features_macros.h
|
||||||
@ -32,44 +32,55 @@ set(_HDRS
|
|||||||
|
|
||||||
set(_SRCS
|
set(_SRCS
|
||||||
include/internal/bit_utils.h
|
include/internal/bit_utils.h
|
||||||
include/internal/linux_features_aggregator.h
|
|
||||||
include/internal/filesystem.h
|
|
||||||
include/internal/hwcaps.h
|
|
||||||
include/internal/stack_line_reader.h
|
|
||||||
include/internal/string_view.h
|
|
||||||
src/linux_features_aggregator.c
|
|
||||||
src/filesystem.c
|
|
||||||
src/hwcaps.c
|
|
||||||
src/stack_line_reader.c
|
|
||||||
src/string_view.c
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
macro(add_linux_detection)
|
||||||
|
if(NOT (APPLE OR UNIX))
|
||||||
|
message(FATAL_ERROR "Use of add_linux_detection() on non Linux-like OS")
|
||||||
|
endif()
|
||||||
|
list(APPEND _SRCS
|
||||||
|
include/internal/linux_features_aggregator.h
|
||||||
|
src/linux_features_aggregator.c
|
||||||
|
include/internal/hwcaps.h
|
||||||
|
src/hwcaps.c
|
||||||
|
include/internal/filesystem.h
|
||||||
|
src/filesystem.c
|
||||||
|
include/internal/stack_line_reader.h
|
||||||
|
src/stack_line_reader.c
|
||||||
|
include/internal/string_view.h
|
||||||
|
src/string_view.c
|
||||||
|
)
|
||||||
|
endmacro()
|
||||||
|
|
||||||
if(CMAKE_SYSTEM_PROCESSOR MATCHES "^mips")
|
if(CMAKE_SYSTEM_PROCESSOR MATCHES "^mips")
|
||||||
list(APPEND _HDRS include/cpuinfo_mips.h)
|
list(APPEND _HDRS include/cpuinfo_mips.h)
|
||||||
list(APPEND _SRCS src/cpuinfo_mips.c)
|
list(APPEND _SRCS src/cpuinfo_mips.c)
|
||||||
|
add_linux_detection()
|
||||||
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^arm")
|
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^arm")
|
||||||
list(APPEND _HDRS include/cpuinfo_arm.h)
|
list(APPEND _HDRS include/cpuinfo_arm.h)
|
||||||
list(APPEND _SRCS src/cpuinfo_arm.c)
|
list(APPEND _SRCS src/cpuinfo_arm.c)
|
||||||
|
add_linux_detection()
|
||||||
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^aarch64")
|
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^aarch64")
|
||||||
list(APPEND _HDRS include/cpuinfo_aarch64.h)
|
list(APPEND _HDRS include/cpuinfo_aarch64.h)
|
||||||
list(APPEND _SRCS src/cpuinfo_aarch64.c)
|
list(APPEND _SRCS src/cpuinfo_aarch64.c)
|
||||||
|
add_linux_detection()
|
||||||
elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64" OR
|
elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64" OR
|
||||||
CMAKE_SYSTEM_PROCESSOR STREQUAL "AMD64" OR
|
CMAKE_SYSTEM_PROCESSOR STREQUAL "AMD64" OR
|
||||||
CMAKE_SYSTEM_PROCESSOR MATCHES "^i.86$")
|
CMAKE_SYSTEM_PROCESSOR MATCHES "^i.86$")
|
||||||
list(APPEND _HDRS include/cpuinfo_x86.h)
|
list(APPEND _HDRS include/cpuinfo_x86.h)
|
||||||
list(APPEND _HDRS include/internal/cpuid_x86.h)
|
list(APPEND _HDRS include/internal/cpuid_x86.h)
|
||||||
list(APPEND _SRCS src/cpuinfo_x86.c)
|
list(APPEND _SRCS src/cpuinfo_x86.c)
|
||||||
|
# add_linux_detection() is not needed on x86, we fetch the features directly
|
||||||
|
# from the CPU.
|
||||||
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)")
|
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)")
|
||||||
list(APPEND _HDRS include/cpuinfo_ppc.h)
|
list(APPEND _HDRS include/cpuinfo_ppc.h)
|
||||||
list(APPEND _SRCS src/cpuinfo_ppc.c)
|
list(APPEND _SRCS src/cpuinfo_ppc.c)
|
||||||
|
add_linux_detection()
|
||||||
else()
|
else()
|
||||||
message(FATAL_ERROR "Unsupported architectures ${CMAKE_SYSTEM_PROCESSOR}")
|
message(FATAL_ERROR "Unsupported architectures ${CMAKE_SYSTEM_PROCESSOR}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_library(cpu_features
|
add_library(cpu_features ${_HDRS} ${_SRCS})
|
||||||
${_HDRS}
|
|
||||||
${_SRCS}
|
|
||||||
)
|
|
||||||
|
|
||||||
target_include_directories(cpu_features
|
target_include_directories(cpu_features
|
||||||
PUBLIC
|
PUBLIC
|
||||||
@ -79,11 +90,13 @@ target_include_directories(cpu_features
|
|||||||
include/internal
|
include/internal
|
||||||
)
|
)
|
||||||
set_target_properties(cpu_features PROPERTIES PUBLIC_HEADER "${_HDRS}")
|
set_target_properties(cpu_features PROPERTIES PUBLIC_HEADER "${_HDRS}")
|
||||||
target_compile_definitions(cpu_features PUBLIC
|
target_compile_definitions(cpu_features PUBLIC STACK_LINE_READER_BUFFER_SIZE=1024)
|
||||||
STACK_LINE_READER_BUFFER_SIZE=1024
|
if(HAVE_DLFCN_H)
|
||||||
HAVE_STRONG_GETAUXVAL=${HAVE_STRONG_GETAUXVAL}
|
target_compile_definitions(cpu_features PRIVATE HAVE_DLFCN_H)
|
||||||
HAVE_DLFCN_H=${HAVE_DLFCN_H}
|
endif()
|
||||||
)
|
if(HAVE_STRONG_GETAUXVAL)
|
||||||
|
target_compile_definitions(cpu_features PRIVATE HAVE_STRONG_GETAUXVAL)
|
||||||
|
endif()
|
||||||
target_link_libraries(cpu_features PUBLIC ${CMAKE_DL_LIBS})
|
target_link_libraries(cpu_features PUBLIC ${CMAKE_DL_LIBS})
|
||||||
|
|
||||||
# The use of shared libraries is discouraged.
|
# The use of shared libraries is discouraged.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user