diff options
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/CPackIFW.cmake | 158 | ||||
-rw-r--r-- | Modules/DartConfiguration.tcl.in | 1 | ||||
-rw-r--r-- | Modules/FindBacktrace.cmake | 2 | ||||
-rw-r--r-- | Modules/FindBoost.cmake | 8 | ||||
-rw-r--r-- | Modules/FindITK.cmake | 61 | ||||
-rw-r--r-- | Modules/FindIce.cmake | 2 | ||||
-rw-r--r-- | Modules/FindLATEX.cmake | 2 | ||||
-rw-r--r-- | Modules/FindLua.cmake | 2 | ||||
-rw-r--r-- | Modules/FindPackageHandleStandardArgs.cmake | 43 | ||||
-rw-r--r-- | Modules/FindSquish.cmake | 2 | ||||
-rw-r--r-- | Modules/FindThreads.cmake | 150 | ||||
-rw-r--r-- | Modules/FindVTK.cmake | 66 | ||||
-rw-r--r-- | Modules/FindXerces.cmake | 2 |
13 files changed, 254 insertions, 245 deletions
diff --git a/Modules/CPackIFW.cmake b/Modules/CPackIFW.cmake index 8463b5d..4b8dc1e 100644 --- a/Modules/CPackIFW.cmake +++ b/Modules/CPackIFW.cmake @@ -25,6 +25,8 @@ # and Mac OS X. # # To use CPack ``IFW`` generator you must also install QtIFW_. +# If you are not using the default path for the installation, please set +# the path to the variable ``QTIFWDIR``. # # Variables # ^^^^^^^^^ @@ -83,6 +85,19 @@ # The root package name, which will be used if configuration group is not # specified # +# .. variable:: CPACK_IFW_REPOSITORIES_ALL +# +# The list of remote repositories. +# +# The default value of this variable is computed by CPack and contains +# all repositories added with command :command:`cpack_ifw_add_repository` +# +# .. variable:: CPACK_IFW_DOWNLOAD_ALL +# +# If this is ``ON`` all components will be downloaded. +# By default is ``OFF`` or used value +# from :variable:`CPACK_DOWNLOAD_ALL` if set +# # Components # """""""""" # @@ -95,7 +110,7 @@ # Additional prepared packages dirs that will be used to resolve # dependent components. # -# Advanced +# Tools # """""""" # # .. variable:: CPACK_IFW_BINARYCREATOR_EXECUTABLE @@ -104,20 +119,12 @@ # # This variable is cached and can be configured user if need. # -# .. variable:: CPACK_IFW_BINARYCREATOR_EXECUTABLE_FOUND -# -# True if the "binarycreator" command line client was found. -# # .. variable:: CPACK_IFW_REPOGEN_EXECUTABLE # # The path to "repogen" command line client. # # This variable is cached and can be configured user if need. # -# .. variable:: CPACK_IFW_REPOGEN_EXECUTABLE_FOUND -# -# True if the "repogen" command line client was found. -# # Commands # ^^^^^^^^^ # @@ -191,6 +198,33 @@ # ``LICENSES`` pair of <display_name> and <file_path> of license text for this # component group. You can specify more then one license. # +# -------------------------------------------------------------------------- +# +# .. command:: cpack_ifw_add_repository +# +# Add QtIFW_ specific remote repository. +# +# :: +# +# cpack_ifw_add_repository(<reponame> [DISABLED] +# URL <url> +# [USERNAME <username>] +# [PASSWORD <password>] +# [DISPLAY_NAME <display_name>]) +# +# This macro will also add the <reponame> repository +# to a variable :variable:`CPACK_IFW_REPOSITORIES_ALL` +# +# ``DISABLED`` if set, then the repository will be disabled by default. +# +# ``URL`` is points to a list of available components. +# +# ``USERNAME`` is used as user on a protected repository. +# +# ``PASSWORD`` is password to use on a protected repository. +# +# ``DISPLAY_NAME`` is string to display instead of the URL. +# # Example usage # ^^^^^^^^^^^^^ # @@ -198,7 +232,7 @@ # # set(CPACK_PACKAGE_NAME "MyPackage") # set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "MyPackage Installation Example") -# set(CPACK_PACKAGE_VERSION "1.0.0") +# set(CPACK_PACKAGE_VERSION "1.0.0") # Version of installer # # include(CPack) # include(CPackIFW) @@ -207,8 +241,15 @@ # DISPLAY_NAME "MyApp" # DESCRIPTION "My Application") # cpack_ifw_configure_component(myapp -# VERSION "1.2.3" +# VERSION "1.2.3" # Version of component # SCRIPT "operations.qs") +# cpack_add_component(mybigplugin +# DISPLAY_NAME "MyBigPlugin" +# DESCRIPTION "My Big Downloadable Plugin" +# DOWNLOADED) +# cpack_ifw_add_repository(myrepo +# URL "http://example.com/ifw/repo/myapp" +# DISPLAY_NAME "My Application Repository") # # # Online installer @@ -223,8 +264,11 @@ # Then you would use the command :command:`cpack_configure_downloads`. # If you set ``ALL`` option all components will be downloaded. # +# You also can use command :command:`cpack_ifw_add_repository` and +# variable :variable:`CPACK_IFW_DOWNLOAD_ALL` for more specific configuration. +# # CPack IFW generator create "repository" dir in current binary dir. You -# would copy content of this dir to specified ``site``. +# would copy content of this dir to specified ``site`` (``url``). # # See Also # ^^^^^^^^ @@ -264,48 +308,41 @@ # Default path +set(_CPACK_IFW_PATHS + "${QTIFWDIR}" + "$ENV{QTIFWDIR}" + "${QTDIR}" + "$ENV{QTIFWDIR}") if(WIN32) - set(_CPACK_IFW_PATHS - "$ENV{HOMEDRIVE}/Qt" - "C:/Qt" - ) + list(APPEND _CPACK_IFW_PATHS + "$ENV{HOMEDRIVE}/Qt" + "C:/Qt") else() - set(_CPACK_IFW_PATHS - "$ENV{HOME}/Qt" - "/opt/Qt" - ) + list(APPEND _CPACK_IFW_PATHS + "$ENV{HOME}/Qt" + "/opt/Qt") endif() set(_CPACK_IFW_SUFFIXES - "QtIFW-1.7.0/bin" - "QtIFW-1.6.0/bin" - "QtIFW-1.5.0/bin" - "QtIFW-1.4.0/bin" - "QtIFW-1.3.0/bin" -) + "bin" + "QtIFW-1.7.0/bin" + "QtIFW-1.6.0/bin" + "QtIFW-1.5.0/bin" + "QtIFW-1.4.0/bin" + "QtIFW-1.3.0/bin") # Look for 'binarycreator' -if(NOT CPACK_IFW_BINARYCREATOR_EXECUTABLE_FOUND) - find_program(CPACK_IFW_BINARYCREATOR_EXECUTABLE NAMES binarycreator PATHS ${_CPACK_IFW_PATHS} PATH_SUFFIXES ${_CPACK_IFW_SUFFIXES} - DOC "QtIFW binarycreator command line client" - ) -mark_as_advanced(CPACK_IFW_BINARYCREATOR_EXECUTABLE) - -if(EXISTS ${CPACK_IFW_BINARYCREATOR_EXECUTABLE}) - set(CPACK_IFW_BINARYCREATOR_EXECUTABLE_FOUND 1) -endif() + DOC "QtIFW binarycreator command line client") -endif() # NOT CPACK_IFW_BINARYCREATOR_EXECUTABLE_FOUND +mark_as_advanced(CPACK_IFW_BINARYCREATOR_EXECUTABLE) # Look for 'repogen' -if(NOT CPACK_IFW_REPOGEN_EXECUTABLE_FOUND) - find_program(CPACK_IFW_REPOGEN_EXECUTABLE NAMES repogen PATHS ${_CPACK_IFW_PATHS} @@ -314,12 +351,6 @@ find_program(CPACK_IFW_REPOGEN_EXECUTABLE ) mark_as_advanced(CPACK_IFW_REPOGEN_EXECUTABLE) -if(EXISTS ${CPACK_IFW_REPOGEN_EXECUTABLE}) - set(CPACK_IFW_REPOGEN_EXECUTABLE_FOUND 1) -endif() - -endif() # NOT CPACK_IFW_REPOGEN_EXECUTABLE_FOUND - # ## Next code is included only once # @@ -444,4 +475,43 @@ macro(cpack_ifw_configure_component_group grpname) endif() endmacro() +# Macro for adding repository +macro(cpack_ifw_add_repository reponame) + + string(TOUPPER ${reponame} _CPACK_IFWREPO_UNAME) + + set(_IFW_OPT DISABLED) + set(_IFW_ARGS URL USERNAME PASSWORD DISPLAY_NAME) + set(_IFW_MULTI_ARGS) + cmake_parse_arguments(CPACK_IFW_REPOSITORY_${_CPACK_IFWREPO_UNAME} "${_IFW_OPT}" "${_IFW_ARGS}" "${_IFW_MULTI_ARGS}" ${ARGN}) + + set(_CPACK_IFWREPO_STR "\n# Configuration for IFW repository \"${reponame}\"\n") + + foreach(_IFW_ARG_NAME ${_IFW_OPT}) + cpack_append_option_set_command( + CPACK_IFW_REPOSITORY_${_CPACK_IFWREPO_UNAME}_${_IFW_ARG_NAME} + _CPACK_IFWREPO_STR) + endforeach() + + foreach(_IFW_ARG_NAME ${_IFW_ARGS}) + cpack_append_string_variable_set_command( + CPACK_IFW_REPOSITORY_${_CPACK_IFWREPO_UNAME}_${_IFW_ARG_NAME} + _CPACK_IFWREPO_STR) + endforeach() + + foreach(_IFW_ARG_NAME ${_IFW_MULTI_ARGS}) + cpack_append_variable_set_command( + CPACK_IFW_REPOSITORY_${_CPACK_IFWREPO_UNAME}_${_IFW_ARG_NAME} + _CPACK_IFWREPO_STR) + endforeach() + + list(APPEND CPACK_IFW_REPOSITORIES_ALL ${reponame}) + set(_CPACK_IFWREPO_STR "${_CPACK_IFWREPO_STR}list(APPEND CPACK_IFW_REPOSITORIES_ALL ${reponame})\n") + + if(CPack_CMake_INCLUDED) + file(APPEND "${CPACK_OUTPUT_CONFIG_FILE}" "${_CPACK_IFWREPO_STR}") + endif() + +endmacro() + endif() # NOT CPackIFW_CMake_INCLUDED diff --git a/Modules/DartConfiguration.tcl.in b/Modules/DartConfiguration.tcl.in index 86049d0..37a0a40 100644 --- a/Modules/DartConfiguration.tcl.in +++ b/Modules/DartConfiguration.tcl.in @@ -75,6 +75,7 @@ PurifyCommand: @PURIFYCOMMAND@ ValgrindCommand: @VALGRIND_COMMAND@ ValgrindCommandOptions: @VALGRIND_COMMAND_OPTIONS@ MemoryCheckType: @MEMORYCHECK_TYPE@ +MemoryCheckSanitizerOptions: @MEMORYCHECK_SANITIZER_OPTIONS@ MemoryCheckCommand: @MEMORYCHECK_COMMAND@ MemoryCheckCommandOptions: @MEMORYCHECK_COMMAND_OPTIONS@ MemoryCheckSuppressionFile: @MEMORYCHECK_SUPPRESSIONS_FILE@ diff --git a/Modules/FindBacktrace.cmake b/Modules/FindBacktrace.cmake index 5620661..07109b0 100644 --- a/Modules/FindBacktrace.cmake +++ b/Modules/FindBacktrace.cmake @@ -44,7 +44,7 @@ include(CMakePushCheckState) include(CheckSymbolExists) -include(FindPackageHandleStandardArgs) +include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake) # List of variables to be provided to find_package_handle_standard_args() set(_Backtrace_STD_ARGS Backtrace_INCLUDE_DIR) diff --git a/Modules/FindBoost.cmake b/Modules/FindBoost.cmake index 0eec4ad..3642b3e 100644 --- a/Modules/FindBoost.cmake +++ b/Modules/FindBoost.cmake @@ -375,9 +375,9 @@ endfunction() # Guesses Boost's compiler prefix used in built library names # Returns the guess by setting the variable pointed to by _ret function(_Boost_GUESS_COMPILER_PREFIX _ret) - if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel" - OR "${CMAKE_CXX_COMPILER}" MATCHES "icl" - OR "${CMAKE_CXX_COMPILER}" MATCHES "icpc") + if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel" + OR CMAKE_CXX_COMPILER MATCHES "icl" + OR CMAKE_CXX_COMPILER MATCHES "icpc") if(WIN32) set (_boost_COMPILER "-iw") else() @@ -403,7 +403,7 @@ function(_Boost_GUESS_COMPILER_PREFIX _ret) set(_boost_COMPILER "-vc6") # yes, this is correct elseif (BORLAND) set(_boost_COMPILER "-bcb") - elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "SunPro") + elseif(CMAKE_CXX_COMPILER_ID STREQUAL "SunPro") set(_boost_COMPILER "-sw") elseif (MINGW) if(${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION} VERSION_LESS 1.34) diff --git a/Modules/FindITK.cmake b/Modules/FindITK.cmake deleted file mode 100644 index c9d39eb..0000000 --- a/Modules/FindITK.cmake +++ /dev/null @@ -1,61 +0,0 @@ -#.rst: -# FindITK -# ------- -# -# Find an ITK installation or build tree. - -# When ITK is found, the ITKConfig.cmake file is sourced to setup the -# location and configuration of ITK. Please read this file, or -# ITKConfig.cmake.in from the ITK source tree for the full list of -# definitions. Of particular interest is ITK_USE_FILE, a CMake source file -# that can be included to set the include directories, library directories, -# and preprocessor macros. In addition to the variables read from -# ITKConfig.cmake, this find module also defines -# ITK_DIR - The directory containing ITKConfig.cmake. -# This is either the root of the build tree, -# or the lib/InsightToolkit directory. -# This is the only cache entry. -# -# ITK_FOUND - Whether ITK was found. If this is true, -# ITK_DIR is okay. -# -# USE_ITK_FILE - The full path to the UseITK.cmake file. -# This is provided for backward -# compatibility. Use ITK_USE_FILE -# instead. - -#============================================================================= -# Copyright 2001-2010 Kitware, Inc. -# -# Distributed under the OSI-approved BSD License (the "License"); -# see accompanying file Copyright.txt for details. -# -# This software is distributed WITHOUT ANY WARRANTY; without even the -# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the License for more information. -#============================================================================= -# (To distribute this file outside of CMake, substitute the full -# License text for the above reference.) - -# Use the Config mode of the find_package() command to find ITKConfig. -# If this succeeds (possibly because ITK_DIR is already set), the -# command will have already loaded ITKConfig.cmake and set ITK_FOUND. -if(NOT ITK_FOUND) - set(_ITK_REQUIRED "") - if(ITK_FIND_REQUIRED) - set(_ITK_REQUIRED REQUIRED) - endif() - set(_ITK_QUIET "") - if(ITK_FIND_QUIETLY) - set(_ITK_QUIET QUIET) - endif() - find_package(ITK ${_ITK_REQUIRED} ${_ITK_QUIET} NO_MODULE - NAMES ITK InsightToolkit - CONFIGS ITKConfig.cmake - ) -endif() - -if(ITK_FOUND) - # Set USE_ITK_FILE for backward-compatibility. - set(USE_ITK_FILE ${ITK_USE_FILE}) -endif() diff --git a/Modules/FindIce.cmake b/Modules/FindIce.cmake index 60a4107..55528b8 100644 --- a/Modules/FindIce.cmake +++ b/Modules/FindIce.cmake @@ -334,7 +334,7 @@ endfunction() _Ice_FIND() -include(FindPackageHandleStandardArgs) +include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake) FIND_PACKAGE_HANDLE_STANDARD_ARGS(Ice FOUND_VAR Ice_FOUND REQUIRED_VARS Ice_SLICE2CPP_EXECUTABLE diff --git a/Modules/FindLATEX.cmake b/Modules/FindLATEX.cmake index 62eedd6..e353d38 100644 --- a/Modules/FindLATEX.cmake +++ b/Modules/FindLATEX.cmake @@ -104,7 +104,7 @@ find_program(DVIPDF_CONVERTER if (WIN32) find_program(PS2PDF_CONVERTER - NAMES ps2pdf14.bat ps2pdf + NAMES ps2pdf14.bat ps2pdf14 ps2pdf PATHS ${GHOSTSCRIPT_LIBRARY_PATH} ${MIKTEX_BINARY_PATH} ) diff --git a/Modules/FindLua.cmake b/Modules/FindLua.cmake index cc35e54..731f5f2 100644 --- a/Modules/FindLua.cmake +++ b/Modules/FindLua.cmake @@ -56,7 +56,7 @@ function(set_lua_version_vars) if (Lua_FIND_VERSION_EXACT) if (Lua_FIND_VERSION_COUNT GREATER 1) - set(lua_append_versions ${Lua_FIND_VERSION_MAJOR} ${Lua_FIND_VERSION_MINOR}) + set(lua_append_versions ${Lua_FIND_VERSION_MAJOR}.${Lua_FIND_VERSION_MINOR}) endif () elseif (Lua_FIND_VERSION) # once there is a different major version supported this should become a loop diff --git a/Modules/FindPackageHandleStandardArgs.cmake b/Modules/FindPackageHandleStandardArgs.cmake index e8d1dfb..23f3f05 100644 --- a/Modules/FindPackageHandleStandardArgs.cmake +++ b/Modules/FindPackageHandleStandardArgs.cmake @@ -284,18 +284,47 @@ function(FIND_PACKAGE_HANDLE_STANDARD_ARGS _NAME _FIRST_ARG) # version handling: set(VERSION_MSG "") set(VERSION_OK TRUE) - set(VERSION ${${FPHSA_VERSION_VAR}} ) - if (${_NAME}_FIND_VERSION) + set(VERSION ${${FPHSA_VERSION_VAR}}) - if(VERSION) + # check with DEFINED here as the requested or found version may be "0" + if (DEFINED ${_NAME}_FIND_VERSION) + if(DEFINED ${FPHSA_VERSION_VAR}) if(${_NAME}_FIND_VERSION_EXACT) # exact version required - if (NOT "${${_NAME}_FIND_VERSION}" VERSION_EQUAL "${VERSION}") - set(VERSION_MSG "Found unsuitable version \"${VERSION}\", but required is exact version \"${${_NAME}_FIND_VERSION}\"") - set(VERSION_OK FALSE) + # count the dots in the version string + string(REGEX REPLACE "[^.]" "" _VERSION_DOTS "${VERSION}") + # add one dot because there is one dot more than there are components + string(LENGTH "${_VERSION_DOTS}." _VERSION_DOTS) + if (_VERSION_DOTS GREATER ${_NAME}_FIND_VERSION_COUNT) + # Because of the C++ implementation of find_package() ${_NAME}_FIND_VERSION_COUNT + # is at most 4 here. Therefore a simple lookup table is used. + if (${_NAME}_FIND_VERSION_COUNT EQUAL 1) + set(_VERSION_REGEX "[^.]*") + elseif (${_NAME}_FIND_VERSION_COUNT EQUAL 2) + set(_VERSION_REGEX "[^.]*\\.[^.]*") + elseif (${_NAME}_FIND_VERSION_COUNT EQUAL 3) + set(_VERSION_REGEX "[^.]*\\.[^.]*\\.[^.]*") + else () + set(_VERSION_REGEX "[^.]*\\.[^.]*\\.[^.]*\\.[^.]*") + endif () + string(REGEX REPLACE "^(${_VERSION_REGEX})\\..*" "\\1" _VERSION_HEAD "${VERSION}") + unset(_VERSION_REGEX) + if (NOT ${_NAME}_FIND_VERSION VERSION_EQUAL _VERSION_HEAD) + set(VERSION_MSG "Found unsuitable version \"${VERSION}\", but required is exact version \"${${_NAME}_FIND_VERSION}\"") + set(VERSION_OK FALSE) + else () + set(VERSION_MSG "(found suitable exact version \"${VERSION}\")") + endif () + unset(_VERSION_HEAD) else () - set(VERSION_MSG "(found suitable exact version \"${VERSION}\")") + if (NOT "${${_NAME}_FIND_VERSION}" VERSION_EQUAL "${VERSION}") + set(VERSION_MSG "Found unsuitable version \"${VERSION}\", but required is exact version \"${${_NAME}_FIND_VERSION}\"") + set(VERSION_OK FALSE) + else () + set(VERSION_MSG "(found suitable exact version \"${VERSION}\")") + endif () endif () + unset(_VERSION_DOTS) else() # minimum version specified: if ("${${_NAME}_FIND_VERSION}" VERSION_GREATER "${VERSION}") diff --git a/Modules/FindSquish.cmake b/Modules/FindSquish.cmake index 4076521..2b7fd22 100644 --- a/Modules/FindSquish.cmake +++ b/Modules/FindSquish.cmake @@ -201,7 +201,7 @@ else() endif() # record if Squish was found -include(FindPackageHandleStandardArgs) +include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake) find_package_handle_standard_args(Squish REQUIRED_VARS SQUISH_INSTALL_DIR SQUISH_CLIENT_EXECUTABLE SQUISH_SERVER_EXECUTABLE VERSION_VAR SQUISH_VERSION ) diff --git a/Modules/FindThreads.cmake b/Modules/FindThreads.cmake index 6050dcd..a0bc4d1 100644 --- a/Modules/FindThreads.cmake +++ b/Modules/FindThreads.cmake @@ -14,14 +14,32 @@ # CMAKE_USE_PTHREADS_INIT - are we using pthreads # CMAKE_HP_PTHREADS_INIT - are we using hp pthreads # +# The following import target is created +# +# :: +# +# Threads::Threads +# # For systems with multiple thread libraries, caller can set # # :: # # CMAKE_THREAD_PREFER_PTHREAD +# +# If the use of the -pthread compiler and linker flag is prefered then the +# caller can set +# +# :: +# +# THREADS_PREFER_PTHREAD_FLAG +# +# Please note that the compiler flag can only be used with the imported +# target. Use of both the imported target as well as this switch is highly +# recommended for new code. #============================================================================= # Copyright 2002-2009 Kitware, Inc. +# Copyright 2011-2014 Rolf Eike Beer <eike@sf-mail.de> # # Distributed under the OSI-approved BSD License (the "License"); # see accompanying file Copyright.txt for details. @@ -45,6 +63,58 @@ if(CMAKE_SYSTEM_NAME MATCHES IRIX AND NOT CMAKE_THREAD_PREFER_PTHREAD) CHECK_INCLUDE_FILES("sys/types.h;sys/prctl.h" CMAKE_HAVE_SPROC_H) endif() +# Internal helper macro. +# Do NOT even think about using it outside of this file! +macro(_check_threads_lib LIBNAME FUNCNAME VARNAME) + if(NOT Threads_FOUND) + CHECK_LIBRARY_EXISTS(${LIBNAME} ${FUNCNAME} "" ${VARNAME}) + if(${VARNAME}) + set(CMAKE_THREAD_LIBS_INIT "-l${LIBNAME}") + set(CMAKE_HAVE_THREADS_LIBRARY 1) + set(Threads_FOUND TRUE) + endif() + endif () +endmacro() + +# Internal helper macro. +# Do NOT even think about using it outside of this file! +macro(_check_pthreads_flag) + if(NOT Threads_FOUND) + # If we did not found -lpthread, -lpthread, or -lthread, look for -pthread + if(NOT DEFINED THREADS_HAVE_PTHREAD_ARG) + message(STATUS "Check if compiler accepts -pthread") + try_run(THREADS_PTHREAD_ARG THREADS_HAVE_PTHREAD_ARG + ${CMAKE_BINARY_DIR} + ${CMAKE_CURRENT_LIST_DIR}/CheckForPthreads.c + CMAKE_FLAGS -DLINK_LIBRARIES:STRING=-pthread + COMPILE_OUTPUT_VARIABLE OUTPUT) + + if(THREADS_HAVE_PTHREAD_ARG) + if(THREADS_PTHREAD_ARG STREQUAL "2") + set(Threads_FOUND TRUE) + message(STATUS "Check if compiler accepts -pthread - yes") + else() + message(STATUS "Check if compiler accepts -pthread - no") + file(APPEND + ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log + "Determining if compiler accepts -pthread returned ${THREADS_PTHREAD_ARG} instead of 2. The compiler had the following output:\n${OUTPUT}\n\n") + endif() + else() + message(STATUS "Check if compiler accepts -pthread - no") + file(APPEND + ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log + "Determining if compiler accepts -pthread failed with the following output:\n${OUTPUT}\n\n") + endif() + + endif() + + if(THREADS_HAVE_PTHREAD_ARG) + set(Threads_FOUND TRUE) + set(CMAKE_THREAD_LIBS_INIT "-pthread") + endif() + endif() +endmacro() + if(CMAKE_HAVE_SPROC_H AND NOT CMAKE_THREAD_PREFER_PTHREAD) # We have sproc set(CMAKE_USE_SPROC_INIT 1) @@ -67,69 +137,23 @@ else() set(Threads_FOUND TRUE) else() - # Do we have -lpthreads - CHECK_LIBRARY_EXISTS(pthreads pthread_create "" CMAKE_HAVE_PTHREADS_CREATE) - if(CMAKE_HAVE_PTHREADS_CREATE) - set(CMAKE_THREAD_LIBS_INIT "-lpthreads") - set(CMAKE_HAVE_THREADS_LIBRARY 1) - set(Threads_FOUND TRUE) - else() - - # Ok, how about -lpthread - CHECK_LIBRARY_EXISTS(pthread pthread_create "" CMAKE_HAVE_PTHREAD_CREATE) - if(CMAKE_HAVE_PTHREAD_CREATE) - set(CMAKE_THREAD_LIBS_INIT "-lpthread") - set(CMAKE_HAVE_THREADS_LIBRARY 1) - set(Threads_FOUND TRUE) + # Check for -pthread first if enabled. This is the recommended + # way, but not backwards compatible as one must also pass -pthread + # as compiler flag then. + if (THREADS_PREFER_PTHREAD_FLAG) + _check_pthreads_flag() + endif () - elseif(CMAKE_SYSTEM_NAME MATCHES "SunOS") + _check_threads_lib(pthreads pthread_create CMAKE_HAVE_PTHREADS_CREATE) + _check_threads_lib(pthread pthread_create CMAKE_HAVE_PTHREAD_CREATE) + if(CMAKE_SYSTEM_NAME MATCHES "SunOS") # On sun also check for -lthread - CHECK_LIBRARY_EXISTS(thread thr_create "" CMAKE_HAVE_THR_CREATE) - if(CMAKE_HAVE_THR_CREATE) - set(CMAKE_THREAD_LIBS_INIT "-lthread") - set(CMAKE_HAVE_THREADS_LIBRARY 1) - set(Threads_FOUND TRUE) - endif() - endif() + _check_threads_lib(thread thr_create CMAKE_HAVE_THR_CREATE) endif() endif() endif() - if(NOT CMAKE_HAVE_THREADS_LIBRARY) - # If we did not found -lpthread, -lpthread, or -lthread, look for -pthread - if("x${THREADS_HAVE_PTHREAD_ARG}" STREQUAL "x") - message(STATUS "Check if compiler accepts -pthread") - try_run(THREADS_PTHREAD_ARG THREADS_HAVE_PTHREAD_ARG - ${CMAKE_BINARY_DIR} - ${CMAKE_ROOT}/Modules/CheckForPthreads.c - CMAKE_FLAGS -DLINK_LIBRARIES:STRING=-pthread - COMPILE_OUTPUT_VARIABLE OUTPUT) - - if(THREADS_HAVE_PTHREAD_ARG) - if(THREADS_PTHREAD_ARG STREQUAL "2") - set(Threads_FOUND TRUE) - message(STATUS "Check if compiler accepts -pthread - yes") - else() - message(STATUS "Check if compiler accepts -pthread - no") - file(APPEND - ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log - "Determining if compiler accepts -pthread returned ${THREADS_PTHREAD_ARG} instead of 2. The compiler had the following output:\n${OUTPUT}\n\n") - endif() - else() - message(STATUS "Check if compiler accepts -pthread - no") - file(APPEND - ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log - "Determining if compiler accepts -pthread failed with the following output:\n${OUTPUT}\n\n") - endif() - - endif() - - if(THREADS_HAVE_PTHREAD_ARG) - set(Threads_FOUND TRUE) - set(CMAKE_THREAD_LIBS_INIT "-pthread") - endif() - - endif() + _check_pthreads_flag() endif() endif() @@ -178,3 +202,15 @@ endif() set(CMAKE_REQUIRED_QUIET ${CMAKE_REQUIRED_QUIET_SAVE}) include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake) FIND_PACKAGE_HANDLE_STANDARD_ARGS(Threads DEFAULT_MSG Threads_FOUND) + +if(THREADS_FOUND AND NOT TARGET Threads::Threads) + add_library(Threads::Threads INTERFACE IMPORTED) + + if(THREADS_HAVE_PTHREAD_ARG) + set_property(TARGET Threads::Threads PROPERTY INTERFACE_COMPILE_OPTIONS "-pthread") + endif() + + if(CMAKE_THREAD_LIBS_INIT) + set_property(TARGET Threads::Threads PROPERTY INTERFACE_LINK_LIBRARIES "${CMAKE_THREAD_LIBS_INIT}") + endif() +endif() diff --git a/Modules/FindVTK.cmake b/Modules/FindVTK.cmake deleted file mode 100644 index 60f48dd..0000000 --- a/Modules/FindVTK.cmake +++ /dev/null @@ -1,66 +0,0 @@ -#.rst: -# FindVTK -# ------- -# -# Find a VTK installation or build tree. -# -# The following variables are set if VTK is found. If VTK is not found, -# VTK_FOUND is set to false. -# -# :: -# -# VTK_FOUND - Set to true when VTK is found. -# -# The following cache entries must be set by the user to locate VTK: -# -# :: -# -# VTK_DIR - The directory containing VTKConfig.cmake. -# This is either the root of the build tree, -# or the lib/vtk directory. This is the -# only cache entry. -# -# The following variables are set for backward compatibility and should -# not be used in new code: -# -# :: -# -# USE_VTK_FILE - The full path to the UseVTK.cmake file. -# This is provided for backward -# compatibility. Use VTK_USE_FILE -# instead. - -#============================================================================= -# Copyright 2001-2014 Kitware, Inc. -# -# Distributed under the OSI-approved BSD License (the "License"); -# see accompanying file Copyright.txt for details. -# -# This software is distributed WITHOUT ANY WARRANTY; without even the -# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the License for more information. -#============================================================================= -# (To distribute this file outside of CMake, substitute the full -# License text for the above reference.) - -# Use the Config mode of the find_package() command to find VTKConfig. -# If this succeeds (possibly because VTK_DIR is already set), the -# command will have already loaded VTKConfig.cmake and set VTK_FOUND. -if(NOT VTK_FOUND) - set(_VTK_REQUIRED "") - if(VTK_FIND_REQUIRED) - set(_VTK_REQUIRED REQUIRED) - endif() - set(_VTK_QUIET "") - if(VTK_FIND_QUIETLY) - set(_VTK_QUIET QUIET) - endif() - find_package(VTK ${_VTK_REQUIRED} ${_VTK_QUIET} NO_MODULE) - unset(_VTK_REQUIRED) - unset(_VTK_QUIET) -endif() - -if(VTK_FOUND) - # Set USE_VTK_FILE for backward-compatibility. - set(USE_VTK_FILE ${VTK_USE_FILE}) -endif() diff --git a/Modules/FindXerces.cmake b/Modules/FindXerces.cmake index 325bb6d..6c6007a 100644 --- a/Modules/FindXerces.cmake +++ b/Modules/FindXerces.cmake @@ -70,7 +70,7 @@ if(Xerces_INCLUDE_DIR) _Xerces_GET_VERSION("${Xerces_INCLUDE_DIR}/xercesc/util/XercesVersion.hpp") endif() -include(FindPackageHandleStandardArgs) +include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake) FIND_PACKAGE_HANDLE_STANDARD_ARGS(Xerces FOUND_VAR Xerces_FOUND REQUIRED_VARS Xerces_LIBRARY |