+2012-07-03 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ [Qt] Make use of .qmake.cache for caching features
+
+ Instead of loading() features from the files that need them (and re-running
+ a bunch of checks), we now run feature detection as part of configure.pro,
+ and have build-webkit write the computed feature-defines and CONFIG to
+ .qmake.cache, which is then loaded by qmake _before_ even defaults_pre
+ when building WebKit.pro.
+
+ At some point we'll be able to selectivly prevent running of config tests
+ in configure.pro, which means we don't need a separate code-path for
+ the build-webkit --help case.
+
+ We should also move the code in build-webkit that now uses .webkit.config
+ to detect clean builds, to use .qmake.cache, since we now store the same
+ thing there.
+
+ Original patch by Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
+
+ Reviewed by Tor Arne Vestbø.
+
+ * Source/QtWebKit.pro:
+ * Source/api.pri:
+ * Source/tests.pri:
+ * WebKit.pro:
+
2012-07-03 Christophe Dumez <christophe.dumez@intel.com>
[EFL] Enable MICRODATA support
# See 'Tools/qmake/README' for an overview of the build system
# -------------------------------------------------------------------
-load(features)
-
TEMPLATE = subdirs
CONFIG += ordered
+2012-07-03 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ [Qt] Make use of .qmake.cache for caching features
+
+ Instead of loading() features from the files that need them (and re-running
+ a bunch of checks), we now run feature detection as part of configure.pro,
+ and have build-webkit write the computed feature-defines and CONFIG to
+ .qmake.cache, which is then loaded by qmake _before_ even defaults_pre
+ when building WebKit.pro.
+
+ At some point we'll be able to selectivly prevent running of config tests
+ in configure.pro, which means we don't need a separate code-path for
+ the build-webkit --help case.
+
+ We should also move the code in build-webkit that now uses .webkit.config
+ to detect clean builds, to use .qmake.cache, since we now store the same
+ thing there.
+
+ Original patch by Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
+
+ Reviewed by Tor Arne Vestbø.
+
+ * WTF.pri:
+
2012-07-03 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> Joel Dillon <joel.dillon@codethink.co.uk>
[Qt][Win] Fix broken QtWebKit5.lib linking
# See 'Tools/qmake/README' for an overview of the build system
# -------------------------------------------------------------------
-load(features)
-
# All external modules should include WTF headers by prefixing with "wtf" (#include <wtf/some/thing.h>).
INCLUDEPATH += $$PWD
+2012-07-03 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ [Qt] Make use of .qmake.cache for caching features
+
+ Instead of loading() features from the files that need them (and re-running
+ a bunch of checks), we now run feature detection as part of configure.pro,
+ and have build-webkit write the computed feature-defines and CONFIG to
+ .qmake.cache, which is then loaded by qmake _before_ even defaults_pre
+ when building WebKit.pro.
+
+ At some point we'll be able to selectivly prevent running of config tests
+ in configure.pro, which means we don't need a separate code-path for
+ the build-webkit --help case.
+
+ We should also move the code in build-webkit that now uses .webkit.config
+ to detect clean builds, to use .qmake.cache, since we now store the same
+ thing there.
+
+ Original patch by Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
+
+ https://bugs.webkit.org/show_bug.cgi?id=90461
+
+ Reviewed by Tor Arne Vestbø.
+
+ * DerivedSources.pri:
+ * WebCore.pri:
+
2012-07-03 Vsevolod Vlasov <vsevik@chromium.org>
inspector/debugger/script-snippet-model.html fails
sanitizedFile = $$toSanitizedPath($$_FILE_)
equals(sanitizedFile, $$toSanitizedPath($$_PRO_FILE_)):TEMPLATE = derived
-load(features)
-
mac {
# FIXME: This runs the perl script every time. Is there a way we can run it only when deps change?
fwheader_generator.commands = perl $${ROOT_WEBKIT_DIR}/Source/WebKit2/Scripts/generate-forwarding-headers.pl $${ROOT_WEBKIT_DIR}/Source/WebCore $${ROOT_BUILD_DIR}/Source/include mac
# See 'Tools/qmake/README' for an overview of the build system
# -------------------------------------------------------------------
-load(features)
-
SOURCE_DIR = $${ROOT_WEBKIT_DIR}/Source/WebCore
# We enable TextureMapper by default; remove this line to enable GraphicsLayerQt.
+2012-07-03 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ [Qt] Make use of .qmake.cache for caching features
+
+ Instead of loading() features from the files that need them (and re-running
+ a bunch of checks), we now run feature detection as part of configure.pro,
+ and have build-webkit write the computed feature-defines and CONFIG to
+ .qmake.cache, which is then loaded by qmake _before_ even defaults_pre
+ when building WebKit.pro.
+
+ At some point we'll be able to selectivly prevent running of config tests
+ in configure.pro, which means we don't need a separate code-path for
+ the build-webkit --help case.
+
+ We should also move the code in build-webkit that now uses .webkit.config
+ to detect clean builds, to use .qmake.cache, since we now store the same
+ thing there.
+
+ Original patch by Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
+
+ Reviewed by Tor Arne Vestbø.
+
+ * declarative/declarative.pro:
+ * declarative/public.pri:
+ * tests/qgraphicswebview/qgraphicswebview.pro:
+
2012-07-02 No'am Rosenthal <noam.rosenthal@nokia.com>
[Qt] Get rid of GraphicsLayerQt
TEMPLATE = subdirs
CONFIG += ordered
-load(features)
-
public_api.file = public.pri
public_api.makefile = Makefile.declarative.public
SUBDIRS += public_api
CONFIG += qt plugin
-load(features)
-
QMLDIRFILE = $${_PRO_FILE_PWD_}/qmldir
copy2build.input = QMLDIRFILE
copy2build.output = $${ROOT_BUILD_DIR}/imports/$${TARGET.module_name}/qmldir
include(../tests.pri)
exists($${TARGET}.qrc):RESOURCES += $${TARGET}.qrc
-load(features)
contains(DEFINES, ENABLE_WEBGL=1) {
QT += opengl
}
+2012-07-03 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ [Qt] Make use of .qmake.cache for caching features
+
+ Instead of loading() features from the files that need them (and re-running
+ a bunch of checks), we now run feature detection as part of configure.pro,
+ and have build-webkit write the computed feature-defines and CONFIG to
+ .qmake.cache, which is then loaded by qmake _before_ even defaults_pre
+ when building WebKit.pro.
+
+ At some point we'll be able to selectivly prevent running of config tests
+ in configure.pro, which means we don't need a separate code-path for
+ the build-webkit --help case.
+
+ We should also move the code in build-webkit that now uses .webkit.config
+ to detect clean builds, to use .qmake.cache, since we now store the same
+ thing there.
+
+ Original patch by Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
+
+ Reviewed by Tor Arne Vestbø.
+
+ * DerivedSources.pri:
+ * Target.pri:
+
2012-07-03 Alexis Menard <alexis.menard@openbossa.org>
[Qt] When calling accept() on the FilePickerContextObject with an empty list, early return and call reject().
sanitizedFile = $$toSanitizedPath($$_FILE_)
equals(sanitizedFile, $$toSanitizedPath($$_PRO_FILE_)):TEMPLATE = derived
-load(features)
-
WEBCORE_GENERATED_SOURCES_DIR = ../WebCore/$${GENERATED_SOURCES_DESTDIR}
SOURCE_DIR = $${ROOT_WEBKIT_DIR}/Source
TEMPLATE = lib
TARGET = WebKit2
-load(features)
-
include(WebKit2.pri)
WEBKIT += wtf javascriptcore webcore
runSyncQt() # Generate forwarding headers for the QtWebKit API
-load(features)
-
WEBKIT += wtf
!v8:WEBKIT += javascriptcore
TEMPLATE = subdirs
CONFIG += ordered
-load(features)
-
WEBKIT_TESTS_DIR = $$PWD/WebKit/qt/tests
SUBDIRS += \
+2012-07-03 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ [Qt] Make use of .qmake.cache for caching features
+
+ Instead of loading() features from the files that need them (and re-running
+ a bunch of checks), we now run feature detection as part of configure.pro,
+ and have build-webkit write the computed feature-defines and CONFIG to
+ .qmake.cache, which is then loaded by qmake _before_ even defaults_pre
+ when building WebKit.pro.
+
+ At some point we'll be able to selectivly prevent running of config tests
+ in configure.pro, which means we don't need a separate code-path for
+ the build-webkit --help case.
+
+ We should also move the code in build-webkit that now uses .webkit.config
+ to detect clean builds, to use .qmake.cache, since we now store the same
+ thing there.
+
+ Original patch by Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
+
+ Reviewed by Tor Arne Vestbø.
+
+ * DumpRenderTree/qt/DumpRenderTree.pro:
+ * QtTestBrowser/QtTestBrowser.pro:
+ * Scripts/webkitdirs.pm:
+ (qtFeatureDefaults):
+ (buildQMakeProjects):
+ * Tools.pro:
+ * WebKitTestRunner/InjectedBundle/DerivedSources.pri:
+ * WebKitTestRunner/InjectedBundle/Target.pri:
+ * WebKitTestRunner/Target.pri:
+ * qmake/.qmake.conf: Added.
+ * qmake/configure.pro:
+ * qmake/mkspecs/features/default_post.prf:
+ * qmake/mkspecs/features/default_pre.prf:
+ * qmake/mkspecs/features/features.prf:
+
2012-07-03 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> Joel Dillon <joel.dillon@codethink.co.uk>
[Qt][Win] Fix broken QtWebKit5.lib linking
TARGET = DumpRenderTree
DESTDIR = $$ROOT_BUILD_DIR/bin
-load(features)
-
WEBKIT += wtf webcore
!v8: WEBKIT += javascriptcore
$${ROOT_WEBKIT_DIR}/Tools/DumpRenderTree/qt/ \
$${ROOT_WEBKIT_DIR}/Source/WTF
-load(features)
-
SOURCES += \
$${ROOT_WEBKIT_DIR}/Tools/DumpRenderTree/qt/QtInitializeTestFonts.cpp \
locationedit.cpp \
my $file;
my @buildArgs;
+ my $qconfigs;
if (@_) {
@buildArgs = (@buildArgs, @{$_[0]});
+ $qconfigs = $_[1];
my $dir = File::Spec->catfile(productDir(), "Tools", "qmake");
File::Path::mkpath($dir);
chdir $dir or die "Failed to cd into " . $dir . "\n";
$file = File::Spec->catfile($qmakepath, "configure.pro");
} else {
# Do a quick check of the features without running the config tests
+ # FIXME: When Qt supports it, go through configure.pro but without config tests
$file = File::Spec->catfile($qmakepath, "mkspecs", "features", "features.prf");
push @buildArgs, "CONFIG+=compute_defaults";
}
- my $defaults = `$qmakecommand @buildArgs $file 2>&1`;
+ my @defaults = `$qmakecommand @buildArgs $file 2>&1`;
my %qtFeatureDefaults;
- while ($defaults =~ m/(\S+?)=(\S+?)/gi) {
- $qtFeatureDefaults{$1}=$2;
+ for (@defaults) {
+ if (/ DEFINES: /) {
+ while (/(\S+?)=(\S+?)/gi) {
+ $qtFeatureDefaults{$1}=$2;
+ }
+ } elsif (/ CONFIG:(.*)$/) {
+ if (@_) {
+ $$qconfigs = $1;
+ }
+ } elsif (/Done computing defaults/) {
+ print "\n";
+ last;
+ } elsif (@_) {
+ print $_;
+ }
}
chdir $originalCwd;
my ($projects, $clean, @buildParams) = @_;
my @buildArgs = ();
+ my $qconfigs = "";
my $make = qtMakeCommand($qmakebin);
my $makeargs = "";
File::Path::mkpath($dir);
chdir $dir or die "Failed to cd into " . $dir . "\n";
- my %defines = qtFeatureDefaults(\@buildArgs);
+ my %defines = qtFeatureDefaults(\@buildArgs, \$qconfigs);
my $svnRevision = currentSVNRevision();
my $pathToDefinesCache = File::Spec->catfile($dir, ".webkit.config");
my $pathToOldDefinesFile = File::Spec->catfile($dir, "defaults.txt");
+ # FIXME: Get rid of .webkit.config and defaults.txt and move all the logic to .qmake.cache
+
# Ease transition to new build layout
if (-e $pathToOldDefinesFile) {
print "Old build layout detected";
# After removing WebKitBuild directory, we have to call qtFeatureDefaults()
# to run config tests and generate the removed Tools/qmake/.qmake.cache again.
- qtFeatureDefaults(\@buildArgs);
+ qtFeatureDefaults(\@buildArgs, \$qconfigs);
#}
# Still trigger an incremental build
$buildHint = "incremental";
}
+ if ($buildHint eq "incremental") {
+ my $qmakeDefines = "DEFINES +=";
+ foreach my $key (sort keys %defines) {
+ $qmakeDefines .= " \\\n $key=$defines{$key}";
+ }
+ open(QMAKE_CACHE, ">.qmake.cache") or die "Cannot create .qmake.cache!\n";
+ print QMAKE_CACHE "CONFIG += webkit_configured $qconfigs\n";
+ print QMAKE_CACHE $qmakeDefines."\n";
+ close(QMAKE_CACHE);
+ }
+
# Save config up-front so we can detect changes to the build config even
# when the user re-configures after aborting the build.
open(DEFAULTS, ">$pathToDefinesCache");
TEMPLATE = subdirs
CONFIG += ordered
-load(features)
-
!no_webkit1 {
SUBDIRS += QtTestBrowser/QtTestBrowser.pro
SUBDIRS += DumpRenderTree/qt/DumpRenderTree.pro
sanitizedFile = $$toSanitizedPath($$_FILE_)
equals(sanitizedFile, $$toSanitizedPath($$_PRO_FILE_)):TEMPLATE = derived
-load(features)
-
IDL_BINDINGS += \
Bindings/AccessibilityController.idl \
Bindings/AccessibilityTextMarker.idl \
QT += declarative widgets webkit
-load(features)
-
WEBKIT += wtf javascriptcore webcore
CONFIG += plugin rpath
QT = core gui widgets network declarative testlib quick quick-private webkit
-load(features)
-
WEBKIT += wtf javascriptcore webkit2
DEFINES += USE_SYSTEM_MALLOC=1
--- /dev/null
+# This file is only here to isolate the configure project
+# from the rest of the tree.
+# -------------------------------------------------------------------
+# This file is used by build-webkit to compute the various feature
+# defines, which are then cached in .qmake.cache.
+#
+# See 'Tools/qmake/README' for an overview of the build system
+# -------------------------------------------------------------------
+
+# Will compute features based on command line arguments, config tests,
+# dependency availability, and defaults.
load(features)
-message($$DEFINES)
+
+# Compute delta
+CONFIG -= $$BASE_CONFIG
+DEFINES -= $$BASE_DEFINES
+
+message(CONFIG: $$CONFIG)
+message(DEFINES: $$DEFINES)
error("Done computing defaults")
# See 'Tools/qmake/README' for an overview of the build system
# -------------------------------------------------------------------
-load(features)
-
# Flag that we're now done processing the project file. This allows
# a feature to distinguish between being processed due to a load()
# or include() and a CONFIG += feature.
WEBKIT_SUBDIR = $$replace(_PRO_FILE_PWD_, $${ROOT_WEBKIT_DIR},)
ROOT_BUILD_DIR = $$replace(OUT_PWD, $${WEBKIT_SUBDIR}$,)
+# Detect if we're running the initial configure step
+pro_file_name = $$basename(_PRO_FILE_)
+equals(pro_file_name, configure.pro): CONFIG += configure_pass
+
# We want the QtWebKit API forwarding includes to live in the root build dir,
# except when we are running the config.tests in Tools/qmake.
-pro_file_name = $$basename(_PRO_FILE_)
-!equals(pro_file_name, configure.pro): QMAKE_SYNCQT_OUTDIR = $$ROOT_BUILD_DIR
+!configure_pass: QMAKE_SYNCQT_OUTDIR = $$ROOT_BUILD_DIR
# Load Qt's defaults after we've resolved the build directory. This will also
# run syncqt if there is a sync.profile in the $$_PRO_FILE_PWD_. We never want
# Set some defaults for specific platforms
CONFIG += include_webinspector
+
+# Try to locate sqlite3 source (for WebCore)
+SQLITE3SRCDIR = $$(SQLITE3SRCDIR)
+isEmpty(SQLITE3SRCDIR) {
+ haveQt(5): SQLITE3SRCDIR = $$QT.core.sources/../3rdparty/sqlite/
+ else: SQLITE3SRCDIR = $$[QT_INSTALL_PREFIX]/src/3rdparty/sqlite/
+}
+
+# --------- Make features available to JSC ------------
+
+## Forward enabled feature macros to JavaScript enabled features macros
+FEATURE_DEFINES_JAVASCRIPT = LANGUAGE_JAVASCRIPT=1
+v8: FEATURE_DEFINES_JAVASCRIPT += V8_BINDING=1
+
+for(define, DEFINES) {
+ enabled_feature_define = $$find(define, ^ENABLE_.+=1$)
+ isEmpty(enabled_feature_define): next()
+
+ FEATURE_DEFINES_JAVASCRIPT += $$enabled_feature_define
+}
+
+configure_pass {
+ # Save the base config and defines so we can compute the delta between
+ # what features.prf introduced and what was already there.
+ BASE_CONFIG = $$CONFIG
+ BASE_DEFINES = $$DEFINES
+}
## load mobilityconfig if mobility is available
load(mobilityconfig, true)
-# Try to locate sqlite3 source
-SQLITE3SRCDIR = $$(SQLITE3SRCDIR)
-isEmpty(SQLITE3SRCDIR) {
- haveQt(5):SQLITE3SRCDIR = $$QT.core.sources/../3rdparty/sqlite/
- else:SQLITE3SRCDIR = $$[QT_INSTALL_PREFIX]/src/3rdparty/sqlite/
-}
-
# ---------- Dynamically detect optional features -------------
#
# Please note, static feature defaults go in features.pri
contains(DEFINES, $$opposite): DEFINES -= $$define
}
-# --------- Make features available to JSC ------------
-
-## Forward enabled feature macros to JavaScript enabled features macros
-FEATURE_DEFINES_JAVASCRIPT = LANGUAGE_JAVASCRIPT=1
-v8: FEATURE_DEFINES_JAVASCRIPT += V8_BINDING=1
-
-for(define, DEFINES) {
- enabled_feature_define = $$find(define, ^ENABLE_.+=1$)
- isEmpty(enabled_feature_define): next()
-
- FEATURE_DEFINES_JAVASCRIPT += $$enabled_feature_define
-}
-
# ---------------------- The end ----------------------
# Used to compute defaults for the build-webkit script
# Don't place anything after this!
CONFIG(compute_defaults) {
- message($$DEFINES)
+ # FIXME: We should have configure.pro do this when the config tests
+ # can be selectivly run.
+ message(DEFINES: $$DEFINES)
error("Done computing defaults")
}
TEMPLATE = subdirs
CONFIG += ordered
-load(features)
-
QMAKEPATH = $$(QMAKEPATH)
isEmpty(QMAKEPATH)|!exists($${QMAKEPATH}/mkspecs) {
error("The environment variable QMAKEPATH needs to point to $WEBKITSRC/Tools/qmake")