[NIX] Enable full debug builds by having ar creating thin archives
authorsimon.pena@samsung.com <simon.pena@samsung.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 17 Dec 2013 15:06:54 +0000 (15:06 +0000)
committersimon.pena@samsung.com <simon.pena@samsung.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 17 Dec 2013 15:06:54 +0000 (15:06 +0000)
https://bugs.webkit.org/show_bug.cgi?id=125850

Reviewed by Csaba Osztrogonác.

By default, CMake uses ar to generate libWebCore.a with cr parameters
(do not warn if the library has to be created, and replace existing
files in the archive). That results in a very large file, and ar fails
with sizes over 4GB.

.:

Previously, debug builds on NIX were overriding CFLAGS in order to reduce
the size of the WebCore library. Once that ar creates thin archives, overriding
CFLAGS is no longer needed.

* Source/cmake/OptionsNix.cmake: Remove CFLAGS override for debug builds.

Source/WebCore:

By using thin archives (the T option of ar), the generated
libWebCore.a is much smaller, and can be successfully archived. As a
result, we can generate a full debug build. This patch is based on Xan
López's webkit.org/b/110580.

* PlatformNix.cmake: Instruct cmake to invoke ar with T option.

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

ChangeLog
Source/WebCore/ChangeLog
Source/WebCore/PlatformNix.cmake
Source/cmake/OptionsNix.cmake

index 84aba62..a118abe 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,21 @@
+2013-12-17  Simon Pena  <simon.pena@samsung.com>
+
+        [NIX] Enable full debug builds by having ar creating thin archives
+        https://bugs.webkit.org/show_bug.cgi?id=125850
+
+        Reviewed by Csaba Osztrogonác.
+
+        By default, CMake uses ar to generate libWebCore.a with cr parameters
+        (do not warn if the library has to be created, and replace existing
+        files in the archive). That results in a very large file, and ar fails
+        with sizes over 4GB.
+
+        Previously, debug builds on NIX were overriding CFLAGS in order to reduce
+        the size of the WebCore library. Once that ar creates thin archives, overriding
+        CFLAGS is no longer needed.
+
+        * Source/cmake/OptionsNix.cmake: Remove CFLAGS override for debug builds.
+
 2013-12-13  Joseph Pecoraro  <pecoraro@apple.com>
 
         [GTK] Remove Warnings in building about duplicate INSPECTOR variables
index efa2c28..a0fa42b 100644 (file)
@@ -1,3 +1,22 @@
+2013-12-17  Simon Pena  <simon.pena@samsung.com>
+
+        [NIX] Enable full debug builds by having ar creating thin archives
+        https://bugs.webkit.org/show_bug.cgi?id=125850
+
+        Reviewed by Csaba Osztrogonác.
+
+        By default, CMake uses ar to generate libWebCore.a with cr parameters
+        (do not warn if the library has to be created, and replace existing
+        files in the archive). That results in a very large file, and ar fails
+        with sizes over 4GB.
+
+        By using thin archives (the T option of ar), the generated
+        libWebCore.a is much smaller, and can be successfully archived. As a
+        result, we can generate a full debug build. This patch is based on Xan
+        López's webkit.org/b/110580.
+
+        * PlatformNix.cmake: Instruct cmake to invoke ar with T option.
+
 2013-12-17  Carlos Garcia Campos  <cgarcia@igalia.com>
 
         Unreviewed. Update GObject DOM symbols file after r160336.
index b1c5f45..00bee91 100644 (file)
@@ -298,3 +298,8 @@ else ()
         ${LIBSOUP_LIBRARIES}
     )
 endif ()
+
+set(CMAKE_C_ARCHIVE_CREATE "<CMAKE_AR> <LINK_FLAGS> cruT <TARGET> <OBJECTS>")
+set(CMAKE_C_ARCHIVE_APPEND "<CMAKE_AR> <LINK_FLAGS> ruT <TARGET> <OBJECTS>")
+set(CMAKE_CXX_ARCHIVE_CREATE "<CMAKE_AR> <LINK_FLAGS> cruT <TARGET> <OBJECTS>")
+set(CMAKE_CXX_ARCHIVE_APPEND "<CMAKE_AR> <LINK_FLAGS> ruT <TARGET> <OBJECTS>")
index 7155a53..5203229 100644 (file)
@@ -80,11 +80,6 @@ set(PROJECT_VERSION_MINOR 1)
 set(PROJECT_VERSION_PATCH 0)
 set(PROJECT_VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH})
 
-if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
-    # Use -femit-struct-debug-baseonly to reduce the size of WebCore static library
-    set(CMAKE_CXX_FLAGS_DEBUG "-g -femit-struct-debug-baseonly" CACHE STRING "Flags used by the compiler during debug builds." FORCE)
-endif ()
-
 set(SHARED_CORE 0)
 set(ENABLE_WEBKIT 0)
 set(ENABLE_WEBKIT2 1)