aboutsummaryrefslogtreecommitdiff
path: root/cmake/scripts/common/GeneratorSetup.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/scripts/common/GeneratorSetup.cmake')
-rw-r--r--cmake/scripts/common/GeneratorSetup.cmake49
1 files changed, 49 insertions, 0 deletions
diff --git a/cmake/scripts/common/GeneratorSetup.cmake b/cmake/scripts/common/GeneratorSetup.cmake
new file mode 100644
index 0000000000..304b5042e7
--- /dev/null
+++ b/cmake/scripts/common/GeneratorSetup.cmake
@@ -0,0 +1,49 @@
+# Configure single-/multiconfiguration generators and variables
+#
+# CORE_BUILD_CONFIG that is set to
+# - CMAKE_BUILD_TYPE for single configuration generators such as make, nmake
+# - a variable that expands on build time to the current configuration for
+# multi configuration generators such as VS or Xcode
+if(CMAKE_CONFIGURATION_TYPES)
+ if(CMAKE_BUILD_TYPE)
+ message(FATAL_ERROR "CMAKE_BUILD_TYPE must not be defined for multi-configuration generators")
+ endif()
+ set(CORE_BUILD_CONFIG ${CMAKE_CFG_INTDIR})
+ message(STATUS "Generator: Multi-configuration (${CMAKE_GENERATOR})")
+else()
+ if(CMAKE_BUILD_TYPE)
+ set(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE}
+ CACHE STRING "Choose build type (${CMAKE_BUILD_TYPES})" FORCE)
+ else()
+ # Set default
+ set(CMAKE_BUILD_TYPE Release
+ CACHE STRING "Choose build type (${CMAKE_BUILD_TYPES})" FORCE)
+ endif()
+ set(CORE_BUILD_CONFIG ${CMAKE_BUILD_TYPE})
+ message(STATUS "Generator: Single-configuration: ${CMAKE_BUILD_TYPE} (${CMAKE_GENERATOR})")
+endif()
+
+# Print CMake version
+message(STATUS "CMake Version: ${CMAKE_VERSION}")
+
+# Deal with CMake special cases
+if(CMAKE_VERSION VERSION_EQUAL 3.5.1)
+ message(WARNING "CMake 3.5.1 introduced a crash during configuration. "
+ "Please consider upgrading to 3.5.2 (cmake.org/Bug/view.php?id=16044)")
+endif()
+
+# Darwin needs CMake 3.4
+if(APPLE AND CMAKE_VERSION VERSION_LESS 3.4)
+ message(WARNING "Build on Darwin requires CMake 3.4 or later (tdb library support) "
+ "or the usage of the patched version in depends.")
+endif()
+
+# Windows needs CMake 3.6 (VS_STARTUP_PROJECT)
+if(WIN32 AND CMAKE_VERSION VERSION_LESS 3.6)
+ message(FATAL_ERROR "Build on Windows needs CMake 3.6 or later")
+endif()
+
+# Ninja needs CMake 3.2 due to ExternalProject BUILD_BYPRODUCTS usage
+if(CMAKE_GENERATOR STREQUAL Ninja AND CMAKE_VERSION VERSION_LESS 3.2)
+ message(FATAL_ERROR "Generator: Ninja requires CMake 3.2 or later")
+endif()