1set(JavaScriptCore_INCLUDE_DIRECTORIES 2 "${CMAKE_BINARY_DIR}" 3 "${JAVASCRIPTCORE_DIR}" 4 "${JAVASCRIPTCORE_DIR}/API" 5 "${JAVASCRIPTCORE_DIR}/ForwardingHeaders" 6 "${JAVASCRIPTCORE_DIR}/assembler" 7 "${JAVASCRIPTCORE_DIR}/bytecode" 8 "${JAVASCRIPTCORE_DIR}/bytecompiler" 9 "${JAVASCRIPTCORE_DIR}/dfg" 10 "${JAVASCRIPTCORE_DIR}/disassembler" 11 "${JAVASCRIPTCORE_DIR}/heap" 12 "${JAVASCRIPTCORE_DIR}/debugger" 13 "${JAVASCRIPTCORE_DIR}/interpreter" 14 "${JAVASCRIPTCORE_DIR}/jit" 15 "${JAVASCRIPTCORE_DIR}/llint" 16 "${JAVASCRIPTCORE_DIR}/parser" 17 "${JAVASCRIPTCORE_DIR}/profiler" 18 "${JAVASCRIPTCORE_DIR}/runtime" 19 "${JAVASCRIPTCORE_DIR}/tools" 20 "${JAVASCRIPTCORE_DIR}/yarr" 21 "${WTF_DIR}" 22 "${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}" 23 "${CMAKE_SOURCE_DIR}/Source" 24) 25 26set(JavaScriptCore_SOURCES 27 API/JSBase.cpp 28 API/JSCallbackConstructor.cpp 29 API/JSCallbackFunction.cpp 30 API/JSCallbackObject.cpp 31 API/JSClassRef.cpp 32 API/JSContextRef.cpp 33 API/JSObjectRef.cpp 34 API/JSProfilerPrivate.cpp 35 API/JSScriptRef.cpp 36 API/JSStringRef.cpp 37 API/JSValueRef.cpp 38 API/JSWeakObjectMapRefPrivate.cpp 39 API/OpaqueJSString.cpp 40 41 assembler/MacroAssembler.cpp 42 assembler/LinkBuffer.cpp 43 44 bytecode/ArrayAllocationProfile.cpp 45 bytecode/ArrayProfile.cpp 46 bytecode/CallLinkInfo.cpp 47 bytecode/CallLinkStatus.cpp 48 bytecode/CodeBlock.cpp 49 bytecode/CodeBlockHash.cpp 50 bytecode/CodeOrigin.cpp 51 bytecode/CodeType.cpp 52 bytecode/DFGExitProfile.cpp 53 bytecode/ExecutionCounter.cpp 54 bytecode/ExitKind.cpp 55 bytecode/GetByIdStatus.cpp 56 bytecode/JumpTable.cpp 57 bytecode/LazyOperandValueProfile.cpp 58 bytecode/MethodOfGettingAValueProfile.cpp 59 bytecode/Opcode.cpp 60 bytecode/PolymorphicPutByIdList.cpp 61 bytecode/PreciseJumpTargets.cpp 62 bytecode/PutByIdStatus.cpp 63 bytecode/SpeculatedType.cpp 64 bytecode/ReduceWhitespace.cpp 65 bytecode/ResolveGlobalStatus.cpp 66 bytecode/SamplingTool.cpp 67 bytecode/SpecialPointer.cpp 68 bytecode/StructureStubClearingWatchpoint.cpp 69 bytecode/StructureStubInfo.cpp 70 bytecode/UnlinkedCodeBlock.cpp 71 bytecode/Watchpoint.cpp 72 73 bytecompiler/BytecodeGenerator.cpp 74 bytecompiler/NodesCodegen.cpp 75 76 dfg/DFGAbstractState.cpp 77 dfg/DFGArgumentsSimplificationPhase.cpp 78 dfg/DFGArrayMode.cpp 79 dfg/DFGAssemblyHelpers.cpp 80 dfg/DFGBackwardsPropagationPhase.cpp 81 dfg/DFGByteCodeParser.cpp 82 dfg/DFGCapabilities.cpp 83 dfg/DFGCommon.cpp 84 dfg/DFGCFAPhase.cpp 85 dfg/DFGCFGSimplificationPhase.cpp 86 dfg/DFGCPSRethreadingPhase.cpp 87 dfg/DFGConstantFoldingPhase.cpp 88 dfg/DFGCSEPhase.cpp 89 dfg/DFGDCEPhase.cpp 90 dfg/DFGDisassembler.cpp 91 dfg/DFGDominators.cpp 92 dfg/DFGDriver.cpp 93 dfg/DFGEdge.cpp 94 dfg/DFGFixupPhase.cpp 95 dfg/DFGGraph.cpp 96 dfg/DFGJITCompiler.cpp 97 dfg/DFGLongLivedState.cpp 98 dfg/DFGMinifiedNode.cpp 99 dfg/DFGNode.cpp 100 dfg/DFGNodeFlags.cpp 101 dfg/DFGOSREntry.cpp 102 dfg/DFGOSRExit.cpp 103 dfg/DFGOSRExitCompiler.cpp 104 dfg/DFGOSRExitCompiler32_64.cpp 105 dfg/DFGOSRExitCompiler64.cpp 106 dfg/DFGOSRExitJumpPlaceholder.cpp 107 dfg/DFGOperations.cpp 108 dfg/DFGPhase.cpp 109 dfg/DFGPredictionPropagationPhase.cpp 110 dfg/DFGPredictionInjectionPhase.cpp 111 dfg/DFGRepatch.cpp 112 dfg/DFGSpeculativeJIT.cpp 113 dfg/DFGSpeculativeJIT32_64.cpp 114 dfg/DFGSpeculativeJIT64.cpp 115 dfg/DFGTypeCheckHoistingPhase.cpp 116 dfg/DFGThunks.cpp 117 dfg/DFGUnificationPhase.cpp 118 dfg/DFGUseKind.cpp 119 dfg/DFGValueSource.cpp 120 dfg/DFGVariableAccessDataDump.cpp 121 dfg/DFGVariableEvent.cpp 122 dfg/DFGVariableEventStream.cpp 123 dfg/DFGValidate.cpp 124 dfg/DFGVirtualRegisterAllocationPhase.cpp 125 126 disassembler/Disassembler.cpp 127 128 heap/BlockAllocator.cpp 129 heap/CopiedSpace.cpp 130 heap/CopyVisitor.cpp 131 heap/ConservativeRoots.cpp 132 heap/DFGCodeBlocks.cpp 133 heap/GCThread.cpp 134 heap/GCThreadSharedData.cpp 135 heap/HandleSet.cpp 136 heap/HandleStack.cpp 137 heap/Heap.cpp 138 heap/HeapStatistics.cpp 139 heap/HeapTimer.cpp 140 heap/IncrementalSweeper.cpp 141 heap/JITStubRoutineSet.cpp 142 heap/MachineStackMarker.cpp 143 144 heap/MarkedAllocator.cpp 145 heap/MarkedBlock.cpp 146 heap/MarkedSpace.cpp 147 heap/MarkStack.cpp 148 heap/SlotVisitor.cpp 149 heap/SuperRegion.cpp 150 heap/Weak.cpp 151 heap/WeakBlock.cpp 152 heap/WeakHandleOwner.cpp 153 heap/WeakSet.cpp 154 155 debugger/Debugger.cpp 156 debugger/DebuggerActivation.cpp 157 debugger/DebuggerCallFrame.cpp 158 159 interpreter/AbstractPC.cpp 160 interpreter/CallFrame.cpp 161 interpreter/Interpreter.cpp 162 interpreter/JSStack.cpp 163 interpreter/VMInspector.cpp 164 165 jit/ClosureCallStubRoutine.cpp 166 jit/ExecutableAllocator.cpp 167 jit/ExecutableAllocatorFixedVMPool.cpp 168 jit/HostCallReturnValue.cpp 169 jit/GCAwareJITStubRoutine.cpp 170 jit/JITArithmetic32_64.cpp 171 jit/JITArithmetic.cpp 172 jit/JITCall32_64.cpp 173 jit/JITCall.cpp 174 jit/JITCode.cpp 175 jit/JIT.cpp 176 jit/JITDisassembler.cpp 177 jit/JITExceptions.cpp 178 jit/JITOpcodes32_64.cpp 179 jit/JITOpcodes.cpp 180 jit/JITPropertyAccess32_64.cpp 181 jit/JITPropertyAccess.cpp 182 jit/JITStubRoutine.cpp 183 jit/JITStubs.cpp 184 jit/JITThunks.cpp 185 jit/JumpReplacementWatchpoint.cpp 186 jit/ThunkGenerators.cpp 187 188 parser/Lexer.cpp 189 parser/Nodes.cpp 190 parser/Parser.cpp 191 parser/ParserArena.cpp 192 parser/SourceProvider.cpp 193 parser/SourceProviderCache.cpp 194 195 profiler/ProfilerBytecode.cpp 196 profiler/ProfilerBytecodeSequence.cpp 197 profiler/ProfilerBytecodes.cpp 198 profiler/ProfilerCompilation.cpp 199 profiler/ProfilerCompilationKind.cpp 200 profiler/ProfilerCompiledBytecode.cpp 201 profiler/ProfilerDatabase.cpp 202 profiler/ProfilerOrigin.cpp 203 profiler/ProfilerOriginStack.cpp 204 profiler/ProfilerOSRExit.cpp 205 profiler/ProfilerOSRExitSite.cpp 206 profiler/ProfilerProfiledBytecodes.cpp 207 profiler/Profile.cpp 208 profiler/ProfileGenerator.cpp 209 profiler/ProfileNode.cpp 210 profiler/LegacyProfiler.cpp 211 212 runtime/ArgList.cpp 213 runtime/Arguments.cpp 214 runtime/ArrayConstructor.cpp 215 runtime/ArrayPrototype.cpp 216 runtime/BooleanConstructor.cpp 217 runtime/BooleanObject.cpp 218 runtime/BooleanPrototype.cpp 219 runtime/CallData.cpp 220 runtime/CodeCache.cpp 221 runtime/CodeSpecializationKind.cpp 222 runtime/CommonIdentifiers.cpp 223 runtime/Completion.cpp 224 runtime/ConstructData.cpp 225 runtime/DateConstructor.cpp 226 runtime/DateConversion.cpp 227 runtime/DateInstance.cpp 228 runtime/DatePrototype.cpp 229 runtime/Error.cpp 230 runtime/ErrorConstructor.cpp 231 runtime/ErrorInstance.cpp 232 runtime/ErrorPrototype.cpp 233 runtime/ExceptionHelpers.cpp 234 runtime/Executable.cpp 235 runtime/FunctionConstructor.cpp 236 runtime/FunctionExecutableDump.cpp 237 runtime/FunctionPrototype.cpp 238 runtime/GCActivityCallback.cpp 239 runtime/GetterSetter.cpp 240 runtime/Identifier.cpp 241 runtime/IndexingType.cpp 242 runtime/InitializeThreading.cpp 243 runtime/InternalFunction.cpp 244 runtime/JSActivation.cpp 245 runtime/JSAPIValueWrapper.cpp 246 runtime/JSArray.cpp 247 runtime/JSCell.cpp 248 runtime/JSDateMath.cpp 249 runtime/JSFunction.cpp 250 runtime/JSBoundFunction.cpp 251 runtime/VM.cpp 252 runtime/JSGlobalObject.cpp 253 runtime/JSGlobalObjectFunctions.cpp 254 runtime/JSProxy.cpp 255 runtime/JSLock.cpp 256 runtime/JSNotAnObject.cpp 257 runtime/JSObject.cpp 258 runtime/JSONObject.cpp 259 runtime/JSPropertyNameIterator.cpp 260 runtime/JSSegmentedVariableObject.cpp 261 runtime/JSNameScope.cpp 262 runtime/JSWithScope.cpp 263 runtime/JSScope.cpp 264 runtime/JSString.cpp 265 runtime/JSStringJoiner.cpp 266 runtime/JSSymbolTableObject.cpp 267 runtime/JSCJSValue.cpp 268 runtime/JSVariableObject.cpp 269 runtime/JSWrapperObject.cpp 270 runtime/LiteralParser.cpp 271 runtime/Lookup.cpp 272 runtime/MathObject.cpp 273 runtime/MemoryStatistics.cpp 274 runtime/NameConstructor.cpp 275 runtime/NameInstance.cpp 276 runtime/NamePrototype.cpp 277 runtime/NativeErrorConstructor.cpp 278 runtime/NativeErrorPrototype.cpp 279 runtime/NumberConstructor.cpp 280 runtime/NumberObject.cpp 281 runtime/NumberPrototype.cpp 282 runtime/ObjectConstructor.cpp 283 runtime/ObjectPrototype.cpp 284 runtime/Operations.cpp 285 runtime/Options.cpp 286 runtime/PropertyDescriptor.cpp 287 runtime/PropertyNameArray.cpp 288 runtime/PropertySlot.cpp 289 runtime/PropertyTable.cpp 290 runtime/PrototypeMap.cpp 291 runtime/RegExp.cpp 292 runtime/RegExpCache.cpp 293 runtime/RegExpConstructor.cpp 294 runtime/RegExpCachedResult.cpp 295 runtime/RegExpMatchesArray.cpp 296 runtime/RegExpObject.cpp 297 runtime/RegExpPrototype.cpp 298 runtime/SmallStrings.cpp 299 runtime/SparseArrayValueMap.cpp 300 runtime/StrictEvalActivation.cpp 301 runtime/StringConstructor.cpp 302 runtime/StringObject.cpp 303 runtime/StringPrototype.cpp 304 runtime/StringRecursionChecker.cpp 305 runtime/Structure.cpp 306 runtime/StructureRareData.cpp 307 runtime/StructureChain.cpp 308 runtime/SymbolTable.cpp 309 runtime/Watchdog.cpp 310 runtime/WatchdogNone.cpp 311 312 tools/CodeProfile.cpp 313 tools/CodeProfiling.cpp 314 315 yarr/YarrCanonicalizeUCS2.cpp 316 yarr/YarrPattern.cpp 317 yarr/YarrInterpreter.cpp 318 yarr/YarrJIT.cpp 319 yarr/YarrSyntaxChecker.cpp 320) 321 322set(JavaScriptCore_LUT_FILES 323 runtime/ArrayConstructor.cpp 324 runtime/ArrayPrototype.cpp 325 runtime/BooleanPrototype.cpp 326 runtime/DateConstructor.cpp 327 runtime/DatePrototype.cpp 328 runtime/ErrorPrototype.cpp 329 runtime/JSGlobalObject.cpp 330 runtime/JSONObject.cpp 331 runtime/MathObject.cpp 332 runtime/NamePrototype.cpp 333 runtime/NumberConstructor.cpp 334 runtime/NumberPrototype.cpp 335 runtime/ObjectConstructor.cpp 336 runtime/RegExpConstructor.cpp 337 runtime/RegExpObject.cpp 338 runtime/RegExpPrototype.cpp 339 runtime/StringConstructor.cpp 340) 341 342set(JavaScriptCore_LIBRARIES 343 WTF 344) 345 346if (WTF_USE_ICU_UNICODE) 347 list(APPEND JavaScriptCore_INCLUDE_DIRECTORIES 348 ${ICU_INCLUDE_DIRS} 349 ) 350 list(APPEND JavaScriptCore_LIBRARIES 351 ${ICU_I18N_LIBRARIES} 352 ) 353endif () 354 355if (ENABLE_LLINT) 356 # We cannot check for RUBY_FOUND because it is set only when the full package is installed and 357 # the only thing we need is the interpreter. Unlike Python, cmake does not provide a macro 358 # for finding the only Ruby interpreter. 359 if (NOT RUBY_EXECUTABLE) 360 message(FATAL_ERROR "The Ruby interpreter is needed to generate LLInt files.") 361 endif () 362 363 set(LLINT_ASM 364 llint/LowLevelInterpreter.asm 365 llint/LowLevelInterpreter32_64.asm 366 llint/LowLevelInterpreter64.asm 367 ) 368 369 set(OFFLINE_ASM 370 offlineasm/arm.rb 371 offlineasm/ast.rb 372 offlineasm/backends.rb 373 offlineasm/cloop.rb 374 offlineasm/config.rb 375 offlineasm/instructions.rb 376 offlineasm/offsets.rb 377 offlineasm/opt.rb 378 offlineasm/parser.rb 379 offlineasm/registers.rb 380 offlineasm/risc.rb 381 offlineasm/self_hash.rb 382 offlineasm/settings.rb 383 offlineasm/transform.rb 384 offlineasm/x86.rb 385 ) 386 387 add_custom_command( 388 OUTPUT ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/LLIntDesiredOffsets.h 389 MAIN_DEPENDENCY ${JAVASCRIPTCORE_DIR}/offlineasm/generate_offset_extractor.rb 390 DEPENDS ${LLINT_ASM} ${OFFLINE_ASM} 391 COMMAND ${RUBY_EXECUTABLE} ${JAVASCRIPTCORE_DIR}/offlineasm/generate_offset_extractor.rb ${JAVASCRIPTCORE_DIR}/llint/LowLevelInterpreter.asm ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/LLIntDesiredOffsets.h 392 VERBATIM) 393 394 # We add the header file directly to the ADD_EXECUTABLE call instead of setting the 395 # OBJECT_DEPENDS property in LLIntOffsetsExtractor.cpp because generate_offset_extractor.rb may 396 # not regenerate it in case the hash it calculates does not change. 397 # In this case, if some of the dependencies specified in the ADD_CUSTOM_COMMAND above have 398 # changed the command will always be called because the mtime of LLIntDesiredOffsets.h will 399 # always be older than that of its dependencies. 400 # Additionally, setting the OBJECT_DEPENDS property will make LLIntDesiredOffsets.h a Makefile 401 # dependency of both LLIntOffsetsExtractor and LLIntOffsetsExtractor.cpp, so the command will 402 # actually be run twice! 403 add_executable(LLIntOffsetsExtractor 404 ${JAVASCRIPTCORE_DIR}/llint/LLIntOffsetsExtractor.cpp 405 ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/LLIntDesiredOffsets.h 406 ) 407 target_link_libraries(LLIntOffsetsExtractor WTF) 408 409 # The build system will execute asm.rb every time LLIntOffsetsExtractor's mtime is newer than 410 # LLIntAssembly.h's mtime. The problem we have here is: asm.rb has some built-in optimization 411 # that generates a checksum of the LLIntOffsetsExtractor binary, if the checksum of the new 412 # LLIntOffsetsExtractor matches, no output is generated. To make this target consistent and avoid 413 # running this command for every build, we artificially update LLIntAssembly.h's mtime (using touch) 414 # after every asm.rb run. 415 add_custom_command( 416 OUTPUT ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/LLIntAssembly.h 417 MAIN_DEPENDENCY ${JAVASCRIPTCORE_DIR}/offlineasm/asm.rb 418 DEPENDS LLIntOffsetsExtractor ${LLINT_ASM} ${OFFLINE_ASM} 419 COMMAND ${RUBY_EXECUTABLE} ${JAVASCRIPTCORE_DIR}/offlineasm/asm.rb ${JAVASCRIPTCORE_DIR}/llint/LowLevelInterpreter.asm $<TARGET_FILE:LLIntOffsetsExtractor> ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/LLIntAssembly.h 420 COMMAND ${CMAKE_COMMAND} -E touch_nocreate ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/LLIntAssembly.h 421 VERBATIM) 422 423 # The explanation for not making LLIntAssembly.h part of the OBJECT_DEPENDS property of some of 424 # the .cpp files below is similar to the one in the previous comment. However, since these .cpp 425 # files are used to build JavaScriptCore itself, we can just add LLIntAssembly.h to JSC_HEADERS 426 # since it is used in the add_library() call at the end of this file. 427 list(APPEND JavaScriptCore_HEADERS 428 ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/LLIntAssembly.h 429 ) 430 list(APPEND JavaScriptCore_SOURCES 431 llint/LLIntCLoop.cpp 432 llint/LLIntData.cpp 433 llint/LLIntEntrypoints.cpp 434 llint/LLIntExceptions.cpp 435 llint/LLIntSlowPaths.cpp 436 llint/LLIntThunks.cpp 437 llint/LowLevelInterpreter.cpp 438 ) 439endif () 440 441set(HASH_LUT_GENERATOR ${CMAKE_CURRENT_SOURCE_DIR}/create_hash_table) 442macro(GENERATE_HASH_LUT _input _output) 443 add_custom_command( 444 OUTPUT ${_output} 445 DEPENDS ${HASH_LUT_GENERATOR} ${_input} 446 COMMAND ${PERL_EXECUTABLE} ${HASH_LUT_GENERATOR} ${_input} -i > ${_output} 447 VERBATIM) 448 list(APPEND JavaScriptCore_HEADERS ${_output}) 449endmacro() 450 451# GENERATOR 1-A: LUT creator 452foreach (_file ${JavaScriptCore_LUT_FILES}) 453 get_filename_component(_name ${_file} NAME_WE) 454 GENERATE_HASH_LUT(${CMAKE_CURRENT_SOURCE_DIR}/${_file} ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/${_name}.lut.h) 455endforeach () 456 457set(JavaScriptCore_FORWARDING_HEADERS_DIRECTORIES 458 assembler 459 bytecode 460 collector/handles 461 debugger 462 heap 463 interpreter 464 jit 465 llint 466 parser 467 profiler 468 runtime 469 yarr 470) 471 472set(JavaScriptCore_FORWARDING_HEADERS_FILES 473 API/APICast.h 474 API/APIShims.h 475 API/JavaScript.h 476 API/JSBase.h 477 API/JSContextRef.h 478 API/JSContextRefPrivate.h 479 API/JSObjectRef.h 480 API/JSObjectRefPrivate.h 481 API/JSScriptRefPrivate.h 482 API/JSStringRef.h 483 API/JSStringRefCF.h 484 API/JSStringRefBSTR.h 485 API/JSValueRef.h 486 API/JavaScriptCore.h 487 API/JSRetainPtr.h 488 API/JSWeakObjectMapRefInternal.h 489 API/JSWeakObjectMapRefPrivate.h 490 API/JSRetainPtr.h 491 API/OpaqueJSString.h 492 API/WebKitAvailability.h 493) 494 495 496# GENERATOR 1-B: particular LUT creator (for 1 file only) 497GENERATE_HASH_LUT(${CMAKE_CURRENT_SOURCE_DIR}/parser/Keywords.table ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/Lexer.lut.h) 498 499#GENERATOR: "RegExpJitTables.h": tables used by Yarr 500add_custom_command( 501 OUTPUT ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/RegExpJitTables.h 502 MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/create_regex_tables 503 COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/create_regex_tables > ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/RegExpJitTables.h 504 VERBATIM) 505ADD_SOURCE_DEPENDENCIES(${CMAKE_CURRENT_SOURCE_DIR}/yarr/YarrPattern.cpp ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/RegExpJitTables.h) 506 507 508#GENERATOR: "KeywordLookup.h": keyword decision tree used by the lexer 509add_custom_command( 510 OUTPUT ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/KeywordLookup.h 511 MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/KeywordLookupGenerator.py 512 COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/KeywordLookupGenerator.py ${CMAKE_CURRENT_SOURCE_DIR}/parser/Keywords.table > ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/KeywordLookup.h 513 VERBATIM) 514ADD_SOURCE_DEPENDENCIES(${CMAKE_CURRENT_SOURCE_DIR}/parser/Lexer.cpp ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/KeywordLookup.h) 515 516if (WTF_CPU_ARM) 517 list(APPEND JavaScriptCore_SOURCES 518 assembler/ARMAssembler.cpp 519 assembler/ARMv7Assembler.cpp 520 assembler/MacroAssemblerARM.cpp 521 ) 522elseif (WTF_CPU_MIPS) 523elseif (WTF_CPU_X86) 524elseif (WTF_CPU_X86_64) 525else () 526 message(FATAL_ERROR "Unknown CPU") 527endif () 528 529 530WEBKIT_INCLUDE_CONFIG_FILES_IF_EXISTS() 531 532WEBKIT_CREATE_FORWARDING_HEADERS(JavaScriptCore DIRECTORIES ${JavaScriptCore_FORWARDING_HEADERS_DIRECTORIES} FILES ${JavaScriptCore_FORWARDING_HEADERS_FILES}) 533 534 535add_subdirectory(shell) 536 537WEBKIT_WRAP_SOURCELIST(${JavaScriptCore_SOURCES}) 538include_directories(${JavaScriptCore_INCLUDE_DIRECTORIES}) 539add_definitions(-DBUILDING_JavaScriptCore) 540add_library(JavaScriptCore ${JavaScriptCore_LIBRARY_TYPE} ${JavaScriptCore_HEADERS} ${JavaScriptCore_SOURCES}) 541target_link_libraries(JavaScriptCore ${JavaScriptCore_LIBRARIES}) 542set_target_properties(JavaScriptCore PROPERTIES FOLDER "JavaScriptCore") 543set_target_properties(JavaScriptCore PROPERTIES LINK_INTERFACE_LIBRARIES "") 544 545if (JavaScriptCore_OUTPUT_NAME) 546 set_target_properties(JavaScriptCore PROPERTIES OUTPUT_NAME ${JavaScriptCore_OUTPUT_NAME}) 547endif () 548 549if (SHARED_CORE) 550 set_target_properties(JavaScriptCore PROPERTIES VERSION ${PROJECT_VERSION} SOVERSION ${PROJECT_VERSION_MAJOR}) 551 install(TARGETS JavaScriptCore DESTINATION "${LIB_INSTALL_DIR}") 552endif () 553