Title: [132636] trunk
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
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to