1# Copyright (c) 2024 Huawei Device Co., Ltd. 2# Licensed under the Apache License, Version 2.0 (the "License"); 3# you may not use this file except in compliance with the License. 4# You may obtain a copy of the License at 5# 6# http://www.apache.org/licenses/LICENSE-2.0 7# 8# Unless required by applicable law or agreed to in writing, software 9# distributed under the License is distributed on an "AS IS" BASIS, 10# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11# See the License for the specific language governing permissions and 12# limitations under the License. 13 14set(SRC_DIR "${CMAKE_CURRENT_BINARY_DIR}/src") 15set(COMPILED_DIR "${CMAKE_CURRENT_BINARY_DIR}/compiled") 16make_directory(${SRC_DIR}) 17make_directory(${COMPILED_DIR}) 18 19set(DUMPER_TESTS 20 ${ES2PANDA_PATH}/test/runtime/ets/OptionalChains.sts 21 ${ES2PANDA_PATH}/test/runtime/ets/AccessFannkuch.sts 22 ${ES2PANDA_PATH}/test/runtime/ets/DeclareFunction.sts 23 ${ES2PANDA_PATH}/test/runtime/ets/Override-1.sts 24 ${ES2PANDA_PATH}/test/runtime/ets/TypeInferObject1.sts 25) 26 27add_custom_target(test-src-dumper) 28add_dependencies(es2panda_tests test-src-dumper) 29 30function(add_test_src_dumper_target FILE_PATH) 31 32 get_filename_component(FILE_NAME "${FILE_PATH}" NAME) 33 get_filename_component(FILE_NAME_WE "${FILE_PATH}" NAME_WE) 34 35 set(NEW_TARGET_NAME test-src-dumper-${FILE_NAME_WE}) 36 37 string(REGEX REPLACE "[^a-zA-Z0-9_-]" "_" NEW_TARGET_NAME ${NEW_TARGET_NAME}) 38 39 add_custom_target(${NEW_TARGET_NAME} 40 COMMENT "Dumping and compiling dumped: ${FILE_NAME}" 41 42 COMMAND cp -rf ${FILE_PATH} ${SRC_DIR}/${FILE_NAME} 43 44 COMMAND ${CMAKE_COMMAND} -E env 45 ${PANDA_RUN_PREFIX} $<TARGET_FILE:es2panda> 46 --dump-ets-src-after-phases plugins-after-parse --output "${COMPILED_DIR}/${FILE_NAME_WE}.abc" 47 "${FILE_PATH}" > "${SRC_DIR}/${FILE_NAME_WE}_dumped.sts" 48 49 COMMAND sed -i '1d' "${SRC_DIR}/${FILE_NAME_WE}_dumped.sts" 50 51 COMMAND ${CMAKE_COMMAND} -E env 52 ${PANDA_RUN_PREFIX} $<TARGET_FILE:es2panda> 53 --output "${COMPILED_DIR}/${FILE_NAME_WE}_dumped.abc" 54 "${SRC_DIR}/${FILE_NAME_WE}_dumped.sts" 55 ) 56 57 add_dependencies(${NEW_TARGET_NAME} es2panda) 58 add_dependencies(test-src-dumper ${NEW_TARGET_NAME}) 59 60endfunction() 61 62 63foreach(TEST_PATH IN LISTS DUMPER_TESTS) 64 add_test_src_dumper_target(${TEST_PATH}) 65endforeach() 66