[GTK] Limit the supported compilers to GCC >= 4.7 and Clang >= 3.0
authorzandobersek@gmail.com <zandobersek@gmail.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 7 Mar 2013 16:58:23 +0000 (16:58 +0000)
committerzandobersek@gmail.com <zandobersek@gmail.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 7 Mar 2013 16:58:23 +0000 (16:58 +0000)
https://bugs.webkit.org/show_bug.cgi?id=109932

Patch by Zan Dobersek <zdobersek@igalia.com> on 2013-03-07
Reviewed by Martin Robinson.

.:

* Source/autotools/CheckSystemAndBasicDependencies.m4: Strictly check for one of the two compilers.
* Source/autotools/SetupCompilerFlags.m4: Set up C++11-specific compiler flags. Force the C99 standard for the C code.
Use the -Qunused-arguments flag when using Clang, it reduces irrelevant errors when using ccache.

Source/WebCore:

* GNUmakefile.am: Replace references to SYMBOL_VISIBILITY_INLINES and SYMBOL_VISIBILITY variables with the actual flags.
They are now available by default due to the limited set of supported compilers.
* bindings/gobject/GNUmakefile.am: Ditto.

Source/WebKit/gtk:

* GNUmakefile.am: Replace references to SYMBOL_VISIBILITY_INLINES and SYMBOL_VISIBILITY variables with the actual flags.
They are now available by default due to the limited set of supported compilers.

Source/WebKit2:

* GNUmakefile.am: Replace references to SYMBOL_VISIBILITY_INLINES and SYMBOL_VISIBILITY variables with the actual flags.
They are now available by default due to the limited set of supported compilers.

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

ChangeLog
Source/WebCore/ChangeLog
Source/WebCore/GNUmakefile.am
Source/WebCore/bindings/gobject/GNUmakefile.am
Source/WebKit/gtk/ChangeLog
Source/WebKit/gtk/GNUmakefile.am
Source/WebKit2/ChangeLog
Source/WebKit2/GNUmakefile.am
Source/autotools/CheckSystemAndBasicDependencies.m4
Source/autotools/SetupCompilerFlags.m4

index 8d4e16e..bf5a588 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2013-03-07  Zan Dobersek  <zdobersek@igalia.com>
+
+        [GTK] Limit the supported compilers to GCC >= 4.7 and Clang >= 3.0
+        https://bugs.webkit.org/show_bug.cgi?id=109932
+
+        Reviewed by Martin Robinson.
+
+        * Source/autotools/CheckSystemAndBasicDependencies.m4: Strictly check for one of the two compilers.
+        * Source/autotools/SetupCompilerFlags.m4: Set up C++11-specific compiler flags. Force the C99 standard for the C code.
+        Use the -Qunused-arguments flag when using Clang, it reduces irrelevant errors when using ccache.
+
 2013-03-05  Gustavo Noronha Silva  <gns@gnome.org>
 
         [GTK] Enable translations for WebKit2
index 2c59867..2101c79 100644 (file)
@@ -1,3 +1,14 @@
+2013-03-07  Zan Dobersek  <zdobersek@igalia.com>
+
+        [GTK] Limit the supported compilers to GCC >= 4.7 and Clang >= 3.0
+        https://bugs.webkit.org/show_bug.cgi?id=109932
+
+        Reviewed by Martin Robinson.
+
+        * GNUmakefile.am: Replace references to SYMBOL_VISIBILITY_INLINES and SYMBOL_VISIBILITY variables with the actual flags.
+        They are now available by default due to the limited set of supported compilers.
+        * bindings/gobject/GNUmakefile.am: Ditto.
+
 2013-03-07  Mike West  <mkwst@chromium.org>
 
         XSSAuditor should send only one console error when blocking a page.
index 8df23d3..2b073b7 100644 (file)
@@ -161,11 +161,11 @@ libWebCoreSVG_la_SOURCES = \
        $(webcore_svg_sources)
 
 libWebCoreSVG_la_CXXFLAGS = \
-       $(SYMBOL_VISIBILITY_INLINES) \
+       -fvisibility-inlines-hidden \
        $(global_cxxflags)
 
 libWebCoreSVG_la_CFLAGS = \
-       $(SYMBOL_VISIBILITY) \
+       -fvisibility=hidden \
        $(global_cflags)
 
 libWebCoreSVG_la_CPPFLAGS = \
@@ -463,11 +463,11 @@ libWebCore_la_SOURCES = \
        $(webcore_sources)
 
 libWebCore_la_CXXFLAGS = \
-       $(SYMBOL_VISIBILITY_INLINES) \
+       -fvisibility-inlines-hidden \
        $(global_cxxflags)
 
 libWebCore_la_CFLAGS = \
-       $(SYMBOL_VISIBILITY) \
+       -fvisibility=hidden \
        $(global_cflags)
 
 libWebCore_la_CPPFLAGS = \
@@ -529,10 +529,10 @@ endif
 libWebCorePlatform_la_SOURCES = \
        $(webcore_platform_sources)
 libWebCorePlatform_la_CXXFLAGS = \
-       $(SYMBOL_VISIBILITY_INLINES) \
+       -fvisibility-inlines-hidden \
        $(global_cxxflags)
 libWebCorePlatform_la_CFLAGS = \
-       $(SYMBOL_VISIBILITY) \
+       -fvisibility=hidden \
        $(global_cflags)
 libWebCorePlatform_la_CPPFLAGS = \
        -DBUILDING_WEBKIT \
@@ -572,11 +572,11 @@ libWebCoreGtk_la_SOURCES = \
        $(webcoregtk_sources)
 
 libWebCoreGtk_la_CXXFLAGS = \
-       $(SYMBOL_VISIBILITY_INLINES) \
+       -fvisibility-inlines-hidden \
        $(global_cxxflags)
 
 libWebCoreGtk_la_CFLAGS = \
-       $(SYMBOL_VISIBILITY) \
+       -fvisibility=hidden \
        $(global_cflags)
 
 libWebCoreGtk_la_CPPFLAGS = \
index 2114fa8..22aed45 100644 (file)
@@ -518,11 +518,11 @@ libWebCoreDOM_la_SOURCES = \
        Source/WebCore/bindings/gobject/WebKitHTMLElementWrapperFactory.h
 
 libWebCoreDOM_la_CXXFLAGS = \
-       $(SYMBOL_VISIBILITY_INLINES) \
+       -fvisibility-inlines-hidden \
        $(global_cxxflags)
 
 libWebCoreDOM_la_CFLAGS = \
-       $(SYMBOL_VISIBILITY) \
+       -fvisibility=hidden \
        $(global_cflags)
 
 libWebCoreDOM_la_CPPFLAGS = \
index b186990..b066ec4 100644 (file)
@@ -1,3 +1,13 @@
+2013-03-07  Zan Dobersek  <zdobersek@igalia.com>
+
+        [GTK] Limit the supported compilers to GCC >= 4.7 and Clang >= 3.0
+        https://bugs.webkit.org/show_bug.cgi?id=109932
+
+        Reviewed by Martin Robinson.
+
+        * GNUmakefile.am: Replace references to SYMBOL_VISIBILITY_INLINES and SYMBOL_VISIBILITY variables with the actual flags.
+        They are now available by default due to the limited set of supported compilers.
+
 2013-03-06  Gustavo Noronha Silva  <gns@gnome.org>
 
         [GTK] Enable translations for WebKit2
index c61eb7e..ccfb103 100644 (file)
@@ -18,11 +18,11 @@ libwebkitgtk_@WEBKITGTK_API_MAJOR_VERSION@_@WEBKITGTK_API_MINOR_VERSION@_la_SOUR
        $(webkitgtk_sources)
 
 libwebkitgtk_@WEBKITGTK_API_MAJOR_VERSION@_@WEBKITGTK_API_MINOR_VERSION@_la_CXXFLAGS = \
-       $(SYMBOL_VISIBILITY_INLINES) \
+       -fvisibility-inlines-hidden \
        $(global_cxxflags)
 
 libwebkitgtk_@WEBKITGTK_API_MAJOR_VERSION@_@WEBKITGTK_API_MINOR_VERSION@_la_CFLAGS = \
-       $(SYMBOL_VISIBILITY) \
+       -fvisibility=hidden \
        $(global_cflags)
 
 if ENABLE_SPELLCHECK
index fdffd74..e4fd0e9 100644 (file)
@@ -1,3 +1,13 @@
+2013-03-07  Zan Dobersek  <zdobersek@igalia.com>
+
+        [GTK] Limit the supported compilers to GCC >= 4.7 and Clang >= 3.0
+        https://bugs.webkit.org/show_bug.cgi?id=109932
+
+        Reviewed by Martin Robinson.
+
+        * GNUmakefile.am: Replace references to SYMBOL_VISIBILITY_INLINES and SYMBOL_VISIBILITY variables with the actual flags.
+        They are now available by default due to the limited set of supported compilers.
+
 2013-03-05  Gustavo Noronha Silva  <gns@gnome.org>
 
         [GTK] Enable translations for WebKit2
index 1f068b0..0abf96e 100644 (file)
@@ -452,11 +452,11 @@ libWebCoreGtk2_la_SOURCES = \
        $(webcoregtk_sources)
 
 libWebCoreGtk2_la_CXXFLAGS = \
-       $(SYMBOL_VISIBILITY_INLINES) \
+       -fvisibility-inlines-hidden \
        $(global_cxxflags)
 
 libWebCoreGtk2_la_CFLAGS = \
-       $(SYMBOL_VISIBILITY) \
+       -fvisibility=hidden \
        $(global_cflags)
 
 libWebCoreGtk2_la_CPPFLAGS = \
@@ -553,7 +553,7 @@ Programs_WebKitPluginProcess_CPPFLAGS = \
        $(UNICODE_CFLAGS)
 
 Programs_WebKitPluginProcess_CFLAGS = \
-       $(SYMBOL_VISIBILITY) \
+       -fvisibility-inlines-hidden \
        $(global_cflags) \
        $(CAIRO_CFLAGS) \
        $(GLIB_CFLAGS) \
@@ -614,7 +614,7 @@ Programs_WebKitPluginProcess_LDFLAGS = \
        -Wl,--unresolved-symbols=ignore-in-object-files
 
 Programs_WebKitPluginProcess_CXXFLAGS = \
-       $(SYMBOL_VISIBILITY_INLINES) \
+       -fvisibility-inlines-hidden \
        $(global_cxxflags)
 
 EXTRA_DIST += \
index b3d13ea..27371bd 100644 (file)
@@ -85,9 +85,24 @@ AC_PROG_CXX
 AC_PROG_INSTALL
 AC_SYS_LARGEFILE
 
-# Check whether a C++ was found (AC_PROG_CXX sets $CXX to "g++" even when it doesn't exist).
+# Check that an appropriate C compiler is available.
+AC_LANG_PUSH([C])
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
+#if !(defined(__GNUC__) && !defined(__clang__) && !defined(__INTEL_COMPILER) && __GNUC__ >= 4 && __GNUC_MINOR__ >= 7) \
+    && !(defined(__clang__) && __clang_major__ >= 3 && __clang_minor__ >= 0)
+#error Unsupported compiler
+#endif
+],[])],[],[AC_MSG_ERROR([Compiler GCC >= 4.7 or Clang >= 3.0 is required for C compilation])])
+AC_LANG_POP([C])
+
+# Check that an appropriate C++ compiler is available.
 AC_LANG_PUSH([C++])
-AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],[],[AC_MSG_ERROR([No C++ compiler found])])
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
+#if !(defined(__GNUG__) && defined(__GNUC__) && !defined(__clang__) && !defined(__INTEL_COMPILER) && __GNUC__ >= 4 && __GNUC_MINOR__ >= 7) \
+    && !(defined(__clang__) && __clang_major__ >= 3 && __clang_minor__ >= 0)
+#error Unsupported compiler
+#endif
+],[])],[],[AC_MSG_ERROR([Compiler GCC >= 4.7 or Clang >= 3.0 is required for C++ compilation])])
 AC_LANG_POP([C++])
 
 # C/C++ Language Features
@@ -98,33 +113,3 @@ AC_C_VOLATILE
 # C/C++ Headers
 AC_HEADER_STDC
 AC_HEADER_STDBOOL
-
-# Check for -fvisibility=hidden compiler support (GCC >= 4).
-saved_CFLAGS="$CFLAGS"
-CFLAGS="$CFLAGS -fvisibility=hidden -fvisibility-inlines-hidden"
-AC_MSG_CHECKING([if ${CXX} supports -fvisibility=hidden -fvisibility-inlines-hidden])
-AC_COMPILE_IFELSE([AC_LANG_SOURCE([char foo;])], [AC_MSG_RESULT([yes])
-    SYMBOL_VISIBILITY="-fvisibility=hidden" SYMBOL_VISIBILITY_INLINES="-fvisibility-inlines-hidden"], [AC_MSG_RESULT([no])])
-CFLAGS="$saved_CFLAGS"
-AC_SUBST(SYMBOL_VISIBILITY)
-AC_SUBST(SYMBOL_VISIBILITY_INLINES)
-
-# Disable C++0x compat warnings for GCC >= 4.6.0 until we build cleanly with that.
-AC_LANG_PUSH(C++)
-TMPCXXFLAGS=$CXXFLAGS
-CXXFLAGS="-Wall -Werror"
-AC_MSG_CHECKING([if we have to disable C++0x compat warnings for GCC >= 4.6.0])
-AC_TRY_COMPILE([
-namespace std {
-    class nullptr_t { };
-}
-extern std::nullptr_t nullptr;
-], [return 0;], disable_cxx0x_compat=no, disable_cxx0x_compat=yes)
-AC_MSG_RESULT($disable_cxx0x_compat)
-if test "$disable_cxx0x_compat" = yes; then
-    CXXFLAGS="$TMPCXXFLAGS -Wno-c++0x-compat"
-else
-    CXXFLAGS="$TMPCXXFLAGS"
-fi
-AC_LANG_POP(C++)
-
index d87054d..2a9a978 100644 (file)
@@ -1,3 +1,17 @@
+# Use C99 as the language standard for C code.
+CFLAGS="$CFLAGS -std=c99"
+# Do not warn about C++11 incompatibilities and extensions.
+CXXFLAGS="$CXXFLAGS -Wno-c++11-compat -Wno-c++11-extensions"
+
+# Clang requires suppression of unused arguments warning.
+if test "$CC" = "clang"; then
+    CFLAGS="$CFLAGS -Qunused-arguments"
+fi
+# libstdc++ is at the moment the only option as the C++ standard library.
+if test "$CXX" = "clang++"; then
+    CXXFLAGS="$CXXFLAGS -stdlib=libstdc++ -Qunused-arguments"
+fi
+
 if test "$host_cpu" = "sh4"; then
     CXXFLAGS="$CXXFLAGS -mieee -w"
     CFLAGS="$CFLAGS -mieee -w"
@@ -20,5 +34,3 @@ else
     CXXFLAGS="$CXXFLAGS -O0"
     CFLAGS="$CFLAGS -O0"
 fi
-
-