1# Copyright (c) 2021-2022 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(LOGGER_FILE "${CMAKE_BINARY_DIR}/libpandabase/logger.yaml") 15set(LOGGER_CORE_FILE "${PROJECT_SOURCE_DIR}/libpandabase/templates/logger.yaml") 16set(LOGGER_GENERATOR "${PROJECT_SOURCE_DIR}/libpandabase/templates/logger_gen.rb") 17 18add_custom_command(OUTPUT ${LOGGER_FILE} 19 COMMENT "Generate logger.yaml" 20 COMMAND ${LOGGER_GENERATOR} -d "${LOGGER_CORE_FILE}" -p "${GEN_PLUGIN_OPTIONS_YAML}" -o ${LOGGER_FILE} 21 DEPENDS ${LOGGER_GENERATOR} ${LOGGER_CORE_FILE} plugin_options_merge 22) 23add_custom_target(logger_yaml_gen DEPENDS ${LOGGER_FILE}) 24 25set(LOGGER_TEMPLATES 26 logger_enum_gen.h.erb 27 logger_impl_gen.inc.erb 28) 29 30add_custom_target(logger_gen) 31 32foreach(TEMPLATE ${LOGGER_TEMPLATES}) 33 get_filename_component(OUTPUT_FILENAME ${TEMPLATE} NAME_WLE) 34 set(OUTPUT ${CMAKE_BINARY_DIR}/libpandabase/generated/${OUTPUT_FILENAME}) 35 36 panda_gen_file( 37 DATAFILE ${LOGGER_FILE} 38 TEMPLATE ${PROJECT_SOURCE_DIR}/libpandabase/templates/${TEMPLATE} 39 OUTPUTFILE ${OUTPUT} 40 REQUIRES ${PROJECT_SOURCE_DIR}/libpandabase/templates/logger.rb 41 EXTRA_DEPENDENCIES logger_yaml_gen 42 ) 43 add_custom_target(logger_gen_${OUTPUT_FILENAME} DEPENDS ${OUTPUT}) 44 add_dependencies(logger_gen logger_gen_${OUTPUT_FILENAME}) 45endforeach() 46 47add_dependencies(panda_gen_files logger_gen) 48 49add_dependencies(arkassembler assembler_extensions) 50 51if(PANDA_ENABLE_LTO AND PANDA_ARKBASE_LTO) 52 set(ARKBASE_TARGETS arkbase_obj arkbase_lto) 53else() 54 set(ARKBASE_TARGETS arkbase_obj) 55endif() 56 57set(SOURCE_LANGUAGE_H ${CMAKE_BINARY_DIR}/libpandabase/generated/source_language.h) 58panda_gen_file( 59 DATAFILE ${GEN_PLUGIN_OPTIONS_YAML} 60 TEMPLATE ${PROJECT_SOURCE_DIR}/libpandabase/templates/source_language.h.erb 61 REQUIRES ${PANDA_ROOT}/templates/plugin_options.rb 62 EXTRA_DEPENDENCIES plugin_options_merge 63 OUTPUTFILE ${SOURCE_LANGUAGE_H} 64) 65add_custom_target(source_language_gen DEPENDS ${SOURCE_LANGUAGE_H}) 66add_dependencies(panda_gen_files source_language_gen) 67 68set(PLUGINS_REGMASKS_INL ${CMAKE_BINARY_DIR}/libpandabase/generated/plugins_regmasks.inl) 69panda_gen_file( 70 DATAFILE ${GEN_PLUGIN_OPTIONS_YAML} 71 TEMPLATE ${PROJECT_SOURCE_DIR}/libpandabase/templates/plugins_regmasks.inl.erb 72 REQUIRES ${PANDA_ROOT}/templates/plugin_options.rb 73 EXTRA_DEPENDENCIES plugin_options_merge 74 OUTPUTFILE ${PLUGINS_REGMASKS_INL} 75) 76add_custom_target(plugins_regmasks_gen DEPENDS ${PLUGINS_REGMASKS_INL}) 77add_dependencies(panda_gen_files plugins_regmasks_gen) 78 79foreach(TARGET ${ARKBASE_TARGETS}) 80 add_dependencies(${TARGET} logger_gen source_language_gen plugins_regmasks_gen) 81endforeach() 82