2008-02-04 Jan Michael Alonzo <jmalonzo@unpluggable.com>
authormrowe@apple.com <mrowe@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 5 Feb 2008 06:27:44 +0000 (06:27 +0000)
committermrowe@apple.com <mrowe@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 5 Feb 2008 06:27:44 +0000 (06:27 +0000)
        Reviewed by Mark Rowe.

        http://bugs.webkit.org/show_bug.cgi?id=16618
        [GTK] build-webkit and run-webkit-tests autootools support

        * configure.ac: make the option name of icon database consistent
          with the rest of webkit (from -icon-database to icondatabase)

2008-02-04  Jan Michael Alonzo  <jmalonzo@unpluggable.com>

        Reviewed by Mark Rowe.

        http://bugs.webkit.org/show_bug.cgi?id=16618
        [GTK] build-webkit and run-webkit-tests autootools support

        * Scripts/build-webkit: added --database and --icondatabase options
        * Scripts/run-launcher:
        * Scripts/run-webkit-tests:
        * Scripts/webkitdirs.pm:

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

ChangeLog
WebKitTools/ChangeLog
WebKitTools/Scripts/build-webkit
WebKitTools/Scripts/run-launcher
WebKitTools/Scripts/run-webkit-tests
WebKitTools/Scripts/webkitdirs.pm
configure.ac

index 7865d28..70f1f95 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2008-02-04  Jan Michael Alonzo  <jmalonzo@unpluggable.com>
+
+        Reviewed by Mark Rowe.
+
+        http://bugs.webkit.org/show_bug.cgi?id=16618
+        [GTK] build-webkit and run-webkit-tests autootools support
+
+        * configure.ac: make the option name of icon database consistent
+          with the rest of webkit (from -icon-database to icondatabase)
+
 2008-02-04  Rodney Dawes  <dobey@wayofthemonkey.com>
 
         Reviewed by Alp Toker and Mark Rowe.
index 6618203..6c81fcf 100644 (file)
@@ -1,3 +1,15 @@
+2008-02-04  Jan Michael Alonzo  <jmalonzo@unpluggable.com>
+
+        Reviewed by Mark Rowe.
+
+        http://bugs.webkit.org/show_bug.cgi?id=16618
+        [GTK] build-webkit and run-webkit-tests autootools support
+
+        * Scripts/build-webkit: added --database and --icondatabase options
+        * Scripts/run-launcher:
+        * Scripts/run-webkit-tests:
+        * Scripts/webkitdirs.pm:
+
 2008-02-04  Oliver Hunt  <oliver@apple.com>
 
         Reviewed by Steve F.
index d48e69c..d5e84d7 100755 (executable)
@@ -39,6 +39,8 @@ use POSIX;
 
 my $originalWorkingDirectory = getcwd();
 
+my $databaseSupport = 1;
+my $icondatabaseSupport = 1;
 my $svgSupport = 1;
 my $svgExperimentalSupport = 0;
 my $svgAnimationSupport = $svgExperimentalSupport;
@@ -58,6 +60,8 @@ my $programName = basename($0);
 my $usage = <<EOF;
 Usage: $programName [options] [options to pass to build system]
   --help                        Show this help message
+  --[no-]database               Toggle Database Support (default: $databaseSupport)
+  --[no-]icondatabase           Toggle Icon database support (default: $icondatabaseSupport)
   --[no-]svg                    Toggle SVG support (default: $svgSupport)
   --[no-]svg-experimental       Toggle SVG experimental features support (default: $svgExperimentalSupport, 
                                 implies SVG Support)
@@ -73,7 +77,9 @@ Usage: $programName [options] [options to pass to build system]
   --[no-]coverage               Toggle code coverage support (default: $coverageSupport)
 EOF
 
-GetOptions('svg!' => \$svgSupport,
+GetOptions('database!' => \$databaseSupport,
+           'icondatabase!' => \$icondatabaseSupport,
+           'svg!' => \$svgSupport,
            'svg-experimental!' => \$svgExperimentalSupport,
            'svg-animation!' => \$svgAnimationSupport,
            'svg-filters!' => \$svgFiltersSupport,
@@ -132,16 +138,10 @@ if (isWx()) {
 
 
 my $productDir = productDir();
-my @options = XcodeOptions();
 my @overrideFeatureDefinesOption = ();
 
-if ($clean) {
-    push(@options, "-alltargets");
-    push(@options, "clean");
-}
-
-push @overrideFeatureDefinesOption, "ENABLE_DATABASE";
-push @overrideFeatureDefinesOption, "ENABLE_ICONDATABASE";
+push @overrideFeatureDefinesOption, "ENABLE_DATABASE" if $databaseSupport;
+push @overrideFeatureDefinesOption, "ENABLE_ICONDATABASE" if $icondatabaseSupport;
 push @overrideFeatureDefinesOption, "ENABLE_SVG" if $svgSupport;
 push @overrideFeatureDefinesOption, "ENABLE_SVG_ANIMATION" if $svgAnimationSupport;
 push @overrideFeatureDefinesOption, "ENABLE_SVG_FILTERS" if $svgFiltersSupport;
@@ -172,7 +172,34 @@ for my $dir (@projects, @otherDirs) {
     }
 }
 
+my @options = ();
+
+if ($clean && isOSX()) {
+    push(@options, "-alltargets");
+    push(@options, "clean");
+}
+
+# enable autotool options accordingly
+if ($ENV{WEBKITAUTOTOOLS}) {
+    push @options, autotoolsFlag($databaseSupport, "database");
+    push @options, autotoolsFlag($icondatabaseSupport, "icondatabase");
+    push @options, autotoolsFlag($svgSupport, "svg");
+    push @options, autotoolsFlag($svgAnimationSupport, "svg-animation");
+    push @options, autotoolsFlag($svgFiltersSupport, "svg-filters");
+    push @options, autotoolsFlag($svgForeignObjectSupport, "svg-foreign-object");
+    push @options, autotoolsFlag($svgFontsSupport, "svg-fonts");
+    push @options, autotoolsFlag($svgAsImageSupport, "svg-as-image");
+    push @options, autotoolsFlag($svgUseSupport, "svg-use-element");
+    push @options, autotoolsFlag($xpathSupport, "xpath");
+    push @options, autotoolsFlag($xsltSupport, "xslt");
+    push @options, autotoolsFlag($videoSupport, "video");
+    push @options, autotoolsFlag($coverageSupport, "coverage");
+}
+
 if (isOSX()) {
+
+    push(@options, XcodeOptions());
+
     # Copy library and header from WebKitLibraries to a findable place in the product directory.
     my $srcLib = "WebKitLibraries/libWebKitSystemInterfaceTiger.a";
     my $lib = "$productDir/libWebKitSystemInterfaceTiger.a";
@@ -214,7 +241,7 @@ if (isOSX()) {
     }
 }
 
-if (isGtk() && isDarwin() && !$ENV{QMAKESPEC}) {
+if (isGtk() && isDarwin() && !$ENV{WEBKITAUTOTOOLS} && !$ENV{QMAKESPEC}) {
     # The qmake from Trolltech's binary "QT for Mac" distribution tries to
     # create xcode projects, not Makefiles
     $ENV{QMAKESPEC} = "macx-g++";
@@ -233,13 +260,14 @@ removeLibraryDependingOnSVG("WebCore", $svgSupport);
 for my $dir (@projects) {
     chdir $dir or die;
     my $result = 0;
+
     if (isGtk()) {
         if ($dir ne "WebKit") {
             chdir ".." or die;
             next;
         }
-
-        $result = buildQMakeGtkProject($dir, $clean);
+        
+        $result = buildGtkProject($dir, $clean,  @options);
     } elsif (isQt()) {
         if ($dir ne "WebKit") {
             chdir ".." or die;
index 07e3770..60f3c86 100755 (executable)
@@ -38,28 +38,38 @@ use webkitdirs;
 
 setConfiguration();
 my $productDir = productDir();
-my $libDir = catdir(productDir(), 'lib');
 my $launcherPath = productDir();
 my @args = @ARGV;
 
 # Check to see that all the frameworks are built.
 checkFrameworks();
 
-if (isGtk()) {
-  $launcherPath = catdir($launcherPath, "WebKitTools", "GtkLauncher", "GtkLauncher");
-  # Strip --gtk from the arg-list, since otherwise GtkLauncher will try to
-  # interpret it as a URL.
-  @args = grep(!/^(--gtk)$/, @args);
-} elsif (isQt()) {
-  $launcherPath = catdir($launcherPath, "bin", "QtLauncher");
+# Set paths according to the build system used
+if (!$ENV{WEBKITAUTOTOOLS}) {
+    my $libDir = catdir(productDir(), 'lib');
+
+    if (isGtk()) {
+        $launcherPath = catdir($launcherPath, "WebKitTools", "GtkLauncher", "GtkLauncher");
+        # Strip --gtk from the arg-list, since otherwise GtkLauncher will try to
+        # interpret it as a URL.
+        @args = grep(!/^(--gtk)$/, @args);
+    } elsif (isQt()) {
+        $launcherPath = catdir($launcherPath, "bin", "QtLauncher");
+    }
+
+    # Set up LD_LIBRARY_PATH to point to the product directory.
+    print "Starting webkit launcher with LD_LIBRARY_PATH set to point to built WebKit in $libDir.\n";
+    
+    $ENV{LD_LIBRARY_PATH} = $ENV{LD_LIBRARY_PATH} ? "$libDir:$ENV{LD_LIBRARY_PATH}" : $libDir;
 } else {
-  die;
-}
 
-# Set up LD_LIBRARY_PATH to point to the product directory.
-print "Starting webkit launcher with LD_LIBRARY_PATH set to point to built WebKit in $libDir.\n";
+    if (isGtk()) {
+        $launcherPath = catdir($launcherPath, "Programs", "GtkLauncher");
+        @args = grep(!/^(--gtk)$/, @args);
+    }
 
-$ENV{LD_LIBRARY_PATH} = $ENV{LD_LIBRARY_PATH} ? "$libDir:$ENV{LD_LIBRARY_PATH}" : $libDir;
+    print "Starting webkit launcher.\n";
+}
 
 exec $launcherPath, @args or die;
 
index 5e658ad..3b6bbb3 100755 (executable)
@@ -264,7 +264,14 @@ $testMedia = 0 if $shouldCheckLeaks && isTiger();
 setConfigurationProductDir(Cwd::abs_path($root)) if (defined($root));
 my $productDir = productDir();
 $productDir .= "/bin" if (isQt());
-$productDir .= "/WebKitTools/DumpRenderTree/gtk" if isGtk();
+
+if (isGtk()) {
+    if ($ENV{WEBKITAUTOTOOLS}) {
+        $productDir .= "/Programs";
+    } else {
+        $productDir .= "/WebKitTools/DumpRenderTree/gtk";
+    }
+}
 
 chdirWebKit();
 
index 230bc89..5d8fc85 100644 (file)
@@ -394,15 +394,18 @@ sub hasSVGSupport
     }
 
     if (isGtk() and $path =~ /WebCore/) {
-        $path .= "/../lib/libWebKitGtk.so";
+        $path .= "/../lib/libWebKitGtk.so" if !$ENV{WEBKITAUTOTOOLS};
+        $path .= "/../.libs/libWebKitGtk.so" if $ENV{WEBKITAUTOTOOLS};
     }
 
-    open NM, "-|", "nm", $path or die;
     my $hasSVGSupport = 0;
-    while (<NM>) {
-        $hasSVGSupport = 1 if /SVGElement/;
+    if (-e $path) {
+        open NM, "-|", "nm", $path or die;
+        while (<NM>) {
+            $hasSVGSupport = 1 if /SVGElement/;
+        }
+        close NM;
     }
-    close NM;
     return $hasSVGSupport;
 }
 
@@ -716,6 +719,62 @@ sub qtMakeCommand($)
     return "make";
 }
 
+sub autotoolsFlag($$)
+{
+    my ($flag, $feature) = @_;
+    my $prefix = $flag ? "--enable" : "--disable";
+
+    return $prefix . '-' . $feature;
+}
+
+sub buildAutotoolsProject($@)
+{
+    my ($clean, @buildArgs) = @_;
+
+    my $make = 'make';
+    my $dir = productDir();
+    my $config = passedConfiguration() || configuration();
+    my $prefix = $ENV{"WebKitInstallationPrefix"};
+
+    # check if configuration is Debug
+    if ($config =~ m/debug/i) {
+        push @buildArgs, "--enable-debug";
+    } else {
+        push @buildArgs, "--disable-debug";
+    }
+
+    if (! -d $dir) {
+        system "mkdir", "-p", "$dir";
+        if (! -d $dir) {
+            die "Failed to create build directory " . $dir;
+        }
+    }
+
+    chdir $dir or die "Failed to cd into " . $dir . "\n";
+
+    my $result;
+    if ($clean) {
+        $result = system $make, "distclean";
+        return $result;
+    }
+
+    print "Calling configure in " . $dir . "\n\n";
+    print "Installation directory: $prefix\n" if(defined($prefix));
+     
+    $result = system "$sourceDir/autogen.sh", @buildArgs;
+    if ($result ne 0) {
+        die "Failed to setup build environment using 'autotools'!\n";
+    }
+
+    $result = system $make;
+    if ($result ne 0) {
+        die "\nFailed to build WebKit using '$make'!\n";
+    }
+
+    chdir ".." or die;
+    return $result;
+}
+
 sub buildQMakeProject($@)
 {
     my ($clean, @buildArgs) = @_;
@@ -789,18 +848,21 @@ sub buildQMakeQtProject($$)
     return buildQMakeProject($clean, @buildArgs);
 }
 
-sub buildQMakeGtkProject($$)
+sub buildGtkProject($$@)
 {
-    my ($project, $clean) = @_;
+    my ($project, $clean, @buildArgs) = @_;
 
     if ($project ne "WebKit") {
-        die "The Gtk portbuilds JavaScriptCore/WebCore/WebKitQt in one shot! Only call it for 'WebKit'.\n";
+        die "The Gtk port builds JavaScriptCore, WebCore and WebKit in one shot! Only call it for 'WebKit'.\n";
     }
 
-    my @buildArgs = ("CONFIG+=gtk-port");
-    push @buildArgs, "CONFIG-=qt";
-
-    return buildQMakeProject($clean, @buildArgs);
+    if ($ENV{WEBKITAUTOTOOLS}) {
+        return buildAutotoolsProject($clean, @buildArgs);
+    } else {
+        my @buildArgs = {"CONFIG+=gtk-port"};
+        push @buildArgs, "CONFIG-=qt";
+        return buildQMakeProject($clean, @buildArgs);
+    }
 }
 
 sub setPathForRunningWebKitApp
index 0e3d530..5f4fffc 100644 (file)
@@ -218,11 +218,11 @@ AC_MSG_RESULT([$enable_database])
 
 # check whether to build with icon database support
 AC_MSG_CHECKING([whether to enable icon database support])
-AC_ARG_ENABLE(icon_database,
-              AC_HELP_STRING([--enable-icon-database],
+AC_ARG_ENABLE(icondatabase,
+              AC_HELP_STRING([--enable-icondatabase],
                              [enable icon database [default=no]]),
-              [],[enable_icon_database="no"])
-AC_MSG_RESULT([$enable_icon_database])
+              [],[enable_icondatabase="no"])
+AC_MSG_RESULT([$enable_icondatabase])
 
 # check whether to enable HTML5 audio/video support
 AC_MSG_CHECKING([whether to enable HTML5 video support])
@@ -354,7 +354,7 @@ if test "$http_backend" = "curl"; then
 fi
 
 # check if sqlite 3 is available
-if test "$enable_icon_database" = "yes" || test "$enable_database" = "yes"; then
+if test "$enable_icondatabase" = "yes" || test "$enable_database" = "yes"; then
    PKG_CHECK_MODULES([SQLITE3], [sqlite3 >= $SQLITE_REQUIRED_VERSION])
    AC_SUBST([SQLITE3_CFLAGS])
    AC_SUBST([SQLITE3_LIBS])
@@ -418,7 +418,7 @@ AM_CONDITIONAL([USE_CURL], [test "$http_backend" = "curl"])
 # WebKit feature conditionals
 AM_CONDITIONAL([ENABLE_DEBUG],[test "$enable_debug" = "yes"])
 AM_CONDITIONAL([ENABLE_DATABASE],[test "$enable_database" = "yes"])
-AM_CONDITIONAL([ENABLE_ICONDATABASE],[test "$enable_icon_database" = "yes"])
+AM_CONDITIONAL([ENABLE_ICONDATABASE],[test "$enable_icondatabase" = "yes"])
 AM_CONDITIONAL([ENABLE_XPATH],[test "$enable_xpath" = "yes"])
 AM_CONDITIONAL([ENABLE_XSLT],[test "$enable_xslt" = "yes"])
 AM_CONDITIONAL([ENABLE_VIDEO],[test "$enable_video" = "yes"])
@@ -451,7 +451,7 @@ WebKit was configured with the following options:
  Optimized memory allocator        : $enable_fast_malloc
  HTML5 client-side storage support : $enable_database
  HTML5 video element support       : $enable_video
- Icon database support             : $enable_icon_database
+ Icon database support             : $enable_icondatabase
  SVG support                       : $enable_svg
  SVG animation support             : $enable_svg_animation
  SVG filters support               : $enable_svg_filters