1# -------------------------------------------------------------------
2# Derived sources for JavaScriptSource
3#
4# See 'Tools/qmake/README' for an overview of the build system
5# -------------------------------------------------------------------
6
7TEMPLATE = derived
8
9LUT_FILES += \
10    runtime/ArrayConstructor.cpp \
11    runtime/ArrayPrototype.cpp \
12    runtime/BooleanPrototype.cpp \
13    runtime/DateConstructor.cpp \
14    runtime/DatePrototype.cpp \
15    runtime/ErrorPrototype.cpp \
16    runtime/JSGlobalObject.cpp \
17    runtime/JSONObject.cpp \
18    runtime/MathObject.cpp \
19    runtime/NamePrototype.cpp \
20    runtime/NumberConstructor.cpp \
21    runtime/NumberPrototype.cpp \
22    runtime/ObjectConstructor.cpp \
23    runtime/RegExpConstructor.cpp \
24    runtime/RegExpObject.cpp \
25    runtime/RegExpPrototype.cpp \
26    runtime/StringConstructor.cpp \
27
28KEYWORDLUT_FILES += \
29    parser/Keywords.table
30
31JIT_STUB_FILES += \
32    jit/JITStubs.cpp
33
34LLINT_ASSEMBLER = $$PWD/llint/LowLevelInterpreter.asm
35
36LLINT_DEPENDENCY = \
37    $$PWD/llint/LowLevelInterpreter32_64.asm \
38    $$PWD/llint/LowLevelInterpreter64.asm \
39    $$LLINT_ASSEMBLER
40
41DISASSEMBLER_FILES = \
42    disassembler/udis86/optable.xml
43
44DISASSEMBLER_DEPENDENCY = \
45    $$PWD/disassembler/udis86/ud_opcode.py \
46    $$PWD/disassembler/udis86/ud_optable.py
47
48# GENERATOR 1-A: LUT creator
49lut.output = ${QMAKE_FILE_BASE}.lut.h
50lut.input = LUT_FILES
51lut.script = $$PWD/create_hash_table
52lut.commands = perl $$lut.script ${QMAKE_FILE_NAME} -i > ${QMAKE_FILE_OUT}
53lut.depends = ${QMAKE_FILE_NAME}
54GENERATORS += lut
55
56# GENERATOR 1-B: particular LUT creator (for 1 file only)
57keywordlut.output = Lexer.lut.h
58keywordlut.input = KEYWORDLUT_FILES
59keywordlut.script = $$PWD/create_hash_table
60keywordlut.commands = perl $$keywordlut.script ${QMAKE_FILE_NAME} -i > ${QMAKE_FILE_OUT}
61keywordlut.depends = ${QMAKE_FILE_NAME}
62GENERATORS += keywordlut
63
64# GENERATOR 2-A: JIT Stub functions for RVCT
65rvctstubs.output = Generated${QMAKE_FILE_BASE}_RVCT.h
66rvctstubs.script = $$PWD/create_jit_stubs
67rvctstubs.commands = perl -i $$rvctstubs.script --prefix RVCT ${QMAKE_FILE_NAME} > ${QMAKE_FILE_OUT}
68rvctstubs.depends = ${QMAKE_FILE_NAME}
69rvctstubs.input = JIT_STUB_FILES
70rvctstubs.CONFIG += no_link
71GENERATORS += rvctstubs
72
73# GENERATOR 2-B: JIT Stub functions for MSVC
74msvcstubs.output = Generated${QMAKE_FILE_BASE}_MSVC.asm
75msvcstubs.script = $$PWD/create_jit_stubs
76msvcstubs.commands = perl -i $$msvcstubs.script --prefix MSVC ${QMAKE_FILE_NAME} > ${QMAKE_FILE_OUT}
77msvcstubs.depends = ${QMAKE_FILE_NAME}
78msvcstubs.input = JIT_STUB_FILES
79msvcstubs.CONFIG += no_link
80GENERATORS += msvcstubs
81
82#GENERATOR: "RegExpJitTables.h": tables used by Yarr
83retgen.output = RegExpJitTables.h
84retgen.script = $$PWD/create_regex_tables
85retgen.input = retgen.script
86retgen.commands = python $$retgen.script > ${QMAKE_FILE_OUT}
87GENERATORS += retgen
88
89#GENERATOR: "KeywordLookup.h": decision tree used by the lexer
90klgen.output = KeywordLookup.h
91klgen.script = $$PWD/KeywordLookupGenerator.py
92klgen.input = KEYWORDLUT_FILES
93klgen.commands = python $$klgen.script ${QMAKE_FILE_NAME} > ${QMAKE_FILE_OUT}
94GENERATORS += klgen
95
96EXTRACTOR_BINARY = LLIntOffsetsExtractor$$BIN_EXTENSION
97DIRS = $$OUT_PWD $$OUT_PWD/debug $$OUT_PWD/release
98for(dir, DIRS) {
99    file = $$dir/$$EXTRACTOR_BINARY
100    exists($$file): LLINT_FILES += $$file
101}
102
103#GENERATOR: LLInt
104llint.output = ${QMAKE_FILE_IN_PATH}$${QMAKE_DIR_SEP}LLIntAssembly.h
105llint.script = $$PWD/offlineasm/asm.rb
106llint.input = LLINT_FILES
107llint.depends = $$LLINT_DEPENDENCY
108llint.commands = ruby $$llint.script $$LLINT_ASSEMBLER ${QMAKE_FILE_IN} ${QMAKE_FILE_OUT}
109GENERATORS += llint
110
111linux-*:if(isEqual(QT_ARCH, "i386")|isEqual(QT_ARCH, "x86_64")) {
112    # GENERATOR: disassembler
113    disassembler.output = udis86_itab.c
114    disassembler.input = DISASSEMBLER_FILES
115    disassembler.script = $$PWD/disassembler/udis86/itab.py
116    disassembler.depends = $$DISASSEMBLER_DEPENDENCY
117    disassembler.commands = python $$disassembler.script ${QMAKE_FILE_NAME} --outputDir ${QMAKE_FUNC_FILE_OUT_PATH}
118    disassembler.CONFIG += no_link
119    GENERATORS += disassembler
120}
121