- Revision
- 132636
- Author
- [email protected]
- Date
- 2012-10-26 05:48:36 -0700 (Fri, 26 Oct 2012)
Log Message
[Qt] Fix the LLInt build on Windows
https://bugs.webkit.org/show_bug.cgi?id=97648
Patch by Simon Hausmann <[email protected]> on 2012-10-26
Reviewed by Tor Arne Vestbø.
Source/_javascript_Core:
The main change for the port on Windows is changing the way offsets are extracted
and the LLIntAssembly.h is generated to accomodate release and debug configurations.
Firstly the LLIntOffsetsExtractor binary is now built as-is (no DESTDIR set) and
placed into debug\LLIntOffsetsExtractor.exe and release\LLIntOffsetsExtractor.exe
on Windows debug_and_release builds. On other patforms it remainds in the regular
out directory.
Secondly the LLIntAssembly.h files must be different for different build types,
so the LLIntAssembly.h generator in DerivedSources.pri operates no on the extractor
binary files as input. Using a simple exists() check we verify the presence of either
a regular, a debug\LLIntOffsetsExtractor and a release\LLIntOffsetsExtractor binary
and process all of them. The resulting assembly files consequently end up in
generated\debug\LLIntAssembly.h and generated\release\LLIntAssembly.h.
In Target.pri we have to also make sure that those directories are in the include
path according to the release or debug configuration.
Lastly a small tweak - swapping WTF.pri and JSC.pri inclusions - in the
LLIntOffsetsExtractor build was needed to make sure that we include
_javascript_Core/config.h instead of WTF/config.h, required to fix the
build issues originally pasted in bug #97648.
* DerivedSources.pri:
* _javascript_Core.pro:
* LLIntOffsetsExtractor.pro:
* Target.pri:
Tools:
Added BIN_EXTENSION variable - similar to automake - that expands to .exe as suffix for
executable programs on Windows. Empty otherwise. Also added support for force_build_all
to allow overriding us disabling build_all for TEMPLATE = app.
* qmake/mkspecs/features/default_pre.prf:
Modified Paths
Diff
Modified: trunk/Source/_javascript_Core/ChangeLog (132635 => 132636)
--- trunk/Source/_javascript_Core/ChangeLog 2012-10-26 12:40:09 UTC (rev 132635)
+++ trunk/Source/_javascript_Core/ChangeLog 2012-10-26 12:48:36 UTC (rev 132636)
@@ -1,3 +1,38 @@
+2012-10-26 Simon Hausmann <[email protected]>
+
+ [Qt] Fix the LLInt build on Windows
+ https://bugs.webkit.org/show_bug.cgi?id=97648
+
+ Reviewed by Tor Arne Vestbø.
+
+ The main change for the port on Windows is changing the way offsets are extracted
+ and the LLIntAssembly.h is generated to accomodate release and debug configurations.
+
+ Firstly the LLIntOffsetsExtractor binary is now built as-is (no DESTDIR set) and
+ placed into debug\LLIntOffsetsExtractor.exe and release\LLIntOffsetsExtractor.exe
+ on Windows debug_and_release builds. On other patforms it remainds in the regular
+ out directory.
+
+ Secondly the LLIntAssembly.h files must be different for different build types,
+ so the LLIntAssembly.h generator in DerivedSources.pri operates no on the extractor
+ binary files as input. Using a simple exists() check we verify the presence of either
+ a regular, a debug\LLIntOffsetsExtractor and a release\LLIntOffsetsExtractor binary
+ and process all of them. The resulting assembly files consequently end up in
+ generated\debug\LLIntAssembly.h and generated\release\LLIntAssembly.h.
+
+ In Target.pri we have to also make sure that those directories are in the include
+ path according to the release or debug configuration.
+
+ Lastly a small tweak - swapping WTF.pri and JSC.pri inclusions - in the
+ LLIntOffsetsExtractor build was needed to make sure that we include
+ _javascript_Core/config.h instead of WTF/config.h, required to fix the
+ build issues originally pasted in bug #97648.
+
+ * DerivedSources.pri:
+ * _javascript_Core.pro:
+ * LLIntOffsetsExtractor.pro:
+ * Target.pri:
+
2012-10-26 Gabor Ballabas <[email protected]>
[Qt] Enable JSC's disassembler on x86, x86_64 Linux
Modified: trunk/Source/_javascript_Core/DerivedSources.pri (132635 => 132636)
--- trunk/Source/_javascript_Core/DerivedSources.pri 2012-10-26 12:40:09 UTC (rev 132635)
+++ trunk/Source/_javascript_Core/DerivedSources.pri 2012-10-26 12:48:36 UTC (rev 132636)
@@ -33,12 +33,12 @@
JIT_STUB_FILES += \
jit/JITStubs.cpp
-LLINT_FILES = \
- llint/LowLevelInterpreter.asm
+LLINT_ASSEMBLER = $$PWD/llint/LowLevelInterpreter.asm
LLINT_DEPENDENCY = \
$$PWD/llint/LowLevelInterpreter32_64.asm \
- $$PWD/llint/LowLevelInterpreter64.asm
+ $$PWD/llint/LowLevelInterpreter64.asm \
+ $$LLINT_ASSEMBLER
DISASSEMBLER_FILES = \
disassembler/udis86/optable.xml
@@ -95,13 +95,20 @@
klgen.commands = python $$klgen.script ${QMAKE_FILE_NAME} > ${QMAKE_FILE_OUT}
GENERATORS += klgen
-linux-*:!equals(QT_ARCH, "arm") {
+EXTRACTOR_BINARY = LLIntOffsetsExtractor$$BIN_EXTENSION
+DIRS = $$OUT_PWD $$OUT_PWD/debug $$OUT_PWD/release
+for(dir, DIRS) {
+ file = $$dir/$$EXTRACTOR_BINARY
+ exists($$file): LLINT_FILES += $$file
+}
+
+if(linux-*|win32):!equals(QT_ARCH, "arm") {
#GENERATOR: LLInt
- llint.output = LLIntAssembly.h
+ llint.output = ${QMAKE_FILE_IN_PATH}$${QMAKE_DIR_SEP}LLIntAssembly.h
llint.script = $$PWD/offlineasm/asm.rb
llint.input = LLINT_FILES
- llint.depends = LLIntOffsetsExtractor $$LLINT_DEPENDENCY
- llint.commands = ruby $$llint.script ${QMAKE_FILE_NAME} LLIntOffsetsExtractor ${QMAKE_FILE_OUT}
+ llint.depends = $$LLINT_DEPENDENCY
+ llint.commands = ruby $$llint.script $$LLINT_ASSEMBLER ${QMAKE_FILE_IN} ${QMAKE_FILE_OUT}
GENERATORS += llint
}
@@ -114,4 +121,4 @@
disassembler.commands = python $$disassembler.script ${QMAKE_FILE_NAME}
disassembler.CONFIG += no_link
GENERATORS += disassembler
-}
\ No newline at end of file
+}
Modified: trunk/Source/_javascript_Core/_javascript_Core.pro (132635 => 132636)
--- trunk/Source/_javascript_Core/_javascript_Core.pro 2012-10-26 12:40:09 UTC (rev 132635)
+++ trunk/Source/_javascript_Core/_javascript_Core.pro 2012-10-26 12:48:36 UTC (rev 132636)
@@ -7,7 +7,7 @@
TEMPLATE = subdirs
CONFIG += ordered
-linux-*:!equals(QT_ARCH, "arm") {
+if(linux-*|win32*):!equals(QT_ARCH, "arm") {
LLIntOffsetsExtractor.file = LLIntOffsetsExtractor.pro
LLIntOffsetsExtractor.makefile = Makefile.LLIntOffsetsExtractor
SUBDIRS += LLIntOffsetsExtractor
@@ -18,7 +18,7 @@
SUBDIRS += derived_sources target
-linux-*:!equals(QT_ARCH, "arm"):addStrictSubdirOrderBetween(LLIntOffsetsExtractor, derived_sources)
+if(linux-*|win32*):!equals(QT_ARCH, "arm"):addStrictSubdirOrderBetween(LLIntOffsetsExtractor, derived_sources)
addStrictSubdirOrderBetween(derived_sources, target)
jsc.file = jsc.pro
Modified: trunk/Source/_javascript_Core/LLIntOffsetsExtractor.pro (132635 => 132636)
--- trunk/Source/_javascript_Core/LLIntOffsetsExtractor.pro 2012-10-26 12:40:09 UTC (rev 132635)
+++ trunk/Source/_javascript_Core/LLIntOffsetsExtractor.pro 2012-10-26 12:48:36 UTC (rev 132636)
@@ -7,14 +7,18 @@
TEMPLATE = app
TARGET = LLIntOffsetsExtractor
-DESTDIR = $$OUT_PWD
+debug_and_release {
+ CONFIG += force_build_all
+ CONFIG += build_all
+}
+
QT = core # Needed for qglobal.h
defineTest(addIncludePaths) {
# Just needed for include paths
+ include(_javascript_Core.pri)
include(../WTF/WTF.pri)
- include(_javascript_Core.pri)
export(INCLUDEPATH)
}
Modified: trunk/Source/_javascript_Core/Target.pri (132635 => 132636)
--- trunk/Source/_javascript_Core/Target.pri 2012-10-26 12:40:09 UTC (rev 132635)
+++ trunk/Source/_javascript_Core/Target.pri 2012-10-26 12:48:36 UTC (rev 132636)
@@ -30,6 +30,8 @@
INSTALLDEPS += all
+debug_and_release: INCLUDEPATH += $$_javascript_CORE_GENERATED_SOURCES_DIR/$$activeBuildConfig()
+
SOURCES += \
API/JSBase.cpp \
API/JSCallbackConstructor.cpp \
Modified: trunk/Tools/ChangeLog (132635 => 132636)
--- trunk/Tools/ChangeLog 2012-10-26 12:40:09 UTC (rev 132635)
+++ trunk/Tools/ChangeLog 2012-10-26 12:48:36 UTC (rev 132636)
@@ -1,3 +1,16 @@
+2012-10-26 Simon Hausmann <[email protected]>
+
+ [Qt] Fix the LLInt build on Windows
+ https://bugs.webkit.org/show_bug.cgi?id=97648
+
+ Reviewed by Tor Arne Vestbø.
+
+ Added BIN_EXTENSION variable - similar to automake - that expands to .exe as suffix for
+ executable programs on Windows. Empty otherwise. Also added support for force_build_all
+ to allow overriding us disabling build_all for TEMPLATE = app.
+
+ * qmake/mkspecs/features/default_pre.prf:
+
2012-10-26 Xiaobo Wang <[email protected]>
[BlackBerry] Support pixel tests for BlackBerry DRT
Modified: trunk/Tools/qmake/mkspecs/features/default_post.prf (132635 => 132636)
--- trunk/Tools/qmake/mkspecs/features/default_post.prf 2012-10-26 12:40:09 UTC (rev 132635)
+++ trunk/Tools/qmake/mkspecs/features/default_post.prf 2012-10-26 12:48:36 UTC (rev 132636)
@@ -23,7 +23,7 @@
else: CONFIG -= debug_and_release
} else:debug_and_release {
# Only build a single instance of each application
- contains(TEMPLATE, app) {
+ contains(TEMPLATE, app):!force_build_all {
CONFIG -= build_all
}
}
Modified: trunk/Tools/qmake/mkspecs/features/default_pre.prf (132635 => 132636)
--- trunk/Tools/qmake/mkspecs/features/default_pre.prf 2012-10-26 12:40:09 UTC (rev 132635)
+++ trunk/Tools/qmake/mkspecs/features/default_pre.prf 2012-10-26 12:48:36 UTC (rev 132636)
@@ -118,3 +118,5 @@
FLEX = flex
win32: FLEX = win_flex
+BIN_EXTENSION =
+win32: BIN_EXTENSION = .exe