[CMake] Require GCC 6
authormcatanzaro@igalia.com <mcatanzaro@igalia.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 29 Apr 2018 17:29:56 +0000 (17:29 +0000)
committermcatanzaro@igalia.com <mcatanzaro@igalia.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 29 Apr 2018 17:29:56 +0000 (17:29 +0000)
https://bugs.webkit.org/show_bug.cgi?id=184985

Reviewed by Alex Christensen.

.:

Require it.

* CMakeLists.txt:

Source/WebCore:

Remove a GCC 5 fallback path. This seems to be the only such fallback path in WebKit.

* platform/graphics/FourCC.h:
(WebCore::FourCC::FourCC):

Source/WTF:

Stop enforcing GCC version in Compiler.h. It's better to do this in the build system. And I
don't like having the same check in two different places.

* wtf/Compiler.h:

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

CMakeLists.txt
ChangeLog
Source/WTF/ChangeLog
Source/WTF/wtf/Compiler.h
Source/WebCore/ChangeLog
Source/WebCore/platform/graphics/FourCC.h

index 3fb3dd5..1903d6a 100644 (file)
@@ -60,8 +60,8 @@ if (${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang" OR ${CMAKE_CXX_COMPILER_ID} STREQU
 endif ()
 
 if (${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU")
-    if (${CMAKE_CXX_COMPILER_VERSION} VERSION_LESS "5.0.0")
-        message(FATAL_ERROR "GCC 5.0.0 is required to build WebKitGTK+, use a newer GCC version or clang")
+    if (${CMAKE_CXX_COMPILER_VERSION} VERSION_LESS "6.0.0")
+        message(FATAL_ERROR "GCC 6.0.0 is required to build WebKitGTK+, use a newer GCC version or clang")
     endif ()
 endif ()
 
index 58ba7eb..652df6f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2018-04-29  Michael Catanzaro  <mcatanzaro@igalia.com>
+
+        [CMake] Require GCC 6
+        https://bugs.webkit.org/show_bug.cgi?id=184985
+
+        Reviewed by Alex Christensen.
+
+        Require it.
+
+        * CMakeLists.txt:
+
 2018-04-26  Daniel Bates  <dabates@apple.com>
 
         ASSERTION FAILED: ASSERT(!containsImage || MIMETypeRegistry::isSupportedImageResourceMIMEType([resource MIMEType])) in -[NSPasteboard(WebExtras) _web_writePromisedRTFDFromArchive:containsImage:]
index 3da61f6..d7130ca 100644 (file)
@@ -1,3 +1,15 @@
+2018-04-29  Michael Catanzaro  <mcatanzaro@igalia.com>
+
+        [CMake] Require GCC 6
+        https://bugs.webkit.org/show_bug.cgi?id=184985
+
+        Reviewed by Alex Christensen.
+
+        Stop enforcing GCC version in Compiler.h. It's better to do this in the build system. And I
+        don't like having the same check in two different places.
+
+        * wtf/Compiler.h:
+
 2018-04-29  Geoffrey Garen  <ggaren@apple.com>
 
         WordLock doesn't need per-thread data
index c26479c..1391ead 100644 (file)
 #define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
 #define GCC_VERSION_AT_LEAST(major, minor, patch) (GCC_VERSION >= (major * 10000 + minor * 100 + patch))
 
-#if !GCC_VERSION_AT_LEAST(5, 0, 0)
-#error "Please use a newer version of GCC. WebKit requires GCC 5.0.0 or newer to compile."
-#endif
-
 #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L
 #define WTF_COMPILER_SUPPORTS_C_STATIC_ASSERT 1
 #endif
index 62a0340..b5a0741 100644 (file)
@@ -1,3 +1,15 @@
+2018-04-29  Michael Catanzaro  <mcatanzaro@igalia.com>
+
+        [CMake] Require GCC 6
+        https://bugs.webkit.org/show_bug.cgi?id=184985
+
+        Reviewed by Alex Christensen.
+
+        Remove a GCC 5 fallback path. This seems to be the only such fallback path in WebKit.
+
+        * platform/graphics/FourCC.h:
+        (WebCore::FourCC::FourCC):
+
 2018-04-29  Zalan Bujtas  <zalan@apple.com>
 
         [LFC] Implement Display::Box functions
index 1afe051..e12ee52 100644 (file)
 
 #include <wtf/text/WTFString.h>
 
-// FIXME: Remove this messy fallback path and require GCC 6 in May 2018.
-#if COMPILER(GCC)
-#if !GCC_VERSION_AT_LEAST(6, 0, 0)
-#define NEED_FOURCC_LEGACY_CONSTRUCTOR
-#include <cstring>
-#endif
-#endif
-
 namespace WebCore {
 
 struct FourCC {
     WEBCORE_EXPORT FourCC(uint32_t value) : value(value) { }
 
-#ifdef NEED_FOURCC_LEGACY_CONSTRUCTOR
-    // This constructor is risky because it creates ambiguous function
-    // calls that will not exist except with old versions of GCC: the
-    // initialization FourCC { 0 } is valid only when this legacy
-    // constructor is not enabled, because the uint32_t constructor and
-    // this constructor are equally-appropriate options. So the more
-    // verbose initialization FourCC { uint32_t { 0 } } is required, but
-    // developers will not realize this unless they use an old version of
-    // GCC. Bad.
-    FourCC(const char* data)
-    {
-        if (!data) {
-            value = 0;
-            return;
-        }
-        RELEASE_ASSERT_WITH_SECURITY_IMPLICATION(strlen(data) == 4);
-        value = data[0] << 24 | data[1] << 16 | data[2] << 8 | data[3];
-    }
-#undef NEED_FOURCC_LEGACY_CONSTRUCTOR
-#else
     template<std::size_t N>
     constexpr FourCC(const char (&data)[N])
     {
         static_assert((N - 1) == 4, "FourCC literals must be exactly 4 characters long");
         value = data[0] << 24 | data[1] << 16 | data[2] << 8 | data[3];
     }
-#endif
 
     String toString() const;
     WEBCORE_EXPORT static std::optional<FourCC> fromString(const String&);