summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
Diffstat (limited to 'Modules')
-rw-r--r--Modules/CMakeTestWatcomVersion.c1
-rw-r--r--Modules/CPack.cmake2
-rw-r--r--Modules/CheckCCompilerFlag.cmake3
-rw-r--r--Modules/CheckSymbolExists.cmake1
-rw-r--r--Modules/FeatureSummary.cmake391
-rw-r--r--Modules/FindFreetype.cmake25
-rw-r--r--Modules/FindGIF.cmake52
-rw-r--r--Modules/FindPostgreSQL.cmake53
-rw-r--r--Modules/FindQt4.cmake14
-rw-r--r--Modules/InstallRequiredSystemLibraries.cmake34
-rw-r--r--Modules/NSIS.template.in20
-rw-r--r--Modules/Platform/Windows-wcl386.cmake42
12 files changed, 471 insertions, 167 deletions
diff --git a/Modules/CMakeTestWatcomVersion.c b/Modules/CMakeTestWatcomVersion.c
new file mode 100644
index 0000000..0343fb1
--- /dev/null
+++ b/Modules/CMakeTestWatcomVersion.c
@@ -0,0 +1 @@
+VERSION=__WATCOMC__
diff --git a/Modules/CPack.cmake b/Modules/CPack.cmake
index bf52b25..d82de93 100644
--- a/Modules/CPack.cmake
+++ b/Modules/CPack.cmake
@@ -322,7 +322,7 @@ cpack_set_if_not_set(CPACK_PACKAGE_FILE_NAME
cpack_set_if_not_set(CPACK_PACKAGE_INSTALL_DIRECTORY
"${CPACK_PACKAGE_NAME} ${CPACK_PACKAGE_VERSION}")
cpack_set_if_not_set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY
- "${CPACK_PACKAGE_NAME} ${CPACK_PACKAGE_VERSION}")
+ "${CPACK_PACKAGE_INSTALL_DIRECTORY}")
cpack_set_if_not_set(CPACK_PACKAGE_DEFAULT_LOCATION "/")
cpack_set_if_not_set(CPACK_PACKAGE_RELOCATABLE "true")
diff --git a/Modules/CheckCCompilerFlag.cmake b/Modules/CheckCCompilerFlag.cmake
index a03b64d..a390b38 100644
--- a/Modules/CheckCCompilerFlag.cmake
+++ b/Modules/CheckCCompilerFlag.cmake
@@ -27,6 +27,8 @@ MACRO (CHECK_C_COMPILER_FLAG _FLAG _RESULT)
SET(CMAKE_REQUIRED_DEFINITIONS "${_FLAG}")
CHECK_C_SOURCE_COMPILES("int main(void) { return 0; }" ${_RESULT}
# Some compilers do not fail with a bad flag
+ FAIL_REGEX "warning: command line option .* is valid for .* but not for C"
+ # Apple gcc
FAIL_REGEX "unrecognized .*option" # GNU
FAIL_REGEX "ignoring unknown option" # MSVC
FAIL_REGEX "warning D9002" # MSVC, any lang
@@ -36,4 +38,3 @@ MACRO (CHECK_C_COMPILER_FLAG _FLAG _RESULT)
)
SET (CMAKE_REQUIRED_DEFINITIONS "${SAFE_CMAKE_REQUIRED_DEFINITIONS}")
ENDMACRO (CHECK_C_COMPILER_FLAG)
-
diff --git a/Modules/CheckSymbolExists.cmake b/Modules/CheckSymbolExists.cmake
index a62aa70..be7d658 100644
--- a/Modules/CheckSymbolExists.cmake
+++ b/Modules/CheckSymbolExists.cmake
@@ -40,7 +40,6 @@ MACRO(CHECK_SYMBOL_EXISTS SYMBOL FILES VARIABLE)
ENDMACRO(CHECK_SYMBOL_EXISTS)
MACRO(_CHECK_SYMBOL_EXISTS SOURCEFILE SYMBOL FILES VARIABLE)
-message(STATUS "files: -${FILES}-")
IF("${VARIABLE}" MATCHES "^${VARIABLE}$")
SET(CMAKE_CONFIGURABLE_FILE_CONTENT "/* */\n")
SET(MACRO_CHECK_SYMBOL_EXISTS_FLAGS ${CMAKE_REQUIRED_FLAGS})
diff --git a/Modules/FeatureSummary.cmake b/Modules/FeatureSummary.cmake
index f7bfe27..570fb7b 100644
--- a/Modules/FeatureSummary.cmake
+++ b/Modules/FeatureSummary.cmake
@@ -1,44 +1,57 @@
# - Macros for generating a summary of enabled/disabled features
#
-# This module provides the macros feature_summary(), set_package_info() and
+# This module provides the macros feature_summary(), set_package_properties() and
# add_feature_info().
-# For compatiblity it also still provides set_feature_info(),
-# print_enabled_features() and print_disabled_features.
+# For compatiblity it also still provides set_package_info(), set_feature_info(),
+# print_enabled_features() and print_disabled_features().
#
# These macros can be used to generate a summary of enabled and disabled
# packages and/or feature for a build tree:
#
-# -- Enabled features:
+# -- The following OPTIONAL packages have been found:
# LibXml2 (required version >= 2.4) , XML processing library. , <http://xmlsoft.org>
+# * Enables HTML-import in MyWordProcessor
+# * Enables odt-export in MyWordProcessor
# PNG , A PNG image library. , <http://www.libpng.org/pub/png/>
-# -- Disabled features:
+# * Enables saving screenshots
+# -- The following OPTIONAL packages have not been found:
# Lua51 , The Lua scripting language. , <http://www.lua.org>
+# * Enables macros in MyWordProcessor
# Foo , Foo provides cool stuff.
#
#
# FEATURE_SUMMARY( [FILENAME <file>]
# [APPEND]
# [VAR <variable_name>]
+# [INCLUDE_QUIET_PACKAGES]
+# [FATAL_ON_MISSING_REQUIRED_PACKAGES]
# [DESCRIPTION "Found packages:"]
# WHAT (ALL | PACKAGES_FOUND | PACKAGES_NOT_FOUND
# | ENABLED_FEATURES | DISABLED_FEATURES]
# )
#
# The FEATURE_SUMMARY() macro can be used to print information about enabled
-# or disabled features or packages of a project.
+# or disabled packages or features of a project.
# By default, only the names of the features/packages will be printed and their
-# required version when one was specified. Use SET_FEATURE_INFO() to add more
-# useful information, like e.g. a download URL for the respective package.
+# required version when one was specified. Use SET_PACKAGE_PROPERTIES() to add more
+# useful information, like e.g. a download URL for the respective package or their
+# purpose in the project.
#
# The WHAT option is the only mandatory option. Here you specify what information
# will be printed:
-# ENABLED_FEATURES: the list of all features and packages which are enabled,
-# excluding the QUIET packages
-# DISABLED_FEATURES: the list of all features and packages which are disabled,
-# excluding the QUIET packages
+# ALL: print everything
+# ENABLED_FEATURES: the list of all features which are enabled
+# DISABLED_FEATURES: the list of all features which are disabled
# PACKAGES_FOUND: the list of all packages which have been found
# PACKAGES_NOT_FOUND: the list of all packages which have not been found
-# ALL: this will give all packages which have or have not been found
+# OPTIONAL_PACKAGES_FOUND: only those packages which have been found which have the type OPTIONAL
+# OPTIONAL_PACKAGES_NOT_FOUND: only those packages which have not been found which have the type OPTIONAL
+# RECOMMENDED_PACKAGES_FOUND: only those packages which have been found which have the type RECOMMENDED
+# RECOMMENDED_PACKAGES_NOT_FOUND: only those packages which have not been found which have the type RECOMMENDED
+# REQUIRED_PACKAGES_FOUND: only those packages which have been found which have the type REQUIRED
+# REQUIRED_PACKAGES_NOT_FOUND: only those packages which have not been found which have the type REQUIRED
+# RUNTIME_PACKAGES_FOUND: only those packages which have been found which have the type RUNTIME
+# RUNTIME_PACKAGES_NOT_FOUND: only those packages which have not been found which have the type RUNTIME
#
# If a FILENAME is given, the information is printed into this file. If APPEND
# is used, it is appended to this file, otherwise the file is overwritten if
@@ -48,19 +61,29 @@
# If FILENAME is not used, the information is printed to the terminal.
# Using the DESCRIPTION option a description or headline can be set which will
# be printed above the actual content.
+# If INCLUDE_QUIET_PACKAGES is given, packages which have been searched with find_package(... QUIET) will
+# also be listed. By default they are skipped.
+# If FATAL_ON_MISSING_REQUIRED_PACKAGES is given, CMake will abort if a package which is marked as REQUIRED
+# has not been found.
#
# Example 1, append everything to a file:
# feature_summary(WHAT ALL
# FILENAME ${CMAKE_BINARY_DIR}/all.log APPEND)
#
-# Example 2, print the enabled features into the variable enabledFeaturesText:
+# Example 2, print the enabled features into the variable enabledFeaturesText, including QUIET packages:
# feature_summary(WHAT ENABLED_FEATURES
+# INCLUDE_QUIET_PACKAGES
# DESCRIPTION "Enabled Features:"
# VAR enabledFeaturesText)
# message(STATUS "${enabledFeaturesText}")
#
#
-# SET_PACKAGE_INFO(<name> <description> [<url> [<comment>] ] )
+# SET_PACKAGE_PROPERTIES(<name> PROPERTIES [ URL <url> ]
+# [ DESCRIPTION <description> ]
+# [ TYPE (RUNTIME|OPTIONAL|RECOMMENDED|REQUIRED) ]
+# [ PURPOSE <purpose> ]
+# )
+#
# Use this macro to set up information about the named package, which can
# then be displayed via FEATURE_SUMMARY().
# This can be done either directly in the Find-module or in the project
@@ -68,10 +91,47 @@
# The features for which information can be set are added automatically by the
# find_package() command.
#
+# URL: this should be the homepage of the package, or something similar. Ideally this is set
+# already directly in the Find-module.
+#
+# DESCRIPTION: A short description what that package is, at most one sentence.
+# Ideally this is set already directly in the Find-module.
+#
+# TYPE: What type of dependency has the using project on that package. Default is OPTIONAL.
+# In this case it is a package which can be used by the project when available at buildtime,
+# but it also work without. RECOMMENDED is similar to OPTIONAL, i.e. the project will build
+# if the package is not present, but the functionality of the resulting binaries will be severly
+# limited. If a REQUIRED package is not available at buildtime, the project may not even build. This
+# can be combined with the FATAL_ON_MISSING_REQUIRED_PACKAGES argument for feature_summary().
+# Last, a RUNTIME package is a package which is actually not used at all during the build, but
+# which is required for actually running the resulting binaries. So if such a package is missing,
+# the project can still be built, but it may not work later on. If set_package_properties() is called
+# multiple times for the same package with different TYPEs, the TYPE is only changed to higher
+# TYPEs ( RUNTIME < OPTIONAL < RECOMMENDED < REQUIRED ), lower TYPEs are ignored.
+# The TYPE property is project-specific, so it cannot be set by the Find-module, but must be set in the project.
+#
+# PURPOSE: This describes which features this package enables in the project, i.e. it tells the user
+# what functionality he gets in the resulting binaries.
+# If set_package_properties() is called multiple times for a package, all PURPOSE properties are appended
+# to a list of purposes of the package in the project.
+# As the TYPE property, also the PURPOSE property
+# is project-specific, so it cannot be set by the Find-module, but must be set in the project.
+#
+#
# Example for setting the info for a package:
# find_package(LibXml2)
-# set_package_info(LibXml2 "XML processing library." "http://xmlsoft.org/")
+# set_package_properties(LibXml2 PROPERTIES DESCRIPTION "A XML processing library."
+# URL "http://xmlsoft.org/")
#
+# set_package_properties(LibXml2 PROPERTIES TYPE RECOMMENDED
+# PURPOSE "Enables HTML-import in MyWordProcessor")
+# ...
+# set_package_properties(LibXml2 PROPERTIES TYPE OPTIONAL
+# PURPOSE "Enables odt-export in MyWordProcessor")
+#
+# find_package(DBUS)
+# set_package_properties(LibXml2 PROPERTIES TYPE RUNTIME
+# PURPOSE "Necessary to disable the screensaver during a presentation" )
#
# ADD_FEATURE_INFO(<name> <enabled> <description>)
# Use this macro to add information about a feature with the given <name>.
@@ -87,14 +147,22 @@
#
# The following macros are provided for compatibility with previous CMake versions:
#
+# SET_PACKAGE_INFO(<name> <description> [<url> [<purpose>] ] )
+# Use this macro to set up information about the named package, which can
+# then be displayed via FEATURE_SUMMARY().
+# This can be done either directly in the Find-module or in the project
+# which uses the module after the FIND_PACKAGE() call.
+# The features for which information can be set are added automatically by the
+# find_package() command.
+#
# PRINT_ENABLED_FEATURES()
# Does the same as FEATURE_SUMMARY(WHAT ENABLED_FEATURES DESCRIPTION "Enabled features:")
#
# PRINT_DISABLED_FEATURES()
# Does the same as FEATURE_SUMMARY(WHAT DISABLED_FEATURES DESCRIPTION "Disabled features:")
#
-# SET_FEATURE_INFO(<name> <description> [<url> [<comment>] ] )
-# Does the same as SET_PACKAGE_INFO(<name> <description> <url> <comment> )
+# SET_FEATURE_INFO(<name> <description> [<url>] )
+# Does the same as SET_PACKAGE_INFO(<name> <description> <url> )
#=============================================================================
# Copyright 2007-2009 Kitware, Inc.
@@ -123,64 +191,149 @@ FUNCTION(ADD_FEATURE_INFO _name _enabled _desc)
ENDFUNCTION(ADD_FEATURE_INFO)
-FUNCTION(SET_FEATURE_INFO)
- SET_PACKAGE_INFO(${ARGN})
-ENDFUNCTION(SET_FEATURE_INFO)
+FUNCTION(SET_PACKAGE_PROPERTIES _name _props)
+ IF(NOT "${_props}" STREQUAL "PROPERTIES")
+ MESSAGE(FATAL_ERROR "PROPERTIES keyword is missing in SET_PACKAGE_PROPERTIES() call.")
+ ENDIF()
-FUNCTION(SET_PACKAGE_INFO _name _desc)
- SET(_url "${ARGV2}")
- SET(_comment "${ARGV3}")
- SET_PROPERTY(GLOBAL PROPERTY _CMAKE_${_name}_DESCRIPTION "${_desc}" )
- IF(_url MATCHES ".+")
- SET_PROPERTY(GLOBAL PROPERTY _CMAKE_${_name}_URL "${_url}" )
- ENDIF(_url MATCHES ".+")
- IF(_comment MATCHES ".+")
- SET_PROPERTY(GLOBAL PROPERTY _CMAKE_${_name}_COMMENT "${_comment}" )
- ENDIF(_comment MATCHES ".+")
-ENDFUNCTION(SET_PACKAGE_INFO)
+ SET(options ) # none
+ SET(oneValueArgs DESCRIPTION URL TYPE PURPOSE )
+ SET(multiValueArgs ) # none
+
+ CMAKE_PARSE_ARGUMENTS(_SPP "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
+
+ IF(_SPP_UNPARSED_ARGUMENTS)
+ MESSAGE(FATAL_ERROR "Unknown keywords given to SET_PACKAGE_PROPERTIES(): \"${_SPP_UNPARSED_ARGUMENTS}\"")
+ ENDIF()
+
+ IF(_SPP_DESCRIPTION)
+ GET_PROPERTY(_info GLOBAL PROPERTY _CMAKE_${_name}_DESCRIPTION)
+ IF(_info)
+ MESSAGE(STATUS "Warning: Property DESCRIPTION for package ${_name} already set to \"${_info}\", overriding it with \"${_SPP_DESCRIPTION}\"")
+ ENDIF()
+
+ SET_PROPERTY(GLOBAL PROPERTY _CMAKE_${_name}_DESCRIPTION "${_SPP_DESCRIPTION}" )
+ ENDIF()
+
+
+ IF(_SPP_URL)
+ GET_PROPERTY(_info GLOBAL PROPERTY _CMAKE_${_name}_URL)
+ IF(_info)
+ MESSAGE(STATUS "Warning: Property URL already set to \"${_info}\", overriding it with \"${_SPP_URL}\"")
+ ENDIF()
+
+ SET_PROPERTY(GLOBAL PROPERTY _CMAKE_${_name}_URL "${_SPP_URL}" )
+ ENDIF()
+
+
+ # handle the PURPOSE: use APPEND, since there can be multiple purposes for one package inside a project
+ IF(_SPP_PURPOSE)
+ SET_PROPERTY(GLOBAL APPEND PROPERTY _CMAKE_${_name}_PURPOSE "${_SPP_PURPOSE}" )
+ ENDIF()
+
+ # handle the TYPE
+ IF(NOT _SPP_TYPE)
+ SET(_SPP_TYPE OPTIONAL)
+ ENDIF()
+
+ # List the supported types, according to their priority
+ SET(validTypes "RUNTIME" "OPTIONAL" "RECOMMENDED" "REQUIRED" )
+ LIST(FIND validTypes ${_SPP_TYPE} _typeIndexInList)
+ IF("${_typeIndexInList}" STREQUAL "-1" )
+ MESSAGE(FATAL_ERROR "Bad package property type ${_SPP_TYPE} used in SET_PACKAGE_PROPERTIES(). "
+ "Valid types are OPTIONAL, RECOMMENDED, REQUIRED and RUNTIME." )
+ ENDIF()
+
+ GET_PROPERTY(_previousType GLOBAL PROPERTY _CMAKE_${_name}_TYPE)
+ LIST(FIND validTypes "${_previousType}" _prevTypeIndexInList)
+
+ # make sure a previously set TYPE is not overridden with a lower new TYPE:
+ IF("${_typeIndexInList}" GREATER "${_prevTypeIndexInList}")
+ SET_PROPERTY(GLOBAL PROPERTY _CMAKE_${_name}_TYPE "${_SPP_TYPE}" )
+ ENDIF()
+
+ENDFUNCTION(SET_PACKAGE_PROPERTIES)
+
+
+
+FUNCTION(_FS_GET_FEATURE_SUMMARY _property _var _includeQuiet)
+
+ SET(_type "ANY")
+ IF("${_property}" MATCHES "REQUIRED_")
+ SET(_type "REQUIRED")
+ ELSEIF("${_property}" MATCHES "RECOMMENDED_")
+ SET(_type "RECOMMENDED")
+ ELSEIF("${_property}" MATCHES "RUNTIME_")
+ SET(_type "RUNTIME")
+ ELSEIF("${_property}" MATCHES "OPTIONAL_")
+ SET(_type "OPTIONAL")
+ ENDIF()
+
+ IF("${_property}" MATCHES "PACKAGES_FOUND")
+ SET(_property "PACKAGES_FOUND")
+ ELSEIF("${_property}" MATCHES "PACKAGES_NOT_FOUND")
+ SET(_property "PACKAGES_NOT_FOUND")
+ ENDIF()
-FUNCTION(_FS_GET_FEATURE_SUMMARY _property _var)
SET(_currentFeatureText "")
GET_PROPERTY(_EnabledFeatures GLOBAL PROPERTY ${_property})
+
FOREACH(_currentFeature ${_EnabledFeatures})
- SET(_currentFeatureText "${_currentFeatureText}\n${_currentFeature}")
- GET_PROPERTY(_info GLOBAL PROPERTY _CMAKE_${_currentFeature}_REQUIRED_VERSION)
- IF(_info)
- SET(_currentFeatureText "${_currentFeatureText} (required version ${_info})")
- ENDIF(_info)
- GET_PROPERTY(_info GLOBAL PROPERTY _CMAKE_${_currentFeature}_DESCRIPTION)
- IF(_info)
- SET(_currentFeatureText "${_currentFeatureText} , ${_info}")
- ENDIF(_info)
- GET_PROPERTY(_info GLOBAL PROPERTY _CMAKE_${_currentFeature}_URL)
- IF(_info)
- SET(_currentFeatureText "${_currentFeatureText} , <${_info}>")
- ENDIF(_info)
- GET_PROPERTY(_info GLOBAL PROPERTY _CMAKE_${_currentFeature}_COMMENT)
- IF(_info)
- SET(_currentFeatureText "${_currentFeatureText} , ${_info}")
- ENDIF(_info)
- ENDFOREACH(_currentFeature)
- SET(${_var} "${_currentFeatureText}" PARENT_SCOPE)
-ENDFUNCTION(_FS_GET_FEATURE_SUMMARY)
+ # does this package belong to the type we currently want to list ?
+ GET_PROPERTY(_currentType GLOBAL PROPERTY _CMAKE_${_currentFeature}_TYPE)
+ IF(NOT _currentType)
+ SET(_currentType OPTIONAL)
+ ENDIF()
-FUNCTION(PRINT_ENABLED_FEATURES)
- FEATURE_SUMMARY(WHAT ENABLED_FEATURES DESCRIPTION "Enabled features:")
-ENDFUNCTION(PRINT_ENABLED_FEATURES)
+ IF("${_type}" STREQUAL ANY OR "${_type}" STREQUAL "${_currentType}")
+ # check whether the current feature/package should be in the output depending on whether it was QUIET or not
+ SET(includeThisOne TRUE)
+ # skip QUIET packages, except if they are REQUIRED or INCLUDE_QUIET_PACKAGES has been set
+ IF((NOT "${_currentType}" STREQUAL "REQUIRED") AND NOT _includeQuiet)
+ GET_PROPERTY(_isQuiet GLOBAL PROPERTY _CMAKE_${_currentFeature}_QUIET)
+ IF(_isQuiet)
+ SET(includeThisOne FALSE)
+ ENDIF()
+ ENDIF()
-FUNCTION(PRINT_DISABLED_FEATURES)
- FEATURE_SUMMARY(WHAT DISABLED_FEATURES DESCRIPTION "Disabled features:")
-ENDFUNCTION(PRINT_DISABLED_FEATURES)
+ IF(includeThisOne)
+
+ SET(_currentFeatureText "${_currentFeatureText}\n${_currentFeature}")
+ GET_PROPERTY(_info GLOBAL PROPERTY _CMAKE_${_currentFeature}_REQUIRED_VERSION)
+ IF(_info)
+ SET(_currentFeatureText "${_currentFeatureText} (required version ${_info})")
+ ENDIF(_info)
+ GET_PROPERTY(_info GLOBAL PROPERTY _CMAKE_${_currentFeature}_DESCRIPTION)
+ IF(_info)
+ SET(_currentFeatureText "${_currentFeatureText} , ${_info}")
+ ENDIF(_info)
+ GET_PROPERTY(_info GLOBAL PROPERTY _CMAKE_${_currentFeature}_URL)
+ IF(_info)
+ SET(_currentFeatureText "${_currentFeatureText} , <${_info}>")
+ ENDIF(_info)
+
+ GET_PROPERTY(_info GLOBAL PROPERTY _CMAKE_${_currentFeature}_PURPOSE)
+ FOREACH(_purpose ${_info})
+ SET(_currentFeatureText "${_currentFeatureText}\n * ${_purpose}")
+ ENDFOREACH()
+
+ ENDIF(includeThisOne)
+
+ ENDIF("${_type}" STREQUAL ANY OR "${_type}" STREQUAL "${_currentType}")
+
+ ENDFOREACH(_currentFeature)
+ SET(${_var} "${_currentFeatureText}" PARENT_SCOPE)
+ENDFUNCTION(_FS_GET_FEATURE_SUMMARY)
FUNCTION(FEATURE_SUMMARY)
# CMAKE_PARSE_ARGUMENTS(<prefix> <options> <one_value_keywords> <multi_value_keywords> args...)
- SET(options APPEND)
+ SET(options APPEND INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES)
SET(oneValueArgs FILENAME VAR DESCRIPTION WHAT)
SET(multiValueArgs ) # none
@@ -188,27 +341,70 @@ FUNCTION(FEATURE_SUMMARY)
IF(_FS_UNPARSED_ARGUMENTS)
MESSAGE(FATAL_ERROR "Unknown keywords given to FEATURE_SUMMARY(): \"${_FS_UNPARSED_ARGUMENTS}\"")
- ENDIF(_FS_UNPARSED_ARGUMENTS)
+ ENDIF()
IF(NOT _FS_WHAT)
MESSAGE(FATAL_ERROR "The call to FEATURE_SUMMAY() doesn't set the required WHAT argument.")
- ENDIF(NOT _FS_WHAT)
+ ENDIF()
+
+ SET(validWhatParts "ENABLED_FEATURES"
+ "DISABLED_FEATURES"
+ "PACKAGES_FOUND"
+ "PACKAGES_NOT_FOUND"
+ "OPTIONAL_PACKAGES_FOUND"
+ "OPTIONAL_PACKAGES_NOT_FOUND"
+ "RECOMMENDED_PACKAGES_FOUND"
+ "RECOMMENDED_PACKAGES_NOT_FOUND"
+ "REQUIRED_PACKAGES_FOUND"
+ "REQUIRED_PACKAGES_NOT_FOUND"
+ "RUNTIME_PACKAGES_FOUND"
+ "RUNTIME_PACKAGES_NOT_FOUND")
- IF( "${_FS_WHAT}" STREQUAL "ENABLED_FEATURES"
- OR "${_FS_WHAT}" STREQUAL "DISABLED_FEATURES"
- OR "${_FS_WHAT}" STREQUAL "PACKAGES_FOUND"
- OR "${_FS_WHAT}" STREQUAL "PACKAGES_NOT_FOUND")
- _FS_GET_FEATURE_SUMMARY( ${_FS_WHAT} _featureSummary)
+ LIST(FIND validWhatParts "${_FS_WHAT}" indexInList)
+ IF(NOT "${indexInList}" STREQUAL "-1")
+ _FS_GET_FEATURE_SUMMARY( ${_FS_WHAT} _featureSummary ${_FS_INCLUDE_QUIET_PACKAGES} )
SET(_fullText "${_FS_DESCRIPTION}${_featureSummary}\n")
+ IF (("${_FS_WHAT}" STREQUAL "REQUIRED_PACKAGES_NOT_FOUND") AND _featureSummary)
+ SET(requiredPackagesNotFound TRUE)
+ ENDIF()
+
ELSEIF("${_FS_WHAT}" STREQUAL "ALL")
- _FS_GET_FEATURE_SUMMARY( PACKAGES_FOUND _tmp1)
- _FS_GET_FEATURE_SUMMARY( PACKAGES_NOT_FOUND _tmp2)
- SET(_featureSummary "${_tmp1}${_tmp2}")
- IF(_FS_DESCRIPTION)
- SET(_fullText "${_FS_DESCRIPTION}${_tmp1}${_tmp2}\n")
- ELSE(_FS_DESCRIPTION)
- SET(_fullText "-- Found the following packages:${_tmp1}\n-- Did not find the following packages:${_tmp2}\n")
- ENDIF(_FS_DESCRIPTION)
+
+ SET(allWhatParts "ENABLED_FEATURES"
+ "RUNTIME_PACKAGES_FOUND"
+ "OPTIONAL_PACKAGES_FOUND"
+ "RECOMMENDED_PACKAGES_FOUND"
+ "REQUIRED_PACKAGES_FOUND"
+
+ "DISABLED_FEATURES"
+ "RUNTIME_PACKAGES_NOT_FOUND"
+ "OPTIONAL_PACKAGES_NOT_FOUND"
+ "RECOMMENDED_PACKAGES_NOT_FOUND"
+ "REQUIRED_PACKAGES_NOT_FOUND"
+ )
+
+ SET(title_ENABLED_FEATURES "The following features have been enabled:")
+ SET(title_DISABLED_FEATURES "The following features have been disabled:")
+ SET(title_OPTIONAL_PACKAGES_FOUND "The following OPTIONAL packages have been found:")
+ SET(title_OPTIONAL_PACKAGES_NOT_FOUND "The following OPTIONAL packages have not been found:")
+ SET(title_RECOMMENDED_PACKAGES_FOUND "The following RECOMMENDED packages have been found:")
+ SET(title_RECOMMENDED_PACKAGES_NOT_FOUND "The following RECOMMENDED packages have not been found:")
+ SET(title_REQUIRED_PACKAGES_FOUND "The following REQUIRED packages have been found:")
+ SET(title_REQUIRED_PACKAGES_NOT_FOUND "The following REQUIRED packages have not been found:")
+ SET(title_RUNTIME_PACKAGES_FOUND "The following RUNTIME packages have been found:")
+ SET(title_RUNTIME_PACKAGES_NOT_FOUND "The following RUNTIME packages have not been found:")
+
+ SET(_fullText "${_FS_DESCRIPTION}")
+ FOREACH(part ${allWhatParts})
+ SET(_tmp)
+ _FS_GET_FEATURE_SUMMARY( ${part} _tmp ${_FS_INCLUDE_QUIET_PACKAGES})
+ IF(_tmp)
+ SET(_fullText "${_fullText}\n\n-- ${title_${part}}\n${_tmp}")
+ IF("${part}" STREQUAL "REQUIRED_PACKAGES_NOT_FOUND")
+ SET(requiredPackagesNotFound TRUE)
+ ENDIF()
+ ENDIF()
+ ENDFOREACH()
ELSE()
MESSAGE(FATAL_ERROR "The WHAT argument of FEATURE_SUMMARY() is set to ${_FS_WHAT}, which is not a valid value.")
ENDIF()
@@ -218,16 +414,53 @@ FUNCTION(FEATURE_SUMMARY)
FILE(APPEND "${_FS_FILENAME}" "${_fullText}")
ELSE(_FS_APPEND)
FILE(WRITE "${_FS_FILENAME}" "${_fullText}")
- ENDIF(_FS_APPEND)
+ ENDIF()
ELSE(_FS_FILENAME)
IF(NOT _FS_VAR)
MESSAGE(STATUS "${_fullText}")
- ENDIF(NOT _FS_VAR)
- ENDIF(_FS_FILENAME)
+ ENDIF()
+ ENDIF()
IF(_FS_VAR)
SET(${_FS_VAR} "${_fullText}" PARENT_SCOPE)
- ENDIF(_FS_VAR)
+ ENDIF()
+
+ IF(requiredPackagesNotFound AND _FS_FATAL_ON_MISSING_REQUIRED_PACKAGES)
+ MESSAGE(FATAL_ERROR "feature_summary() Error: REQUIRED package(s) are missing, aborting CMake run.")
+ ENDIF()
ENDFUNCTION(FEATURE_SUMMARY)
+
+
+# The stuff below is only kept for compatibility
+
+FUNCTION(SET_PACKAGE_INFO _name _desc)
+ SET(_url "${ARGV2}")
+ SET(_purpose "${ARGV3}")
+ SET_PROPERTY(GLOBAL PROPERTY _CMAKE_${_name}_DESCRIPTION "${_desc}" )
+ IF(_url MATCHES ".+")
+ SET_PROPERTY(GLOBAL PROPERTY _CMAKE_${_name}_URL "${_url}" )
+ ENDIF()
+ IF(_purpose MATCHES ".+")
+ SET_PROPERTY(GLOBAL APPEND PROPERTY _CMAKE_${_name}_PURPOSE "${_purpose}" )
+ ENDIF()
+ENDFUNCTION(SET_PACKAGE_INFO)
+
+
+
+FUNCTION(SET_FEATURE_INFO)
+ SET_PACKAGE_INFO(${ARGN})
+ENDFUNCTION(SET_FEATURE_INFO)
+
+
+
+FUNCTION(PRINT_ENABLED_FEATURES)
+ FEATURE_SUMMARY(WHAT ENABLED_FEATURES DESCRIPTION "Enabled features:")
+ENDFUNCTION(PRINT_ENABLED_FEATURES)
+
+
+
+FUNCTION(PRINT_DISABLED_FEATURES)
+ FEATURE_SUMMARY(WHAT DISABLED_FEATURES DESCRIPTION "Disabled features:")
+ENDFUNCTION(PRINT_DISABLED_FEATURES)
diff --git a/Modules/FindFreetype.cmake b/Modules/FindFreetype.cmake
index 8957b64..6251805 100644
--- a/Modules/FindFreetype.cmake
+++ b/Modules/FindFreetype.cmake
@@ -24,45 +24,38 @@
# (To distribute this file outside of CMake, substitute the full
# License text for the above reference.)
-# Created by Eric Wing.
+# Created by Eric Wing.
# Modifications by Alexander Neundorf.
# This file has been renamed to "FindFreetype.cmake" instead of the correct
# "FindFreeType.cmake" in order to be compatible with the one from KDE4, Alex.
-# Ugh, FreeType seems to use some #include trickery which
+# Ugh, FreeType seems to use some #include trickery which
# makes this harder than it should be. It looks like they
# put ft2build.h in a common/easier-to-find location which
-# then contains a #include to a more specific header in a
+# then contains a #include to a more specific header in a
# more specific location (#include <freetype/config/ftheader.h>).
-# Then from there, they need to set a bunch of #define's
+# Then from there, they need to set a bunch of #define's
# so you can do something like:
# #include FT_FREETYPE_H
# Unfortunately, using CMake's mechanisms like INCLUDE_DIRECTORIES()
# wants explicit full paths and this trickery doesn't work too well.
-# I'm going to attempt to cut out the middleman and hope
+# I'm going to attempt to cut out the middleman and hope
# everything still works.
-FIND_PATH(FREETYPE_INCLUDE_DIR_ft2build ft2build.h
+FIND_PATH(FREETYPE_INCLUDE_DIR_ft2build ft2build.h
HINTS
$ENV{FREETYPE_DIR}
- PATH_SUFFIXES include
PATHS
/usr/local/X11R6/include
/usr/local/X11/include
- /usr/X11/include
- /sw/include
- /opt/local/include
/usr/freeware/include
)
-FIND_PATH(FREETYPE_INCLUDE_DIR_freetype2 freetype/config/ftheader.h
+FIND_PATH(FREETYPE_INCLUDE_DIR_freetype2 freetype/config/ftheader.h
HINTS
$ENV{FREETYPE_DIR}/include/freetype2
PATHS
/usr/local/X11R6/include
/usr/local/X11/include
- /usr/X11/include
- /sw/include
- /opt/local/include
/usr/freeware/include
PATH_SUFFIXES freetype2
)
@@ -75,8 +68,6 @@ FIND_LIBRARY(FREETYPE_LIBRARY
PATHS
/usr/local/X11R6
/usr/local/X11
- /usr/X11
- /sw
/usr/freeware
)
@@ -86,7 +77,7 @@ IF(FREETYPE_INCLUDE_DIR_ft2build AND FREETYPE_INCLUDE_DIR_freetype2)
ENDIF(FREETYPE_INCLUDE_DIR_ft2build AND FREETYPE_INCLUDE_DIR_freetype2)
SET(FREETYPE_LIBRARIES "${FREETYPE_LIBRARY}")
-# handle the QUIETLY and REQUIRED arguments and set FREETYPE_FOUND to TRUE if
+# handle the QUIETLY and REQUIRED arguments and set FREETYPE_FOUND to TRUE if
# all listed variables are TRUE
INCLUDE(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Freetype DEFAULT_MSG FREETYPE_LIBRARY FREETYPE_INCLUDE_DIRS)
diff --git a/Modules/FindGIF.cmake b/Modules/FindGIF.cmake
index 1fad07d..41e9098 100644
--- a/Modules/FindGIF.cmake
+++ b/Modules/FindGIF.cmake
@@ -1,7 +1,11 @@
-# This module defines
+# This module searches giflib and defines
# GIF_LIBRARIES - libraries to link to in order to use GIF
-# GIF_FOUND, if false, do not try to link
+# GIF_FOUND, if false, do not try to link
# GIF_INCLUDE_DIR, where to find the headers
+# GIF_VERSION, reports either version 4 or 3 (for everything before version 4)
+#
+# The minimum required version of giflib can be specified using the
+# standard syntax, e.g. FIND_PACKAGE(GIF 4)
#
# $GIF_DIR is an environment variable that would
# correspond to the ./configure --prefix=$GIF_DIR
@@ -19,7 +23,7 @@
# (To distribute this file outside of CMake, substitute the full
# License text for the above reference.)
-# Created by Eric Wing.
+# Created by Eric Wing.
# Modifications by Alexander Neundorf
FIND_PATH(GIF_INCLUDE_DIR gif_lib.h
@@ -28,39 +32,49 @@ FIND_PATH(GIF_INCLUDE_DIR gif_lib.h
PATH_SUFFIXES include
PATHS
~/Library/Frameworks
- /Library/Frameworks
- /sw/include # Fink
- [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session\ Manager\\Environment;OSG_ROOT]/include
- /usr/freeware/include
+ /usr/freeware
)
# the gif library can have many names :-/
-SET(POTENTIAL_GIF_LIBS gif libgif ungif libungif giflib)
+SET(POTENTIAL_GIF_LIBS gif libgif ungif libungif giflib giflib4)
-FIND_LIBRARY(GIF_LIBRARY
+FIND_LIBRARY(GIF_LIBRARY
NAMES ${POTENTIAL_GIF_LIBS}
HINTS
$ENV{GIF_DIR}
PATH_SUFFIXES lib64 lib
PATHS
~/Library/Frameworks
- /Library/Frameworks
- /usr/local
- /usr
- /sw
- /opt/local
- /opt/csw
- /opt
- [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session\ Manager\\Environment;OSG_ROOT]
/usr/freeware
)
# see readme.txt
SET(GIF_LIBRARIES ${GIF_LIBRARY})
-# handle the QUIETLY and REQUIRED arguments and set GIF_FOUND to TRUE if
+# Very basic version detection.
+# The GIF_LIB_VERSION string in gif_lib.h seems to be unreliable, since it seems
+# to be always " Version 2.0, " in versions 3.x of giflib.
+# In version 4 the member UserData was added to GifFileType, so we check for this
+# one.
+# http://giflib.sourcearchive.com/documentation/4.1.4/files.html
+IF(GIF_INCLUDE_DIR)
+ INCLUDE(CMakePushCheckState)
+ INCLUDE(CheckStructHasMember)
+ CMAKE_PUSH_CHECK_STATE()
+ SET(GIF_VERSION 3)
+ SET(CMAKE_REQUIRED_INCLUDES "${GIF_INCLUDE_DIR}")
+ CHECK_STRUCT_HAS_MEMBER(GifFileType UserData gif_lib.h GIF_GifFileType_UserData )
+ IF(GIF_GifFileType_UserData)
+ SET(GIF_VERSION 4)
+ ENDIF()
+ CMAKE_POP_CHECK_STATE()
+ENDIF()
+
+
+# handle the QUIETLY and REQUIRED arguments and set GIF_FOUND to TRUE if
# all listed variables are TRUE
INCLUDE(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(GIF DEFAULT_MSG GIF_LIBRARY GIF_INCLUDE_DIR)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(GIF REQUIRED_VARS GIF_LIBRARY GIF_INCLUDE_DIR
+ VERSION_VAR GIF_VERSION )
MARK_AS_ADVANCED(GIF_INCLUDE_DIR GIF_LIBRARY)
diff --git a/Modules/FindPostgreSQL.cmake b/Modules/FindPostgreSQL.cmake
index 96b6741..55f95c6 100644
--- a/Modules/FindPostgreSQL.cmake
+++ b/Modules/FindPostgreSQL.cmake
@@ -7,7 +7,6 @@
# ...
# if( PostgreSQL_FOUND )
# include_directories(${PostgreSQL_INCLUDE_DIRS})
-# link_directories(${PostgreSQL_LIBRARY_DIRS})
# endif( PostgreSQL_FOUND )
# ...
# Remember to include ${PostgreSQL_LIBRARIES} in the target_link_libraries() statement.
@@ -113,12 +112,26 @@ find_path(PostgreSQL_INCLUDE_DIR
# Look in other places.
${PostgreSQL_ROOT_DIRECTORIES}
PATH_SUFFIXES
+ pgsql
postgresql
include
# Help the user find it if we cannot.
DOC "The ${PostgreSQL_INCLUDE_DIR_MESSAGE}"
)
+find_path(PostgreSQL_TYPE_INCLUDE_DIR
+ NAMES catalog/pg_type.h
+ PATHS
+ # Look in other places.
+ ${PostgreSQL_ROOT_DIRECTORIES}
+ PATH_SUFFIXES
+ pgsql/server
+ postgresql/server
+ include/server
+ # Help the user find it if we cannot.
+ DOC "The ${PostgreSQL_INCLUDE_DIR_MESSAGE}"
+)
+
# The PostgreSQL library.
set (PostgreSQL_LIBRARY_TO_FIND pq)
# Setting some more prefixes for the library
@@ -138,42 +151,22 @@ find_library( PostgreSQL_LIBRARY
get_filename_component(PostgreSQL_LIBRARY_DIR ${PostgreSQL_LIBRARY} PATH)
# Did we find anything?
-set( PostgreSQL_FOUND 0 )
-if ( EXISTS "${PostgreSQL_INCLUDE_DIR}" AND EXISTS "${PostgreSQL_LIBRARY_DIR}" )
- set( PostgreSQL_FOUND 1 )
-else ( EXISTS "${PostgreSQL_INCLUDE_DIR}" AND EXISTS "${PostgreSQL_LIBRARY_DIR}" )
- if ( POSTGRES_REQUIRED )
- message( FATAL_ERROR "PostgreSQL is required. ${PostgreSQL_ROOT_DIR_MESSAGE}" )
- endif ( POSTGRES_REQUIRED )
-endif (EXISTS "${PostgreSQL_INCLUDE_DIR}" AND EXISTS "${PostgreSQL_LIBRARY_DIR}" )
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(PostgreSQL DEFAULT_MSG
+ PostgreSQL_LIBRARY PostgreSQL_INCLUDE_DIR PostgreSQL_TYPE_INCLUDE_DIR)
+
+set( PostgreSQL_FOUND ${POSTGRESQL_FOUND})
# Now try to get the include and library path.
if(PostgreSQL_FOUND)
- if(EXISTS "${PostgreSQL_INCLUDE_DIR}")
- set(PostgreSQL_INCLUDE_DIRS
- ${PostgreSQL_INCLUDE_DIR}
- )
- endif(EXISTS "${PostgreSQL_INCLUDE_DIR}")
-
- if(EXISTS "${PostgreSQL_LIBRARY_DIR}")
- set(PostgreSQL_LIBRARY_DIRS
- ${PostgreSQL_LIBRARY_DIR}
- )
- set(PostgreSQL_LIBRARIES ${PostgreSQL_LIBRARY_TO_FIND})
- endif(EXISTS "${PostgreSQL_LIBRARY_DIR}")
+ set(PostgreSQL_INCLUDE_DIRS ${PostgreSQL_INCLUDE_DIR} ${PostgreSQL_TYPE_INCLUDE_DIR} )
+ set(PostgreSQL_LIBRARY_DIRS ${PostgreSQL_LIBRARY_DIR} )
+ set(PostgreSQL_LIBRARIES ${PostgreSQL_LIBRARY_TO_FIND})
#message("Final PostgreSQL include dir: ${PostgreSQL_INCLUDE_DIRS}")
#message("Final PostgreSQL library dir: ${PostgreSQL_LIBRARY_DIRS}")
#message("Final PostgreSQL libraries: ${PostgreSQL_LIBRARIES}")
endif(PostgreSQL_FOUND)
-if(NOT PostgreSQL_FOUND)
- if(NOT PostgreSQL_FIND_QUIETLY)
- message(STATUS "PostgreSQL was not found. ${PostgreSQL_DIR_MESSAGE}")
- else(NOT PostgreSQL_FIND_QUIETLY)
- if(PostgreSQL_FIND_REQUIRED)
- message(FATAL_ERROR "PostgreSQL was not found. ${PostgreSQL_DIR_MESSAGE}")
- endif(PostgreSQL_FIND_REQUIRED)
- endif(NOT PostgreSQL_FIND_QUIETLY)
-endif(NOT PostgreSQL_FOUND)
+mark_as_advanced(PostgreSQL_INCLUDE_DIR PostgreSQL_TYPE_INCLUDE_DIR PostgreSQL_LIBRARY )
diff --git a/Modules/FindQt4.cmake b/Modules/FindQt4.cmake
index e592438..1ebd69d 100644
--- a/Modules/FindQt4.cmake
+++ b/Modules/FindQt4.cmake
@@ -352,7 +352,7 @@ IF(QT_QT_LIBRARY)
ENDIF(QT_QT_LIBRARY)
-INCLUDE(CheckSymbolExists)
+INCLUDE(CheckCXXSymbolExists)
INCLUDE(MacroAddFileDependencies)
INCLUDE(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
@@ -715,19 +715,19 @@ IF (QT_QMAKE_EXECUTABLE AND QTVERSION)
# Add QT_INCLUDE_DIR to CMAKE_REQUIRED_INCLUDES
SET(CMAKE_REQUIRED_INCLUDES "${CMAKE_REQUIRED_INCLUDES};${QT_INCLUDE_DIR}")
# Check for Window system symbols (note: only one should end up being set)
- CHECK_SYMBOL_EXISTS(Q_WS_X11 "QtCore/qglobal.h" Q_WS_X11)
- CHECK_SYMBOL_EXISTS(Q_WS_WIN "QtCore/qglobal.h" Q_WS_WIN)
- CHECK_SYMBOL_EXISTS(Q_WS_QWS "QtCore/qglobal.h" Q_WS_QWS)
- CHECK_SYMBOL_EXISTS(Q_WS_MAC "QtCore/qglobal.h" Q_WS_MAC)
+ CHECK_CXX_SYMBOL_EXISTS(Q_WS_X11 "QtCore/qglobal.h" Q_WS_X11)
+ CHECK_CXX_SYMBOL_EXISTS(Q_WS_WIN "QtCore/qglobal.h" Q_WS_WIN)
+ CHECK_CXX_SYMBOL_EXISTS(Q_WS_QWS "QtCore/qglobal.h" Q_WS_QWS)
+ CHECK_CXX_SYMBOL_EXISTS(Q_WS_MAC "QtCore/qglobal.h" Q_WS_MAC)
IF(Q_WS_MAC)
IF(QT_QMAKE_CHANGED)
UNSET(QT_MAC_USE_COCOA CACHE)
ENDIF(QT_QMAKE_CHANGED)
- CHECK_SYMBOL_EXISTS(QT_MAC_USE_COCOA "QtCore/qconfig.h" QT_MAC_USE_COCOA)
+ CHECK_CXX_SYMBOL_EXISTS(QT_MAC_USE_COCOA "QtCore/qconfig.h" QT_MAC_USE_COCOA)
ENDIF(Q_WS_MAC)
IF (QT_QTCOPY_REQUIRED)
- CHECK_SYMBOL_EXISTS(QT_IS_QTCOPY "QtCore/qglobal.h" QT_KDE_QT_COPY)
+ CHECK_CXX_SYMBOL_EXISTS(QT_IS_QTCOPY "QtCore/qglobal.h" QT_KDE_QT_COPY)
IF (NOT QT_IS_QTCOPY)
MESSAGE(FATAL_ERROR "qt-copy is required, but hasn't been found")
ENDIF (NOT QT_IS_QTCOPY)
diff --git a/Modules/InstallRequiredSystemLibraries.cmake b/Modules/InstallRequiredSystemLibraries.cmake
index 59e5ec1..b6735c1 100644
--- a/Modules/InstallRequiredSystemLibraries.cmake
+++ b/Modules/InstallRequiredSystemLibraries.cmake
@@ -330,6 +330,40 @@ IF(MSVC)
ENDFOREACH(lib)
ENDIF(MSVC)
+IF(WATCOM)
+ GET_FILENAME_COMPONENT( CompilerPath ${CMAKE_C_COMPILER} PATH )
+ IF(WATCOM17)
+ SET( __install__libs ${CompilerPath}/clbr17.dll
+ ${CompilerPath}/mt7r17.dll ${CompilerPath}/plbr17.dll )
+ ENDIF()
+ IF(WATCOM18)
+ SET( __install__libs ${CompilerPath}/clbr18.dll
+ ${CompilerPath}/mt7r18.dll ${CompilerPath}/plbr18.dll )
+ ENDIF()
+ IF(WATCOM19)
+ SET( __install__libs ${CompilerPath}/clbr19.dll
+ ${CompilerPath}/mt7r19.dll ${CompilerPath}/plbr19.dll )
+ ENDIF()
+ FOREACH(lib
+ ${__install__libs}
+ )
+ IF(EXISTS ${lib})
+ SET(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS
+ ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS} ${lib})
+ ELSE()
+ IF(NOT CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS)
+ MESSAGE(WARNING "system runtime library file does not exist: '${lib}'")
+ # This warning indicates an incomplete Watcom installation
+ # or a bug somewhere above here in this file.
+ # If you would like to avoid this warning, fix the real problem, or
+ # set CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS before including
+ # this file.
+ ENDIF()
+ ENDIF()
+ ENDFOREACH()
+ENDIF()
+
+
# Include system runtime libraries in the installation if any are
# specified by CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS.
IF(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS)
diff --git a/Modules/NSIS.template.in b/Modules/NSIS.template.in
index df9d2d3..6259a5b 100644
--- a/Modules/NSIS.template.in
+++ b/Modules/NSIS.template.in
@@ -74,7 +74,7 @@ Var AR_RegFlags
ClearErrors
;Reading component status from registry
- ReadRegDWORD $AR_RegFlags HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@\Components\${SecName}" "Installed"
+ ReadRegDWORD $AR_RegFlags HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@\Components\${SecName}" "Installed"
IfErrors "default_${SecName}"
;Status will stay default if registry value not found
;(component was never installed)
@@ -107,13 +107,13 @@ Var AR_RegFlags
;Section is not selected:
;Calling Section uninstall macro and writing zero installed flag
!insertmacro "Remove_${${SecName}}"
- WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@\Components\${SecName}" \
+ WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@\Components\${SecName}" \
"Installed" 0
Goto "exit_${SecName}"
"leave_${SecName}:"
;Section is selected:
- WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@\Components\${SecName}" \
+ WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@\Components\${SecName}" \
"Installed" 1
"exit_${SecName}:"
@@ -493,7 +493,7 @@ Function ConditionalAddToRegisty
Pop $0
Pop $1
StrCmp "$0" "" ConditionalAddToRegisty_EmptyString
- WriteRegStr SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@" \
+ WriteRegStr SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" \
"$1" "$0"
;MessageBox MB_OK "Set Registry: '$1' to '$0'"
DetailPrint "Set install registry entry: '$1' to '$0'"
@@ -804,17 +804,17 @@ FunctionEnd
Section "Uninstall"
ReadRegStr $START_MENU SHCTX \
- "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@" "StartMenu"
+ "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "StartMenu"
;MessageBox MB_OK "Start menu is in: $START_MENU"
ReadRegStr $DO_NOT_ADD_TO_PATH SHCTX \
- "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@" "DoNotAddToPath"
+ "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "DoNotAddToPath"
ReadRegStr $ADD_TO_PATH_ALL_USERS SHCTX \
- "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@" "AddToPathAllUsers"
+ "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "AddToPathAllUsers"
ReadRegStr $ADD_TO_PATH_CURRENT_USER SHCTX \
- "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@" "AddToPathCurrentUser"
+ "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "AddToPathCurrentUser"
;MessageBox MB_OK "Add to path: $DO_NOT_ADD_TO_PATH all users: $ADD_TO_PATH_ALL_USERS"
ReadRegStr $INSTALL_DESKTOP SHCTX \
- "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@" "InstallToDesktop"
+ "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "InstallToDesktop"
;MessageBox MB_OK "Install to desktop: $INSTALL_DESKTOP "
@CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS@
@@ -831,7 +831,7 @@ Section "Uninstall"
;Remove the uninstaller itself.
Delete "$INSTDIR\Uninstall.exe"
- DeleteRegKey SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@"
+ DeleteRegKey SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@"
;Remove the installation directory if it is empty.
RMDir "$INSTDIR"
diff --git a/Modules/Platform/Windows-wcl386.cmake b/Modules/Platform/Windows-wcl386.cmake
index e96ebb5..e1140df 100644
--- a/Modules/Platform/Windows-wcl386.cmake
+++ b/Modules/Platform/Windows-wcl386.cmake
@@ -39,7 +39,7 @@ SET (CMAKE_C_STANDARD_LIBRARIES_INIT "library clbrdll.lib library plbrdll.lib l
SET (CMAKE_CXX_STANDARD_LIBRARIES_INIT "${CMAKE_C_STANDARD_LIBRARIES_INIT}")
SET(CMAKE_C_CREATE_IMPORT_LIBRARY
- "wlib -q -n -b <TARGET_IMPLIB> +'<TARGET_UNQUOTED>'")
+ "wlib -c -q -n -b <TARGET_IMPLIB> +'<TARGET_UNQUOTED>'")
SET(CMAKE_CXX_CREATE_IMPORT_LIBRARY ${CMAKE_C_CREATE_IMPORT_LIBRARY})
SET(CMAKE_C_LINK_EXECUTABLE
@@ -77,7 +77,45 @@ SET(CMAKE_C_CREATE_SHARED_LIBRARY ${CMAKE_CXX_CREATE_SHARED_LIBRARY})
SET(CMAKE_C_CREATE_SHARED_MODULE ${CMAKE_CXX_CREATE_SHARED_MODULE})
# create a C++ static library
-SET(CMAKE_CXX_CREATE_STATIC_LIBRARY "wlib ${CMAKE_LIB_QUIET} -n -b '<TARGET_UNQUOTED>' <LINK_FLAGS> <OBJECTS> ")
+SET(CMAKE_CXX_CREATE_STATIC_LIBRARY "wlib ${CMAKE_LIB_QUIET} -c -n -b '<TARGET_UNQUOTED>' <LINK_FLAGS> <OBJECTS> ")
# create a C static library
SET(CMAKE_C_CREATE_STATIC_LIBRARY ${CMAKE_CXX_CREATE_STATIC_LIBRARY})
+
+IF(NOT CMAKE_WATCOM_COMPILER_TESTS_RUN)
+ SET(CMAKE_WATCOM_COMPILER_TESTS_RUN 1)
+ SET(testWatcomVersionFile
+ "${CMAKE_ROOT}/Modules/CMakeTestWatcomVersion.c")
+ STRING(REGEX REPLACE "/" "\\\\" testWatcomVersionFile "${testWatcomVersionFile}")
+ MESSAGE(STATUS "Check for Watcom compiler version")
+ SET(CMAKE_TEST_COMPILER ${CMAKE_C_COMPILER})
+ IF (NOT CMAKE_C_COMPILER)
+ SET(CMAKE_TEST_COMPILER ${CMAKE_CXX_COMPILER})
+ ENDIF()
+ EXECUTE_PROCESS(COMMAND ${CMAKE_TEST_COMPILER}
+ -q -pc \"${testWatcomVersionFile}\"
+ OUTPUT_VARIABLE CMAKE_COMPILER_OUTPUT
+ RESULT_VARIABLE CMAKE_COMPILER_RETURN
+ )
+ STRING(REGEX REPLACE "\n" " " compilerVersion "${CMAKE_COMPILER_OUTPUT}")
+ STRING(REGEX REPLACE ".*VERSION=(.*)" "\\1"
+ compilerVersion "${compilerVersion}")
+ IF("${CMAKE_COMPILER_RETURN}" STREQUAL "0")
+ SET(WATCOM16)
+ SET(WATCOM17)
+ SET(WATCOM18)
+ SET(WATCOM19)
+ IF("${compilerVersion}" LESS 1270)
+ SET(WATCOM16 1)
+ ENDIF()
+ IF("${compilerVersion}" EQUAL 1270)
+ SET(WATCOM17 1)
+ ENDIF()
+ IF("${compilerVersion}" EQUAL 1280)
+ SET(WATCOM18 1)
+ ENDIF()
+ IF("${compilerVersion}" EQUAL 1290)
+ SET(WATCOM19 1)
+ ENDIF()
+ ENDIF()
+ENDIF()