mirror of
https://github.com/darlinghq/darling-JavaScriptCore.git
synced 2024-11-23 04:09:40 +00:00
1457 lines
57 KiB
Plaintext
1457 lines
57 KiB
Plaintext
cmake_minimum_required(VERSION 3.10)
|
|
include(WebKitCommon)
|
|
include(target/TargetWTF)
|
|
set_property(DIRECTORY . PROPERTY FOLDER "JavaScriptCore")
|
|
|
|
list(APPEND JavaScriptCore_UNIFIED_SOURCE_LIST_FILES
|
|
"Sources.txt"
|
|
)
|
|
|
|
set(JavaScriptCore_INCLUDE_DIRECTORIES
|
|
"${JavaScriptCore_FRAMEWORK_HEADERS_DIR}"
|
|
)
|
|
|
|
set(JavaScriptCore_PRIVATE_INCLUDE_DIRECTORIES
|
|
"${CMAKE_BINARY_DIR}"
|
|
"${JAVASCRIPTCORE_DIR}"
|
|
"${JAVASCRIPTCORE_DIR}/API"
|
|
"${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/ARM64"
|
|
"${JAVASCRIPTCORE_DIR}/disassembler/udis86"
|
|
"${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}/runtime"
|
|
"${JAVASCRIPTCORE_DIR}/tools"
|
|
"${JAVASCRIPTCORE_DIR}/wasm"
|
|
"${JAVASCRIPTCORE_DIR}/wasm/js"
|
|
"${JAVASCRIPTCORE_DIR}/yarr"
|
|
"${JavaScriptCore_DERIVED_SOURCES_DIR}"
|
|
"${JavaScriptCore_DERIVED_SOURCES_DIR}/inspector"
|
|
"${JavaScriptCore_DERIVED_SOURCES_DIR}/runtime"
|
|
"${JavaScriptCore_DERIVED_SOURCES_DIR}/yarr"
|
|
)
|
|
|
|
if (USE_CAPSTONE)
|
|
list(APPEND JavaScriptCore_PRIVATE_INCLUDE_DIRECTORIES "${THIRDPARTY_DIR}/capstone/Source/include")
|
|
endif ()
|
|
|
|
set(JavaScriptCore_OBJECT_LUT_SOURCES
|
|
runtime/ArrayConstructor.cpp
|
|
runtime/AsyncFromSyncIteratorPrototype.cpp
|
|
runtime/AsyncGeneratorPrototype.cpp
|
|
runtime/BigIntConstructor.cpp
|
|
runtime/BigIntPrototype.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/IntlDisplayNamesConstructor.cpp
|
|
runtime/IntlDisplayNamesPrototype.cpp
|
|
runtime/IntlListFormatConstructor.cpp
|
|
runtime/IntlListFormatPrototype.cpp
|
|
runtime/IntlLocalePrototype.cpp
|
|
runtime/IntlNumberFormatConstructor.cpp
|
|
runtime/IntlNumberFormatPrototype.cpp
|
|
runtime/IntlObject.cpp
|
|
runtime/IntlPluralRulesConstructor.cpp
|
|
runtime/IntlPluralRulesPrototype.cpp
|
|
runtime/IntlRelativeTimeFormatConstructor.cpp
|
|
runtime/IntlRelativeTimeFormatPrototype.cpp
|
|
runtime/IntlSegmentIteratorPrototype.cpp
|
|
runtime/IntlSegmenterConstructor.cpp
|
|
runtime/IntlSegmenterPrototype.cpp
|
|
runtime/IntlSegmentsPrototype.cpp
|
|
runtime/JSDataViewPrototype.cpp
|
|
runtime/JSGlobalObject.cpp
|
|
runtime/JSInternalPromiseConstructor.cpp
|
|
runtime/JSModuleLoader.cpp
|
|
runtime/JSONObject.cpp
|
|
runtime/JSPromiseConstructor.cpp
|
|
runtime/JSPromisePrototype.cpp
|
|
runtime/MapPrototype.cpp
|
|
runtime/NumberConstructor.cpp
|
|
runtime/NumberPrototype.cpp
|
|
runtime/ObjectConstructor.cpp
|
|
runtime/ReflectObject.cpp
|
|
runtime/RegExpConstructor.cpp
|
|
runtime/RegExpPrototype.cpp
|
|
runtime/RegExpStringIteratorPrototype.cpp
|
|
runtime/SetPrototype.cpp
|
|
runtime/StringConstructor.cpp
|
|
runtime/StringPrototype.cpp
|
|
runtime/SymbolConstructor.cpp
|
|
runtime/SymbolPrototype.cpp
|
|
|
|
wasm/js/JSWebAssembly.cpp
|
|
wasm/js/JSToWasmICCallee.cpp
|
|
wasm/js/WebAssemblyCompileErrorConstructor.cpp
|
|
wasm/js/WebAssemblyCompileErrorPrototype.cpp
|
|
wasm/js/WebAssemblyGlobalConstructor.cpp
|
|
wasm/js/WebAssemblyGlobalPrototype.cpp
|
|
wasm/js/WebAssemblyInstanceConstructor.cpp
|
|
wasm/js/WebAssemblyInstancePrototype.cpp
|
|
wasm/js/WebAssemblyLinkErrorConstructor.cpp
|
|
wasm/js/WebAssemblyLinkErrorPrototype.cpp
|
|
wasm/js/WebAssemblyMemoryConstructor.cpp
|
|
wasm/js/WebAssemblyMemoryPrototype.cpp
|
|
wasm/js/WebAssemblyModuleConstructor.cpp
|
|
wasm/js/WebAssemblyModulePrototype.cpp
|
|
wasm/js/WebAssemblyRuntimeErrorConstructor.cpp
|
|
wasm/js/WebAssemblyRuntimeErrorPrototype.cpp
|
|
wasm/js/WebAssemblyTableConstructor.cpp
|
|
wasm/js/WebAssemblyTablePrototype.cpp
|
|
)
|
|
|
|
set(JavaScriptCore_FRAMEWORKS
|
|
WTF
|
|
)
|
|
if (NOT USE_SYSTEM_MALLOC)
|
|
list(APPEND JavaScriptCore_FRAMEWORKS bmalloc)
|
|
endif ()
|
|
|
|
if (USE_CAPSTONE)
|
|
list(APPEND JavaScriptCore_LIBRARIES capstone)
|
|
endif ()
|
|
|
|
if (ATOMIC_INT64_REQUIRES_LIBATOMIC)
|
|
list(APPEND JavaScriptCore_LIBRARIES atomic)
|
|
endif ()
|
|
|
|
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}/wkbuiltins/builtins*.py
|
|
${JavaScriptCore_SCRIPTS_SOURCES_DIR}/wkbuiltins/wkbuiltins.py
|
|
)
|
|
|
|
# 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 ${JavaScriptCore_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/optable.xml
|
|
disassembler/udis86/ud_itab.py
|
|
disassembler/udis86/ud_opcode.py
|
|
)
|
|
|
|
add_custom_command(
|
|
OUTPUT ${JavaScriptCore_DERIVED_SOURCES_DIR}/udis86_itab.c ${JavaScriptCore_DERIVED_SOURCES_DIR}/udis86_itab.h
|
|
DEPENDS ${UDIS_GEN_DEP}
|
|
WORKING_DIRECTORY ${JavaScriptCore_DERIVED_SOURCES_DIR}
|
|
COMMAND ${PYTHON_EXECUTABLE} ${JAVASCRIPTCORE_DIR}/disassembler/udis86/ud_itab.py ${JAVASCRIPTCORE_DIR}/disassembler/udis86/optable.xml ${JavaScriptCore_DERIVED_SOURCES_DIR}
|
|
VERBATIM)
|
|
|
|
list(APPEND JavaScriptCore_HEADERS
|
|
${JavaScriptCore_DERIVED_SOURCES_DIR}/udis86_itab.h
|
|
)
|
|
|
|
# This is the default build variant for Xcode builds.
|
|
set(BUILD_VARIANTS
|
|
"normal"
|
|
)
|
|
|
|
set(LLINT_ASM
|
|
llint/LowLevelInterpreter.asm
|
|
llint/LowLevelInterpreter32_64.asm
|
|
llint/LowLevelInterpreter64.asm
|
|
llint/WebAssembly.asm
|
|
)
|
|
|
|
set(OFFLINE_ASM
|
|
offlineasm/arm.rb
|
|
offlineasm/arm64.rb
|
|
offlineasm/arm64e.rb
|
|
offlineasm/asm.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/transform.rb
|
|
offlineasm/x86.rb
|
|
)
|
|
|
|
set(GENERATOR
|
|
generator/Argument.rb
|
|
generator/Assertion.rb
|
|
generator/Checkpoints.rb
|
|
generator/DSL.rb
|
|
generator/Fits.rb
|
|
generator/GeneratedFile.rb
|
|
generator/Metadata.rb
|
|
generator/Opcode.rb
|
|
generator/OpcodeGroup.rb
|
|
generator/Options.rb
|
|
generator/Section.rb
|
|
generator/Template.rb
|
|
generator/Type.rb
|
|
generator/Wasm.rb
|
|
generator/main.rb
|
|
)
|
|
|
|
add_custom_command(
|
|
OUTPUT ${JavaScriptCore_DERIVED_SOURCES_DIR}/Bytecodes.h ${JavaScriptCore_DERIVED_SOURCES_DIR}/InitBytecodes.asm ${JavaScriptCore_DERIVED_SOURCES_DIR}/BytecodeStructs.h ${JavaScriptCore_DERIVED_SOURCES_DIR}/BytecodeIndices.h ${JavaScriptCore_DERIVED_SOURCES_DIR}/WasmLLIntGeneratorInlines.h ${JavaScriptCore_DERIVED_SOURCES_DIR}/InitWasm.asm ${JavaScriptCore_DERIVED_SOURCES_DIR}/BytecodeDumperGenerated.cpp
|
|
MAIN_DEPENDENCY ${JAVASCRIPTCORE_DIR}/generator/main.rb
|
|
DEPENDS ${GENERATOR} bytecode/BytecodeList.rb ${JAVASCRIPTCORE_DIR}/wasm/wasm.json
|
|
COMMAND ${RUBY_EXECUTABLE} ${JAVASCRIPTCORE_DIR}/generator/main.rb --bytecodes_h ${JavaScriptCore_DERIVED_SOURCES_DIR}/Bytecodes.h --init_bytecodes_asm ${JavaScriptCore_DERIVED_SOURCES_DIR}/InitBytecodes.asm --bytecode_structs_h ${JavaScriptCore_DERIVED_SOURCES_DIR}/BytecodeStructs.h --bytecode_indices_h ${JavaScriptCore_DERIVED_SOURCES_DIR}/BytecodeIndices.h ${JAVASCRIPTCORE_DIR}/bytecode/BytecodeList.rb --wasm_json ${JAVASCRIPTCORE_DIR}/wasm/wasm.json --wasm_llint_generator_h ${JavaScriptCore_DERIVED_SOURCES_DIR}/WasmLLIntGeneratorInlines.h --init_wasm_llint ${JavaScriptCore_DERIVED_SOURCES_DIR}/InitWasm.asm --bytecode_dumper ${JavaScriptCore_DERIVED_SOURCES_DIR}/BytecodeDumperGenerated.cpp
|
|
VERBATIM)
|
|
add_custom_target(Bytecodes DEPENDS "${JavaScriptCore_DERIVED_SOURCES_DIR}/Bytecodes.h")
|
|
|
|
|
|
if (WTF_OS_MAC_OS_X)
|
|
execute_process(COMMAND bash -c "date +'%s'" OUTPUT_VARIABLE BUILD_TIME OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
else ()
|
|
string(TIMESTAMP BUILD_TIME "%s")
|
|
endif ()
|
|
|
|
list(APPEND JavaScriptCore_HEADERS
|
|
${JavaScriptCore_DERIVED_SOURCES_DIR}/BytecodeStructs.h
|
|
${JavaScriptCore_DERIVED_SOURCES_DIR}/Bytecodes.h
|
|
)
|
|
|
|
if (WIN32)
|
|
set(OFFLINE_ASM_BACKEND "X86_WIN, X86_64_WIN, C_LOOP_WIN")
|
|
else ()
|
|
if (WTF_CPU_X86)
|
|
set(OFFLINE_ASM_BACKEND "X86")
|
|
elseif (WTF_CPU_X86_64)
|
|
set(OFFLINE_ASM_BACKEND "X86_64")
|
|
elseif (WTF_CPU_ARM64)
|
|
set(OFFLINE_ASM_BACKEND "ARM64")
|
|
elseif (ARM_THUMB2_DETECTED)
|
|
set(OFFLINE_ASM_BACKEND "ARMv7")
|
|
elseif (WTF_CPU_MIPS)
|
|
set(OFFLINE_ASM_BACKEND "MIPS")
|
|
endif ()
|
|
|
|
if (NOT ENABLE_JIT)
|
|
if (ENABLE_C_LOOP)
|
|
set(OFFLINE_ASM_BACKEND "C_LOOP")
|
|
endif ()
|
|
endif ()
|
|
endif ()
|
|
|
|
add_custom_command(
|
|
OUTPUT ${JavaScriptCore_DERIVED_SOURCES_DIR}/AirOpcode.h ${JavaScriptCore_DERIVED_SOURCES_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 ${JavaScriptCore_DERIVED_SOURCES_DIR}
|
|
)
|
|
|
|
list(APPEND JavaScriptCore_HEADERS
|
|
${JavaScriptCore_DERIVED_SOURCES_DIR}/AirOpcode.h
|
|
${JavaScriptCore_DERIVED_SOURCES_DIR}/AirOpcodeGenerated.h
|
|
)
|
|
|
|
add_custom_command(
|
|
OUTPUT ${JavaScriptCore_DERIVED_SOURCES_DIR}/LLIntDesiredSettings.h
|
|
MAIN_DEPENDENCY ${JAVASCRIPTCORE_DIR}/offlineasm/generate_settings_extractor.rb
|
|
DEPENDS ${LLINT_ASM} ${OFFLINE_ASM} ${JavaScriptCore_DERIVED_SOURCES_DIR}/InitBytecodes.asm ${JavaScriptCore_DERIVED_SOURCES_DIR}/InitWasm.asm
|
|
COMMAND ${RUBY_EXECUTABLE} ${JAVASCRIPTCORE_DIR}/offlineasm/generate_settings_extractor.rb -I${JavaScriptCore_DERIVED_SOURCES_DIR}/ ${JAVASCRIPTCORE_DIR}/llint/LowLevelInterpreter.asm ${JavaScriptCore_DERIVED_SOURCES_DIR}/LLIntDesiredSettings.h ${OFFLINE_ASM_BACKEND}
|
|
VERBATIM)
|
|
|
|
add_custom_command(
|
|
OUTPUT ${JavaScriptCore_DERIVED_SOURCES_DIR}/LLIntDesiredOffsets.h
|
|
MAIN_DEPENDENCY ${JAVASCRIPTCORE_DIR}/offlineasm/generate_offset_extractor.rb
|
|
DEPENDS LLIntSettingsExtractor ${LLINT_ASM} ${OFFLINE_ASM} ${JavaScriptCore_DERIVED_SOURCES_DIR}/InitBytecodes.asm ${JavaScriptCore_DERIVED_SOURCES_DIR}/InitWasm.asm ${JavaScriptCore_DERIVED_SOURCES_DIR}/AirOpcode.h ${JavaScriptCore_DERIVED_SOURCES_DIR}/WasmOps.h
|
|
COMMAND ${RUBY_EXECUTABLE} ${JAVASCRIPTCORE_DIR}/offlineasm/generate_offset_extractor.rb -I${JavaScriptCore_DERIVED_SOURCES_DIR}/ ${JAVASCRIPTCORE_DIR}/llint/LowLevelInterpreter.asm $<TARGET_FILE:LLIntSettingsExtractor> ${JavaScriptCore_DERIVED_SOURCES_DIR}/LLIntDesiredOffsets.h ${OFFLINE_ASM_BACKEND} ${BUILD_VARIANTS}
|
|
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!
|
|
|
|
WEBKIT_EXECUTABLE_DECLARE(LLIntSettingsExtractor)
|
|
set(LLIntSettingsExtractor_SOURCES
|
|
${JAVASCRIPTCORE_DIR}/llint/LLIntSettingsExtractor.cpp
|
|
${JavaScriptCore_DERIVED_SOURCES_DIR}/LLIntDesiredSettings.h ${JavaScriptCore_DERIVED_SOURCES_DIR}/Bytecodes.h ${JavaScriptCore_DERIVED_SOURCES_DIR}/BytecodeStructs.h
|
|
)
|
|
|
|
set(LLIntSettingsExtractor_PRIVATE_INCLUDE_DIRECTORIES
|
|
$<TARGET_PROPERTY:JavaScriptCore,INCLUDE_DIRECTORIES>
|
|
)
|
|
set(LLIntSettingsExtractor_FRAMEWORKS ${JavaScriptCore_FRAMEWORKS})
|
|
set(LLIntSettingsExtractor_DEPENDENCIES JavaScriptCore_CopyHeaders)
|
|
WEBKIT_EXECUTABLE(LLIntSettingsExtractor)
|
|
|
|
WEBKIT_EXECUTABLE_DECLARE(LLIntOffsetsExtractor)
|
|
set(LLIntOffsetsExtractor_SOURCES
|
|
${JAVASCRIPTCORE_DIR}/llint/LLIntOffsetsExtractor.cpp
|
|
${JavaScriptCore_DERIVED_SOURCES_DIR}/LLIntDesiredOffsets.h ${JavaScriptCore_DERIVED_SOURCES_DIR}/Bytecodes.h ${JavaScriptCore_DERIVED_SOURCES_DIR}/BytecodeStructs.h
|
|
)
|
|
|
|
set(LLIntOffsetsExtractor_PRIVATE_INCLUDE_DIRECTORIES
|
|
$<TARGET_PROPERTY:JavaScriptCore,INCLUDE_DIRECTORIES>
|
|
)
|
|
set(LLIntOffsetsExtractor_FRAMEWORKS ${JavaScriptCore_FRAMEWORKS})
|
|
set(LLIntOffsetsExtractor_DEPENDENCIES JavaScriptCore_CopyHeaders)
|
|
WEBKIT_EXECUTABLE(LLIntOffsetsExtractor)
|
|
|
|
# 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 AND NOT ENABLE_C_LOOP)
|
|
set(LLIntOutput LowLevelInterpreterWin.asm)
|
|
set(OFFLINE_ASM_ARGS --assembler=MASM)
|
|
else ()
|
|
set(LLIntOutput LLIntAssembly.h)
|
|
endif ()
|
|
|
|
add_custom_command(
|
|
OUTPUT ${JavaScriptCore_DERIVED_SOURCES_DIR}/${LLIntOutput}
|
|
MAIN_DEPENDENCY ${JAVASCRIPTCORE_DIR}/offlineasm/asm.rb
|
|
DEPENDS LLIntOffsetsExtractor ${LLINT_ASM} ${OFFLINE_ASM} ${JavaScriptCore_DERIVED_SOURCES_DIR}/InitBytecodes.asm ${JavaScriptCore_DERIVED_SOURCES_DIR}/InitWasm.asm
|
|
COMMAND ${CMAKE_COMMAND} -E env CMAKE_CXX_COMPILER_ID=${CMAKE_CXX_COMPILER_ID} GCC_OFFLINEASM_SOURCE_MAP=${GCC_OFFLINEASM_SOURCE_MAP} ${RUBY_EXECUTABLE} ${JAVASCRIPTCORE_DIR}/offlineasm/asm.rb -I${JavaScriptCore_DERIVED_SOURCES_DIR}/ ${JAVASCRIPTCORE_DIR}/llint/LowLevelInterpreter.asm $<TARGET_FILE:LLIntOffsetsExtractor> ${JavaScriptCore_DERIVED_SOURCES_DIR}/${LLIntOutput} ${BUILD_VARIANTS} ${OFFLINE_ASM_ARGS}
|
|
COMMAND ${CMAKE_COMMAND} -E touch_nocreate ${JavaScriptCore_DERIVED_SOURCES_DIR}/${LLIntOutput}
|
|
WORKING_DIRECTORY ${JavaScriptCore_DERIVED_SOURCES_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 AND NOT ENABLE_C_LOOP)
|
|
enable_language(ASM_MASM)
|
|
if (CMAKE_SIZEOF_VOID_P EQUAL 4)
|
|
# Win32 needs /safeseh with assembly, but Win64 does not.
|
|
set(MASM_EXECUTABLE ml)
|
|
set(LLINT_MASM_FLAGS /safeseh /c /Fo)
|
|
else ()
|
|
set(MASM_EXECUTABLE ml64)
|
|
set(LLINT_MASM_FLAGS /c /Fo)
|
|
endif ()
|
|
add_custom_command(
|
|
OUTPUT ${JavaScriptCore_DERIVED_SOURCES_DIR}/LowLevelInterpreterWin.obj
|
|
DEPENDS ${JavaScriptCore_DERIVED_SOURCES_DIR}/LowLevelInterpreterWin.asm
|
|
COMMAND ${MASM_EXECUTABLE} ${LLINT_MASM_FLAGS} ${JavaScriptCore_DERIVED_SOURCES_DIR}/LowLevelInterpreterWin.obj ${JavaScriptCore_DERIVED_SOURCES_DIR}/LowLevelInterpreterWin.asm
|
|
VERBATIM)
|
|
list(APPEND JavaScriptCore_SOURCES ${JavaScriptCore_DERIVED_SOURCES_DIR}/LowLevelInterpreterWin.obj)
|
|
add_library(LowLevelInterpreterLib OBJECT llint/LowLevelInterpreter.cpp)
|
|
else ()
|
|
# As there's poor toolchain support for using `.file` directives in
|
|
# inline asm (i.e. there's no way to avoid clashes with the `.file`
|
|
# directives generated by the C code in the compilation unit), we
|
|
# introduce a postprocessing pass for the asm that gets assembled into
|
|
# an object file. We only need to do this for LowLevelInterpreter.cpp
|
|
# and cmake doesn't allow us to introduce a compiler wrapper for a
|
|
# single source file, so we need to create a separate target for it.
|
|
add_library(LowLevelInterpreterLib OBJECT llint/LowLevelInterpreter.cpp
|
|
${JavaScriptCore_DERIVED_SOURCES_DIR}/${LLIntOutput})
|
|
endif ()
|
|
|
|
# WebAssembly generator
|
|
|
|
macro(GENERATE_PYTHON _generator _additional_deps _input _output)
|
|
add_custom_command(
|
|
OUTPUT ${_output}
|
|
MAIN_DEPENDENCY ${_generator}
|
|
DEPENDS ${_input} ${_additional_deps}
|
|
COMMAND ${PYTHON_EXECUTABLE} ${_generator} ${_input} ${_output}
|
|
VERBATIM)
|
|
list(APPEND JavaScriptCore_HEADERS ${_output})
|
|
WEBKIT_ADD_SOURCE_DEPENDENCIES(${_input} ${_output})
|
|
endmacro()
|
|
GENERATE_PYTHON(${CMAKE_CURRENT_SOURCE_DIR}/wasm/generateWasmOpsHeader.py ${CMAKE_CURRENT_SOURCE_DIR}/wasm/generateWasm.py ${CMAKE_CURRENT_SOURCE_DIR}/wasm/wasm.json ${JavaScriptCore_DERIVED_SOURCES_DIR}/WasmOps.h)
|
|
GENERATE_PYTHON(${CMAKE_CURRENT_SOURCE_DIR}/wasm/generateWasmB3IRGeneratorInlinesHeader.py ${CMAKE_CURRENT_SOURCE_DIR}/wasm/generateWasm.py ${CMAKE_CURRENT_SOURCE_DIR}/wasm/wasm.json ${JavaScriptCore_DERIVED_SOURCES_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})
|
|
WEBKIT_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} ${JavaScriptCore_DERIVED_SOURCES_DIR}/${_name}.lut.h)
|
|
endforeach ()
|
|
|
|
set(JavaScriptCore_PUBLIC_FRAMEWORK_HEADERS
|
|
API/JSBase.h
|
|
API/JSContextRef.h
|
|
API/JSObjectRef.h
|
|
API/JSStringRef.h
|
|
API/JSTypedArray.h
|
|
API/JSValueRef.h
|
|
API/JavaScript.h
|
|
API/WebKitAvailability.h
|
|
)
|
|
|
|
set(JavaScriptCore_PRIVATE_FRAMEWORK_HEADERS
|
|
${JavaScriptCore_DERIVED_SOURCES_DIR}/Bytecodes.h
|
|
${JavaScriptCore_DERIVED_SOURCES_DIR}/JSCBuiltins.h
|
|
${JavaScriptCore_DERIVED_SOURCES_DIR}/WasmOps.h
|
|
|
|
${JavaScriptCore_DERIVED_SOURCES_DIR}/inspector/InspectorBackendDispatchers.h
|
|
${JavaScriptCore_DERIVED_SOURCES_DIR}/inspector/InspectorFrontendDispatchers.h
|
|
${JavaScriptCore_DERIVED_SOURCES_DIR}/inspector/InspectorProtocolObjects.h
|
|
|
|
API/APICallbackFunction.h
|
|
API/APICast.h
|
|
API/APIUtils.h
|
|
API/JSAPIValueWrapper.h
|
|
API/JSAPIWrapperObject.h
|
|
API/JSBasePrivate.h
|
|
API/JSCTestRunnerUtils.h
|
|
API/JSCallbackConstructor.h
|
|
API/JSCallbackFunction.h
|
|
API/JSCallbackObject.h
|
|
API/JSCallbackObjectFunctions.h
|
|
API/JSClassRef.h
|
|
API/JSContextInternal.h
|
|
API/JSContextPrivate.h
|
|
API/JSContextRefInspectorSupport.h
|
|
API/JSContextRefInternal.h
|
|
API/JSContextRefPrivate.h
|
|
API/JSHeapFinalizerPrivate.h
|
|
API/JSManagedValueInternal.h
|
|
API/JSMarkingConstraintPrivate.h
|
|
API/JSObjectRefPrivate.h
|
|
API/JSRemoteInspector.h
|
|
API/JSRetainPtr.h
|
|
API/JSScriptRefPrivate.h
|
|
API/JSStringRefPrivate.h
|
|
API/JSValueInternal.h
|
|
API/JSValuePrivate.h
|
|
API/JSVirtualMachineInternal.h
|
|
API/JSWeakObjectMapRefInternal.h
|
|
API/JSWeakObjectMapRefPrivate.h
|
|
API/JSWeakPrivate.h
|
|
API/JSWrapperMap.h
|
|
API/ObjCCallbackFunction.h
|
|
API/ObjcRuntimeExtras.h
|
|
API/OpaqueJSString.h
|
|
|
|
assembler/ARM64Assembler.h
|
|
assembler/ARM64Registers.h
|
|
assembler/ARMv7Assembler.h
|
|
assembler/ARMv7Registers.h
|
|
assembler/AbortReason.h
|
|
assembler/AbstractMacroAssembler.h
|
|
assembler/AssemblerBuffer.h
|
|
assembler/AssemblerCommon.h
|
|
assembler/CPU.h
|
|
assembler/CodeLocation.h
|
|
assembler/FastJITPermissions.h
|
|
assembler/JITOperationList.h
|
|
assembler/LinkBuffer.h
|
|
assembler/MIPSAssembler.h
|
|
assembler/MIPSRegisters.h
|
|
assembler/MacroAssembler.h
|
|
assembler/MacroAssemblerARM64.h
|
|
assembler/MacroAssemblerARMv7.h
|
|
assembler/MacroAssemblerCodeRef.h
|
|
assembler/MacroAssemblerHelpers.h
|
|
assembler/MacroAssemblerMIPS.h
|
|
assembler/MacroAssemblerX86.h
|
|
assembler/MacroAssemblerX86Common.h
|
|
assembler/MacroAssemblerX86_64.h
|
|
assembler/Printer.h
|
|
assembler/RegisterInfo.h
|
|
assembler/X86Assembler.h
|
|
assembler/X86Registers.h
|
|
assembler/X86_64Registers.h
|
|
|
|
b3/B3Common.h
|
|
b3/B3Compilation.h
|
|
b3/B3Type.h
|
|
|
|
bindings/ScriptFunctionCall.h
|
|
bindings/ScriptObject.h
|
|
bindings/ScriptValue.h
|
|
|
|
builtins/BuiltinNames.h
|
|
builtins/BuiltinUtils.h
|
|
|
|
bytecode/ArrayAllocationProfile.h
|
|
bytecode/ArrayProfile.h
|
|
bytecode/BytecodeConventions.h
|
|
bytecode/BytecodeIndex.h
|
|
bytecode/BytecodeIntrinsicRegistry.h
|
|
bytecode/CallEdge.h
|
|
bytecode/CallLinkInfo.h
|
|
bytecode/CallMode.h
|
|
bytecode/CallVariant.h
|
|
bytecode/CodeBlock.h
|
|
bytecode/CodeBlockHash.h
|
|
bytecode/CodeOrigin.h
|
|
bytecode/CodeType.h
|
|
bytecode/DFGExitProfile.h
|
|
bytecode/DataFormat.h
|
|
bytecode/DeleteByIdVariant.h
|
|
bytecode/DeleteByStatus.h
|
|
bytecode/DirectEvalCodeCache.h
|
|
bytecode/ExecutableInfo.h
|
|
bytecode/ExecutableToCodeBlockEdge.h
|
|
bytecode/ExecutionCounter.h
|
|
bytecode/ExitKind.h
|
|
bytecode/ExitingInlineKind.h
|
|
bytecode/ExitingJITType.h
|
|
bytecode/ExpressionRangeInfo.h
|
|
bytecode/HandlerInfo.h
|
|
bytecode/ICStatusMap.h
|
|
bytecode/InlineCallFrame.h
|
|
bytecode/Instruction.h
|
|
bytecode/InstructionStream.h
|
|
bytecode/InternalFunctionAllocationProfile.h
|
|
bytecode/JumpTable.h
|
|
bytecode/LLIntCallLinkInfo.h
|
|
bytecode/LLIntPrototypeLoadAdaptiveStructureWatchpoint.h
|
|
bytecode/LazyOperandValueProfile.h
|
|
bytecode/LinkTimeConstant.h
|
|
bytecode/MetadataTable.h
|
|
bytecode/ObjectAllocationProfile.h
|
|
bytecode/ObjectPropertyCondition.h
|
|
bytecode/Opcode.h
|
|
bytecode/OpcodeSize.h
|
|
bytecode/Operands.h
|
|
bytecode/PropertyCondition.h
|
|
bytecode/PutByIdFlags.h
|
|
bytecode/SpeculatedType.h
|
|
bytecode/StructureSet.h
|
|
bytecode/SuperSampler.h
|
|
bytecode/ToThisStatus.h
|
|
bytecode/TypeLocation.h
|
|
bytecode/UnlinkedCodeBlock.h
|
|
bytecode/UnlinkedEvalCodeBlock.h
|
|
bytecode/UnlinkedFunctionExecutable.h
|
|
bytecode/UnlinkedGlobalCodeBlock.h
|
|
bytecode/UnlinkedMetadataTable.h
|
|
bytecode/ValueProfile.h
|
|
bytecode/ValueRecovery.h
|
|
bytecode/VariableWriteFireDetail.h
|
|
bytecode/VirtualRegister.h
|
|
bytecode/Watchpoint.h
|
|
|
|
debugger/Breakpoint.h
|
|
debugger/Debugger.h
|
|
debugger/DebuggerCallFrame.h
|
|
debugger/DebuggerParseData.h
|
|
debugger/DebuggerPrimitives.h
|
|
|
|
dfg/DFGCodeOriginPool.h
|
|
dfg/DFGCommon.h
|
|
dfg/DFGCompilationMode.h
|
|
dfg/DFGDoesGCCheck.h
|
|
dfg/DFGMinifiedID.h
|
|
|
|
domjit/DOMJITAbstractHeap.h
|
|
domjit/DOMJITCallDOMGetterSnippet.h
|
|
domjit/DOMJITEffect.h
|
|
domjit/DOMJITGetterSetter.h
|
|
domjit/DOMJITHeapRange.h
|
|
domjit/DOMJITSignature.h
|
|
|
|
heap/AlignedMemoryAllocator.h
|
|
heap/AllocationFailureMode.h
|
|
heap/Allocator.h
|
|
heap/AllocatorInlines.h
|
|
heap/AllocatorForMode.h
|
|
heap/BlockDirectory.h
|
|
heap/BlockDirectoryBits.h
|
|
heap/BlockDirectoryInlines.h
|
|
heap/CellAttributes.h
|
|
heap/CellContainer.h
|
|
heap/CellContainerInlines.h
|
|
heap/CellState.h
|
|
heap/CollectionScope.h
|
|
heap/CollectorPhase.h
|
|
heap/CompleteSubspace.h
|
|
heap/CompleteSubspaceInlines.h
|
|
heap/ConstraintConcurrency.h
|
|
heap/ConstraintParallelism.h
|
|
heap/ConstraintVolatility.h
|
|
heap/DeferGC.h
|
|
heap/DeleteAllCodeEffort.h
|
|
heap/DestructionMode.h
|
|
heap/FastMallocAlignedMemoryAllocator.h
|
|
heap/FreeList.h
|
|
heap/FreeListInlines.h
|
|
heap/GCActivityCallback.h
|
|
heap/GCAssertions.h
|
|
heap/GCConductor.h
|
|
heap/GCDeferralContext.h
|
|
heap/GCIncomingRefCounted.h
|
|
heap/GCIncomingRefCountedInlines.h
|
|
heap/GCIncomingRefCountedSet.h
|
|
heap/GCLogging.h
|
|
heap/GCMemoryOperations.h
|
|
heap/GCRequest.h
|
|
heap/GCSegmentedArray.h
|
|
heap/Handle.h
|
|
heap/HandleBlock.h
|
|
heap/HandleSet.h
|
|
heap/HandleTypes.h
|
|
heap/Heap.h
|
|
heap/HeapAnalyzer.h
|
|
heap/HeapCell.h
|
|
heap/HeapCellInlines.h
|
|
heap/HeapCellType.h
|
|
heap/HeapFinalizerCallback.h
|
|
heap/HeapInlines.h
|
|
heap/HeapObserver.h
|
|
heap/HeapSnapshotBuilder.h
|
|
heap/IncrementalSweeper.h
|
|
heap/IsoCellSet.h
|
|
heap/IsoHeapCellType.h
|
|
heap/IsoSubspace.h
|
|
heap/IsoSubspaceInlines.h
|
|
heap/IsoSubspacePerVM.h
|
|
heap/LocalAllocator.h
|
|
heap/LocalAllocatorInlines.h
|
|
heap/LockDuringMarking.h
|
|
heap/MachineStackMarker.h
|
|
heap/MarkStack.h
|
|
heap/MarkedBlock.h
|
|
heap/MarkedBlockInlines.h
|
|
heap/MarkedBlockSet.h
|
|
heap/MarkedSpace.h
|
|
heap/MarkingConstraint.h
|
|
heap/MutatorState.h
|
|
heap/PackedCellPtr.h
|
|
heap/PreciseAllocation.h
|
|
heap/RegisterState.h
|
|
heap/RunningScope.h
|
|
heap/SimpleMarkingConstraint.h
|
|
heap/SlotVisitor.h
|
|
heap/SlotVisitorInlines.h
|
|
heap/Strong.h
|
|
heap/StrongInlines.h
|
|
heap/Subspace.h
|
|
heap/SubspaceInlines.h
|
|
heap/Synchronousness.h
|
|
heap/TinyBloomFilter.h
|
|
heap/VisitRaceKey.h
|
|
heap/Weak.h
|
|
heap/WeakBlock.h
|
|
heap/WeakHandleOwner.h
|
|
heap/WeakImpl.h
|
|
heap/WeakInlines.h
|
|
heap/WeakSet.h
|
|
heap/WeakSetInlines.h
|
|
|
|
inspector/ConsoleMessage.h
|
|
inspector/ContentSearchUtilities.h
|
|
inspector/IdentifiersFactory.h
|
|
inspector/InjectedScript.h
|
|
inspector/InjectedScriptBase.h
|
|
inspector/InjectedScriptHost.h
|
|
inspector/InjectedScriptManager.h
|
|
inspector/InjectedScriptModule.h
|
|
inspector/InspectorAgentBase.h
|
|
inspector/InspectorAgentRegistry.h
|
|
inspector/InspectorBackendDispatcher.h
|
|
inspector/InspectorEnvironment.h
|
|
inspector/InspectorFrontendChannel.h
|
|
inspector/InspectorFrontendRouter.h
|
|
inspector/InspectorProtocolTypes.h
|
|
inspector/InspectorTarget.h
|
|
inspector/PerGlobalObjectWrapperWorld.h
|
|
inspector/ScriptArguments.h
|
|
inspector/ScriptCallFrame.h
|
|
inspector/ScriptCallStack.h
|
|
inspector/ScriptCallStackFactory.h
|
|
|
|
inspector/agents/InspectorAgent.h
|
|
inspector/agents/InspectorAuditAgent.h
|
|
inspector/agents/InspectorConsoleAgent.h
|
|
inspector/agents/InspectorDebuggerAgent.h
|
|
inspector/agents/InspectorHeapAgent.h
|
|
inspector/agents/InspectorRuntimeAgent.h
|
|
inspector/agents/InspectorScriptProfilerAgent.h
|
|
inspector/agents/InspectorTargetAgent.h
|
|
|
|
inspector/augmentable/AugmentableInspectorControllerClient.h
|
|
|
|
inspector/remote/RemoteAutomationTarget.h
|
|
inspector/remote/RemoteControllableTarget.h
|
|
inspector/remote/RemoteInspectionTarget.h
|
|
inspector/remote/RemoteInspector.h
|
|
|
|
interpreter/AbstractPC.h
|
|
interpreter/CallFrame.h
|
|
interpreter/CallFrameInlines.h
|
|
interpreter/CalleeBits.h
|
|
interpreter/EntryFrame.h
|
|
interpreter/FrameTracers.h
|
|
interpreter/Register.h
|
|
interpreter/RegisterInlines.h
|
|
interpreter/ShadowChicken.h
|
|
interpreter/StackVisitor.h
|
|
interpreter/VMEntryRecord.h
|
|
|
|
jit/AssemblyHelpers.h
|
|
jit/CCallHelpers.h
|
|
jit/ExecutableAllocator.h
|
|
jit/FPRInfo.h
|
|
jit/GCAwareJITStubRoutine.h
|
|
jit/GPRInfo.h
|
|
jit/JITAllocator.h
|
|
jit/JITCode.h
|
|
jit/JITCodeMap.h
|
|
jit/JITCompilationEffort.h
|
|
jit/JITMathICForwards.h
|
|
jit/JITOperations.h
|
|
jit/JITStubRoutine.h
|
|
jit/JITThunks.h
|
|
jit/PolymorphicCallStubRoutine.h
|
|
jit/Reg.h
|
|
jit/RegisterAtOffset.h
|
|
jit/RegisterAtOffsetList.h
|
|
jit/RegisterSet.h
|
|
jit/Snippet.h
|
|
jit/SnippetParams.h
|
|
jit/SnippetReg.h
|
|
jit/SnippetSlowPathCalls.h
|
|
jit/SpillRegistersMode.h
|
|
jit/TagRegistersMode.h
|
|
jit/TempRegisterSet.h
|
|
jit/ThunkGenerator.h
|
|
jit/UnusedPointer.h
|
|
|
|
llint/LLIntOpcode.h
|
|
|
|
parser/Lexer.h
|
|
parser/ParserArena.h
|
|
parser/ParserError.h
|
|
parser/ParserModes.h
|
|
parser/ParserTokens.h
|
|
parser/SourceCode.h
|
|
parser/SourceProvider.h
|
|
parser/SourceProviderCache.h
|
|
parser/SourceProviderCacheItem.h
|
|
parser/UnlinkedSourceCode.h
|
|
parser/VariableEnvironment.h
|
|
|
|
profiler/ProfilerBytecode.h
|
|
profiler/ProfilerBytecodeSequence.h
|
|
profiler/ProfilerBytecodes.h
|
|
profiler/ProfilerCompilation.h
|
|
profiler/ProfilerCompilationKind.h
|
|
profiler/ProfilerCompiledBytecode.h
|
|
profiler/ProfilerDatabase.h
|
|
profiler/ProfilerEvent.h
|
|
profiler/ProfilerExecutionCounter.h
|
|
profiler/ProfilerJettisonReason.h
|
|
profiler/ProfilerOSRExit.h
|
|
profiler/ProfilerOSRExitSite.h
|
|
profiler/ProfilerOrigin.h
|
|
profiler/ProfilerOriginStack.h
|
|
profiler/ProfilerProfiledBytecodes.h
|
|
profiler/ProfilerUID.h
|
|
|
|
runtime/AbstractModuleRecord.h
|
|
runtime/ArgList.h
|
|
runtime/ArityCheckMode.h
|
|
runtime/ArrayConstructor.h
|
|
runtime/ArrayBuffer.h
|
|
runtime/ArrayBufferSharingMode.h
|
|
runtime/ArrayBufferView.h
|
|
runtime/ArrayConventions.h
|
|
runtime/ArrayPrototype.h
|
|
runtime/ArrayStorage.h
|
|
runtime/ArrayStorageInlines.h
|
|
runtime/AuxiliaryBarrier.h
|
|
runtime/AuxiliaryBarrierInlines.h
|
|
runtime/BasicBlockLocation.h
|
|
runtime/BatchedTransitionOptimizer.h
|
|
runtime/BigIntObject.h
|
|
runtime/BigIntPrototype.h
|
|
runtime/BooleanObject.h
|
|
runtime/BooleanPrototype.h
|
|
runtime/Butterfly.h
|
|
runtime/ButterflyInlines.h
|
|
runtime/BytecodeCacheError.h
|
|
runtime/CachePayload.h
|
|
runtime/CacheUpdate.h
|
|
runtime/CacheableIdentifier.h
|
|
runtime/CacheableIdentifierInlines.h
|
|
runtime/CachedBytecode.h
|
|
runtime/CachedTypes.h
|
|
runtime/CagedBarrierPtr.h
|
|
runtime/CallData.h
|
|
runtime/CatchScope.h
|
|
runtime/CellSize.h
|
|
runtime/ClassInfo.h
|
|
runtime/CodeSpecializationKind.h
|
|
runtime/CommonIdentifiers.h
|
|
runtime/CompilationResult.h
|
|
runtime/Completion.h
|
|
runtime/Concurrency.h
|
|
runtime/ConcurrentJSLock.h
|
|
runtime/ConfigFile.h
|
|
runtime/ConsoleClient.h
|
|
runtime/ConsoleTypes.h
|
|
runtime/ConstantMode.h
|
|
runtime/ConstructAbility.h
|
|
runtime/ConstructData.h
|
|
runtime/ConstructorKind.h
|
|
runtime/ControlFlowProfiler.h
|
|
runtime/CustomGetterSetter.h
|
|
runtime/DOMAnnotation.h
|
|
runtime/DOMAttributeGetterSetter.h
|
|
runtime/DataView.h
|
|
runtime/DateInstance.h
|
|
runtime/DateInstanceCache.h
|
|
runtime/DeferredWorkTimer.h
|
|
runtime/DefinePropertyAttributes.h
|
|
runtime/DeletePropertySlot.h
|
|
runtime/DirectArgumentsOffset.h
|
|
runtime/DirectEvalExecutable.h
|
|
runtime/DisallowScope.h
|
|
runtime/DisallowVMEntry.h
|
|
runtime/DumpContext.h
|
|
runtime/ECMAMode.h
|
|
runtime/EnsureStillAliveHere.h
|
|
runtime/EnumerationMode.h
|
|
runtime/Error.h
|
|
runtime/ErrorHandlingScope.h
|
|
runtime/ErrorInstance.h
|
|
runtime/ErrorPrototype.h
|
|
runtime/ErrorType.h
|
|
runtime/EvalExecutable.h
|
|
runtime/Exception.h
|
|
runtime/ExceptionEventLocation.h
|
|
runtime/ExceptionHelpers.h
|
|
runtime/ExceptionScope.h
|
|
runtime/ExecutableBase.h
|
|
runtime/ExecutableBaseInlines.h
|
|
runtime/Float32Array.h
|
|
runtime/Float64Array.h
|
|
runtime/FunctionConstructor.h
|
|
runtime/FunctionExecutable.h
|
|
runtime/FunctionHasExecutedCache.h
|
|
runtime/FunctionPrototype.h
|
|
runtime/FunctionRareData.h
|
|
runtime/FuzzerAgent.h
|
|
runtime/Gate.h
|
|
runtime/GenericOffset.h
|
|
runtime/GenericTypedArrayView.h
|
|
runtime/GenericTypedArrayViewInlines.h
|
|
runtime/GetPutInfo.h
|
|
runtime/GetVM.h
|
|
runtime/GlobalExecutable.h
|
|
runtime/HashMapImpl.h
|
|
runtime/Identifier.h
|
|
runtime/IdentifierInlines.h
|
|
runtime/IndexingHeader.h
|
|
runtime/IndexingHeaderInlines.h
|
|
runtime/IndexingType.h
|
|
runtime/InferredValue.h
|
|
runtime/InitializeThreading.h
|
|
runtime/Int16Array.h
|
|
runtime/Int32Array.h
|
|
runtime/Int8Array.h
|
|
runtime/InternalFunction.h
|
|
runtime/Intrinsic.h
|
|
runtime/IterationKind.h
|
|
runtime/IterationStatus.h
|
|
runtime/IteratorOperations.h
|
|
runtime/IteratorPrototype.h
|
|
runtime/JSArray.h
|
|
runtime/JSArrayBuffer.h
|
|
runtime/JSArrayBufferPrototype.h
|
|
runtime/JSArrayBufferView.h
|
|
runtime/JSArrayBufferViewInlines.h
|
|
runtime/JSBigInt.h
|
|
runtime/JSCConfig.h
|
|
runtime/JSCInlines.h
|
|
runtime/JSCJSValue.h
|
|
runtime/JSCJSValueInlines.h
|
|
runtime/JSCPtrTag.h
|
|
runtime/JSCallee.h
|
|
runtime/JSCast.h
|
|
runtime/JSCell.h
|
|
runtime/JSCellInlines.h
|
|
runtime/JSDataView.h
|
|
runtime/JSDateMath.h
|
|
runtime/JSDestructibleObject.h
|
|
runtime/JSDestructibleObjectHeapCellType.h
|
|
runtime/JSExportMacros.h
|
|
runtime/JSFunction.h
|
|
runtime/JSFunctionInlines.h
|
|
runtime/JSGenericTypedArrayView.h
|
|
runtime/JSGenericTypedArrayViewInlines.h
|
|
runtime/JSGenericTypedArrayViewPrototype.h
|
|
runtime/JSGenericTypedArrayViewPrototypeInlines.h
|
|
runtime/JSGlobalLexicalEnvironment.h
|
|
runtime/JSGlobalObject.h
|
|
runtime/JSGlobalObjectFunctions.h
|
|
runtime/JSGlobalObjectInlines.h
|
|
runtime/JSImmutableButterfly.h
|
|
runtime/JSInternalFieldObjectImpl.h
|
|
runtime/JSInternalPromise.h
|
|
runtime/JSMicrotask.h
|
|
runtime/JSLock.h
|
|
runtime/JSMap.h
|
|
runtime/JSMapIterator.h
|
|
runtime/JSModuleLoader.h
|
|
runtime/JSModuleRecord.h
|
|
runtime/JSNativeStdFunction.h
|
|
runtime/JSONObject.h
|
|
runtime/JSObject.h
|
|
runtime/JSObjectInlines.h
|
|
runtime/JSPromise.h
|
|
runtime/JSPromiseConstructor.h
|
|
runtime/JSPropertyNameEnumerator.h
|
|
runtime/JSProxy.h
|
|
runtime/JSRunLoopTimer.h
|
|
runtime/JSScope.h
|
|
runtime/JSScriptFetchParameters.h
|
|
runtime/JSScriptFetcher.h
|
|
runtime/JSSegmentedVariableObject.h
|
|
runtime/JSSet.h
|
|
runtime/JSSetIterator.h
|
|
runtime/JSSourceCode.h
|
|
runtime/JSString.h
|
|
runtime/JSStringInlines.h
|
|
runtime/JSSymbolTableObject.h
|
|
runtime/JSType.h
|
|
runtime/JSTypeInfo.h
|
|
runtime/JSTypedArrays.h
|
|
runtime/JSWithScope.h
|
|
runtime/JSWrapperObject.h
|
|
runtime/LazyClassStructure.h
|
|
runtime/LazyProperty.h
|
|
runtime/LeafExecutable.h
|
|
runtime/Lookup.h
|
|
runtime/MatchResult.h
|
|
runtime/MathCommon.h
|
|
runtime/MemoryStatistics.h
|
|
runtime/Microtask.h
|
|
runtime/ModuleProgramExecutable.h
|
|
runtime/NativeExecutable.h
|
|
runtime/NativeFunction.h
|
|
runtime/NumberObject.h
|
|
runtime/NumberPrototype.h
|
|
runtime/NumericStrings.h
|
|
runtime/ObjectConstructor.h
|
|
runtime/ObjectInitializationScope.h
|
|
runtime/ObjectPrototype.h
|
|
runtime/Operations.h
|
|
runtime/Options.h
|
|
runtime/OptionsList.h
|
|
runtime/ParseInt.h
|
|
runtime/PrivateFieldPutKind.h
|
|
runtime/PrivateName.h
|
|
runtime/ProgramExecutable.h
|
|
runtime/PropertyDescriptor.h
|
|
runtime/PropertyMapHashTable.h
|
|
runtime/PropertyName.h
|
|
runtime/PropertyNameArray.h
|
|
runtime/PropertyOffset.h
|
|
runtime/PropertySlot.h
|
|
runtime/PropertyStorage.h
|
|
runtime/Protect.h
|
|
runtime/PrototypeKey.h
|
|
runtime/ProxyObject.h
|
|
runtime/PureNaN.h
|
|
runtime/PutDirectIndexMode.h
|
|
runtime/PutPropertySlot.h
|
|
runtime/RegExp.h
|
|
runtime/RegExpCachedResult.h
|
|
runtime/RegExpGlobalData.h
|
|
runtime/RegExpKey.h
|
|
runtime/RegExpObject.h
|
|
runtime/RegExpStringIteratorPrototype.h
|
|
runtime/RuntimeFlags.h
|
|
runtime/RuntimeType.h
|
|
runtime/SamplingProfiler.h
|
|
runtime/ScopeOffset.h
|
|
runtime/ScopedArgumentsTable.h
|
|
runtime/Scribble.h
|
|
runtime/ScriptExecutable.h
|
|
runtime/ScriptFetchParameters.h
|
|
runtime/ScriptFetcher.h
|
|
runtime/SlowPathReturnType.h
|
|
runtime/SmallStrings.h
|
|
runtime/SourceOrigin.h
|
|
runtime/SparseArrayValueMap.h
|
|
runtime/StackAlignment.h
|
|
runtime/StackFrame.h
|
|
runtime/StringObject.h
|
|
runtime/StringPrototype.h
|
|
runtime/Structure.h
|
|
runtime/StructureCache.h
|
|
runtime/StructureChain.h
|
|
runtime/StructureIDBlob.h
|
|
runtime/StructureIDTable.h
|
|
runtime/StructureInlines.h
|
|
runtime/StructureRareData.h
|
|
runtime/StructureRareDataInlines.h
|
|
runtime/StructureTransitionTable.h
|
|
runtime/SubspaceAccess.h
|
|
runtime/Symbol.h
|
|
runtime/SymbolPrototype.h
|
|
runtime/SymbolTable.h
|
|
runtime/SymbolTableOrScopeDepth.h
|
|
runtime/TemplateObjectDescriptor.h
|
|
runtime/TestRunnerUtils.h
|
|
runtime/ThrowScope.h
|
|
runtime/ToNativeFromValue.h
|
|
runtime/TypeError.h
|
|
runtime/TypeSet.h
|
|
runtime/TypedArrayAdaptors.h
|
|
runtime/TypedArrayController.h
|
|
runtime/TypedArrayInlines.h
|
|
runtime/TypedArrayType.h
|
|
runtime/TypedArrays.h
|
|
runtime/TypeofType.h
|
|
runtime/Uint16Array.h
|
|
runtime/Uint32Array.h
|
|
runtime/Uint8Array.h
|
|
runtime/Uint8ClampedArray.h
|
|
runtime/VM.h
|
|
runtime/VMEntryScope.h
|
|
runtime/VMInlines.h
|
|
runtime/VMTraps.h
|
|
runtime/VarOffset.h
|
|
runtime/Watchdog.h
|
|
runtime/WeakGCMap.h
|
|
runtime/WeakGCMapInlines.h
|
|
runtime/WriteBarrier.h
|
|
runtime/WriteBarrierInlines.h
|
|
|
|
tools/Integrity.h
|
|
tools/IntegrityInlines.h
|
|
tools/VMInspector.h
|
|
tools/VMInspectorInlines.h
|
|
|
|
wasm/WasmCallee.h
|
|
wasm/WasmCapabilities.h
|
|
wasm/WasmCodeBlock.h
|
|
wasm/WasmCompilationMode.h
|
|
wasm/WasmContext.h
|
|
wasm/WasmEmbedder.h
|
|
wasm/WasmExceptionType.h
|
|
wasm/WasmFaultSignalHandler.h
|
|
wasm/WasmFormat.h
|
|
wasm/WasmFunctionCodeBlock.h
|
|
wasm/WasmIndexOrName.h
|
|
wasm/WasmLLIntTierUpCounter.h
|
|
wasm/WasmMemory.h
|
|
wasm/WasmMemoryInformation.h
|
|
wasm/WasmMemoryMode.h
|
|
wasm/WasmModule.h
|
|
wasm/WasmName.h
|
|
wasm/WasmNameSection.h
|
|
wasm/WasmPageCount.h
|
|
wasm/WasmSignature.h
|
|
wasm/WasmTierUpCount.h
|
|
|
|
wasm/js/JSWebAssembly.h
|
|
wasm/js/JSWebAssemblyMemory.h
|
|
wasm/js/JSWebAssemblyModule.h
|
|
|
|
|
|
yarr/RegularExpression.h
|
|
yarr/Yarr.h
|
|
yarr/YarrErrorCode.h
|
|
yarr/YarrFlags.h
|
|
yarr/YarrInterpreter.h
|
|
yarr/YarrJIT.h
|
|
yarr/YarrParser.h
|
|
yarr/YarrPattern.h
|
|
yarr/YarrUnicodeProperties.h
|
|
)
|
|
|
|
if (USE_INSPECTOR_SOCKET_SERVER)
|
|
list(APPEND JavaScriptCore_PRIVATE_FRAMEWORK_HEADERS
|
|
API/JSRemoteInspectorServer.h
|
|
)
|
|
endif ()
|
|
|
|
# GENERATOR 1-B: particular LUT creator (for 1 file only)
|
|
GENERATE_HASH_LUT(${CMAKE_CURRENT_SOURCE_DIR}/parser/Keywords.table ${JavaScriptCore_DERIVED_SOURCES_DIR}/Lexer.lut.h)
|
|
|
|
file(MAKE_DIRECTORY ${JavaScriptCore_DERIVED_SOURCES_DIR}/yarr)
|
|
|
|
#GENERATOR: "RegExpJitTables.h": tables used by Yarr
|
|
add_custom_command(
|
|
OUTPUT ${JavaScriptCore_DERIVED_SOURCES_DIR}/yarr/RegExpJitTables.h
|
|
MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/yarr/create_regex_tables
|
|
COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/yarr/create_regex_tables ${JavaScriptCore_DERIVED_SOURCES_DIR}/yarr/RegExpJitTables.h
|
|
VERBATIM)
|
|
list(APPEND JavaScriptCore_HEADERS ${JavaScriptCore_DERIVED_SOURCES_DIR}/yarr/RegExpJitTables.h)
|
|
WEBKIT_ADD_SOURCE_DEPENDENCIES(${CMAKE_CURRENT_SOURCE_DIR}/yarr/YarrPattern.cpp ${JavaScriptCore_DERIVED_SOURCES_DIR}/yarr/RegExpJitTables.h)
|
|
|
|
add_custom_command(
|
|
OUTPUT ${JavaScriptCore_DERIVED_SOURCES_DIR}/yarr/UnicodePatternTables.h
|
|
MAIN_DEPENDENCY ${JAVASCRIPTCORE_DIR}/yarr/generateYarrUnicodePropertyTables.py
|
|
DEPENDS ${JAVASCRIPTCORE_DIR}/yarr/hasher.py ${JAVASCRIPTCORE_DIR}/ucd/DerivedBinaryProperties.txt ${JAVASCRIPTCORE_DIR}/ucd/DerivedCoreProperties.txt ${JAVASCRIPTCORE_DIR}/ucd/DerivedNormalizationProps.txt ${JAVASCRIPTCORE_DIR}/ucd/PropList.txt ${JAVASCRIPTCORE_DIR}/ucd/PropertyAliases.txt ${JAVASCRIPTCORE_DIR}/ucd/PropertyValueAliases.txt ${JAVASCRIPTCORE_DIR}/ucd/ScriptExtensions.txt ${JAVASCRIPTCORE_DIR}/ucd/Scripts.txt ${JAVASCRIPTCORE_DIR}/ucd/UnicodeData.txt ${JAVASCRIPTCORE_DIR}/ucd/emoji-data.txt
|
|
COMMAND ${PYTHON_EXECUTABLE} ${JAVASCRIPTCORE_DIR}/yarr/generateYarrUnicodePropertyTables.py ${JAVASCRIPTCORE_DIR}/ucd ${JavaScriptCore_DERIVED_SOURCES_DIR}/yarr/UnicodePatternTables.h
|
|
VERBATIM)
|
|
list(APPEND JavaScriptCore_HEADERS ${JavaScriptCore_DERIVED_SOURCES_DIR}/yarr/UnicodePatternTables.h)
|
|
WEBKIT_ADD_SOURCE_DEPENDENCIES(${CMAKE_CURRENT_SOURCE_DIR}/yarr/UnicodePatternTables.cpp ${JavaScriptCore_DERIVED_SOURCES_DIR}/yarr/UnicodePatternTables.h)
|
|
|
|
add_custom_command(
|
|
OUTPUT ${JavaScriptCore_DERIVED_SOURCES_DIR}/yarr/YarrCanonicalizeUnicode.cpp
|
|
MAIN_DEPENDENCY ${JAVASCRIPTCORE_DIR}/yarr/generateYarrCanonicalizeUnicode
|
|
DEPENDS ${JAVASCRIPTCORE_DIR}/ucd/CaseFolding.txt
|
|
COMMAND ${PYTHON_EXECUTABLE} ${JAVASCRIPTCORE_DIR}/yarr/generateYarrCanonicalizeUnicode ${JAVASCRIPTCORE_DIR}/ucd/CaseFolding.txt ${JavaScriptCore_DERIVED_SOURCES_DIR}/yarr/YarrCanonicalizeUnicode.cpp
|
|
VERBATIM)
|
|
|
|
#GENERATOR: "KeywordLookup.h": keyword decision tree used by the lexer
|
|
add_custom_command(
|
|
OUTPUT ${JavaScriptCore_DERIVED_SOURCES_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 > ${JavaScriptCore_DERIVED_SOURCES_DIR}/KeywordLookup.h
|
|
VERBATIM)
|
|
list(APPEND JavaScriptCore_HEADERS ${JavaScriptCore_DERIVED_SOURCES_DIR}/KeywordLookup.h)
|
|
WEBKIT_ADD_SOURCE_DEPENDENCIES(${CMAKE_CURRENT_SOURCE_DIR}/parser/Lexer.cpp ${JavaScriptCore_DERIVED_SOURCES_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
|
|
${JavaScriptCore_INSPECTOR_SCRIPTS_DIR}/codegen/preprocess.pl
|
|
)
|
|
|
|
set(JavaScriptCore_INSPECTOR_DOMAINS
|
|
${JAVASCRIPTCORE_DIR}/inspector/protocol/Animation.json
|
|
${JAVASCRIPTCORE_DIR}/inspector/protocol/ApplicationCache.json
|
|
${JAVASCRIPTCORE_DIR}/inspector/protocol/Audit.json
|
|
${JAVASCRIPTCORE_DIR}/inspector/protocol/Browser.json
|
|
${JAVASCRIPTCORE_DIR}/inspector/protocol/CPUProfiler.json
|
|
${JAVASCRIPTCORE_DIR}/inspector/protocol/CSS.json
|
|
${JAVASCRIPTCORE_DIR}/inspector/protocol/Canvas.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/IndexedDB.json
|
|
${JAVASCRIPTCORE_DIR}/inspector/protocol/Inspector.json
|
|
${JAVASCRIPTCORE_DIR}/inspector/protocol/LayerTree.json
|
|
${JAVASCRIPTCORE_DIR}/inspector/protocol/Memory.json
|
|
${JAVASCRIPTCORE_DIR}/inspector/protocol/Network.json
|
|
${JAVASCRIPTCORE_DIR}/inspector/protocol/Page.json
|
|
${JAVASCRIPTCORE_DIR}/inspector/protocol/Recording.json
|
|
${JAVASCRIPTCORE_DIR}/inspector/protocol/Runtime.json
|
|
${JAVASCRIPTCORE_DIR}/inspector/protocol/ScriptProfiler.json
|
|
${JAVASCRIPTCORE_DIR}/inspector/protocol/Security.json
|
|
${JAVASCRIPTCORE_DIR}/inspector/protocol/ServiceWorker.json
|
|
${JAVASCRIPTCORE_DIR}/inspector/protocol/Target.json
|
|
${JAVASCRIPTCORE_DIR}/inspector/protocol/Timeline.json
|
|
${JAVASCRIPTCORE_DIR}/inspector/protocol/Worker.json
|
|
)
|
|
|
|
add_custom_command(
|
|
OUTPUT ${JavaScriptCore_DERIVED_SOURCES_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} > ${JavaScriptCore_DERIVED_SOURCES_DIR}/CombinedDomains.json
|
|
VERBATIM)
|
|
|
|
# Inspector Backend Dispatchers, Frontend Dispatchers, Type Builders
|
|
file(MAKE_DIRECTORY ${DERIVED_SOURCES_WEBINSPECTORUI_DIR}/UserInterface/Protocol)
|
|
file(MAKE_DIRECTORY ${JavaScriptCore_DERIVED_SOURCES_DIR}/inspector)
|
|
add_custom_command(
|
|
OUTPUT ${JavaScriptCore_DERIVED_SOURCES_DIR}/inspector/InspectorBackendDispatchers.cpp
|
|
${JavaScriptCore_DERIVED_SOURCES_DIR}/inspector/InspectorBackendDispatchers.h
|
|
${JavaScriptCore_DERIVED_SOURCES_DIR}/inspector/InspectorFrontendDispatchers.cpp
|
|
${JavaScriptCore_DERIVED_SOURCES_DIR}/inspector/InspectorFrontendDispatchers.h
|
|
${JavaScriptCore_DERIVED_SOURCES_DIR}/inspector/InspectorProtocolObjects.cpp
|
|
${JavaScriptCore_DERIVED_SOURCES_DIR}/inspector/InspectorProtocolObjects.h
|
|
MAIN_DEPENDENCY ${JavaScriptCore_DERIVED_SOURCES_DIR}/CombinedDomains.json
|
|
DEPENDS ${JavaScriptCore_INSPECTOR_PROTOCOL_SCRIPTS}
|
|
COMMAND ${PYTHON_EXECUTABLE} ${JavaScriptCore_INSPECTOR_SCRIPTS_DIR}/generate-inspector-protocol-bindings.py --outputDir "${JavaScriptCore_DERIVED_SOURCES_DIR}/inspector" --framework JavaScriptCore ${JavaScriptCore_DERIVED_SOURCES_DIR}/CombinedDomains.json
|
|
VERBATIM)
|
|
add_custom_command(
|
|
OUTPUT ${JavaScriptCore_DERIVED_SOURCES_DIR}/inspector/InspectorBackendCommands.js
|
|
${JavaScriptCore_DERIVED_SOURCES_DIR}/inspector/InspectorBackendCommands.js.in
|
|
MAIN_DEPENDENCY ${JavaScriptCore_DERIVED_SOURCES_DIR}/CombinedDomains.json
|
|
DEPENDS ${JavaScriptCore_INSPECTOR_PROTOCOL_SCRIPTS}
|
|
COMMAND ${PYTHON_EXECUTABLE} ${JavaScriptCore_INSPECTOR_SCRIPTS_DIR}/generate-inspector-protocol-bindings.py --outputDir ${JavaScriptCore_DERIVED_SOURCES_DIR}/inspector --framework WebInspectorUI ${JavaScriptCore_DERIVED_SOURCES_DIR}/CombinedDomains.json
|
|
COMMAND ${PERL_EXECUTABLE} ${JavaScriptCore_INSPECTOR_SCRIPTS_DIR}/codegen/preprocess.pl --input ${JavaScriptCore_DERIVED_SOURCES_DIR}/inspector/InspectorBackendCommands.js.in --defines "${FEATURE_DEFINES_WITH_SPACE_SEPARATOR}" --preprocessor "${CODE_GENERATOR_PREPROCESSOR}" --output ${JavaScriptCore_DERIVED_SOURCES_DIR}/inspector/InspectorBackendCommands.js
|
|
VERBATIM)
|
|
add_custom_target(InspectorBackendCommands DEPENDS "${JavaScriptCore_DERIVED_SOURCES_DIR}/inspector/InspectorBackendCommands.js")
|
|
|
|
# JSCBuiltins
|
|
|
|
set(BUILTINS_GENERATOR_SCRIPTS
|
|
${JavaScriptCore_SCRIPTS_DIR}/wkbuiltins.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/AsyncFromSyncIteratorPrototype.js
|
|
${JAVASCRIPTCORE_DIR}/builtins/ArrayConstructor.js
|
|
${JAVASCRIPTCORE_DIR}/builtins/ArrayIteratorPrototype.js
|
|
${JAVASCRIPTCORE_DIR}/builtins/ArrayPrototype.js
|
|
${JAVASCRIPTCORE_DIR}/builtins/AsyncFunctionPrototype.js
|
|
${JAVASCRIPTCORE_DIR}/builtins/AsyncIteratorPrototype.js
|
|
${JAVASCRIPTCORE_DIR}/builtins/AsyncGeneratorPrototype.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/MapIteratorPrototype.js
|
|
${JAVASCRIPTCORE_DIR}/builtins/MapPrototype.js
|
|
${JAVASCRIPTCORE_DIR}/builtins/ModuleLoader.js
|
|
${JAVASCRIPTCORE_DIR}/builtins/NumberConstructor.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/RegExpStringIteratorPrototype.js
|
|
${JAVASCRIPTCORE_DIR}/builtins/SetIteratorPrototype.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
|
|
${JAVASCRIPTCORE_DIR}/builtins/WebAssembly.js
|
|
)
|
|
|
|
add_custom_command(
|
|
OUTPUT ${JavaScriptCore_DERIVED_SOURCES_DIR}/JSCBuiltins.cpp ${JavaScriptCore_DERIVED_SOURCES_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 ${JavaScriptCore_DERIVED_SOURCES_DIR} --combined ${JavaScriptCore_BUILTINS_SOURCES}
|
|
VERBATIM)
|
|
add_custom_target(JSCBuiltins DEPENDS "${JavaScriptCore_DERIVED_SOURCES_DIR}/JSCBuiltins.h")
|
|
|
|
list(APPEND JavaScriptCore_HEADERS
|
|
${JavaScriptCore_DERIVED_SOURCES_DIR}/inspector/InspectorBackendDispatchers.h
|
|
${JavaScriptCore_DERIVED_SOURCES_DIR}/inspector/InspectorFrontendDispatchers.h
|
|
${JavaScriptCore_DERIVED_SOURCES_DIR}/inspector/InspectorProtocolObjects.h
|
|
${JavaScriptCore_DERIVED_SOURCES_DIR}/JSCBuiltins.h
|
|
)
|
|
|
|
add_custom_command(
|
|
OUTPUT ${JavaScriptCore_DERIVED_SOURCES_DIR}/InjectedScriptSource.h ${JavaScriptCore_DERIVED_SOURCES_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" > ${JavaScriptCore_DERIVED_SOURCES_DIR}/InjectedScriptSource.min.js
|
|
COMMAND ${PYTHON_EXECUTABLE} ${JavaScriptCore_SCRIPTS_DIR}/jsmin.py < ${JAVASCRIPTCORE_DIR}/inspector/InjectedScriptSource.js >> ${JavaScriptCore_DERIVED_SOURCES_DIR}/InjectedScriptSource.min.js
|
|
COMMAND ${PERL_EXECUTABLE} ${JavaScriptCore_SCRIPTS_DIR}/xxd.pl InjectedScriptSource_js ${JavaScriptCore_DERIVED_SOURCES_DIR}/InjectedScriptSource.min.js ${JavaScriptCore_DERIVED_SOURCES_DIR}/InjectedScriptSource.h
|
|
VERBATIM)
|
|
|
|
list(APPEND JavaScriptCore_HEADERS ${JavaScriptCore_DERIVED_SOURCES_DIR}/InjectedScriptSource.h)
|
|
|
|
if (WTF_CPU_X86_64)
|
|
if (MSVC AND NOT ENABLE_C_LOOP)
|
|
add_custom_command(
|
|
OUTPUT ${JavaScriptCore_DERIVED_SOURCES_DIR}/JITStubsMSVC64.obj
|
|
MAIN_DEPENDENCY ${JAVASCRIPTCORE_DIR}/jit/JITStubsMSVC64.asm
|
|
COMMAND ml64 -nologo -c -Fo ${JavaScriptCore_DERIVED_SOURCES_DIR}/JITStubsMSVC64.obj ${JAVASCRIPTCORE_DIR}/jit/JITStubsMSVC64.asm
|
|
VERBATIM)
|
|
|
|
list(APPEND JavaScriptCore_SOURCES ${JavaScriptCore_DERIVED_SOURCES_DIR}/JITStubsMSVC64.obj)
|
|
endif ()
|
|
endif ()
|
|
|
|
set(JavaScriptCore_INTERFACE_LIBRARIES JavaScriptCore)
|
|
set(JavaScriptCore_INTERFACE_INCLUDE_DIRECTORIES
|
|
${JavaScriptCore_FRAMEWORK_HEADERS_DIR}
|
|
${JavaScriptCore_PRIVATE_FRAMEWORK_HEADERS_DIR}
|
|
)
|
|
set(JavaScriptCore_INTERFACE_DEPENDENCIES
|
|
JavaScriptCore_CopyHeaders
|
|
JavaScriptCore_CopyPrivateHeaders
|
|
)
|
|
|
|
WEBKIT_FRAMEWORK_DECLARE(JavaScriptCore)
|
|
WEBKIT_INCLUDE_CONFIG_FILES_IF_EXISTS()
|
|
|
|
if (COMPILER_IS_GCC_OR_CLANG)
|
|
# Avoid using fused multiply-add instructions since this could give different results
|
|
# for e.g. parseInt depending on the platform and compilation flags.
|
|
WEBKIT_ADD_TARGET_CXX_FLAGS(JavaScriptCore -ffp-contract=off -fno-slp-vectorize)
|
|
endif ()
|
|
|
|
WEBKIT_COPY_FILES(JavaScriptCore_CopyHeaders
|
|
DESTINATION ${JavaScriptCore_FRAMEWORK_HEADERS_DIR}/JavaScriptCore
|
|
FILES ${JavaScriptCore_PUBLIC_FRAMEWORK_HEADERS}
|
|
FLATTENED
|
|
)
|
|
|
|
WEBKIT_COPY_FILES(JavaScriptCore_CopyPrivateHeaders
|
|
DESTINATION ${JavaScriptCore_PRIVATE_FRAMEWORK_HEADERS_DIR}/JavaScriptCore
|
|
FILES ${JavaScriptCore_PRIVATE_FRAMEWORK_HEADERS}
|
|
FLATTENED
|
|
)
|
|
add_dependencies(JavaScriptCore_CopyPrivateHeaders Bytecodes JSCBuiltins)
|
|
# JavaScriptCore_CopyPrivateHeaders needs to have a direct or indirect
|
|
# dependency of JavaScriptCore for CMake Visual Studio generator to
|
|
# eliminate duplicated custom commands. Otherwise,
|
|
# CombinedDomains.json will be generated in both projects.
|
|
if (NOT INTERNAL_BUILD)
|
|
add_dependencies(JavaScriptCore_CopyPrivateHeaders JavaScriptCore)
|
|
endif ()
|
|
|
|
target_include_directories(LowLevelInterpreterLib
|
|
PRIVATE "$<TARGET_PROPERTY:JavaScriptCore,INCLUDE_DIRECTORIES>")
|
|
add_dependencies(LowLevelInterpreterLib Bytecodes JSCBuiltins)
|
|
if (TARGET WTF_CopyHeaders)
|
|
add_dependencies(LowLevelInterpreterLib WTF_CopyHeaders)
|
|
endif ()
|
|
|
|
if (CMAKE_COMPILER_IS_GNUCXX AND GCC_OFFLINEASM_SOURCE_MAP)
|
|
message(STATUS "Enabling asm postprocessing")
|
|
|
|
set(LowLevelInterpreter_LAUNCHER "${JavaScriptCore_SCRIPTS_SOURCES_DIR}/postprocess-asm")
|
|
get_target_property(PROP_RULE_LAUNCH_COMPILE LowLevelInterpreterLib RULE_LAUNCH_COMPILE)
|
|
if (PROP_RULE_LAUNCH_COMPILE)
|
|
set(LowLevelInterpreter_LAUNCHER "${LowLevelInterpreter_LAUNCHER} ${PROP_RULE_LAUNCH_COMPILE}")
|
|
endif ()
|
|
set_property(TARGET LowLevelInterpreterLib
|
|
PROPERTY RULE_LAUNCH_COMPILE "${LowLevelInterpreter_LAUNCHER}")
|
|
|
|
# Pass in the filename as a magic preprocessor directive, so that
|
|
# the wrapper can accurately identify the source file.
|
|
set_source_files_properties("llint/LowLevelInterpreter.cpp"
|
|
PROPERTIES
|
|
COMPILE_DEFINITIONS "POSTPROCESS_ASM=llint/LowLevelInterpreter.cpp")
|
|
endif ()
|
|
|
|
list(APPEND JavaScriptCore_SOURCES $<TARGET_OBJECTS:LowLevelInterpreterLib>)
|
|
|
|
WEBKIT_COMPUTE_SOURCES(JavaScriptCore)
|
|
WEBKIT_FRAMEWORK(JavaScriptCore)
|
|
WEBKIT_FRAMEWORK_TARGET(JavaScriptCore)
|
|
|
|
if (NOT "${PORT}" STREQUAL "Mac")
|
|
if (${JavaScriptCore_LIBRARY_TYPE} STREQUAL "SHARED")
|
|
WEBKIT_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(JavaScriptCoreSharedScripts DEPENDS ${JavaScriptCore_SCRIPTS})
|
|
add_dependencies(JavaScriptCore JavaScriptCoreSharedScripts ${JavaScriptCore_EXTRA_DEPENDENCIES})
|
|
|
|
# JavaScriptCore target needs to have a direct or indirect dependency
|
|
# of InspectorBackendCommands for CMake Visual Studio generator to
|
|
# eliminate duplicated custom commands. Otherwise,
|
|
# CombinedDomains.json will be generated in both projects.
|
|
add_dependencies(JavaScriptCore InspectorBackendCommands)
|
|
|
|
if (USE_VERSION_STAMPER)
|
|
add_custom_command(
|
|
TARGET JavaScriptCore
|
|
PRE_BUILD
|
|
COMMAND ${PERL_EXECUTABLE} ${WEBKIT_LIBRARIES_DIR}/tools/scripts/auto-version.pl ${JavaScriptCore_DERIVED_SOURCES_DIR}
|
|
VERBATIM)
|
|
|
|
add_custom_command(
|
|
TARGET JavaScriptCore
|
|
POST_BUILD
|
|
COMMAND ${PERL_EXECUTABLE} ${WEBKIT_LIBRARIES_DIR}/tools/scripts/version-stamp.pl ${JavaScriptCore_DERIVED_SOURCES_DIR} $<TARGET_FILE:JavaScriptCore>
|
|
VERBATIM)
|
|
endif ()
|
|
|
|
add_subdirectory(shell)
|