<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[149554] trunk/Tools</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/149554">149554</a></dd>
<dt>Author</dt> <dd>zandobersek@gmail.com</dd>
<dt>Date</dt> <dd>2013-05-04 00:50:19 -0700 (Sat, 04 May 2013)</dd>
</dl>

<h3>Log Message</h3>
<pre>[GTK] Set up the TestWebCore in TestWebKitAPI
https://bugs.webkit.org/show_bug.cgi?id=115237

Reviewed by Gustavo Noronha Silva.

Set up the WebCore unit test program, consisting of the unit tests under the TestWebKitAPI/Tests/WebCore directory.
Again the approach of specifying libtool libraries multiple times in the TestWebCore program's LDFLAGS is used as
a workaround for the layer violations and circular dependencies between various static libraries. Linking against
either libwebkitgtk or libwebkit2gtk shared libraries is avoided due to the unit tests covering WebCore, which
shouldn't rely on neither of the two distributable libraries (hence the dirty workaround).

* TestWebKitAPI/GNUmakefile.am:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkToolsChangeLog">trunk/Tools/ChangeLog</a></li>
<li><a href="#trunkToolsTestWebKitAPIGNUmakefileam">trunk/Tools/TestWebKitAPI/GNUmakefile.am</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkToolsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Tools/ChangeLog (149553 => 149554)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/ChangeLog        2013-05-04 07:44:44 UTC (rev 149553)
+++ trunk/Tools/ChangeLog        2013-05-04 07:50:19 UTC (rev 149554)
</span><span class="lines">@@ -1,3 +1,18 @@
</span><ins>+2013-05-04  Zan Dobersek  &lt;zdobersek@igalia.com&gt;
+
+        [GTK] Set up the TestWebCore in TestWebKitAPI
+        https://bugs.webkit.org/show_bug.cgi?id=115237
+
+        Reviewed by Gustavo Noronha Silva.
+
+        Set up the WebCore unit test program, consisting of the unit tests under the TestWebKitAPI/Tests/WebCore directory.
+        Again the approach of specifying libtool libraries multiple times in the TestWebCore program's LDFLAGS is used as
+        a workaround for the layer violations and circular dependencies between various static libraries. Linking against
+        either libwebkitgtk or libwebkit2gtk shared libraries is avoided due to the unit tests covering WebCore, which
+        shouldn't rely on neither of the two distributable libraries (hence the dirty workaround).
+
+        * TestWebKitAPI/GNUmakefile.am:
+
</ins><span class="cx"> 2013-05-03  Rebecca Hauck  &lt;rhauck@adobe.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Create a script to import W3C tests
</span></span></pre></div>
<a id="trunkToolsTestWebKitAPIGNUmakefileam"></a>
<div class="modfile"><h4>Modified: trunk/Tools/TestWebKitAPI/GNUmakefile.am (149553 => 149554)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/TestWebKitAPI/GNUmakefile.am        2013-05-04 07:44:44 UTC (rev 149553)
+++ trunk/Tools/TestWebKitAPI/GNUmakefile.am        2013-05-04 07:50:19 UTC (rev 149554)
</span><span class="lines">@@ -23,6 +23,7 @@
</span><span class="cx"> noinst_PROGRAMS += \
</span><span class="cx">         Programs/TestWebKitAPI/TestWTF \
</span><span class="cx">         Programs/TestWebKitAPI/TestJavaScriptCore \
</span><ins>+        Programs/TestWebKitAPI/TestWebCore \
</ins><span class="cx">         Programs/TestWebKitAPI/TestGtk
</span><span class="cx"> 
</span><span class="cx"> if ENABLE_WEBKIT2
</span><span class="lines">@@ -92,6 +93,100 @@
</span><span class="cx"> Programs_TestWebKitAPI_TestJavaScriptCore_SOURCES = \
</span><span class="cx">         Tools/TestWebKitAPI/Tests/JavaScriptCore/VMInspector.cpp
</span><span class="cx"> 
</span><ins>+Programs_TestWebKitAPI_TestWebCore_CPPFLAGS = \
+        $(Libraries_libTestWebKitAPIMain_la_CPPFLAGS) \
+        -I$(top_builddir)/DerivedSources/WebCore/include
+
+Programs_TestWebKitAPI_TestWebCore_CXXFLAGS = \
+        $(global_cxxflags)
+
+Programs_TestWebKitAPI_TestWebCore_LDADD = \
+        Libraries/libTestWebKitAPIMain.la \
+        Libraries/libgtest.la \
+        libjavascriptcoregtk-@WEBKITGTK_API_MAJOR_VERSION@.@WEBKITGTK_API_MINOR_VERSION@.la \
+        libWTF.la
+
+# FIXME: Due to layer violations and circular dependencies all these libraries have to be specified multiple times
+# when invoking the linker. This ensures any undefined symbols are resolved when linking. See wkb.ug/114901 for more detail.
+# First time around these libraries are simply listed by their file name that's later resolved to the path of the *.a archive
+# (i.e. .libs/libPlatformGtk2.a) by libtool.
+Programs_TestWebKitAPI_TestWebCore_LDADD += \
+        libPlatformGtk.la \
+        libWebCoreGtk.la \
+        libPlatform.la \
+        libWebCorePlatform.la \
+        libWebCore.la \
+        libWebCoreModules.la
+if ENABLE_INDEXED_DATABASE
+Programs_TestWebKitAPI_TestWebCore_LDADD += \
+        libLevelDB.la
+endif
+if USE_OPENGL
+Programs_TestWebKitAPI_TestWebCore_LDADD += \
+        libANGLE.la
+endif
+if ENABLE_SVG
+Programs_TestWebKitAPI_TestWebCore_LDADD += \
+        libWebCoreSVG.la
+endif
+
+# FIXME: Second time around all the libraries are relisted, this time in the -lNAME form. Listed items are resolved into the
+# absolute paths to the *.a archive (i.e. $(abs_builddir)/.libs.libPlatformGtk2.a) by libtool.
+Programs_TestWebKitAPI_TestWebCore_LDADD += \
+        -lPlatformGtk -lWebCoreGtk -lPlatform -lWebCorePlatform -lWebCore -lWebCoreModules
+if ENABLE_INDEXED_DATABASE
+Programs_TestWebKitAPI_TestWebCore_LDADD += \
+        -lLevelDB
+endif
+if USE_OPENGL
+Programs_TestWebKitAPI_TestWebCore_LDADD += \
+        -lANGLE
+endif
+if ENABLE_SVG
+Programs_TestWebKitAPI_TestWebCore_LDADD += \
+        -lWebCoreSVG
+endif
+
+# FIXME: To make the matter worse, these four libraries are again required to be listed for linking. This time they're added by
+# specifying the symbolic link that points back to the ./lib*.la libtool archives which are again resolved into paths to the
+# *.a archives (i.e. .libs/libPlatformGtk2.la) by libtool. Phony targets are added for these files to prevent Automake to try
+# to build them as these symlinks are just a byproduct of libtool.
+.PHONY : .libs/libPlatformGtk.la .libs/libWebCoreGtk.la .libs/libPlatform.la .libs/libWebCorePlatform.la
+Programs_TestWebKitAPI_TestWebCore_LDADD += \
+        .libs/libWebCoreGtk.la .libs/libPlatformGtk.la .libs/libPlatform.la .libs/libWebCorePlatform.la
+
+Programs_TestWebKitAPI_TestWebCore_LDADD += \
+        $(CAIRO_LIBS) \
+        $(FREETYPE_LIBS) \
+        $(GAMEPAD_LIBS) \
+        $(GEOCLUE_LIBS) \
+        $(GAIL_LIBS) \
+        $(GLIB_LIBS) \
+        $(GSTREAMER_LIBS) \
+        $(GTK_LIBS) \
+        $(JPEG_LIBS) \
+        $(LIBSECRET_LIBS) \
+        $(LIBSOUP_LIBS) \
+        $(LIBXML_LIBS) \
+        $(LIBXSLT_LIBS) \
+        $(OPENGL_LIBS) \
+        $(PANGO_LIBS) \
+        $(PNG_LIBS) \
+        $(SQLITE3_LIBS) \
+        $(UNICODE_LIBS) \
+        $(WEBP_LIBS) \
+        $(XRENDER_LIBS) \
+        $(XT_LIBS) \
+        $(ZLIB_LIBS)
+
+Programs_TestWebKitAPI_TestWebCore_LDFLAGS = \
+        -no-install \
+        -no-fast-install
+
+Programs_TestWebKitAPI_TestWebCore_SOURCES = \
+        Tools/TestWebKitAPI/Tests/WebCore/KURL.cpp \
+        Tools/TestWebKitAPI/Tests/WebCore/LayoutUnit.cpp
+
</ins><span class="cx"> Programs_TestWebKitAPI_TestGtk_CPPFLAGS = \
</span><span class="cx">         $(Programs_TestWebKitAPI_TestWTF_CPPFLAGS) \
</span><span class="cx">         $(platformgtk_cppflags) \
</span></span></pre>
</div>
</div>

</body>
</html>