Bug 16390 - Use autotools or GNU make as the build system for the GTK port
Summary: Use autotools or GNU make as the build system for the GTK port
Alias: None
Product: WebKit
Classification: Unclassified
Component: WebKitGTK (show other bugs)
Version: 528+ (Nightly build)
Hardware: PC Linux
: P2 Enhancement
Assignee: Nobody
Keywords: Gtk
Depends on:
Reported: 2007-12-10 15:00 PST by Jan Alonzo
Modified: 2007-12-26 22:06 PST (History)
5 users (show)

See Also:

initial configure.ac implementation (9.59 KB, patch)
2007-12-10 15:06 PST, Jan Alonzo
no flags Details | Formatted Diff | Diff
build config for JavaScriptCore (18.03 KB, patch)
2007-12-14 20:56 PST, Jan Alonzo
no flags Details | Formatted Diff | Diff
configure requirements (443 bytes, patch)
2007-12-15 01:18 PST, Luca Bruno
no flags Details | Formatted Diff | Diff
0001-Lower-even-more-the-requirements.patch (2.06 KB, patch)
2007-12-15 06:20 PST, Xan Lopez
no flags Details | Formatted Diff | Diff
support build directories and merge GNUmakefile.ams (16.67 KB, patch)
2007-12-15 21:08 PST, Jan Alonzo
no flags Details | Formatted Diff | Diff
JSC and WebKitGtk+ library builds (82.47 KB, patch)
2007-12-21 17:39 PST, Jan Alonzo
no flags Details | Formatted Diff | Diff
updated patch without a commented BUILT_SOURCES (82.47 KB, patch)
2007-12-21 17:53 PST, Jan Alonzo
no flags Details | Formatted Diff | Diff
Updated patch (108.31 KB, patch)
2007-12-26 14:16 PST, Jan Alonzo
no flags Details | Formatted Diff | Diff
updated patch to fix the ChangeLogs and code coverage flag (108.05 KB, patch)
2007-12-26 18:12 PST, Jan Alonzo
no flags Details | Formatted Diff | Diff
indentation and cleanups (108.65 KB, patch)
2007-12-26 19:54 PST, Jan Alonzo
alp: review+
Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Jan Alonzo 2007-12-10 15:00:25 PST
The mailing list thread can be found at [0]. Currently we have two issues:

1. how should we go about non-recursive make?
2. The directory has a few Makefiles lying around for the mac port. How are going to deal with this? Can we put our build artifacts in a separate build directory?


[0] http://lists.webkit.org/pipermail/webkit-dev/2007-November/002787.html
Comment 1 Jan Alonzo 2007-12-10 15:06:34 PST
Created attachment 17830 [details]
initial configure.ac implementation

initial implementation based on gtk-webcore's configure.ac.
Comment 2 Luca Bruno 2007-12-11 02:06:32 PST
I think naming our ac makefiles with a gtk suffix, like you did in the configure is enough. Did you write any Makefile.gtk.ac also?
Comment 3 Jan Alonzo 2007-12-12 12:41:08 PST
We should probably enable *_DISABLE_DEPRECATED when in --maintainer-mode as per bug #16353.
Comment 4 Jan Alonzo 2007-12-14 20:56:11 PST
Created attachment 17902 [details]
build config for JavaScriptCore

This patch will allow one to build JavaScriptCore (as part of 'all' instead of a target).

This patch also puts GNUmakefile.am's in bindings, kjs, wtf, pcre, and JavaScriptCore for building the components of JSC. I don't know if this is ideal but comment away if you prefer a single GNUmakefile.am in JSC.

 I also named it GNUmakefile.am instead of Makefile.am to avoid overwriting the (mac) 'Makefile's. If you are using GNU Make in mac but want to use the mac Makefile, make sure you use '-f Makefile' as GNUmakefile takes precedence over Makefile.

Appreciate any feedback or suggestion you might have. Cheers!
Comment 5 Luca Bruno 2007-12-15 01:18:22 PST
Created attachment 17907 [details]
configure requirements

Everything works fine with freetype2 9.15.3 and fontconfig 2.4.2, we can lower the requirements.
What about numbering next patches without making previous obsolete?
Comment 6 Xan Lopez 2007-12-15 06:20:44 PST
Created attachment 17914 [details]

Subject: [PATCH] Lower even more the requirements.

Explicitely use automake-1.9 if available.

Do not call autoreconf in autogen.sh (!?).
 autogen.sh   |   31 ++++++++++++++++++++++++++++---
 configure.ac |    4 ++--
 2 files changed, 30 insertions(+), 5 deletions(-)
Comment 7 Jan Alonzo 2007-12-15 21:08:16 PST
Created attachment 17925 [details]
support build directories and merge GNUmakefile.ams

This updated patch should allow one to build JSC (atm) in a build directory. You have to 'cd' in the build tree and call autogen.sh and configure from there though. It also merges all GNUmakefile.am in JSC into one JSC/GNUmakefile.am.
Comment 8 Alp Toker 2007-12-17 06:39:44 PST
I should point to the jsc-modular build system that is a fixed up out-of-tree autotools build system for jsc with no gtk+ etc. dependency:

Comment 9 Jan Alonzo 2007-12-21 17:39:59 PST
Created attachment 18054 [details]
JSC and WebKitGtk+ library builds

This patch builds JavaScriptCore, WebCore and WebKit/gtk as well as the pkgconfig file.

Things that are not done yet (appreciate any help to speed up things a bit):

 1. GtkLauncher and DRT build
 2. make install, dist, clean, and possibly check
 3. DirectFB, win32, and GtK/OSX builds
 4. build-webkit and at least run-webkit-tests (DRT?) autotool support

Also, I haven't tested the different features. One more issue is that since we have a lot of autogenerated sources, IDL/JS bindings in particular, it would be nice if we can timestamp those files to avoid rebuilding the whole thing in "make all".

Appreciate any feedback or patch you might have. Cheers.
Comment 10 Jan Alonzo 2007-12-21 17:43:55 PST
Also just use --srcdir in configure and point it to the webkit tree if you want to build in a different directory (build/ dir for example).


/path/to/configure --srcdir=../WebKit

Comment 11 Jan Alonzo 2007-12-21 17:53:16 PST
Created attachment 18055 [details]
updated patch without a commented BUILT_SOURCES

accidentally uploaded a commented BUILT_SOURCES. this is an updated patch. to workaround the "build everything in make all", just put a comment on BUILT_SOURCES in WebCore/GNUmakefile and JavaScriptCore/GNUmakefile.am.
Comment 12 Mark Rowe (bdash) 2007-12-21 18:21:37 PST
It'd be great to eventually have the autotools system building into WebKitBuild/{Debug,Release} by default.  On the Mac with Xcode, WebKitBuild/{Debug,Release} is used for the built products while WebKitBuild/{JavaScriptCore,WebCore,WebKit}.build/{Debug,Release} are used for intermediate files (.o, generated sources, etc).  Either of these approaches feels nicer to me than the deeply-nested WebKitBuild hierarchy that qmake creates in some cases.
Comment 13 Jan Alonzo 2007-12-26 14:16:06 PST
Created attachment 18118 [details]
Updated patch

Updated patch includes GtkLauncher and DRT build configs. All features (incl. SVG features) were tested except for XBL and Coverage support. 

Appreciate any feedback you might have here. Also, to install a stripped down library, use install-strip instead of install.

Comment 14 Jan Alonzo 2007-12-26 18:12:20 PST
Created attachment 18122 [details]
updated patch to fix the ChangeLogs and code coverage flag

This patch fixes the redundancy in the ChangeLogs from the previous patch. Also fixes the coverage flag errors detected by autoconf and make.
Comment 15 Jan Alonzo 2007-12-26 19:54:31 PST
Created attachment 18123 [details]
indentation and cleanups

As per suggestions by alp:

Indentation fixes and removal of some header/func checks and credit/copyright in configure.ac. Also fix generation of webkitgtk.pc and Changelog fixes.
Comment 16 Alp Toker 2007-12-26 22:01:48 PST
Comment on attachment 18123 [details]
indentation and cleanups


Will remove some of the verbose comments as discussed (and a couple of minor typofixes) before landing.

Comment 17 Alp Toker 2007-12-26 22:06:21 PST
Landed in r28997.