[cmake] Switch to built-in handling of C++ standard instead of hardcoding -std=c++17
authorannulen@yandex.ru <annulen@yandex.ru@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 27 Jun 2019 07:11:26 +0000 (07:11 +0000)
committerannulen@yandex.ru <annulen@yandex.ru@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 27 Jun 2019 07:11:26 +0000 (07:11 +0000)
https://bugs.webkit.org/show_bug.cgi?id=199108

Reviewed by Don Olmstead.

Rationale:

1. It provides an abstraction over exact flags of particular compilers -
   we just specify required version of C++ standard
2. External libraries (like Qt used in WPEQt) may require particular C++
   standard or even particular C++ features to be availabe (e.g. Qt
   requires INTERFACE_COMPILE_FEATURES cxx_decltype, which causes cmake
   to add -std=gnu++11 unless proper CXX_STANDARD is defined)

.:

* Source/cmake/OptionsCommon.cmake:
* Source/cmake/OptionsMSVC.cmake:
* Source/cmake/WebKitCompilerFlags.cmake:

Source/WebKit:

* PlatformWPE.cmake: Use project-level default for CXX_STANDARD
property.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@246873 268f45cc-cd09-0410-ab3c-d52691b4dbfc

ChangeLog
Source/WebKit/ChangeLog
Source/WebKit/PlatformWPE.cmake
Source/cmake/OptionsCommon.cmake
Source/cmake/OptionsMSVC.cmake
Source/cmake/WebKitCompilerFlags.cmake

index e44f9ff..fcd8aa7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,23 @@
+2019-06-21  Konstantin Tokarev  <annulen@yandex.ru>
+
+        [cmake] Switch to built-in handling of C++ standard instead of hardcoding -std=c++17
+        https://bugs.webkit.org/show_bug.cgi?id=199108
+
+        Reviewed by Don Olmstead.
+
+        Rationale:
+
+        1. It provides an abstraction over exact flags of particular compilers -
+           we just specify required version of C++ standard
+        2. External libraries (like Qt used in WPEQt) may require particular C++
+           standard or even particular C++ features to be availabe (e.g. Qt
+           requires INTERFACE_COMPILE_FEATURES cxx_decltype, which causes cmake
+           to add -std=gnu++11 unless proper CXX_STANDARD is defined)
+
+        * Source/cmake/OptionsCommon.cmake:
+        * Source/cmake/OptionsMSVC.cmake:
+        * Source/cmake/WebKitCompilerFlags.cmake:
+
 2019-06-25  Michael Catanzaro  <mcatanzaro@igalia.com>
 
         Fully rename WebKitGTK+ -> WebKitGTK everywhere
index 6ea0e89..1ab78f4 100644 (file)
@@ -1,3 +1,22 @@
+2019-06-21  Konstantin Tokarev  <annulen@yandex.ru>
+
+        [cmake] Switch to built-in handling of C++ standard instead of hardcoding -std=c++17
+        https://bugs.webkit.org/show_bug.cgi?id=199108
+
+        Reviewed by Don Olmstead.
+
+        Rationale:
+
+        1. It provides an abstraction over exact flags of particular compilers -
+           we just specify required version of C++ standard
+        2. External libraries (like Qt used in WPEQt) may require particular C++
+           standard or even particular C++ features to be availabe (e.g. Qt
+           requires INTERFACE_COMPILE_FEATURES cxx_decltype, which causes cmake
+           to add -std=gnu++11 unless proper CXX_STANDARD is defined)
+
+        * PlatformWPE.cmake: Use project-level default for CXX_STANDARD
+        property.
+
 2019-06-26  Jiewen Tan  <jiewen_tan@apple.com>
 
         SubFrameSOAuthorizationSession should preserve the referrer header when fall back to web path
index 1a635fb..570a41c 100644 (file)
@@ -397,7 +397,6 @@ if (ENABLE_WPE_QT_API)
     set_target_properties(qtwpe PROPERTIES
         OUTPUT_NAME qtwpe
         AUTOMOC ON
-        CXX_STANDARD 17
     )
     target_compile_definitions(qtwpe PUBLIC QT_NO_KEYWORDS=1)
     target_link_libraries(qtwpe ${qtwpe_LIBRARIES})
index 6c48a43..9bdc36d 100644 (file)
@@ -1,3 +1,7 @@
+set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+set(CMAKE_CXX_EXTENSIONS OFF)
+
 add_definitions(-DBUILDING_WITH_CMAKE=1)
 add_definitions(-DHAVE_CONFIG_H=1)
 
index c6aad50..df2ffb4 100644 (file)
@@ -26,10 +26,6 @@ if (NOT COMPILER_IS_CLANG_CL)
     add_definitions(-D_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1)
 endif ()
 
-# Enable C++17
-# https://docs.microsoft.com/en-us/cpp/build/reference/std-specify-language-standard-version
-add_compile_options(/std:c++17)
-
 # Specify the source code encoding
 add_compile_options(/utf-8 /validate-charset)
 
index 1f802d4..c5fa4c3 100644 (file)
@@ -104,13 +104,6 @@ if (COMPILER_IS_GCC_OR_CLANG)
         WEBKIT_APPEND_GLOBAL_COMPILER_FLAGS(-fno-exceptions)
         WEBKIT_APPEND_GLOBAL_CXX_FLAGS(-fno-rtti)
 
-        check_cxx_compiler_flag("-std=c++17" CXX_COMPILER_SUPPORTS_CXX17)
-        if (CXX_COMPILER_SUPPORTS_CXX17)
-            WEBKIT_APPEND_GLOBAL_CXX_FLAGS(-std=c++17)
-        else ()
-            message(FATAL_ERROR "Compiler with C++17 support is required")
-        endif ()
-
         if (WIN32)
             WEBKIT_APPEND_GLOBAL_COMPILER_FLAGS(-mno-ms-bitfields)
             WEBKIT_PREPEND_GLOBAL_COMPILER_FLAGS(-Wno-unknown-pragmas)