From 236875c3abc9877b80afa077eba21e4ef3b94a57 Mon Sep 17 00:00:00 2001 From: Dan Liew Date: Tue, 8 Mar 2016 16:14:18 +0000 Subject: [PATCH 1/3] [CMake] Fix incorrect variable name. --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0e95cb65a..2af3d7a82 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -105,7 +105,7 @@ else() message(STATUS "CMAKE_BUILD_TYPE is not set. Setting default") message(STATUS "The available build types are: ${available_build_types}") set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE String - "Options are ${build_types}" + "Options are ${available_build_types}" FORCE) # Provide drop down menu options in cmake-gui set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS ${available_build_types}) From e12875ddb56bd6771c87027a2bb5e41b2d5135fa Mon Sep 17 00:00:00 2001 From: Dan Liew Date: Wed, 9 Mar 2016 11:28:43 +0000 Subject: [PATCH 2/3] [CMake] Mirror the additional NDEBUG define for non debug builds recently added by 03a8ef27958e369a312c55a93fc8518a9f4a6805 . This relates to #463 Also leave a note regarding ``compiler_flags_override.cmake`` its value is a bit dubious now that the compiler flags are almost the CMake defaults. --- .../cmake/cmake/compiler_flags_override.cmake | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/contrib/cmake/cmake/compiler_flags_override.cmake b/contrib/cmake/cmake/compiler_flags_override.cmake index d951805de..c6005396b 100644 --- a/contrib/cmake/cmake/compiler_flags_override.cmake +++ b/contrib/cmake/cmake/compiler_flags_override.cmake @@ -1,6 +1,6 @@ # This file overrides the default compiler flags for CMake's built-in # configurations (CMAKE_BUILD_TYPE). Most compiler flags should not be set here. -# The main purpose is to make sure ``-DNDEBUG`` is never set by default. +# The main purpose is to have very fine grained control of the compiler flags. if (CMAKE_C_COMPILER_ID) set(_lang C) elseif(CMAKE_CXX_COMPILER_ID) @@ -9,19 +9,25 @@ else() message(FATAL_ERROR "Unknown language") endif() +# TODO: The value of doing this is debatable. The flags set here are pretty +# much the CMake defaults now (they didn't use to be) and makes extra work for +# us when supporting different compilers. Perhaps we should move the remaining +# code that sets non-default flags out into the CMakeLists.txt files and remove +# any overrides here? if (("${CMAKE_${_lang}_COMPILER_ID}" MATCHES "Clang") OR ("${CMAKE_${_lang}_COMPILER_ID}" MATCHES "GNU")) - # Taken from Modules/Compiler/GNU.cmake but -DNDEBUG is removed + # Taken from Modules/Compiler/GNU.cmake set(CMAKE_${_lang}_FLAGS_INIT "") set(CMAKE_${_lang}_FLAGS_DEBUG_INIT "-g -O0") - set(CMAKE_${_lang}_FLAGS_MINSIZEREL_INIT "-Os") - set(CMAKE_${_lang}_FLAGS_RELEASE_INIT "-O3") - set(CMAKE_${_lang}_FLAGS_RELWITHDEBINFO_INIT "-O2 -g") + set(CMAKE_${_lang}_FLAGS_MINSIZEREL_INIT "-Os -DNDEBUG") + set(CMAKE_${_lang}_FLAGS_RELEASE_INIT "-O3 -DNDEBUG") + set(CMAKE_${_lang}_FLAGS_RELWITHDEBINFO_INIT "-O2 -g -DNDEBUG") # FIXME: Remove "x.." when CMP0054 is set to NEW elseif ("x${CMAKE_${_lang}_COMPILER_ID}" STREQUAL "xMSVC") + # FIXME: Perhaps we should be using /MD instead? set(CMAKE_${_lang}_FLAGS_DEBUG_INIT "/MTd /Zi /Ob0 /Od /RTC1") - set(CMAKE_${_lang}_FLAGS_MINSIZEREL_INIT "/MT /O1 /Ob1") - set(CMAKE_${_lang}_FLAGS_RELEASE_INIT "/MT /O2 /Ob2") - set(CMAKE_${_lang}_FLAGS_RELWITHDEBINFO_INIT "/MT /Zi /O2 /Ob1") + set(CMAKE_${_lang}_FLAGS_MINSIZEREL_INIT "/MT /O1 /Ob1 /D NDEBUG") + set(CMAKE_${_lang}_FLAGS_RELEASE_INIT "/MT /O2 /Ob2 /D NDEBUG") + set(CMAKE_${_lang}_FLAGS_RELWITHDEBINFO_INIT "/MT /Zi /O2 /Ob1 /D NDEBUG") # Override linker flags (see Windows-MSVC.cmake for CMake's defaults) # The stack size comes from the Python build system. set(_msvc_stack_size "8388608") From ad4ddff99a504ea5d4b8b79b8c153c0be9991779 Mon Sep 17 00:00:00 2001 From: Dan Liew Date: Wed, 9 Mar 2016 13:07:14 +0000 Subject: [PATCH 3/3] [CMake] If OpenMP support is not found make sure we set ``USE_OPENMP`` to ``OFF`` to make it clear in ccmake/cmake-gui that the support is disabled. Previously it would be left as ``ON`` even if support wasn't actually enabled. --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2af3d7a82..3cc29780d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -239,6 +239,7 @@ if (OPENMP_FOUND) else() list(APPEND Z3_COMPONENT_CXX_DEFINES "-D_NO_OMP_") message(STATUS "Not using OpenMP") + set(USE_OPENMP OFF CACHE BOOL "Use OpenMP" FORCE) endif() ################################################################################