From 5bf5581dbe9c31414d1b30eb9a942c1a7323c915 Mon Sep 17 00:00:00 2001 From: Maarten Bent Date: Tue, 16 Jul 2019 22:58:48 +0200 Subject: [PATCH 1/5] CMake: Disable finding X11 session manager by default This is the same behaviour as configure has. --- build/cmake/options.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/cmake/options.cmake b/build/cmake/options.cmake index 606ba6f75f..d86c47cc26 100644 --- a/build/cmake/options.cmake +++ b/build/cmake/options.cmake @@ -285,7 +285,7 @@ wx_option(wxUSE_COMBOCTRL "use wxComboCtrl class") wx_option(wxUSE_COMMANDLINKBUTTON "use wxCommmandLinkButton class") wx_option(wxUSE_DATAVIEWCTRL "use wxDataViewCtrl class") wx_option(wxUSE_DATEPICKCTRL "use wxDatePickerCtrl class") -wx_option(wxUSE_DETECT_SM "_sm use code to detect X11 session manager") +wx_option(wxUSE_DETECT_SM "use code to detect X11 session manager" OFF) wx_option(wxUSE_DIRPICKERCTRL "use wxDirPickerCtrl class") wx_option(wxUSE_DISPLAY "use wxDisplay class") wx_option(wxUSE_EDITABLELISTBOX "use wxEditableListBox class") From 181a03fc73f4e33c29c0f917357230077675970c Mon Sep 17 00:00:00 2001 From: Maarten Bent Date: Tue, 16 Jul 2019 23:00:11 +0200 Subject: [PATCH 2/5] CMake: Only use -fno-rtti for C++ Using it for C generates the following warning: command line option '-fno-rtti' is valid for C++/D/ObjC++ but not for C --- build/cmake/init.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/cmake/init.cmake b/build/cmake/init.cmake index 5ad7bcdebd..703d0c3417 100644 --- a/build/cmake/init.cmake +++ b/build/cmake/init.cmake @@ -96,7 +96,7 @@ if(wxUSE_NO_RTTI) if(MSVC) add_compile_options("/GR-") elseif(("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") OR ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")) - add_compile_options("-fno-rtti") + wx_string_append(CMAKE_CXX_FLAGS " -fno-rtti") endif() add_definitions("-DwxNO_RTTI") endif() From 60b0a1fde2a9a48035cf2a29e3decae29ecd285b Mon Sep 17 00:00:00 2001 From: Maarten Bent Date: Wed, 17 Jul 2019 01:12:33 +0200 Subject: [PATCH 3/5] CMake: Fix MSVC warning when using NMake Fix warning: Command line warning D9025 : overriding '/W3' with '/W4' Remove /W3, either via a regex or via new policy CMP0092 (CMake 3.15). The policy has to be set before calling project(), otherwise the CMAKE__FLAGS are already initialized. See https://trac.wxwidgets.org/ticket/18438 --- CMakeLists.txt | 4 ++-- build/cmake/functions.cmake | 12 ++++++++---- build/cmake/init.cmake | 5 +++++ build/cmake/policies.cmake | 5 +++++ 4 files changed, 20 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7d726a5e22..fe69cf3a9d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -23,10 +23,10 @@ if(APPLE AND NOT CMAKE_OSX_DEPLOYMENT_TARGET) set(CMAKE_OSX_DEPLOYMENT_TARGET 10.9 CACHE STRING "OS X Deployment Target") endif() -project(wxWidgets) - include(build/cmake/policies.cmake NO_POLICY_SCOPE) +project(wxWidgets) + # Initialize variables for quick access to wx root dir in sub dirs set(wxSOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) set(wxBINARY_DIR ${CMAKE_BINARY_DIR}) diff --git a/build/cmake/functions.cmake b/build/cmake/functions.cmake index f5a613c7bf..13b861e20d 100644 --- a/build/cmake/functions.cmake +++ b/build/cmake/functions.cmake @@ -98,11 +98,15 @@ function(wx_set_common_target_properties target_name) ARCHIVE_OUTPUT_DIRECTORY "${wxOUTPUT_DIR}${wxPLATFORM_LIB_DIR}" RUNTIME_OUTPUT_DIRECTORY "${wxOUTPUT_DIR}${wxPLATFORM_LIB_DIR}" ) - if(NOT wxCOMMON_TARGET_PROPS_DEFAULT_WARNINGS) - # Enable higher warnings for most compilers/IDEs - if(MSVC) - target_compile_options(${target_name} PRIVATE /W4) + + if(MSVC) + if(wxCOMMON_TARGET_PROPS_DEFAULT_WARNINGS) + set(MSVC_WARNING_LEVEL "/W3") + else() + set(MSVC_WARNING_LEVEL "/W4") endif() + target_compile_options(${target_name} PRIVATE ${MSVC_WARNING_LEVEL}) + else() # TODO: add warning flags for other compilers endif() diff --git a/build/cmake/init.cmake b/build/cmake/init.cmake index 703d0c3417..944db20ecd 100644 --- a/build/cmake/init.cmake +++ b/build/cmake/init.cmake @@ -57,6 +57,11 @@ if(MSVC) wx_string_append(CMAKE_C_FLAGS " /MP") wx_string_append(CMAKE_CXX_FLAGS " /MP") endif() + + if(NOT POLICY CMP0092) + string(REGEX REPLACE "/W[0-4]" "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") + string(REGEX REPLACE "/W[0-4]" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") + endif() elseif(("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") OR ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")) if(wxBUILD_OPTIMISE) set(GCC_PREFERRED_RELEASE_FLAGS " -O2 -fomit-frame-pointer") diff --git a/build/cmake/policies.cmake b/build/cmake/policies.cmake index 496aae7507..f68682df02 100644 --- a/build/cmake/policies.cmake +++ b/build/cmake/policies.cmake @@ -58,3 +58,8 @@ if(POLICY CMP0072) # FindOpenGL prefers GLVND by default when available. cmake_policy(SET CMP0072 NEW) endif() + +if(POLICY CMP0092) + # MSVC warning flags are not in CMAKE__FLAGS by default + cmake_policy(SET CMP0092 NEW) +endif() From 46f01bfe8b30a1d0fc7fa2ca87065034773e008c Mon Sep 17 00:00:00 2001 From: Maarten Bent Date: Fri, 19 Jul 2019 01:10:12 +0200 Subject: [PATCH 4/5] CMake: Fill in default configuration in cmake-gui The Debug configuration is the default, but it is not filled in in cmake-gui. Do this, and set Debug and Release as available options. See https://trac.wxwidgets.org/ticket/18438 --- CMakeLists.txt | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index fe69cf3a9d..8909de65d2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,6 +17,15 @@ if(NOT CMAKE_CONFIGURATION_TYPES) endif() endif() +# https://blog.kitware.com/cmake-and-the-default-build-type/ +if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) + set(default_build_type "Debug") + message(STATUS "Setting build type to '${default_build_type}' as none was specified.") + set(CMAKE_BUILD_TYPE "${default_build_type}" CACHE STRING "Choose the type of build." FORCE) + # Set the possible values of build type for cmake-gui + set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release") +endif() + if(APPLE AND NOT CMAKE_OSX_DEPLOYMENT_TARGET) # If no deployment target has been set default to the minimum supported # OS X version (this has to be set before the first project() call) From 7f5ca2a4cb91fe4157ee5d407fa825c3e8789a15 Mon Sep 17 00:00:00 2001 From: Maarten Bent Date: Fri, 19 Jul 2019 01:51:47 +0200 Subject: [PATCH 5/5] CMake: Fix detecting AppleClang Policies are now correctly initialized (before creating the project). Policy CMP0025 changes the compilerID of Clang on Apple, handle this correctly. --- build/cmake/init.cmake | 4 ++-- build/cmake/lib/stc/CMakeLists.txt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/build/cmake/init.cmake b/build/cmake/init.cmake index 944db20ecd..576f8506e2 100644 --- a/build/cmake/init.cmake +++ b/build/cmake/init.cmake @@ -62,7 +62,7 @@ if(MSVC) string(REGEX REPLACE "/W[0-4]" "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") string(REGEX REPLACE "/W[0-4]" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") endif() -elseif(("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") OR ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")) +elseif(("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") OR ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")) if(wxBUILD_OPTIMISE) set(GCC_PREFERRED_RELEASE_FLAGS " -O2 -fomit-frame-pointer") wx_string_append(CMAKE_CXX_FLAGS_RELEASE "${GCC_PREFERRED_RELEASE_FLAGS}") @@ -100,7 +100,7 @@ endif() if(wxUSE_NO_RTTI) if(MSVC) add_compile_options("/GR-") - elseif(("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") OR ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")) + elseif(("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") OR ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")) wx_string_append(CMAKE_CXX_FLAGS " -fno-rtti") endif() add_definitions("-DwxNO_RTTI") diff --git a/build/cmake/lib/stc/CMakeLists.txt b/build/cmake/lib/stc/CMakeLists.txt index 25bb80801e..f96687d2d8 100644 --- a/build/cmake/lib/stc/CMakeLists.txt +++ b/build/cmake/lib/stc/CMakeLists.txt @@ -176,7 +176,7 @@ if(wxBUILD_PRECOMP) # standard c++ headers when using clang. # Do not disable precompiled headers entirely but use the main Scintilla # header as prefix header so there is at least a small speedup. - if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") + if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") set(wxSCINTILLA_PREC_HEADER "${wxSOURCE_DIR}/src/stc/scintilla/include/Scintilla.h") endif() wx_target_enable_precomp(wxscintilla ${wxSCINTILLA_PREC_HEADER})