Files
OpenSceneGraph/src/OpenThreads/CMakeLists.txt

117 lines
3.7 KiB
CMake

# This is mainly for Windows declspec, but other platforms know
# what to do with it.
ADD_DEFINITIONS(-DOPENTHREADS_EXPORTS)
SET(OPENTHREADS_MAJOR_VERSION 3)
SET(OPENTHREADS_MINOR_VERSION 3)
SET(OPENTHREADS_PATCH_VERSION 1)
SET(OPENTHREADS_SOVERSION 21)
SET(OPENTHREADS_VERSION ${OPENTHREADS_MAJOR_VERSION}.${OPENTHREADS_MINOR_VERSION}.${OPENTHREADS_PATCH_VERSION})
IF(NOT ANDROID)
INCLUDE(CheckAtomicOps)
ENDIF()
# User Options
OPTION(DYNAMIC_OPENTHREADS "Set to ON to build OpenThreads for dynamic linking. Use OFF for static." ON)
IF(DYNAMIC_OPENTHREADS)
SET(OPENTHREADS_USER_DEFINED_DYNAMIC_OR_STATIC "SHARED")
ELSE()
SET(OPENTHREADS_USER_DEFINED_DYNAMIC_OR_STATIC "STATIC")
SET(OT_LIBRARY_STATIC 1)
ENDIF()
################################################################################
# Set Config file
SET(OPENTHREADS_CONFIG_HEADER "${PROJECT_BINARY_DIR}/include/OpenThreads/Config")
CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/common/Config.in"
"${OPENTHREADS_CONFIG_HEADER}")
SET(OPENTHREADS_VERSION_HEADER "${PROJECT_BINARY_DIR}/include/OpenThreads/Version")
CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/common/Version.in"
"${OPENTHREADS_VERSION_HEADER}")
################################################################################
# Set Version Info resource file
IF(MSVC)
SET(OPENTHREADS_VERSIONINFO_RC "${PROJECT_BINARY_DIR}/PlatformSpecifics/Windows/OpenThreadsVersionInfo.rc")
CONFIGURE_FILE("${PROJECT_SOURCE_DIR}/PlatformSpecifics/Windows/OpenThreadsVersionInfo.rc.in"
"${OPENTHREADS_VERSIONINFO_RC}")
ENDIF()
################################################################################
## Quieten warnings that a due to optional code paths
IF(CMAKE_COMPILER_IS_GNUCXX)
# Remove -Wextra flag as it barfs on ffmoeg headers
STRING(REGEX REPLACE "-Wextra" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
ENDIF()
# INSTALL_FILES(/include/OpenThreads/ FILES "${OPENTHREADS_CONFIG_HEADER}")
################################################################################
SET(HEADER_PATH ${OpenThreads_SOURCE_DIR}/include/OpenThreads)
SET(OpenThreads_PUBLIC_HEADERS
${HEADER_PATH}/Atomic
${HEADER_PATH}/Affinity
${HEADER_PATH}/Barrier
${HEADER_PATH}/Block
${HEADER_PATH}/Condition
${HEADER_PATH}/Exports
${HEADER_PATH}/Mutex
${HEADER_PATH}/ReadWriteMutex
${HEADER_PATH}/ReentrantMutex
${HEADER_PATH}/ScopedLock
${HEADER_PATH}/Thread
${OPENTHREADS_VERSION_HEADER}
${OPENTHREADS_CONFIG_HEADER}
)
IF(NOT ANDROID)
# Use our modified version of FindThreads.cmake which has Sproc hacks.
FIND_PACKAGE(Threads)
ENDIF()
# Add support for using Qt threads
IF(QT4_FOUND OR Qt5Widgets_FOUND)
OPTION(BUILD_OPENTHREADS_WITH_QT "Build OpenThreads with Qt threading support." OFF)
ENDIF()
# Maybe we should be using the FindThreads.cmake module?
IF(ANDROID)
SUBDIRS(pthreads)
ELSEIF(WIN32)
# So I think Cygwin wants to use pthreads
IF(CYGWIN)
SUBDIRS(pthreads)
ELSE()
# Everybody else including Msys should probably go here
SUBDIRS(win32)
# examples)
ENDIF()
ELSE()
IF(UNIX)
SUBDIRS(pthreads)
ELSE()
MESSAGE("Sorry, OpenThreads may not support your platform")
ENDIF()
ENDIF()
# Make sure everyone can find Config
INCLUDE_DIRECTORIES(${PROJECT_BINARY_DIR}/include)
# Generate pkg-config configuration file
CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/packaging/pkgconfig/openthreads.pc.in
${PROJECT_BINARY_DIR}/packaging/pkgconfig/openthreads.pc
@ONLY
)
INSTALL(FILES ${PROJECT_BINARY_DIR}/packaging/pkgconfig/openthreads.pc DESTINATION lib${LIB_POSTFIX}/pkgconfig COMPONENT libopenthreads-dev)