1# ------------------------------------------------------------------- 2# Target file for the JavaScriptSource library 3# 4# See 'Tools/qmake/README' for an overview of the build system 5# ------------------------------------------------------------------- 6 7TEMPLATE = lib 8TARGET = JavaScriptCore 9 10include(JavaScriptCore.pri) 11 12WEBKIT += wtf 13QT += core 14QT -= gui 15 16CONFIG += staticlib 17 18*-g++*:QMAKE_CXXFLAGS_RELEASE -= -O2 19*-g++*:QMAKE_CXXFLAGS_RELEASE += -O3 20 21# Rules when JIT enabled (not disabled) 22!contains(DEFINES, ENABLE_JIT=0) { 23 linux*-g++*:greaterThan(QT_GCC_MAJOR_VERSION,3):greaterThan(QT_GCC_MINOR_VERSION,0) { 24 QMAKE_CXXFLAGS += -fno-stack-protector 25 QMAKE_CFLAGS += -fno-stack-protector 26 } 27} 28 29include(yarr/yarr.pri) 30 31INSTALLDEPS += all 32 33debug_and_release: INCLUDEPATH += $$JAVASCRIPTCORE_GENERATED_SOURCES_DIR/$$targetSubDir() 34 35SOURCES += \ 36 API/JSBase.cpp \ 37 API/JSCallbackConstructor.cpp \ 38 API/JSCallbackFunction.cpp \ 39 API/JSCallbackObject.cpp \ 40 API/JSClassRef.cpp \ 41 API/JSContextRef.cpp \ 42 API/JSObjectRef.cpp \ 43 API/JSScriptRef.cpp \ 44 API/JSStringRef.cpp \ 45 API/JSStringRefQt.cpp \ 46 API/JSValueRef.cpp \ 47 API/JSWeakObjectMapRefPrivate.cpp \ 48 API/OpaqueJSString.cpp \ 49 assembler/ARMAssembler.cpp \ 50 assembler/ARMv7Assembler.cpp \ 51 assembler/LinkBuffer.cpp \ 52 assembler/MacroAssembler.cpp \ 53 assembler/MacroAssemblerARM.cpp \ 54 bytecode/ArrayAllocationProfile.cpp \ 55 bytecode/ArrayProfile.cpp \ 56 bytecode/CallLinkInfo.cpp \ 57 bytecode/CallLinkStatus.cpp \ 58 bytecode/CodeBlock.cpp \ 59 bytecode/CodeBlockHash.cpp \ 60 bytecode/CodeOrigin.cpp \ 61 bytecode/CodeType.cpp \ 62 bytecode/DFGExitProfile.cpp \ 63 bytecode/ExecutionCounter.cpp \ 64 bytecode/ExitKind.cpp \ 65 bytecode/GetByIdStatus.cpp \ 66 bytecode/JumpTable.cpp \ 67 bytecode/LazyOperandValueProfile.cpp \ 68 bytecode/MethodOfGettingAValueProfile.cpp \ 69 bytecode/Opcode.cpp \ 70 bytecode/PolymorphicPutByIdList.cpp \ 71 bytecode/PreciseJumpTargets.cpp \ 72 bytecode/PutByIdStatus.cpp \ 73 bytecode/ReduceWhitespace.cpp \ 74 bytecode/ResolveGlobalStatus.cpp \ 75 bytecode/SamplingTool.cpp \ 76 bytecode/SpecialPointer.cpp \ 77 bytecode/SpeculatedType.cpp \ 78 bytecode/StructureStubClearingWatchpoint.cpp \ 79 bytecode/StructureStubInfo.cpp \ 80 bytecode/UnlinkedCodeBlock.cpp \ 81 bytecode/Watchpoint.cpp \ 82 bytecompiler/BytecodeGenerator.cpp \ 83 bytecompiler/NodesCodegen.cpp \ 84 heap/CopiedSpace.cpp \ 85 heap/CopyVisitor.cpp \ 86 heap/ConservativeRoots.cpp \ 87 heap/DFGCodeBlocks.cpp \ 88 heap/Weak.cpp \ 89 heap/WeakBlock.cpp \ 90 heap/WeakHandleOwner.cpp \ 91 heap/WeakSet.cpp \ 92 heap/HandleSet.cpp \ 93 heap/HandleStack.cpp \ 94 heap/BlockAllocator.cpp \ 95 heap/GCThreadSharedData.cpp \ 96 heap/GCThread.cpp \ 97 heap/Heap.cpp \ 98 heap/HeapStatistics.cpp \ 99 heap/HeapTimer.cpp \ 100 heap/IncrementalSweeper.cpp \ 101 heap/JITStubRoutineSet.cpp \ 102 heap/MachineStackMarker.cpp \ 103 heap/MarkStack.cpp \ 104 heap/MarkedAllocator.cpp \ 105 heap/MarkedBlock.cpp \ 106 heap/MarkedSpace.cpp \ 107 heap/SlotVisitor.cpp \ 108 heap/SuperRegion.cpp \ 109 heap/VTableSpectrum.cpp \ 110 heap/WriteBarrierSupport.cpp \ 111 debugger/DebuggerActivation.cpp \ 112 debugger/DebuggerCallFrame.cpp \ 113 debugger/Debugger.cpp \ 114 dfg/DFGAbstractState.cpp \ 115 dfg/DFGArgumentsSimplificationPhase.cpp \ 116 dfg/DFGArrayMode.cpp \ 117 dfg/DFGAssemblyHelpers.cpp \ 118 dfg/DFGBackwardsPropagationPhase.cpp \ 119 dfg/DFGByteCodeParser.cpp \ 120 dfg/DFGCapabilities.cpp \ 121 dfg/DFGCommon.cpp \ 122 dfg/DFGCFAPhase.cpp \ 123 dfg/DFGCFGSimplificationPhase.cpp \ 124 dfg/DFGCPSRethreadingPhase.cpp \ 125 dfg/DFGConstantFoldingPhase.cpp \ 126 dfg/DFGCSEPhase.cpp \ 127 dfg/DFGDCEPhase.cpp \ 128 dfg/DFGDisassembler.cpp \ 129 dfg/DFGDominators.cpp \ 130 dfg/DFGDriver.cpp \ 131 dfg/DFGEdge.cpp \ 132 dfg/DFGFixupPhase.cpp \ 133 dfg/DFGGraph.cpp \ 134 dfg/DFGJITCompiler.cpp \ 135 dfg/DFGLongLivedState.cpp \ 136 dfg/DFGMinifiedNode.cpp \ 137 dfg/DFGNode.cpp \ 138 dfg/DFGNodeFlags.cpp \ 139 dfg/DFGOperations.cpp \ 140 dfg/DFGOSREntry.cpp \ 141 dfg/DFGOSRExit.cpp \ 142 dfg/DFGOSRExitCompiler.cpp \ 143 dfg/DFGOSRExitCompiler64.cpp \ 144 dfg/DFGOSRExitCompiler32_64.cpp \ 145 dfg/DFGOSRExitJumpPlaceholder.cpp \ 146 dfg/DFGPhase.cpp \ 147 dfg/DFGPredictionPropagationPhase.cpp \ 148 dfg/DFGPredictionInjectionPhase.cpp \ 149 dfg/DFGRepatch.cpp \ 150 dfg/DFGSpeculativeJIT.cpp \ 151 dfg/DFGSpeculativeJIT32_64.cpp \ 152 dfg/DFGSpeculativeJIT64.cpp \ 153 dfg/DFGTypeCheckHoistingPhase.cpp \ 154 dfg/DFGThunks.cpp \ 155 dfg/DFGUnificationPhase.cpp \ 156 dfg/DFGUseKind.cpp \ 157 dfg/DFGValueSource.cpp \ 158 dfg/DFGVariableAccessDataDump.cpp \ 159 dfg/DFGVariableEvent.cpp \ 160 dfg/DFGVariableEventStream.cpp \ 161 dfg/DFGValidate.cpp \ 162 dfg/DFGVirtualRegisterAllocationPhase.cpp \ 163 disassembler/Disassembler.cpp \ 164 interpreter/AbstractPC.cpp \ 165 interpreter/CallFrame.cpp \ 166 interpreter/Interpreter.cpp \ 167 interpreter/JSStack.cpp \ 168 jit/ClosureCallStubRoutine.cpp \ 169 jit/ExecutableAllocatorFixedVMPool.cpp \ 170 jit/ExecutableAllocator.cpp \ 171 jit/HostCallReturnValue.cpp \ 172 jit/GCAwareJITStubRoutine.cpp \ 173 jit/JITArithmetic.cpp \ 174 jit/JITArithmetic32_64.cpp \ 175 jit/JITCall.cpp \ 176 jit/JITCall32_64.cpp \ 177 jit/JITCode.cpp \ 178 jit/JIT.cpp \ 179 jit/JITDisassembler.cpp \ 180 jit/JITExceptions.cpp \ 181 jit/JITOpcodes.cpp \ 182 jit/JITOpcodes32_64.cpp \ 183 jit/JITPropertyAccess.cpp \ 184 jit/JITPropertyAccess32_64.cpp \ 185 jit/JITStubRoutine.cpp \ 186 jit/JITStubs.cpp \ 187 jit/JITThunks.cpp \ 188 jit/JumpReplacementWatchpoint.cpp \ 189 jit/ThunkGenerators.cpp \ 190 llint/LLIntCLoop.cpp \ 191 llint/LLIntData.cpp \ 192 llint/LLIntEntrypoints.cpp \ 193 llint/LLIntExceptions.cpp \ 194 llint/LLIntSlowPaths.cpp \ 195 llint/LLIntThunks.cpp \ 196 llint/LowLevelInterpreter.cpp \ 197 parser/Lexer.cpp \ 198 parser/Nodes.cpp \ 199 parser/ParserArena.cpp \ 200 parser/Parser.cpp \ 201 parser/SourceProvider.cpp \ 202 parser/SourceProviderCache.cpp \ 203 profiler/ProfilerBytecode.cpp \ 204 profiler/ProfilerBytecode.h \ 205 profiler/ProfilerBytecodeSequence.cpp \ 206 profiler/ProfilerBytecodes.cpp \ 207 profiler/ProfilerBytecodes.h \ 208 profiler/ProfilerCompilation.cpp \ 209 profiler/ProfilerCompilation.h \ 210 profiler/ProfilerCompilationKind.cpp \ 211 profiler/ProfilerCompilationKind.h \ 212 profiler/ProfilerCompiledBytecode.cpp \ 213 profiler/ProfilerCompiledBytecode.h \ 214 profiler/ProfilerDatabase.cpp \ 215 profiler/ProfilerDatabase.h \ 216 profiler/ProfilerExecutionCounter.h \ 217 profiler/ProfilerOrigin.cpp \ 218 profiler/ProfilerOrigin.h \ 219 profiler/ProfilerOriginStack.cpp \ 220 profiler/ProfilerOriginStack.h \ 221 profiler/ProfilerOSRExit.cpp \ 222 profiler/ProfilerOSRExitSite.cpp \ 223 profiler/ProfilerProfiledBytecodes.cpp \ 224 profiler/Profile.cpp \ 225 profiler/ProfileGenerator.cpp \ 226 profiler/ProfileNode.cpp \ 227 profiler/LegacyProfiler.cpp \ 228 runtime/ArgList.cpp \ 229 runtime/Arguments.cpp \ 230 runtime/ArrayConstructor.cpp \ 231 runtime/ArrayPrototype.cpp \ 232 runtime/BooleanConstructor.cpp \ 233 runtime/BooleanObject.cpp \ 234 runtime/BooleanPrototype.cpp \ 235 runtime/CallData.cpp \ 236 runtime/CodeCache.cpp \ 237 runtime/CodeSpecializationKind.cpp \ 238 runtime/CommonIdentifiers.cpp \ 239 runtime/Completion.cpp \ 240 runtime/ConstructData.cpp \ 241 runtime/DateConstructor.cpp \ 242 runtime/DateConversion.cpp \ 243 runtime/DateInstance.cpp \ 244 runtime/DatePrototype.cpp \ 245 runtime/ErrorConstructor.cpp \ 246 runtime/Error.cpp \ 247 runtime/ErrorInstance.cpp \ 248 runtime/ErrorPrototype.cpp \ 249 runtime/ExceptionHelpers.cpp \ 250 runtime/Executable.cpp \ 251 runtime/FunctionConstructor.cpp \ 252 runtime/FunctionExecutableDump.cpp \ 253 runtime/FunctionPrototype.cpp \ 254 runtime/GCActivityCallback.cpp \ 255 runtime/GetterSetter.cpp \ 256 runtime/Options.cpp \ 257 runtime/Identifier.cpp \ 258 runtime/IndexingType.cpp \ 259 runtime/InitializeThreading.cpp \ 260 runtime/InternalFunction.cpp \ 261 runtime/JSActivation.cpp \ 262 runtime/JSAPIValueWrapper.cpp \ 263 runtime/JSArray.cpp \ 264 runtime/JSCell.cpp \ 265 runtime/JSDateMath.cpp \ 266 runtime/JSFunction.cpp \ 267 runtime/JSBoundFunction.cpp \ 268 runtime/VM.cpp \ 269 runtime/JSGlobalObject.cpp \ 270 runtime/JSGlobalObjectFunctions.cpp \ 271 runtime/JSProxy.cpp \ 272 runtime/JSLock.cpp \ 273 runtime/JSNotAnObject.cpp \ 274 runtime/JSObject.cpp \ 275 runtime/JSONObject.cpp \ 276 runtime/JSPropertyNameIterator.cpp \ 277 runtime/JSSegmentedVariableObject.cpp \ 278 runtime/JSWithScope.cpp \ 279 runtime/JSNameScope.cpp \ 280 runtime/JSScope.cpp \ 281 runtime/JSString.cpp \ 282 runtime/JSStringJoiner.cpp \ 283 runtime/JSSymbolTableObject.cpp \ 284 runtime/JSCJSValue.cpp \ 285 runtime/JSVariableObject.cpp \ 286 runtime/JSWrapperObject.cpp \ 287 runtime/LiteralParser.cpp \ 288 runtime/Lookup.cpp \ 289 runtime/MathObject.cpp \ 290 runtime/MemoryStatistics.cpp \ 291 runtime/NameConstructor.cpp \ 292 runtime/NameInstance.cpp \ 293 runtime/NamePrototype.cpp \ 294 runtime/NativeErrorConstructor.cpp \ 295 runtime/NativeErrorPrototype.cpp \ 296 runtime/NumberConstructor.cpp \ 297 runtime/NumberObject.cpp \ 298 runtime/NumberPrototype.cpp \ 299 runtime/ObjectConstructor.cpp \ 300 runtime/ObjectPrototype.cpp \ 301 runtime/Operations.cpp \ 302 runtime/PropertyDescriptor.cpp \ 303 runtime/PropertyNameArray.cpp \ 304 runtime/PropertySlot.cpp \ 305 runtime/PropertyTable.cpp \ 306 runtime/PrototypeMap.cpp \ 307 runtime/RegExpConstructor.cpp \ 308 runtime/RegExpCachedResult.cpp \ 309 runtime/RegExpMatchesArray.cpp \ 310 runtime/RegExp.cpp \ 311 runtime/RegExpObject.cpp \ 312 runtime/RegExpPrototype.cpp \ 313 runtime/RegExpCache.cpp \ 314 runtime/SamplingCounter.cpp \ 315 runtime/SmallStrings.cpp \ 316 runtime/SparseArrayValueMap.cpp \ 317 runtime/StrictEvalActivation.cpp \ 318 runtime/StringConstructor.cpp \ 319 runtime/StringObject.cpp \ 320 runtime/StringPrototype.cpp \ 321 runtime/StringRecursionChecker.cpp \ 322 runtime/StructureChain.cpp \ 323 runtime/Structure.cpp \ 324 runtime/StructureRareData.cpp \ 325 runtime/SymbolTable.cpp \ 326 runtime/Watchdog.cpp \ 327 runtime/WatchdogNone.cpp \ 328 tools/CodeProfile.cpp \ 329 tools/CodeProfiling.cpp \ 330 yarr/YarrJIT.cpp \ 331 332linux-*:if(isEqual(QT_ARCH, "i386")|isEqual(QT_ARCH, "x86_64")) { 333 SOURCES += \ 334 disassembler/UDis86Disassembler.cpp \ 335 disassembler/udis86/udis86.c \ 336 disassembler/udis86/udis86_decode.c \ 337 disassembler/udis86/udis86_input.c \ 338 disassembler/udis86/udis86_itab_holder.c \ 339 disassembler/udis86/udis86_syn-att.c \ 340 disassembler/udis86/udis86_syn-intel.c \ 341 disassembler/udis86/udis86_syn.c \ 342} 343 344win32:!win32-g++*:isEqual(QT_ARCH, "x86_64"):{ 345 asm_compiler.commands = ml64 /c 346 asm_compiler.commands += /Fo ${QMAKE_FILE_OUT} ${QMAKE_FILE_IN} 347 asm_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)} 348 asm_compiler.input = ASM_SOURCES 349 asm_compiler.variable_out = OBJECTS 350 asm_compiler.name = compiling[asm] ${QMAKE_FILE_IN} 351 silent:asm_compiler.commands = @echo compiling[asm] ${QMAKE_FILE_IN} && $$asm_compiler.commands 352 QMAKE_EXTRA_COMPILERS += asm_compiler 353 354 ASM_SOURCES += jit/JITStubsMSVC64.asm 355} 356 357HEADERS += $$files(*.h, true) 358 359*sh4* { 360 QMAKE_CXXFLAGS += -mieee -w 361 QMAKE_CFLAGS += -mieee -w 362} 363 364lessThan(QT_GCC_MAJOR_VERSION, 5) { 365 # GCC 4.5 and before 366 lessThan(QT_GCC_MINOR_VERSION, 6) { 367 # Disable C++0x mode in JSC for those who enabled it in their Qt's mkspec. 368 *-g++*:QMAKE_CXXFLAGS -= -std=c++0x -std=gnu++0x 369 } 370} 371