1
0
Fork 0
mirror of https://github.com/anrieff/libcpuid synced 2024-12-16 16:35:45 +00:00

Fix build for NetBSD (and presumably DragonFly BSD)

These both use POSIX threads. I got a link error when cross-compiling
using Nixpkgs (Linux -> NetBSD) that went away once I passed `-pthread`.

The autoconf is crafted to have the same conditional as the C code itself.
This commit is contained in:
John Ericson 2023-05-19 00:57:27 -04:00 committed by The Tumultuous Unicorn Of Darkness
parent f1c96e1372
commit 09071d20f3
No known key found for this signature in database
GPG key ID: 1E55EE2EFF18BC1A
3 changed files with 40 additions and 0 deletions

View file

@ -21,6 +21,18 @@ option(LIBCPUID_TESTS "Enable building tests" OFF)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_C_STANDARD 99)
# pthreads library
if(${CMAKE_SYSTEM_NAME} STREQUAL "DragonFly" OR ${CMAKE_SYSTEM_NAME} STREQUAL "NetBSD")
find_package(Threads REQUIRED)
endif()
# check if popcount64 is available
include(CheckSymbolExists)
check_symbol_exists(popcount64 "string.h" HAVE_POPCOUNT64)
if(HAVE_POPCOUNT64)
add_definitions(-DHAVE_POPCOUNT64)
endif(HAVE_POPCOUNT64)
# Global variables
list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")

View file

@ -62,18 +62,45 @@ fi
AC_CANONICAL_HOST
AC_MSG_CHECKING([Whether we need POSIX threads])
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([
#if defined(__NetBSD__) || defined(__DragonFly__)
#else
# error "no pthreads needed"
#endif
])
], [
AC_MSG_RESULT([yes])
AC_SUBST([LIBCPUID_LDFLAGS], ["-pthread"])
], [
AC_MSG_RESULT([no])
])
build_windows=no
build_netbsd=no
build_dragonflybsd=no
case "${host_os}" in
cygwin*|mingw*)
build_windows=yes
;;
netbsd*)
build_netbsd=yes
;;
dragonfly*)
build_dragonflybsd=yes
;;
esac
if test "$build_windows" = "no"; then
AM_CPPFLAGS="$AM_CPPFLAGS -D_GNU_SOURCE"
fi
if test "$build_netbsd" = "yes" || test "$build_dragonflybsd" = "yes"; then
AM_LDFLAGS="$AM_LDFLAGS -pthread"
fi
AM_CONDITIONAL([WINDOWS], [test "$build_windows" = "yes"])
AC_SUBST(AM_CPPFLAGS)

View file

@ -23,6 +23,7 @@ add_library(cpuid ${cpuid_sources})
set_property(TARGET cpuid PROPERTY WINDOWS_EXPORT_ALL_SYMBOLS ON)
target_include_directories(cpuid SYSTEM PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>)
target_link_libraries(cpuid ${CMAKE_THREAD_LIBS_INIT})
target_compile_definitions(cpuid PRIVATE VERSION="${PROJECT_VERSION}")
set_target_properties(cpuid PROPERTIES VERSION "${LIBCPUID_CURRENT}.${LIBCPUID_AGE}.${LIBCPUID_REVISION}")
set_target_properties(cpuid PROPERTIES SOVERSION "${LIBCPUID_CURRENT}")