summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@digia.com>2012-10-25 15:26:28 +0200
committerSimon Hausmann <simon.hausmann@digia.com>2012-10-25 15:26:28 +0200
commit3c7e881843b79f0f94aa90aa24357aeaa4622d0b (patch)
tree699ce90ab30ef1a92a1742419d50f0b56dd38bc2 /Source/JavaScriptCore
parent565eea9d6d455f60196d37e13b802d5f0e923150 (diff)
downloadqtwebkit-3c7e881843b79f0f94aa90aa24357aeaa4622d0b.tar.gz
[Qt] Fix the LLInt build on Windows
https://bugs.webkit.org/show_bug.cgi?id=97648 Reviewed by NOBODY (OOPS!). Source/JavaScriptCore: 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 in the LLIntOffsetsExtractor build was needed to make sure that we include JavaScriptCore/config.h instead of WTF/config.h, required to fix the build issues originally pasted in bug #97648. * DerivedSources.pri: * JavaScriptCore.pro: * LLIntOffsetsExtractor.pro: * Target.pri: Tools: Added EXEEXT variable - similar to automake - that expands to .exe as suffix for executable programs on Windows. Empty otherwise. * qmake/mkspecs/features/default_pre.prf:
Diffstat (limited to 'Source/JavaScriptCore')
-rw-r--r--Source/JavaScriptCore/ChangeLog34
-rw-r--r--Source/JavaScriptCore/DerivedSources.pri21
-rw-r--r--Source/JavaScriptCore/JavaScriptCore.pro4
-rw-r--r--Source/JavaScriptCore/LLIntOffsetsExtractor.pro10
-rw-r--r--Source/JavaScriptCore/Target.pri3
5 files changed, 62 insertions, 10 deletions
diff --git a/Source/JavaScriptCore/ChangeLog b/Source/JavaScriptCore/ChangeLog
index 0387dcecd..db48e56b7 100644
--- a/Source/JavaScriptCore/ChangeLog
+++ b/Source/JavaScriptCore/ChangeLog
@@ -1,5 +1,39 @@
2012-10-25 Simon Hausmann <simon.hausmann@digia.com>
+ [Qt] Fix the LLInt build on Windows
+ https://bugs.webkit.org/show_bug.cgi?id=97648
+
+ Reviewed by NOBODY (OOPS!).
+
+ 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 in the LLIntOffsetsExtractor build was needed to make sure that
+ we include JavaScriptCore/config.h instead of WTF/config.h, required to fix the build
+ issues originally pasted in bug #97648.
+
+ * DerivedSources.pri:
+ * JavaScriptCore.pro:
+ * LLIntOffsetsExtractor.pro:
+ * Target.pri:
+
+2012-10-25 Simon Hausmann <simon.hausmann@digia.com>
+
[WIN] Make LLInt offsets extractor work on Windows
https://bugs.webkit.org/show_bug.cgi?id=100369
diff --git a/Source/JavaScriptCore/DerivedSources.pri b/Source/JavaScriptCore/DerivedSources.pri
index 75fd5acc0..cf44aefe1 100644
--- a/Source/JavaScriptCore/DerivedSources.pri
+++ b/Source/JavaScriptCore/DerivedSources.pri
@@ -33,12 +33,12 @@ KEYWORDLUT_FILES += \
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
# GENERATOR 1-A: LUT creator
lut.output = ${QMAKE_FILE_BASE}.lut.h
@@ -88,12 +88,19 @@ klgen.input = KEYWORDLUT_FILES
klgen.commands = python $$klgen.script ${QMAKE_FILE_NAME} > ${QMAKE_FILE_OUT}
GENERATORS += klgen
-linux-*:!equals(QT_ARCH, "arm") {
+EXTRACTOR_BINARY = LLIntOffsetsExtractor$$EXEEXT
+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
}
diff --git a/Source/JavaScriptCore/JavaScriptCore.pro b/Source/JavaScriptCore/JavaScriptCore.pro
index 082244f8d..c86ca8e3d 100644
--- a/Source/JavaScriptCore/JavaScriptCore.pro
+++ b/Source/JavaScriptCore/JavaScriptCore.pro
@@ -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 @@ target.file = Target.pri
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
diff --git a/Source/JavaScriptCore/LLIntOffsetsExtractor.pro b/Source/JavaScriptCore/LLIntOffsetsExtractor.pro
index 4a6f69a89..9cbc4248d 100644
--- a/Source/JavaScriptCore/LLIntOffsetsExtractor.pro
+++ b/Source/JavaScriptCore/LLIntOffsetsExtractor.pro
@@ -7,7 +7,11 @@
TEMPLATE = app
TARGET = LLIntOffsetsExtractor
-DESTDIR = $$OUT_PWD
+
+debug_and_release {
+ CONFIG += force_build_all
+ CONFIG += build_all
+}
QT = core # Needed for qglobal.h
@@ -21,6 +25,10 @@ defineTest(addIncludePaths) {
addIncludePaths()
+# To make sure we include JavaScriptCore/config.h and not
+# the WTF one.
+INCLUDEPATH = $$PWD $$INCLUDEPATH
+
LLINT_DEPENDENCY = \
$$PWD/llint/LowLevelInterpreter.asm \
$$PWD/llint/LowLevelInterpreter32_64.asm \
diff --git a/Source/JavaScriptCore/Target.pri b/Source/JavaScriptCore/Target.pri
index 861dbc740..ffd295a41 100644
--- a/Source/JavaScriptCore/Target.pri
+++ b/Source/JavaScriptCore/Target.pri
@@ -30,6 +30,9 @@ include(yarr/yarr.pri)
INSTALLDEPS += all
+CONFIG(debug, debug|release): INCLUDEPATH += $$JAVASCRIPTCORE_GENERATED_SOURCES_DIR\debug
+CONFIG(release, debug|release): INCLUDEPATH += $$JAVASCRIPTCORE_GENERATED_SOURCES_DIR\release
+
SOURCES += \
API/JSBase.cpp \
API/JSCallbackConstructor.cpp \