1# Copyright (c) 2021-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 14enable_language(ASM) 15 16if(PANDA_WITH_TESTS) 17 get_target_property(ALL_ARK_SOURCES_VAR_STATIC arkruntime_interpreter_static SOURCES) 18 get_target_property(ALL_ARK_SOURCES_VAR_OBJ arkruntime_obj SOURCES) 19 set(ALL_ARK_SOURCES_VAR ${ALL_ARK_SOURCES_VAR_STATIC} ${ALL_ARK_SOURCES_VAR_OBJ}) 20 get_target_property(ALL_ARK_INCLUDE_DIRECTORIES_VAR arkruntime_obj INCLUDE_DIRECTORIES) 21 get_target_property(ALL_ARK_LINK_LIBRARIES_VAR arkruntime_obj LINK_LIBRARIES) 22 23 set(ARK_ABSOLUTE_PATH_SOURCE) 24 foreach(SRC ${ALL_ARK_SOURCES_VAR}) 25 string(FIND ${SRC} "TARGET_OBJECTS" RESULT) 26 if("${RESULT}" STREQUAL "-1" AND NOT IS_ABSOLUTE ${SRC}) 27 set(SRC ${CMAKE_CURRENT_SOURCE_DIR}/runtime/${SRC}) 28 endif() 29 string(FIND ${SRC} "irtoc" RESULT) 30 if(NOT "${RESULT}" STREQUAL "-1") 31 SET_SOURCE_FILES_PROPERTIES(${SRC} PROPERTIES 32 EXTERNAL_OBJECT true 33 GENERATED true 34 ) 35 endif() 36 list(APPEND ARK_ABSOLUTE_PATH_SOURCE ${SRC}) 37 endforeach() 38 39 panda_add_library(arkruntime_for_relayout_static STATIC ${ARK_ABSOLUTE_PATH_SOURCE}) 40 panda_target_include_directories(arkruntime_for_relayout_static PUBLIC ${ALL_ARK_INCLUDE_DIRECTORIES_VAR}) 41 panda_target_compile_definitions(arkruntime_for_relayout_static PUBLIC PANDA_ENABLE_RELAYOUT_PROFILE) 42 set_source_files_properties(${ARK_ABSOLUTE_PATH_SOURCE} PROPERTIES COMPILE_FLAGS "-Wno-shadow -Wno-unused-parameter") 43 44 add_dependencies(arkruntime_for_relayout_static 45 intrinsics_gen_arkruntime 46 runtime_intrinsics_inl 47 isa_gen_pandaverification 48 messages_data_pandaverification 49 messages_gen_pandaverification 50 verifier_plugin_gen 51 arkstdlib 52 asm_defines_generator 53 entrypoints_gen 54 irtoc_fastpath 55 irtoc_interpreter 56 ${irtoc_target} 57 ) 58 59 foreach(plugin ${PLUGINS}) 60 string(TOUPPER ${plugin} plugin_name_upper) 61 string(CONCAT PANDA_WITH_PLUGIN "PANDA_WITH_" ${plugin_name_upper}) 62 63 if(${${PANDA_WITH_PLUGIN}}) 64 string(CONCAT PLUGIN_SOURCE "PANDA_" ${plugin_name_upper} "_PLUGIN_SOURCE") 65 if(EXISTS ${${PLUGIN_SOURCE}}/RuntimeEnableRelayoutPostPlugins.cmake) 66 include(${${PLUGIN_SOURCE}}/RuntimeEnableRelayoutPostPlugins.cmake) 67 endif() 68 endif() 69 endforeach() 70 71 if(PANDA_TARGET_ARM32_ABI_SOFT OR PANDA_TARGET_ARM32_ABI_SOFTFP) 72 add_dependencies(arkruntime_for_relayout_static bridge_dispatch_arm bridge_dispatch_dyn_arm) 73 elseif (PANDA_TARGET_ARM32_ABI_HARD) 74 add_dependencies(arkruntime_for_relayout_static bridge_dispatch_armhf bridge_dispatch_dyn_arm) 75 elseif(PANDA_TARGET_ARM64) 76 add_dependencies(arkruntime_for_relayout_static bridge_dispatch_aarch64 bridge_dispatch_dyn_aarch64) 77 panda_target_compile_options(arkruntime_for_relayout_static PUBLIC "-march=armv8-a+crc") 78 elseif(PANDA_TARGET_X86) 79 add_dependencies(arkruntime_for_relayout_static bridge_dispatch_x86) 80 elseif(PANDA_TARGET_AMD64) 81 add_dependencies(arkruntime_for_relayout_static bridge_dispatch_amd64 bridge_dispatch_dyn_amd64) 82 endif() 83 84 panda_target_link_libraries(arkruntime_for_relayout_static ${ALL_ARK_LINK_LIBRARIES_VAR}) 85 set_property(TARGET arkruntime_for_relayout_static PROPERTY POSITION_INDEPENDENT_CODE ON) 86endif() 87