cmake_minimum_required(VERSION 2.8.12) include(WebKitCommon) set_property(DIRECTORY . PROPERTY FOLDER "JavaScriptCore") set(JavaScriptCore_INCLUDE_DIRECTORIES "${CMAKE_BINARY_DIR}" "${JAVASCRIPTCORE_DIR}" "${JAVASCRIPTCORE_DIR}/.." "${JAVASCRIPTCORE_DIR}/API" "${JAVASCRIPTCORE_DIR}/ForwardingHeaders" "${JAVASCRIPTCORE_DIR}/assembler" "${JAVASCRIPTCORE_DIR}/b3" "${JAVASCRIPTCORE_DIR}/b3/air" "${JAVASCRIPTCORE_DIR}/bindings" "${JAVASCRIPTCORE_DIR}/builtins" "${JAVASCRIPTCORE_DIR}/bytecode" "${JAVASCRIPTCORE_DIR}/bytecompiler" "${JAVASCRIPTCORE_DIR}/dfg" "${JAVASCRIPTCORE_DIR}/disassembler" "${JAVASCRIPTCORE_DIR}/disassembler/udis86" "${JAVASCRIPTCORE_DIR}/disassembler/arm64" "${JAVASCRIPTCORE_DIR}/domjit" "${JAVASCRIPTCORE_DIR}/ftl" "${JAVASCRIPTCORE_DIR}/heap" "${JAVASCRIPTCORE_DIR}/debugger" "${JAVASCRIPTCORE_DIR}/inspector" "${JAVASCRIPTCORE_DIR}/inspector/agents" "${JAVASCRIPTCORE_DIR}/inspector/augmentable" "${JAVASCRIPTCORE_DIR}/inspector/remote" "${JAVASCRIPTCORE_DIR}/interpreter" "${JAVASCRIPTCORE_DIR}/jit" "${JAVASCRIPTCORE_DIR}/llint" "${JAVASCRIPTCORE_DIR}/parser" "${JAVASCRIPTCORE_DIR}/profiler" "${JAVASCRIPTCORE_DIR}/replay" "${JAVASCRIPTCORE_DIR}/runtime" "${JAVASCRIPTCORE_DIR}/tools" "${JAVASCRIPTCORE_DIR}/wasm" "${JAVASCRIPTCORE_DIR}/wasm/js" "${JAVASCRIPTCORE_DIR}/yarr" "${DERIVED_SOURCES_DIR}/ForwardingHeaders" "${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}" "${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/inspector" ) set(JavaScriptCore_SYSTEM_INCLUDE_DIRECTORIES "${ICU_INCLUDE_DIRS}" ) set(JavaScriptCore_SOURCES API/JSBase.cpp API/JSCTestRunnerUtils.cpp API/JSCallbackConstructor.cpp API/JSCallbackFunction.cpp API/JSCallbackObject.cpp API/JSClassRef.cpp API/JSContextRef.cpp API/JSObjectRef.cpp API/JSTypedArray.cpp API/JSScriptRef.cpp API/JSStringRef.cpp API/JSValueRef.cpp API/JSWeakObjectMapRefPrivate.cpp API/OpaqueJSString.cpp assembler/ARMAssembler.cpp assembler/LinkBuffer.cpp assembler/MacroAssembler.cpp assembler/MacroAssemblerARM.cpp assembler/MacroAssemblerARMv7.cpp assembler/MacroAssemblerCodeRef.cpp assembler/MacroAssemblerPrinter.cpp assembler/MacroAssemblerX86Common.cpp b3/air/AirAllocateStack.cpp b3/air/AirArg.cpp b3/air/AirBasicBlock.cpp b3/air/AirCCallSpecial.cpp b3/air/AirCCallingConvention.cpp b3/air/AirCode.cpp b3/air/AirCustom.cpp b3/air/AirDumpAsJS.cpp b3/air/AirEliminateDeadCode.cpp b3/air/AirEmitShuffle.cpp b3/air/AirFixObviousSpills.cpp b3/air/AirFixPartialRegisterStalls.cpp b3/air/AirGenerate.cpp b3/air/AirGenerated.cpp b3/air/AirHandleCalleeSaves.cpp b3/air/AirInsertionSet.cpp b3/air/AirInst.cpp b3/air/AirIteratedRegisterCoalescing.cpp b3/air/AirKind.cpp b3/air/AirLogRegisterPressure.cpp b3/air/AirLowerAfterRegAlloc.cpp b3/air/AirLowerEntrySwitch.cpp b3/air/AirLowerMacros.cpp b3/air/AirOptimizeBlockOrder.cpp b3/air/AirPadInterference.cpp b3/air/AirPhaseScope.cpp b3/air/AirReportUsedRegisters.cpp b3/air/AirSimplifyCFG.cpp b3/air/AirSpecial.cpp b3/air/AirSpillEverything.cpp b3/air/AirStackSlot.cpp b3/air/AirStackSlotKind.cpp b3/air/AirTmp.cpp b3/air/AirTmpWidth.cpp b3/air/AirValidate.cpp b3/B3ArgumentRegValue.cpp b3/B3BasicBlock.cpp b3/B3BlockInsertionSet.cpp b3/B3BreakCriticalEdges.cpp b3/B3CCallValue.cpp b3/B3CaseCollection.cpp b3/B3CheckSpecial.cpp b3/B3CheckValue.cpp b3/B3Common.cpp b3/B3Commutativity.cpp b3/B3Compile.cpp b3/B3Compilation.cpp b3/B3Const32Value.cpp b3/B3Const64Value.cpp b3/B3ConstDoubleValue.cpp b3/B3ConstFloatValue.cpp b3/B3ConstrainedValue.cpp b3/B3DataSection.cpp b3/B3DuplicateTails.cpp b3/B3Effects.cpp b3/B3EliminateCommonSubexpressions.cpp b3/B3FenceValue.cpp b3/B3FixSSA.cpp b3/B3FoldPathConstants.cpp b3/B3FrequencyClass.cpp b3/B3Generate.cpp b3/B3HeapRange.cpp b3/B3InferSwitches.cpp b3/B3InsertionSet.cpp b3/B3Kind.cpp b3/B3LegalizeMemoryOffsets.cpp b3/B3LowerMacros.cpp b3/B3LowerMacrosAfterOptimizations.cpp b3/B3LowerToAir.cpp b3/B3MathExtras.cpp b3/B3MemoryValue.cpp b3/B3MoveConstants.cpp b3/B3OpaqueByproducts.cpp b3/B3Opcode.cpp b3/B3Origin.cpp b3/B3OriginDump.cpp b3/B3PatchpointSpecial.cpp b3/B3PatchpointValue.cpp b3/B3PhaseScope.cpp b3/B3PhiChildren.cpp b3/B3Procedure.cpp b3/B3PureCSE.cpp b3/B3ReduceDoubleToFloat.cpp b3/B3ReduceStrength.cpp b3/B3SSACalculator.cpp b3/B3SlotBaseValue.cpp b3/B3StackmapGenerationParams.cpp b3/B3StackmapSpecial.cpp b3/B3StackmapValue.cpp b3/B3StackSlot.cpp b3/B3SwitchCase.cpp b3/B3SwitchValue.cpp b3/B3TimingScope.cpp b3/B3Type.cpp b3/B3UpsilonValue.cpp b3/B3UseCounts.cpp b3/B3Validate.cpp b3/B3Value.cpp b3/B3ValueKey.cpp b3/B3ValueRep.cpp b3/B3Variable.cpp b3/B3VariableValue.cpp b3/B3WasmAddressValue.cpp b3/B3WasmBoundsCheckValue.cpp bindings/ScriptFunctionCall.cpp bindings/ScriptObject.cpp bindings/ScriptValue.cpp builtins/BuiltinExecutables.cpp builtins/BuiltinExecutableCreator.cpp bytecode/AdaptiveInferredPropertyValueWatchpointBase.cpp bytecode/ArithProfile.cpp bytecode/ArrayAllocationProfile.cpp bytecode/ArrayProfile.cpp bytecode/BytecodeBasicBlock.cpp bytecode/BytecodeGeneratorification.cpp bytecode/BytecodeIntrinsicRegistry.cpp bytecode/BytecodeLivenessAnalysis.cpp bytecode/BytecodeRewriter.cpp bytecode/CallEdge.cpp bytecode/CallLinkInfo.cpp bytecode/CallLinkStatus.cpp bytecode/CallMode.cpp bytecode/CallVariant.cpp bytecode/CodeBlock.cpp bytecode/CodeBlockHash.cpp bytecode/CodeBlockJettisoningWatchpoint.cpp bytecode/CodeOrigin.cpp bytecode/CodeType.cpp bytecode/ComplexGetStatus.cpp bytecode/DFGExitProfile.cpp bytecode/DOMJITAccessCasePatchpointParams.cpp bytecode/DataFormat.cpp bytecode/DeferredCompilationCallback.cpp bytecode/DeferredSourceDump.cpp bytecode/DirectEvalCodeCache.cpp bytecode/EvalCodeBlock.cpp bytecode/ExecutionCounter.cpp bytecode/ExitKind.cpp bytecode/ExitingJITType.cpp bytecode/FunctionCodeBlock.cpp bytecode/GetByIdStatus.cpp bytecode/GetByIdVariant.cpp bytecode/InlineAccess.cpp bytecode/InlineCallFrame.cpp bytecode/InlineCallFrameSet.cpp bytecode/JumpTable.cpp bytecode/LLIntPrototypeLoadAdaptiveStructureWatchpoint.cpp bytecode/LazyOperandValueProfile.cpp bytecode/MethodOfGettingAValueProfile.cpp bytecode/ModuleProgramCodeBlock.cpp bytecode/ObjectPropertyCondition.cpp bytecode/ObjectPropertyConditionSet.cpp bytecode/Opcode.cpp bytecode/PolymorphicAccess.cpp bytecode/PreciseJumpTargets.cpp bytecode/ProgramCodeBlock.cpp bytecode/PropertyCondition.cpp bytecode/PutByIdFlags.cpp bytecode/PutByIdStatus.cpp bytecode/PutByIdVariant.cpp bytecode/ReduceWhitespace.cpp bytecode/SpecialPointer.cpp bytecode/SpeculatedType.cpp bytecode/StructureSet.cpp bytecode/StructureStubClearingWatchpoint.cpp bytecode/StructureStubInfo.cpp bytecode/SuperSampler.cpp bytecode/ToThisStatus.cpp bytecode/TrackedReferences.cpp bytecode/UnlinkedCodeBlock.cpp bytecode/UnlinkedEvalCodeBlock.cpp bytecode/UnlinkedFunctionCodeBlock.cpp bytecode/UnlinkedFunctionExecutable.cpp bytecode/UnlinkedInstructionStream.cpp bytecode/UnlinkedModuleProgramCodeBlock.cpp bytecode/UnlinkedProgramCodeBlock.cpp bytecode/ValueRecovery.cpp bytecode/VariableWriteFireDetail.cpp bytecode/VirtualRegister.cpp bytecode/Watchpoint.cpp bytecompiler/BytecodeGenerator.cpp bytecompiler/NodesCodegen.cpp debugger/Debugger.cpp debugger/DebuggerCallFrame.cpp debugger/DebuggerLocation.cpp debugger/DebuggerParseData.cpp debugger/DebuggerScope.cpp dfg/DFGAbstractHeap.cpp dfg/DFGAbstractValue.cpp dfg/DFGAdaptiveInferredPropertyValueWatchpoint.cpp dfg/DFGAdaptiveStructureWatchpoint.cpp dfg/DFGArgumentsEliminationPhase.cpp dfg/DFGArgumentsUtilities.cpp dfg/DFGArithMode.cpp dfg/DFGArrayMode.cpp dfg/DFGAtTailAbstractState.cpp dfg/DFGAvailability.cpp dfg/DFGAvailabilityMap.cpp dfg/DFGBackwardsPropagationPhase.cpp dfg/DFGBasicBlock.cpp dfg/DFGBlockInsertionSet.cpp dfg/DFGBlockSet.cpp dfg/DFGByteCodeParser.cpp dfg/DFGCFAPhase.cpp dfg/DFGCFGSimplificationPhase.cpp dfg/DFGCPSRethreadingPhase.cpp dfg/DFGCSEPhase.cpp dfg/DFGCapabilities.cpp dfg/DFGCleanUpPhase.cpp dfg/DFGClobberSet.cpp dfg/DFGClobberize.cpp dfg/DFGClobbersExitState.cpp dfg/DFGCombinedLiveness.cpp dfg/DFGCommon.cpp dfg/DFGCommonData.cpp dfg/DFGCompilationKey.cpp dfg/DFGCompilationMode.cpp dfg/DFGConstantFoldingPhase.cpp dfg/DFGConstantHoistingPhase.cpp dfg/DFGCriticalEdgeBreakingPhase.cpp dfg/DFGDCEPhase.cpp dfg/DFGDOMJITPatchpointParams.cpp dfg/DFGDesiredIdentifiers.cpp dfg/DFGDesiredTransitions.cpp dfg/DFGDesiredWatchpoints.cpp dfg/DFGDesiredWeakReferences.cpp dfg/DFGDisassembler.cpp dfg/DFGDoesGC.cpp dfg/DFGDriver.cpp dfg/DFGEdge.cpp dfg/DFGEpoch.cpp dfg/DFGFailedFinalizer.cpp dfg/DFGFinalizer.cpp dfg/DFGFixupPhase.cpp dfg/DFGFlowIndexing.cpp dfg/DFGFlushFormat.cpp dfg/DFGFlushedAt.cpp dfg/DFGLiveCatchVariablePreservationPhase.cpp dfg/DFGFrozenValue.cpp dfg/DFGGraph.cpp dfg/DFGGraphSafepoint.cpp dfg/DFGHeapLocation.cpp dfg/DFGInPlaceAbstractState.cpp dfg/DFGInferredTypeCheck.cpp dfg/DFGInsertionSet.cpp dfg/DFGIntegerCheckCombiningPhase.cpp dfg/DFGIntegerRangeOptimizationPhase.cpp dfg/DFGInvalidationPointInjectionPhase.cpp dfg/DFGJITCode.cpp dfg/DFGJITCompiler.cpp dfg/DFGJITFinalizer.cpp dfg/DFGJumpReplacement.cpp dfg/DFGLICMPhase.cpp dfg/DFGLazyJSValue.cpp dfg/DFGLazyNode.cpp dfg/DFGLivenessAnalysisPhase.cpp dfg/DFGLongLivedState.cpp dfg/DFGLoopPreHeaderCreationPhase.cpp dfg/DFGMaximalFlushInsertionPhase.cpp dfg/DFGMayExit.cpp dfg/DFGMinifiedGraph.cpp dfg/DFGMinifiedNode.cpp dfg/DFGMovHintRemovalPhase.cpp dfg/DFGMultiGetByOffsetData.cpp dfg/DFGNaturalLoops.cpp dfg/DFGNode.cpp dfg/DFGNodeAbstractValuePair.cpp dfg/DFGNodeFlags.cpp dfg/DFGNodeFlowProjection.cpp dfg/DFGNodeOrigin.cpp dfg/DFGOSRAvailabilityAnalysisPhase.cpp dfg/DFGOSREntry.cpp dfg/DFGOSREntrypointCreationPhase.cpp dfg/DFGOSRExit.cpp dfg/DFGOSRExitBase.cpp dfg/DFGOSRExitCompiler.cpp dfg/DFGOSRExitCompiler32_64.cpp dfg/DFGOSRExitCompiler64.cpp dfg/DFGOSRExitCompilerCommon.cpp dfg/DFGOSRExitFuzz.cpp dfg/DFGOSRExitJumpPlaceholder.cpp dfg/DFGOSRExitPreparation.cpp dfg/DFGObjectAllocationSinkingPhase.cpp dfg/DFGObjectMaterializationData.cpp dfg/DFGOperations.cpp dfg/DFGPhantomInsertionPhase.cpp dfg/DFGPhase.cpp dfg/DFGPhiChildren.cpp dfg/DFGPlan.cpp dfg/DFGPrePostNumbering.cpp dfg/DFGPredictionInjectionPhase.cpp dfg/DFGPredictionPropagationPhase.cpp dfg/DFGPromotedHeapLocation.cpp dfg/DFGPureValue.cpp dfg/DFGPutStackSinkingPhase.cpp dfg/DFGRegisteredStructureSet.cpp dfg/DFGSSACalculator.cpp dfg/DFGSSAConversionPhase.cpp dfg/DFGSSALoweringPhase.cpp dfg/DFGSafepoint.cpp dfg/DFGSpeculativeJIT.cpp dfg/DFGSpeculativeJIT32_64.cpp dfg/DFGSpeculativeJIT64.cpp dfg/DFGStackLayoutPhase.cpp dfg/DFGStaticExecutionCountEstimationPhase.cpp dfg/DFGStoreBarrierClusteringPhase.cpp dfg/DFGStoreBarrierInsertionPhase.cpp dfg/DFGStrengthReductionPhase.cpp dfg/DFGStructureAbstractValue.cpp dfg/DFGThreadData.cpp dfg/DFGThunks.cpp dfg/DFGTierUpCheckInjectionPhase.cpp dfg/DFGToFTLDeferredCompilationCallback.cpp dfg/DFGToFTLForOSREntryDeferredCompilationCallback.cpp dfg/DFGTransition.cpp dfg/DFGTypeCheckHoistingPhase.cpp dfg/DFGUnificationPhase.cpp dfg/DFGUseKind.cpp dfg/DFGValidate.cpp dfg/DFGValueSource.cpp dfg/DFGValueStrength.cpp dfg/DFGVarargsForwardingPhase.cpp dfg/DFGVariableAccessData.cpp dfg/DFGVariableAccessDataDump.cpp dfg/DFGVariableEvent.cpp dfg/DFGVariableEventStream.cpp dfg/DFGVirtualRegisterAllocationPhase.cpp dfg/DFGWatchpointCollectionPhase.cpp dfg/DFGWorklist.cpp disassembler/ARM64Disassembler.cpp disassembler/ARMLLVMDisassembler.cpp disassembler/ARMv7Disassembler.cpp disassembler/Disassembler.cpp disassembler/UDis86Disassembler.cpp disassembler/X86Disassembler.cpp disassembler/ARM64/A64DOpcode.cpp disassembler/ARMv7/ARMv7DOpcode.cpp disassembler/udis86/udis86.c disassembler/udis86/udis86_decode.c disassembler/udis86/udis86_itab_holder.c disassembler/udis86/udis86_syn-att.c disassembler/udis86/udis86_syn-intel.c disassembler/udis86/udis86_syn.c domjit/DOMJITAbstractHeap.cpp domjit/DOMJITHeapRange.cpp ftl/FTLAbstractHeap.cpp ftl/FTLAbstractHeapRepository.cpp ftl/FTLAvailableRecovery.cpp ftl/FTLCapabilities.cpp ftl/FTLCommonValues.cpp ftl/FTLCompile.cpp ftl/FTLDOMJITPatchpointParams.cpp ftl/FTLExceptionTarget.cpp ftl/FTLExitArgument.cpp ftl/FTLExitArgumentForOperand.cpp ftl/FTLExitPropertyValue.cpp ftl/FTLExitTimeObjectMaterialization.cpp ftl/FTLExitValue.cpp ftl/FTLFail.cpp ftl/FTLForOSREntryJITCode.cpp ftl/FTLJITCode.cpp ftl/FTLJITFinalizer.cpp ftl/FTLLazySlowPath.cpp ftl/FTLLink.cpp ftl/FTLLocation.cpp ftl/FTLLowerDFGToB3.cpp ftl/FTLOSREntry.cpp ftl/FTLOSRExit.cpp ftl/FTLOSRExitCompiler.cpp ftl/FTLOSRExitHandle.cpp ftl/FTLOperations.cpp ftl/FTLOutput.cpp ftl/FTLPatchpointExceptionHandle.cpp ftl/FTLRecoveryOpcode.cpp ftl/FTLSaveRestore.cpp ftl/FTLSlowPathCall.cpp ftl/FTLSlowPathCallKey.cpp ftl/FTLState.cpp ftl/FTLThunks.cpp ftl/FTLValueRange.cpp heap/AllocatorAttributes.cpp heap/CellContainer.cpp heap/CodeBlockSet.cpp heap/CollectionScope.cpp heap/ConservativeRoots.cpp heap/DeferGC.cpp heap/DestructionMode.cpp heap/EdenGCActivityCallback.cpp heap/FullGCActivityCallback.cpp heap/FreeList.cpp heap/GCActivityCallback.cpp heap/GCLogging.cpp heap/HandleSet.cpp heap/HandleStack.cpp heap/Heap.cpp heap/HeapCell.cpp heap/HeapHelperPool.cpp heap/HeapProfiler.cpp heap/HeapSnapshot.cpp heap/HeapSnapshotBuilder.cpp heap/HeapStatistics.cpp heap/HeapTimer.cpp heap/HeapVerifier.cpp heap/IncrementalSweeper.cpp heap/JITStubRoutineSet.cpp heap/LargeAllocation.cpp heap/LiveObjectList.cpp heap/MachineStackMarker.cpp heap/MarkStack.cpp heap/MarkedAllocator.cpp heap/MarkedBlock.cpp heap/MarkedSpace.cpp heap/MarkingConstraint.cpp heap/MarkingConstraintSet.cpp heap/MutatorScheduler.cpp heap/MutatorState.cpp heap/SlotVisitor.cpp heap/SpaceTimeMutatorScheduler.cpp heap/StochasticSpaceTimeMutatorScheduler.cpp heap/StopIfNecessaryTimer.cpp heap/Subspace.cpp heap/SynchronousStopTheWorldMutatorScheduler.cpp heap/VisitRaceKey.cpp heap/Weak.cpp heap/WeakBlock.cpp heap/WeakHandleOwner.cpp heap/WeakSet.cpp heap/WriteBarrierSupport.cpp inspector/AsyncStackTrace.cpp inspector/ConsoleMessage.cpp inspector/ContentSearchUtilities.cpp inspector/EventLoop.cpp inspector/IdentifiersFactory.cpp inspector/InjectedScript.cpp inspector/InjectedScriptBase.cpp inspector/InjectedScriptHost.cpp inspector/InjectedScriptManager.cpp inspector/InjectedScriptModule.cpp inspector/InspectorAgentRegistry.cpp inspector/InspectorFrontendRouter.cpp inspector/InspectorBackendDispatcher.cpp inspector/InspectorValues.cpp inspector/JSGlobalObjectConsoleClient.cpp inspector/JSGlobalObjectInspectorController.cpp inspector/JSGlobalObjectScriptDebugServer.cpp inspector/JSInjectedScriptHost.cpp inspector/JSInjectedScriptHostPrototype.cpp inspector/JSJavaScriptCallFrame.cpp inspector/JSJavaScriptCallFramePrototype.cpp inspector/JavaScriptCallFrame.cpp inspector/PerGlobalObjectWrapperWorld.cpp inspector/ScriptArguments.cpp inspector/ScriptCallFrame.cpp inspector/ScriptCallStack.cpp inspector/ScriptCallStackFactory.cpp inspector/ScriptDebugServer.cpp inspector/agents/InspectorAgent.cpp inspector/agents/InspectorConsoleAgent.cpp inspector/agents/InspectorDebuggerAgent.cpp inspector/agents/InspectorHeapAgent.cpp inspector/agents/InspectorRuntimeAgent.cpp inspector/agents/InspectorScriptProfilerAgent.cpp inspector/agents/JSGlobalObjectConsoleAgent.cpp inspector/agents/JSGlobalObjectDebuggerAgent.cpp inspector/agents/JSGlobalObjectRuntimeAgent.cpp interpreter/AbstractPC.cpp interpreter/CLoopStack.cpp interpreter/CallFrame.cpp interpreter/Interpreter.cpp interpreter/ProtoCallFrame.cpp interpreter/ShadowChicken.cpp interpreter/StackVisitor.cpp jit/AssemblyHelpers.cpp jit/BinarySwitch.cpp jit/CCallHelpers.cpp jit/CachedRecovery.cpp jit/CallFrameShuffleData.cpp jit/CallFrameShuffler.cpp jit/CallFrameShuffler32_64.cpp jit/CallFrameShuffler64.cpp jit/ExecutableAllocationFuzz.cpp jit/ExecutableAllocator.cpp jit/ExecutableAllocatorFixedVMPool.cpp jit/GCAwareJITStubRoutine.cpp jit/GPRInfo.cpp jit/HostCallReturnValue.cpp jit/ICStats.cpp jit/IntrinsicEmitter.cpp jit/JIT.cpp jit/JITAddGenerator.cpp jit/JITArithmetic.cpp jit/JITArithmetic32_64.cpp jit/JITBitAndGenerator.cpp jit/JITBitOrGenerator.cpp jit/JITBitXorGenerator.cpp jit/JITCall.cpp jit/JITCall32_64.cpp jit/JITCode.cpp jit/JITDisassembler.cpp jit/JITDivGenerator.cpp jit/JITExceptions.cpp jit/JITInlineCacheGenerator.cpp jit/JITLeftShiftGenerator.cpp jit/JITMulGenerator.cpp jit/JITNegGenerator.cpp jit/JITOpcodes.cpp jit/JITOpcodes32_64.cpp jit/JITOperations.cpp jit/JITPropertyAccess.cpp jit/JITPropertyAccess32_64.cpp jit/JITRightShiftGenerator.cpp jit/JITStubRoutine.cpp jit/JITSubGenerator.cpp jit/JITThunks.cpp jit/JITToDFGDeferredCompilationCallback.cpp jit/JITWorklist.cpp jit/PCToCodeOriginMap.cpp jit/PolymorphicCallStubRoutine.cpp jit/Reg.cpp jit/RegisterAtOffset.cpp jit/RegisterAtOffsetList.cpp jit/RegisterSet.cpp jit/Repatch.cpp jit/ScratchRegisterAllocator.cpp jit/SetupVarargsFrame.cpp jit/TagRegistersMode.cpp jit/TempRegisterSet.cpp jit/ThunkGenerators.cpp llint/LLIntCLoop.cpp llint/LLIntData.cpp llint/LLIntEntrypoint.cpp llint/LLIntExceptions.cpp llint/LLIntSlowPaths.cpp llint/LLIntThunks.cpp llint/LowLevelInterpreter.cpp parser/Lexer.cpp parser/ModuleAnalyzer.cpp parser/Nodes.cpp parser/NodesAnalyzeModule.cpp parser/Parser.cpp parser/ParserArena.cpp parser/SourceProvider.cpp parser/SourceProviderCache.cpp parser/UnlinkedSourceCode.cpp parser/VariableEnvironment.cpp profiler/ProfilerBytecode.cpp profiler/ProfilerBytecodeSequence.cpp profiler/ProfilerBytecodes.cpp profiler/ProfilerCompilation.cpp profiler/ProfilerCompilationKind.cpp profiler/ProfilerCompiledBytecode.cpp profiler/ProfilerDatabase.cpp profiler/ProfilerEvent.cpp profiler/ProfilerJettisonReason.cpp profiler/ProfilerOSRExit.cpp profiler/ProfilerOSRExitSite.cpp profiler/ProfilerOrigin.cpp profiler/ProfilerOriginStack.cpp profiler/ProfilerProfiledBytecodes.cpp profiler/ProfilerUID.cpp runtime/AbstractModuleRecord.cpp runtime/ArgList.cpp runtime/ArrayBuffer.cpp runtime/ArrayBufferNeuteringWatchpoint.cpp runtime/ArrayBufferView.cpp runtime/ArrayConstructor.cpp runtime/ArrayConventions.cpp runtime/ArrayIteratorAdaptiveWatchpoint.cpp runtime/ArrayIteratorPrototype.cpp runtime/ArrayPrototype.cpp runtime/AtomicsObject.cpp runtime/AsyncFunctionConstructor.cpp runtime/AsyncFunctionPrototype.cpp runtime/BasicBlockLocation.cpp runtime/BooleanConstructor.cpp runtime/BooleanObject.cpp runtime/BooleanPrototype.cpp runtime/CallData.cpp runtime/CatchScope.cpp runtime/ClonedArguments.cpp runtime/CodeCache.cpp runtime/CodeSpecializationKind.cpp runtime/CommonIdentifiers.cpp runtime/CommonSlowPaths.cpp runtime/CommonSlowPathsExceptions.cpp runtime/CompilationResult.cpp runtime/Completion.cpp runtime/ConsoleClient.cpp runtime/ConsoleObject.cpp runtime/ConstantMode.cpp runtime/ConstructData.cpp runtime/ControlFlowProfiler.cpp runtime/CustomGetterSetter.cpp runtime/DataView.cpp runtime/DateConstructor.cpp runtime/DateConversion.cpp runtime/DateInstance.cpp runtime/DatePrototype.cpp runtime/DirectArguments.cpp runtime/DirectArgumentsOffset.cpp runtime/DirectEvalExecutable.cpp runtime/DumpContext.cpp runtime/ECMAScriptSpecInternalFunctions.cpp runtime/Error.cpp runtime/ErrorConstructor.cpp runtime/ErrorHandlingScope.cpp runtime/ErrorInstance.cpp runtime/ErrorPrototype.cpp runtime/EvalExecutable.cpp runtime/Exception.cpp runtime/ExceptionEventLocation.cpp runtime/ExceptionFuzz.cpp runtime/ExceptionHelpers.cpp runtime/ExceptionScope.cpp runtime/ExecutableBase.cpp runtime/FunctionConstructor.cpp runtime/FunctionExecutable.cpp runtime/FunctionExecutableDump.cpp runtime/FunctionHasExecutedCache.cpp runtime/FunctionPrototype.cpp runtime/FunctionRareData.cpp runtime/GeneratorFunctionConstructor.cpp runtime/GeneratorFunctionPrototype.cpp runtime/GeneratorPrototype.cpp runtime/GetterSetter.cpp runtime/HashMapImpl.cpp runtime/Identifier.cpp runtime/IndexingType.cpp runtime/IndirectEvalExecutable.cpp runtime/InferredType.cpp runtime/InferredTypeTable.cpp runtime/InferredValue.cpp runtime/InitializeThreading.cpp runtime/InspectorInstrumentationObject.cpp runtime/InternalFunction.cpp runtime/IntlCollator.cpp runtime/IntlCollatorConstructor.cpp runtime/IntlCollatorPrototype.cpp runtime/IntlDateTimeFormat.cpp runtime/IntlDateTimeFormatConstructor.cpp runtime/IntlDateTimeFormatPrototype.cpp runtime/IntlNumberFormat.cpp runtime/IntlNumberFormatConstructor.cpp runtime/IntlNumberFormatPrototype.cpp runtime/IntlObject.cpp runtime/IteratorOperations.cpp runtime/IteratorPrototype.cpp runtime/JSAPIValueWrapper.cpp runtime/JSArray.cpp runtime/JSArrayBuffer.cpp runtime/JSArrayBufferConstructor.cpp runtime/JSArrayBufferPrototype.cpp runtime/JSArrayBufferView.cpp runtime/JSAsyncFunction.cpp runtime/JSBoundFunction.cpp runtime/JSCJSValue.cpp runtime/JSCallee.cpp runtime/JSCell.cpp runtime/JSCustomGetterSetterFunction.cpp runtime/JSDataView.cpp runtime/JSDataViewPrototype.cpp runtime/JSDateMath.cpp runtime/JSDestructibleObjectSubspace.cpp runtime/JSEnvironmentRecord.cpp runtime/JSFixedArray.cpp runtime/JSFunction.cpp runtime/JSGeneratorFunction.cpp runtime/JSGlobalLexicalEnvironment.cpp runtime/JSGlobalObject.cpp runtime/JSGlobalObjectDebuggable.cpp runtime/JSGlobalObjectFunctions.cpp runtime/JSInternalPromise.cpp runtime/JSInternalPromiseConstructor.cpp runtime/JSInternalPromiseDeferred.cpp runtime/JSInternalPromisePrototype.cpp runtime/JSJob.cpp runtime/JSLexicalEnvironment.cpp runtime/JSLock.cpp runtime/JSMap.cpp runtime/JSMapIterator.cpp runtime/JSModuleEnvironment.cpp runtime/JSModuleLoader.cpp runtime/JSModuleNamespaceObject.cpp runtime/JSModuleRecord.cpp runtime/JSNativeStdFunction.cpp runtime/JSONObject.cpp runtime/JSObject.cpp runtime/JSPromise.cpp runtime/JSPromiseConstructor.cpp runtime/JSPromiseDeferred.cpp runtime/JSPromisePrototype.cpp runtime/JSPropertyNameEnumerator.cpp runtime/JSPropertyNameIterator.cpp runtime/JSProxy.cpp runtime/JSScope.cpp runtime/JSSegmentedVariableObject.cpp runtime/JSSet.cpp runtime/JSSetIterator.cpp runtime/JSString.cpp runtime/JSStringIterator.cpp runtime/JSStringJoiner.cpp runtime/JSStringSubspace.cpp runtime/JSSymbolTableObject.cpp runtime/JSTemplateRegistryKey.cpp runtime/JSTypedArrayConstructors.cpp runtime/JSTypedArrayPrototypes.cpp runtime/JSTypedArrayViewConstructor.cpp runtime/JSTypedArrayViewPrototype.cpp runtime/JSTypedArrays.cpp runtime/JSWeakMap.cpp runtime/JSWeakSet.cpp runtime/JSWithScope.cpp runtime/JSWrapperObject.cpp runtime/LazyClassStructure.cpp runtime/LiteralParser.cpp runtime/Lookup.cpp runtime/MapBase.cpp runtime/MapConstructor.cpp runtime/MapIteratorPrototype.cpp runtime/MapPrototype.cpp runtime/MatchResult.cpp runtime/MathCommon.cpp runtime/MathObject.cpp runtime/MemoryStatistics.cpp runtime/ModuleLoaderPrototype.cpp runtime/ModuleProgramExecutable.cpp runtime/NativeErrorConstructor.cpp runtime/NativeErrorPrototype.cpp runtime/NativeExecutable.cpp runtime/NativeStdFunctionCell.cpp runtime/NullGetterFunction.cpp runtime/NullSetterFunction.cpp runtime/NumberConstructor.cpp runtime/NumberObject.cpp runtime/NumberPrototype.cpp runtime/ObjectConstructor.cpp runtime/ObjectPrototype.cpp runtime/Operations.cpp runtime/Options.cpp runtime/ProgramExecutable.cpp runtime/PropertyDescriptor.cpp runtime/PropertySlot.cpp runtime/PropertyTable.cpp runtime/PrototypeMap.cpp runtime/ProxyConstructor.cpp runtime/ProxyObject.cpp runtime/ProxyRevoke.cpp runtime/ReflectObject.cpp runtime/RegExp.cpp runtime/RegExpCache.cpp runtime/RegExpCachedResult.cpp runtime/RegExpConstructor.cpp runtime/RegExpMatchesArray.cpp runtime/RegExpObject.cpp runtime/RegExpPrototype.cpp runtime/RuntimeType.cpp runtime/SamplingCounter.cpp runtime/SamplingProfiler.cpp runtime/ScopeOffset.cpp runtime/ScopedArguments.cpp runtime/ScopedArgumentsTable.cpp runtime/ScriptExecutable.cpp runtime/SetConstructor.cpp runtime/SetIteratorPrototype.cpp runtime/SetPrototype.cpp runtime/SimpleTypedArrayController.cpp runtime/SmallStrings.cpp runtime/SparseArrayValueMap.cpp runtime/StackFrame.cpp runtime/StrictEvalActivation.cpp runtime/StringConstructor.cpp runtime/StringIteratorPrototype.cpp runtime/StringObject.cpp runtime/StringPrototype.cpp runtime/StringRecursionChecker.cpp runtime/Structure.cpp runtime/StructureChain.cpp runtime/StructureIDTable.cpp runtime/StructureRareData.cpp runtime/Symbol.cpp runtime/SymbolConstructor.cpp runtime/SymbolObject.cpp runtime/SymbolPrototype.cpp runtime/SymbolTable.cpp runtime/TemplateRegistry.cpp runtime/TemplateRegistryKey.cpp runtime/TemplateRegistryKeyTable.cpp runtime/TestRunnerUtils.cpp runtime/ThrowScope.cpp runtime/TypeLocationCache.cpp runtime/TypeProfiler.cpp runtime/TypeProfilerLog.cpp runtime/TypeSet.cpp runtime/TypedArrayController.cpp runtime/TypedArrayType.cpp runtime/TypeofType.cpp runtime/VM.cpp runtime/VMEntryScope.cpp runtime/VarOffset.cpp runtime/Watchdog.cpp runtime/WeakMapConstructor.cpp runtime/WeakMapData.cpp runtime/WeakMapPrototype.cpp runtime/WeakSetConstructor.cpp runtime/WeakSetPrototype.cpp tools/CodeProfile.cpp tools/CodeProfiling.cpp tools/FunctionOverrides.cpp tools/FunctionWhitelist.cpp tools/JSDollarVM.cpp tools/JSDollarVMPrototype.cpp tools/SigillCrashAnalyzer.cpp tools/VMInspector.cpp wasm/JSWebAssembly.cpp wasm/WasmB3IRGenerator.cpp wasm/WasmBinding.cpp wasm/WasmCallingConvention.cpp wasm/WasmFormat.cpp wasm/WasmMemory.cpp wasm/WasmMemoryInformation.cpp wasm/WasmModuleParser.cpp wasm/WasmPlan.cpp wasm/WasmValidate.cpp wasm/js/JSWebAssemblyCallee.cpp wasm/js/JSWebAssemblyCompileError.cpp wasm/js/JSWebAssemblyInstance.cpp wasm/js/JSWebAssemblyMemory.cpp wasm/js/JSWebAssemblyModule.cpp wasm/js/JSWebAssemblyRuntimeError.cpp wasm/js/JSWebAssemblyTable.cpp wasm/js/WebAssemblyCompileErrorConstructor.cpp wasm/js/WebAssemblyCompileErrorPrototype.cpp wasm/js/WebAssemblyFunction.cpp wasm/js/WebAssemblyInstanceConstructor.cpp wasm/js/WebAssemblyInstancePrototype.cpp wasm/js/WebAssemblyMemoryConstructor.cpp wasm/js/WebAssemblyMemoryPrototype.cpp wasm/js/WebAssemblyModuleConstructor.cpp wasm/js/WebAssemblyModulePrototype.cpp wasm/js/WebAssemblyModuleRecord.cpp wasm/js/WebAssemblyPrototype.cpp wasm/js/WebAssemblyRuntimeErrorConstructor.cpp wasm/js/WebAssemblyRuntimeErrorPrototype.cpp wasm/js/WebAssemblyTableConstructor.cpp wasm/js/WebAssemblyTablePrototype.cpp wasm/js/WebAssemblyToJSCallee.cpp yarr/RegularExpression.cpp yarr/YarrCanonicalizeUCS2.cpp yarr/YarrInterpreter.cpp yarr/YarrJIT.cpp yarr/YarrPattern.cpp yarr/YarrSyntaxChecker.cpp ) # Extra flags for compile sources can go here. if (NOT MSVC) set_source_files_properties(runtime/ProxyObject.cpp PROPERTIES COMPILE_FLAGS -fno-optimize-sibling-calls) else () # FIXME: Investigate if we need to set a similar flag on Windows. endif () set(JavaScriptCore_OBJECT_LUT_SOURCES runtime/ArrayConstructor.cpp runtime/ArrayIteratorPrototype.cpp runtime/BooleanPrototype.cpp runtime/DateConstructor.cpp runtime/DatePrototype.cpp runtime/ErrorPrototype.cpp runtime/GeneratorPrototype.cpp runtime/InspectorInstrumentationObject.cpp runtime/IntlCollatorConstructor.cpp runtime/IntlCollatorPrototype.cpp runtime/IntlDateTimeFormatConstructor.cpp runtime/IntlDateTimeFormatPrototype.cpp runtime/IntlNumberFormatConstructor.cpp runtime/IntlNumberFormatPrototype.cpp runtime/JSDataViewPrototype.cpp runtime/JSGlobalObject.cpp runtime/JSInternalPromiseConstructor.cpp runtime/JSONObject.cpp runtime/JSPromiseConstructor.cpp runtime/JSPromisePrototype.cpp runtime/MapPrototype.cpp runtime/ModuleLoaderPrototype.cpp runtime/NumberConstructor.cpp runtime/NumberPrototype.cpp runtime/ObjectConstructor.cpp runtime/ReflectObject.cpp runtime/RegExpConstructor.cpp runtime/RegExpPrototype.cpp runtime/SetPrototype.cpp runtime/StringConstructor.cpp runtime/StringIteratorPrototype.cpp runtime/StringPrototype.cpp runtime/SymbolConstructor.cpp runtime/SymbolPrototype.cpp wasm/js/WebAssemblyCompileErrorConstructor.cpp wasm/js/WebAssemblyCompileErrorPrototype.cpp wasm/js/WebAssemblyInstanceConstructor.cpp wasm/js/WebAssemblyInstancePrototype.cpp wasm/js/WebAssemblyMemoryConstructor.cpp wasm/js/WebAssemblyMemoryPrototype.cpp wasm/js/WebAssemblyModuleConstructor.cpp wasm/js/WebAssemblyModulePrototype.cpp wasm/js/WebAssemblyPrototype.cpp wasm/js/WebAssemblyRuntimeErrorConstructor.cpp wasm/js/WebAssemblyRuntimeErrorPrototype.cpp wasm/js/WebAssemblyTableConstructor.cpp wasm/js/WebAssemblyTablePrototype.cpp ) set(JavaScriptCore_LIBRARIES WTF${DEBUG_SUFFIX} ${ICU_I18N_LIBRARIES} ${LLVM_LIBRARIES} ) set(JavaScriptCore_SCRIPTS_SOURCES_DIR "${JAVASCRIPTCORE_DIR}/Scripts") # Globbing relies on the fact that generator-specific file names are prefixed with their directory. # Top-level scripts should have a file extension, since they are invoked during the build. set(JavaScriptCore_SCRIPTS_SOURCES_PATHS ${JavaScriptCore_SCRIPTS_SOURCES_DIR}/*.pl ${JavaScriptCore_SCRIPTS_SOURCES_DIR}/*.py ${JavaScriptCore_SCRIPTS_SOURCES_DIR}/builtins/builtins*.py ) # Force JavaScriptCore to run scripts from the same staging path as WebCore. set(JavaScriptCore_SCRIPTS_DIR "${DERIVED_SOURCES_DIR}/ForwardingHeaders/JavaScriptCore/Scripts") file(MAKE_DIRECTORY ${JavaScriptCore_SCRIPTS_DIR}) # The directory flattening performed below mirrors what the Mac port does with private headers. file(GLOB JavaScriptCore_SCRIPTS_SOURCES ${JavaScriptCore_SCRIPTS_SOURCES_PATHS}) foreach (_file ${JavaScriptCore_SCRIPTS_SOURCES}) get_filename_component(_script "${_file}" NAME) add_custom_command( OUTPUT ${JavaScriptCore_SCRIPTS_DIR}/${_script} MAIN_DEPENDENCY ${_file} WORKING_DIRECTORY ${DERIVED_SOURCES_DIR} COMMAND ${CMAKE_COMMAND} -E copy_if_different ${_file} ${JavaScriptCore_SCRIPTS_DIR}/${_script} VERBATIM) list(APPEND JavaScriptCore_SCRIPTS ${JavaScriptCore_SCRIPTS_DIR}/${_script}) endforeach () set(UDIS_GEN_DEP disassembler/udis86/ud_opcode.py ) add_custom_command( OUTPUT ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/udis86_itab.c ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/udis86_itab.h DEPENDS ${UDIS_GEN_DEP} WORKING_DIRECTORY ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR} COMMAND ${PYTHON_EXECUTABLE} ${JAVASCRIPTCORE_DIR}/disassembler/udis86/ud_itab.py ${JAVASCRIPTCORE_DIR}/disassembler/udis86/optable.xml ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR} VERBATIM) list(APPEND JavaScriptCore_HEADERS ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/udis86_itab.h ) set(LLINT_ASM llint/LowLevelInterpreter.asm llint/LowLevelInterpreter32_64.asm llint/LowLevelInterpreter64.asm ) set(OFFLINE_ASM offlineasm/arm.rb offlineasm/arm64.rb offlineasm/ast.rb offlineasm/backends.rb offlineasm/cloop.rb offlineasm/config.rb offlineasm/instructions.rb offlineasm/mips.rb offlineasm/offsets.rb offlineasm/opt.rb offlineasm/parser.rb offlineasm/registers.rb offlineasm/risc.rb offlineasm/self_hash.rb offlineasm/settings.rb offlineasm/sh4.rb offlineasm/transform.rb offlineasm/x86.rb ) add_custom_command( OUTPUT ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/Bytecodes.h ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/InitBytecodes.asm MAIN_DEPENDENCY ${JAVASCRIPTCORE_DIR}/generate-bytecode-files DEPENDS ${JAVASCRIPTCORE_DIR}/generate-bytecode-files bytecode/BytecodeList.json COMMAND ${PYTHON_EXECUTABLE} ${JAVASCRIPTCORE_DIR}/generate-bytecode-files --bytecodes_h ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/Bytecodes.h --init_bytecodes_asm ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/InitBytecodes.asm ${JAVASCRIPTCORE_DIR}/bytecode/BytecodeList.json VERBATIM) list(APPEND JavaScriptCore_HEADERS ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/Bytecodes.h ) add_custom_command( OUTPUT ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/LLIntDesiredOffsets.h MAIN_DEPENDENCY ${JAVASCRIPTCORE_DIR}/offlineasm/generate_offset_extractor.rb DEPENDS ${LLINT_ASM} ${OFFLINE_ASM} ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/InitBytecodes.asm COMMAND ${RUBY_EXECUTABLE} ${JAVASCRIPTCORE_DIR}/offlineasm/generate_offset_extractor.rb -I${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/ ${JAVASCRIPTCORE_DIR}/llint/LowLevelInterpreter.asm ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/LLIntDesiredOffsets.h VERBATIM) # We add the header files directly to the ADD_EXECUTABLE call instead of setting the # OBJECT_DEPENDS property in LLIntOffsetsExtractor.cpp because generate_offset_extractor.rb and # generate-bytecode-files may not regenerate the .h files in case the hash it calculates does not change. # In this case, if some of the dependencies specified in the ADD_CUSTOM_COMMANDs above have # changed the command will always be called because the mtime of the .h files will # always be older than that of their dependencies. # Additionally, setting the OBJECT_DEPENDS property will make the .h files a Makefile # dependency of both LLIntOffsetsExtractor and LLIntOffsetsExtractor.cpp, so the command will # actually be run multiple times! add_executable(LLIntOffsetsExtractor ${JAVASCRIPTCORE_DIR}/llint/LLIntOffsetsExtractor.cpp ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/LLIntDesiredOffsets.h ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/Bytecodes.h ) target_link_libraries(LLIntOffsetsExtractor WTF) # The build system will execute asm.rb every time LLIntOffsetsExtractor's mtime is newer than # LLIntAssembly.h's mtime. The problem we have here is: asm.rb has some built-in optimization # that generates a checksum of the LLIntOffsetsExtractor binary, if the checksum of the new # LLIntOffsetsExtractor matches, no output is generated. To make this target consistent and avoid # running this command for every build, we artificially update LLIntAssembly.h's mtime (using touch) # after every asm.rb run. if (MSVC) set(LLIntOutput LowLevelInterpreterWin.asm) set(OFFLINE_ASM_ARGS --assembler=MASM) else () set(LLIntOutput LLIntAssembly.h) endif () add_custom_command( OUTPUT ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/${LLIntOutput} MAIN_DEPENDENCY ${JAVASCRIPTCORE_DIR}/offlineasm/asm.rb DEPENDS LLIntOffsetsExtractor ${LLINT_ASM} ${OFFLINE_ASM} ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/InitBytecodes.asm COMMAND ${RUBY_EXECUTABLE} ${JAVASCRIPTCORE_DIR}/offlineasm/asm.rb -I${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/ ${JAVASCRIPTCORE_DIR}/llint/LowLevelInterpreter.asm $ ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/${LLIntOutput} ${OFFLINE_ASM_ARGS} COMMAND ${CMAKE_COMMAND} -E touch_nocreate ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/${LLIntOutput} WORKING_DIRECTORY ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR} VERBATIM) # The explanation for not making LLIntAssembly.h part of the OBJECT_DEPENDS property of some of # the .cpp files below is similar to the one in the previous comment. However, since these .cpp # files are used to build JavaScriptCore itself, we can just add LLIntAssembly.h to JSC_HEADERS # since it is used in the add_library() call at the end of this file. if (MSVC) enable_language(ASM_MASM) list(APPEND JavaScriptCore_SOURCES ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/LowLevelInterpreterWin.asm ) # Win32 needs /safeseh with assembly, but Win64 does not. if (CMAKE_SIZEOF_VOID_P EQUAL 4) set_source_files_properties(${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/LowLevelInterpreterWin.asm PROPERTIES COMPILE_FLAGS "/safeseh" ) endif () else () list(APPEND JavaScriptCore_HEADERS ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/LLIntAssembly.h ) endif () # WebAssembly generator macro(GENERATE_PYTHON _generator _input _output) add_custom_command( OUTPUT ${_output} MAIN_DEPENDENCY ${_generator} DEPENDS ${_input} COMMAND ${PYTHON_EXECUTABLE} ${_generator} ${_input} ${_output} VERBATIM) list(APPEND JavaScriptCore_HEADERS ${_output}) ADD_SOURCE_DEPENDENCIES(${_input} ${_output}) endmacro() GENERATE_PYTHON(${CMAKE_CURRENT_SOURCE_DIR}/wasm/generateWasmOpsHeader.py ${CMAKE_CURRENT_SOURCE_DIR}/wasm/wasm.json ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/WasmOps.h) GENERATE_PYTHON(${CMAKE_CURRENT_SOURCE_DIR}/wasm/generateWasmValidateInlinesHeader.py ${CMAKE_CURRENT_SOURCE_DIR}/wasm/wasm.json ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/WasmValidateInlines.h) GENERATE_PYTHON(${CMAKE_CURRENT_SOURCE_DIR}/wasm/generateWasmB3IRGeneratorInlinesHeader.py ${CMAKE_CURRENT_SOURCE_DIR}/wasm/wasm.json ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/WasmB3IRGeneratorInlines.h) # LUT generator set(HASH_LUT_GENERATOR ${CMAKE_CURRENT_SOURCE_DIR}/create_hash_table) macro(GENERATE_HASH_LUT _input _output) add_custom_command( OUTPUT ${_output} MAIN_DEPENDENCY ${HASH_LUT_GENERATOR} DEPENDS ${_input} COMMAND ${PERL_EXECUTABLE} ${HASH_LUT_GENERATOR} ${_input} > ${_output} VERBATIM) list(APPEND JavaScriptCore_HEADERS ${_output}) ADD_SOURCE_DEPENDENCIES(${_input} ${_output}) endmacro() # GENERATOR 1-A: LUT creator foreach (_file ${JavaScriptCore_OBJECT_LUT_SOURCES}) get_filename_component(_name ${_file} NAME_WE) GENERATE_HASH_LUT(${CMAKE_CURRENT_SOURCE_DIR}/${_file} ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/${_name}.lut.h) endforeach () set(JavaScriptCore_FORWARDING_HEADERS_DIRECTORIES API assembler bindings builtins bytecode debugger dfg disassembler domjit heap inspector interpreter jit llint parser profiler replay runtime yarr collector/handles inspector/agents inspector/augmentable inspector/remote ) # GENERATOR 1-B: particular LUT creator (for 1 file only) GENERATE_HASH_LUT(${CMAKE_CURRENT_SOURCE_DIR}/parser/Keywords.table ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/Lexer.lut.h) #GENERATOR: "RegExpJitTables.h": tables used by Yarr add_custom_command( OUTPUT ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/RegExpJitTables.h MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/create_regex_tables COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/create_regex_tables > ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/RegExpJitTables.h VERBATIM) ADD_SOURCE_DEPENDENCIES(${CMAKE_CURRENT_SOURCE_DIR}/yarr/YarrPattern.cpp ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/RegExpJitTables.h) add_custom_command( OUTPUT ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/YarrCanonicalizeUnicode.cpp MAIN_DEPENDENCY ${JAVASCRIPTCORE_DIR}/generateYarrCanonicalizeUnicode DEPENDS ${JAVASCRIPTCORE_DIR}/ucd/CaseFolding.txt COMMAND ${PYTHON_EXECUTABLE} ${JAVASCRIPTCORE_DIR}/generateYarrCanonicalizeUnicode ${JAVASCRIPTCORE_DIR}/ucd/CaseFolding.txt ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/YarrCanonicalizeUnicode.cpp VERBATIM) list(APPEND JavaScriptCore_SOURCES ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/YarrCanonicalizeUnicode.cpp ) #GENERATOR: "KeywordLookup.h": keyword decision tree used by the lexer add_custom_command( OUTPUT ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/KeywordLookup.h MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/KeywordLookupGenerator.py DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/parser/Keywords.table COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/KeywordLookupGenerator.py ${CMAKE_CURRENT_SOURCE_DIR}/parser/Keywords.table > ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/KeywordLookup.h VERBATIM) ADD_SOURCE_DEPENDENCIES(${CMAKE_CURRENT_SOURCE_DIR}/parser/Lexer.cpp ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/KeywordLookup.h) # Inspector Interfaces set(JavaScriptCore_INSPECTOR_SCRIPTS_DIR "${JAVASCRIPTCORE_DIR}/inspector/scripts") set(JavaScriptCore_INSPECTOR_PROTOCOL_SCRIPTS ${JavaScriptCore_INSPECTOR_SCRIPTS_DIR}/generate-inspector-protocol-bindings.py ${JavaScriptCore_INSPECTOR_SCRIPTS_DIR}/codegen/cpp_generator.py ${JavaScriptCore_INSPECTOR_SCRIPTS_DIR}/codegen/cpp_generator_templates.py ${JavaScriptCore_INSPECTOR_SCRIPTS_DIR}/codegen/generate_js_backend_commands.py ${JavaScriptCore_INSPECTOR_SCRIPTS_DIR}/codegen/generate_cpp_backend_dispatcher_header.py ${JavaScriptCore_INSPECTOR_SCRIPTS_DIR}/codegen/generate_cpp_backend_dispatcher_implementation.py ${JavaScriptCore_INSPECTOR_SCRIPTS_DIR}/codegen/generate_cpp_frontend_dispatcher_header.py ${JavaScriptCore_INSPECTOR_SCRIPTS_DIR}/codegen/generate_cpp_frontend_dispatcher_implementation.py ${JavaScriptCore_INSPECTOR_SCRIPTS_DIR}/codegen/generate_cpp_protocol_types_header.py ${JavaScriptCore_INSPECTOR_SCRIPTS_DIR}/codegen/generate_cpp_protocol_types_implementation.py ${JavaScriptCore_INSPECTOR_SCRIPTS_DIR}/codegen/generator.py ${JavaScriptCore_INSPECTOR_SCRIPTS_DIR}/codegen/generator_templates.py ${JavaScriptCore_INSPECTOR_SCRIPTS_DIR}/codegen/__init__.py ${JavaScriptCore_INSPECTOR_SCRIPTS_DIR}/codegen/models.py ) set(JavaScriptCore_INSPECTOR_DOMAINS ${JAVASCRIPTCORE_DIR}/inspector/protocol/ApplicationCache.json ${JAVASCRIPTCORE_DIR}/inspector/protocol/CSS.json ${JAVASCRIPTCORE_DIR}/inspector/protocol/Console.json ${JAVASCRIPTCORE_DIR}/inspector/protocol/DOM.json ${JAVASCRIPTCORE_DIR}/inspector/protocol/DOMDebugger.json ${JAVASCRIPTCORE_DIR}/inspector/protocol/DOMStorage.json ${JAVASCRIPTCORE_DIR}/inspector/protocol/Database.json ${JAVASCRIPTCORE_DIR}/inspector/protocol/Debugger.json ${JAVASCRIPTCORE_DIR}/inspector/protocol/GenericTypes.json ${JAVASCRIPTCORE_DIR}/inspector/protocol/Heap.json ${JAVASCRIPTCORE_DIR}/inspector/protocol/Inspector.json ${JAVASCRIPTCORE_DIR}/inspector/protocol/LayerTree.json ${JAVASCRIPTCORE_DIR}/inspector/protocol/Network.json ${JAVASCRIPTCORE_DIR}/inspector/protocol/OverlayTypes.json ${JAVASCRIPTCORE_DIR}/inspector/protocol/Page.json ${JAVASCRIPTCORE_DIR}/inspector/protocol/Runtime.json ${JAVASCRIPTCORE_DIR}/inspector/protocol/ScriptProfiler.json ${JAVASCRIPTCORE_DIR}/inspector/protocol/Timeline.json ${JAVASCRIPTCORE_DIR}/inspector/protocol/Worker.json ) if (ENABLE_INDEXED_DATABASE) list(APPEND JavaScriptCore_INSPECTOR_DOMAINS ${JAVASCRIPTCORE_DIR}/inspector/protocol/IndexedDB.json ) endif () if (ENABLE_RESOURCE_USAGE) list(APPEND JavaScriptCore_INSPECTOR_DOMAINS ${JAVASCRIPTCORE_DIR}/inspector/protocol/Memory.json ) endif () if (ENABLE_WEB_REPLAY) list(APPEND JavaScriptCore_INSPECTOR_DOMAINS ${JAVASCRIPTCORE_DIR}/inspector/protocol/Replay.json ) endif () add_custom_command( OUTPUT ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/CombinedDomains.json MAIN_DEPENDENCY ${JavaScriptCore_SCRIPTS_DIR}/generate-combined-inspector-json.py DEPENDS ${JavaScriptCore_INSPECTOR_DOMAINS} COMMAND ${PYTHON_EXECUTABLE} ${JavaScriptCore_SCRIPTS_DIR}/generate-combined-inspector-json.py ${JavaScriptCore_INSPECTOR_DOMAINS} > ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/CombinedDomains.json VERBATIM) # Inspector Backend Dispatchers, Frontend Dispatchers, Type Builders file(MAKE_DIRECTORY ${DERIVED_SOURCES_WEBINSPECTORUI_DIR}/UserInterface/Protocol) file(MAKE_DIRECTORY ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/inspector) add_custom_command( OUTPUT ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/inspector/InspectorBackendDispatchers.cpp ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/inspector/InspectorBackendDispatchers.h ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/inspector/InspectorFrontendDispatchers.cpp ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/inspector/InspectorFrontendDispatchers.h ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/inspector/InspectorProtocolObjects.cpp ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/inspector/InspectorProtocolObjects.h ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/inspector/InspectorBackendCommands.js MAIN_DEPENDENCY ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/CombinedDomains.json DEPENDS ${JavaScriptCore_INSPECTOR_PROTOCOL_SCRIPTS} COMMAND ${PYTHON_EXECUTABLE} ${JavaScriptCore_INSPECTOR_SCRIPTS_DIR}/generate-inspector-protocol-bindings.py --outputDir "${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/inspector" --framework JavaScriptCore ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/CombinedDomains.json VERBATIM) # JSCBuiltins set(BUILTINS_GENERATOR_SCRIPTS ${JavaScriptCore_SCRIPTS_DIR}/builtins.py ${JavaScriptCore_SCRIPTS_DIR}/builtins_generator.py ${JavaScriptCore_SCRIPTS_DIR}/builtins_model.py ${JavaScriptCore_SCRIPTS_DIR}/builtins_templates.py ${JavaScriptCore_SCRIPTS_DIR}/builtins_generate_combined_header.py ${JavaScriptCore_SCRIPTS_DIR}/builtins_generate_combined_implementation.py ${JavaScriptCore_SCRIPTS_DIR}/builtins_generate_separate_header.py ${JavaScriptCore_SCRIPTS_DIR}/builtins_generate_separate_implementation.py ${JavaScriptCore_SCRIPTS_DIR}/builtins_generate_wrapper_header.py ${JavaScriptCore_SCRIPTS_DIR}/builtins_generate_wrapper_implementation.py ${JavaScriptCore_SCRIPTS_DIR}/builtins_generate_internals_wrapper_header.py ${JavaScriptCore_SCRIPTS_DIR}/builtins_generate_internals_wrapper_implementation.py ${JavaScriptCore_SCRIPTS_DIR}/generate-js-builtins.py ${JavaScriptCore_SCRIPTS_DIR}/lazywriter.py ) set(JavaScriptCore_BUILTINS_SOURCES ${JAVASCRIPTCORE_DIR}/builtins/ArrayConstructor.js ${JAVASCRIPTCORE_DIR}/builtins/ArrayIteratorPrototype.js ${JAVASCRIPTCORE_DIR}/builtins/ArrayPrototype.js ${JAVASCRIPTCORE_DIR}/builtins/AsyncFunctionPrototype.js ${JAVASCRIPTCORE_DIR}/builtins/DatePrototype.js ${JAVASCRIPTCORE_DIR}/builtins/FunctionPrototype.js ${JAVASCRIPTCORE_DIR}/builtins/GeneratorPrototype.js ${JAVASCRIPTCORE_DIR}/builtins/GlobalObject.js ${JAVASCRIPTCORE_DIR}/builtins/GlobalOperations.js ${JAVASCRIPTCORE_DIR}/builtins/InspectorInstrumentationObject.js ${JAVASCRIPTCORE_DIR}/builtins/InternalPromiseConstructor.js ${JAVASCRIPTCORE_DIR}/builtins/IteratorHelpers.js ${JAVASCRIPTCORE_DIR}/builtins/IteratorPrototype.js ${JAVASCRIPTCORE_DIR}/builtins/MapPrototype.js ${JAVASCRIPTCORE_DIR}/builtins/ModuleLoaderPrototype.js ${JAVASCRIPTCORE_DIR}/builtins/NumberConstructor.js ${JAVASCRIPTCORE_DIR}/builtins/NumberPrototype.js ${JAVASCRIPTCORE_DIR}/builtins/ObjectConstructor.js ${JAVASCRIPTCORE_DIR}/builtins/PromiseConstructor.js ${JAVASCRIPTCORE_DIR}/builtins/PromiseOperations.js ${JAVASCRIPTCORE_DIR}/builtins/PromisePrototype.js ${JAVASCRIPTCORE_DIR}/builtins/ReflectObject.js ${JAVASCRIPTCORE_DIR}/builtins/RegExpPrototype.js ${JAVASCRIPTCORE_DIR}/builtins/SetPrototype.js ${JAVASCRIPTCORE_DIR}/builtins/StringConstructor.js ${JAVASCRIPTCORE_DIR}/builtins/StringIteratorPrototype.js ${JAVASCRIPTCORE_DIR}/builtins/StringPrototype.js ${JAVASCRIPTCORE_DIR}/builtins/TypedArrayConstructor.js ${JAVASCRIPTCORE_DIR}/builtins/TypedArrayPrototype.js ) add_custom_command( OUTPUT ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/AirOpcode.h ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/AirOpcodeGenerated.h MAIN_DEPENDENCY ${JAVASCRIPTCORE_DIR}/b3/air/AirOpcode.opcodes DEPENDS ${JAVASCRIPTCORE_DIR}/b3/air/opcode_generator.rb COMMAND ${RUBY_EXECUTABLE} ${JAVASCRIPTCORE_DIR}/b3/air/opcode_generator.rb ${JAVASCRIPTCORE_DIR}/b3/air/AirOpcode.opcodes VERBATIM WORKING_DIRECTORY ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR} ) list(APPEND JavaScriptCore_SOURCES ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/AirOpcode.h ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/AirOpcodeGenerated.h ) add_custom_command( OUTPUT ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/JSCBuiltins.cpp ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/JSCBuiltins.h MAIN_DEPENDENCY ${JavaScriptCore_SCRIPTS_DIR}/generate-js-builtins.py DEPENDS ${JavaScriptCore_BUILTINS_SOURCES} ${BUILTINS_GENERATOR_SCRIPTS} COMMAND ${PYTHON_EXECUTABLE} ${JavaScriptCore_SCRIPTS_DIR}/generate-js-builtins.py --framework JavaScriptCore --output-directory ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR} --combined ${JavaScriptCore_BUILTINS_SOURCES} VERBATIM) list(APPEND JavaScriptCore_SOURCES ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/inspector/InspectorBackendDispatchers.cpp ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/inspector/InspectorFrontendDispatchers.cpp ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/inspector/InspectorProtocolObjects.cpp ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/JSCBuiltins.cpp ) list(APPEND JavaScriptCore_HEADERS ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/inspector/InspectorBackendDispatchers.h ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/inspector/InspectorFrontendDispatchers.h ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/inspector/InspectorProtocolObjects.h ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/JSCBuiltins.h ) add_custom_command( OUTPUT ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/InjectedScriptSource.h ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/InjectedScriptSource.min.js MAIN_DEPENDENCY ${JAVASCRIPTCORE_DIR}/inspector/InjectedScriptSource.js DEPENDS ${JavaScriptCore_SCRIPTS_DIR}/xxd.pl ${JavaScriptCore_SCRIPTS_DIR}/jsmin.py COMMAND ${CMAKE_COMMAND} -E echo "//# sourceURL=__InjectedScript_InjectedScriptSource.js" > ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/InjectedScriptSource.min.js COMMAND ${PYTHON_EXECUTABLE} ${JavaScriptCore_SCRIPTS_DIR}/jsmin.py < ${JAVASCRIPTCORE_DIR}/inspector/InjectedScriptSource.js >> ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/InjectedScriptSource.min.js COMMAND ${PERL_EXECUTABLE} ${JavaScriptCore_SCRIPTS_DIR}/xxd.pl InjectedScriptSource_js ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/InjectedScriptSource.min.js ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/InjectedScriptSource.h VERBATIM) list(APPEND JavaScriptCore_HEADERS ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/InjectedScriptSource.h) # Web Replay inputs generator if (ENABLE_WEB_REPLAY) set(JavaScript_WEB_REPLAY_INPUTS ${CMAKE_CURRENT_SOURCE_DIR}/replay/JSInputs.json) add_custom_command( OUTPUT ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/JSReplayInputs.h ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/JSReplayInputs.cpp MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/replay/scripts/CodeGeneratorReplayInputs.py DEPENDS ${JavaScript_WEB_REPLAY_INPUTS} COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/replay/scripts/CodeGeneratorReplayInputs.py --outputDir ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/ --framework JavaScriptCore ${JavaScript_WEB_REPLAY_INPUTS} VERBATIM) list(APPEND JavaScriptCore_SOURCES replay/EncodedValue.cpp ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/JSReplayInputs.cpp ) list(APPEND JavaScriptCore_HEADERS ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/JSReplayInputs.h) endif () if (WTF_CPU_ARM) elseif (WTF_CPU_ARM64) elseif (WTF_CPU_HPPA) elseif (WTF_CPU_PPC) elseif (WTF_CPU_PPC64) elseif (WTF_CPU_PPC64LE) elseif (WTF_CPU_S390) elseif (WTF_CPU_S390X) elseif (WTF_CPU_MIPS) elseif (WTF_CPU_SH4) elseif (WTF_CPU_X86) elseif (WTF_CPU_X86_64) if (MSVC AND ENABLE_JIT) add_custom_command( OUTPUT ${DERIVED_SOURCES_DIR}/JITStubsMSVC64.obj MAIN_DEPENDENCY ${JAVASCRIPTCORE_DIR}/jit/JITStubsMSVC64.asm COMMAND ml64 -nologo -c -Fo ${DERIVED_SOURCES_DIR}/JITStubsMSVC64.obj ${JAVASCRIPTCORE_DIR}/jit/JITStubsMSVC64.asm VERBATIM) list(APPEND JavaScriptCore_SOURCES ${DERIVED_SOURCES_DIR}/JITStubsMSVC64.obj) endif () else () message(FATAL_ERROR "Unknown CPU") endif () WEBKIT_INCLUDE_CONFIG_FILES_IF_EXISTS() WEBKIT_CREATE_FORWARDING_HEADERS(JavaScriptCore DIRECTORIES ${JavaScriptCore_FORWARDING_HEADERS_DIRECTORIES} FILES ${JavaScriptCore_FORWARDING_HEADERS_FILES}) target_include_directories(LLIntOffsetsExtractor PRIVATE ${JavaScriptCore_INCLUDE_DIRECTORIES}) add_subdirectory(shell) WEBKIT_WRAP_SOURCELIST(${JavaScriptCore_SOURCES}) WEBKIT_FRAMEWORK(JavaScriptCore) if (NOT "${PORT}" STREQUAL "Mac") if (${JavaScriptCore_LIBRARY_TYPE} STREQUAL "SHARED") POPULATE_LIBRARY_VERSION(JAVASCRIPTCORE) set_target_properties(JavaScriptCore PROPERTIES VERSION ${JAVASCRIPTCORE_VERSION} SOVERSION ${JAVASCRIPTCORE_VERSION_MAJOR}) install(TARGETS JavaScriptCore DESTINATION "${LIB_INSTALL_DIR}") endif () endif () # Force staging of shared scripts, even if they aren't directly used to build JavaScriptCore. add_custom_target(stageSharedScripts DEPENDS ${JavaScriptCore_SCRIPTS}) add_dependencies(JavaScriptCore stageSharedScripts) if (MSVC) add_custom_command( TARGET JavaScriptCore PRE_BUILD COMMAND ${PERL_EXECUTABLE} ${WEBKIT_LIBRARIES_DIR}/tools/scripts/auto-version.pl ${DERIVED_SOURCES_DIR} VERBATIM) add_custom_command( TARGET JavaScriptCore POST_BUILD COMMAND ${PERL_EXECUTABLE} ${WEBKIT_LIBRARIES_DIR}/tools/scripts/version-stamp.pl ${DERIVED_SOURCES_DIR} $ VERBATIM) endif ()