diff options
author | Simon Hausmann <simon.hausmann@digia.com> | 2012-10-25 15:26:28 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@digia.com> | 2012-10-25 15:26:28 +0200 |
commit | 3c7e881843b79f0f94aa90aa24357aeaa4622d0b (patch) | |
tree | 699ce90ab30ef1a92a1742419d50f0b56dd38bc2 /Source/JavaScriptCore | |
parent | 565eea9d6d455f60196d37e13b802d5f0e923150 (diff) | |
download | qtwebkit-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/ChangeLog | 34 | ||||
-rw-r--r-- | Source/JavaScriptCore/DerivedSources.pri | 21 | ||||
-rw-r--r-- | Source/JavaScriptCore/JavaScriptCore.pro | 4 | ||||
-rw-r--r-- | Source/JavaScriptCore/LLIntOffsetsExtractor.pro | 10 | ||||
-rw-r--r-- | Source/JavaScriptCore/Target.pri | 3 |
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 \ |