UNPKG

chrome-devtools-frontend

Version:
142 lines (126 loc) 4.95 kB
# Copyright 2023 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. get_filename_component(llvm_bin ${LLVM_TABLEGEN} DIRECTORY) set(LLVM_MC ${llvm_bin}/llvm-mc) set(EOM ".int8 0") set(ABBR ".int8") file(STRINGS dw_opcodes.def DW_OPCODES) list(APPEND CMAKE_CONFIGURE_DEPENDS dw_opcodes.def) foreach(opcode_def IN ITEMS ${DW_OPCODES}) if (opcode_def MATCHES "^[ \t]*#" OR opcode_def MATCHES "^[ \]*$") continue() endif() string(REGEX REPLACE "[ \t]+" ";" split ${opcode_def}) list(GET split 0 opcode) list(GET split 1 value) set(${opcode} ".int8 ${value} # ${opcode}") endforeach() set(compiled_inputs) macro(add_test_inputs) cmake_parse_arguments(option "DWO" "" "" ${ARGN}) foreach(input IN ITEMS ${option_UNPARSED_ARGUMENTS}) configure_file(${input} ${input}.preprocessed) set(input_file ${CMAKE_CURRENT_BINARY_DIR}/${input}.preprocessed) set(mc_args ${input_file} -triple wasm32-unknown-unknown -filetype=obj -o ${input}.wasm) if (option_DWO) add_custom_command(OUTPUT ${input}.wasm ${input}.dwo DEPENDS ${input_file} COMMAND ${LLVM_MC} ${mc_args} -split-dwarf-file=${input}.dwo ) list(APPEND compiled_inputs ${CMAKE_CURRENT_BINARY_DIR}/${input}.wasm ${CMAKE_CURRENT_BINARY_DIR}/${input}.dwo) else() add_custom_command(OUTPUT ${input}.wasm DEPENDS ${input_file} COMMAND ${LLVM_MC} ${mc_args} ) list(APPEND compiled_inputs ${CMAKE_CURRENT_BINARY_DIR}/${input}.wasm) endif() endforeach() endmacro() macro(add_dwo_test_inputs) set(obj_inputs) cmake_parse_arguments(option "" "DESTINATION" "" ${ARGN}) foreach(input IN ITEMS ${option_UNPARSED_ARGUMENTS}) get_filename_component(filename ${input} NAME_WE) configure_file(${input} ${filename}.preprocessed) set(input_file ${CMAKE_CURRENT_BINARY_DIR}/${filename}.preprocessed) set(mc_args ${input_file} -triple wasm32-unknown-unknown -g -filetype=obj -o ${filename}.o) add_custom_command(OUTPUT ${filename}.o ${filename}.dwo DEPENDS ${input_file} COMMAND ${LLVM_MC} ${mc_args} --split-dwarf-file=${filename}.dwo ) list(APPEND obj_inputs ${CMAKE_CURRENT_BINARY_DIR}/${filename}.o) list(APPEND compiled_inputs ${CMAKE_CURRENT_BINARY_DIR}/${filename}.dwo ${CMAKE_CURRENT_BINARY_DIR}/${filename}.o) endforeach() add_custom_command(OUTPUT ${option_DESTINATION} DEPENDS ${obj_inputs} COMMAND ${WASM_LD} --export-all --no-entry -o ${option_DESTINATION} ${obj_inputs}) list(APPEND compiled_inputs ${CMAKE_CURRENT_BINARY_DIR}/${option_DESTINATION}) endmacro() set(compiled_wasm_inputs) macro(add_test_program program) add_executable(${program} ${ARGN}) set(compile_options -g -gdwarf-5 -O0) set(link_options -g -gdwarf-5 -gseparate-dwarf -O0 -sERROR_ON_WASM_CHANGES_AFTER_LINK=1 -sMODULARIZE=1 -sWASM_BIGINT -sEXPORT_NAME=loadModule -sEXPORT_ES6=1 -sEXPORT_ALL=1 -std=c++17 -Wl,--export-all -Wl,--no-gc-sections ) # Set link and compile options directly to avoid accidentally inheriting # global flags. set_target_properties(${program} PROPERTIES COMPILE_OPTIONS "${compile_options}" LINK_OPTIONS "${link_options}") list(APPEND compiled_inputs ${CMAKE_CURRENT_BINARY_DIR}/${program}.js ) list(APPEND compiled_wasm_inputs ${CMAKE_CURRENT_BINARY_DIR}/${program}.wasm ${CMAKE_CURRENT_BINARY_DIR}/${program}.wasm.debug.wasm ) endmacro() add_test_inputs(DWO split-dwarf.s) add_test_inputs( embedded.s addr_index.s enums.s hello.s windows_paths.s globals.s classstatic.s namespaces.s shadowing.s inline.s externref.s ) add_dwo_test_inputs(DESTINATION hello-split.wasm helper.s hello-split.s) add_dwo_test_inputs(DESTINATION hello-split-missing-dwo.wasm hello-split-missing-dwo.s) # Explicitly remove dwo files for tests with missing dwos set(missing_dwos "hello-split-missing-dwo.dwo") add_test_program(addresses_main addresses.cc) add_test_program(lldb_eval_inputs ${THIRD_PARTY_DIR}/lldb-eval/src/testdata/test_binary.cc ${THIRD_PARTY_DIR}/lldb-eval/src/testdata/test_library.cc) set(TEST_BINARY_INPUTS page.html page.js externref.js ) set(binary_inputs) foreach(input IN LISTS TEST_BINARY_INPUTS) list(APPEND binary_inputs ${CMAKE_CURRENT_BINARY_DIR}/${input}) add_custom_command(OUTPUT ${input} DEPENDS ${input} COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/${input} ${CMAKE_CURRENT_BINARY_DIR}/) endforeach() add_custom_target(SymbolsBackendTestInputs DEPENDS ${compiled_inputs} ${TEST_BINARY_INPUTS}) add_custom_command(TARGET SymbolsBackendTestInputs POST_BUILD COMMAND rm ${missing_dwos}) list(APPEND EXTENSION_TEST_BUILD_ARTIFACTS ${compiled_inputs} ${binary_inputs} ${compiled_wasm_inputs}) set(EXTENSION_TEST_BUILD_ARTIFACTS ${EXTENSION_TEST_BUILD_ARTIFACTS} PARENT_SCOPE)