From 8048d93b752e10b98e14ea4ec30603ae969d06cf Mon Sep 17 00:00:00 2001 From: Rokashevich Svetlana Date: Sun, 10 Aug 2025 17:27:27 +0800 Subject: [PATCH] Add force rebuild option Issue: https://gitee.com/openharmony/arkcompiler_runtime_core/issues/ICSFO0 Signed-off-by: Rokashevich Svetlana Change-Id: Ica9acf47030c931647ad08381c24208abd247227 --- ets2panda/CMakeLists.txt | 15 ++++++++- ets2panda/aot/CMakeLists.txt | 2 +- ets2panda/bindings/native/CMakeLists.txt | 4 ++- ets2panda/cmake/PandaCmakeFunctions.cmake | 31 +++++++++++++++++++ ets2panda/declgen_ets2ts/CMakeLists.txt | 2 +- .../driver/dependency_analyzer/CMakeLists.txt | 4 +-- ets2panda/lsp/CMakeLists.txt | 5 +-- ets2panda/public/CMakeLists.txt | 2 +- ets2panda/test/unit/declgen/CMakeLists.txt | 2 +- ets2panda/test/unit/plugin/CMakeLists.txt | 4 +-- ets2panda/test/unit/plugin_ut/CMakeLists.txt | 2 +- 11 files changed, 60 insertions(+), 13 deletions(-) create mode 100644 ets2panda/cmake/PandaCmakeFunctions.cmake diff --git a/ets2panda/CMakeLists.txt b/ets2panda/CMakeLists.txt index 9ea3c3f73a..30cae66dde 100644 --- a/ets2panda/CMakeLists.txt +++ b/ets2panda/CMakeLists.txt @@ -14,10 +14,23 @@ cmake_minimum_required (VERSION 3.5.0) include(cmake/coverage.cmake) +include(cmake/PandaCmakeFunctions.cmake) project (es2panda) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) +# ----- Aliases ---------------------------------------------------------------- + +add_custom_target(frontend_bins COMMENT "Build all common frontend binaries") +add_dependencies(frontend_bins + es2panda + es2panda-lib + es2panda-public + dependency_analyzer + dependency_analyzer_lib + declgen_ets2ts +) + set(ES2PANDA_ROOT ${CMAKE_CURRENT_SOURCE_DIR}) set(ES2PANDA_BINARY_ROOT ${CMAKE_CURRENT_BINARY_DIR}) @@ -669,7 +682,7 @@ set(ES2PANDA_LIB_SRC # libes2panda does not include bytecode optimizer, because it is used in # libarkruntime, and conflict with JIT setup ensues -panda_add_library(es2panda-lib ${PANDA_DEFAULT_LIB_TYPE} ${ES2PANDA_LIB_SRC}) +panda_frontend_add_library(es2panda-lib ${PANDA_DEFAULT_LIB_TYPE} ${ES2PANDA_LIB_SRC}) add_dependencies(es2panda-lib isa_gen_es2panda es2panda_options_gen es2panda_diagnostic_gen es2panda_keywords es2panda_signatures) set(ICU_INCLUDE_DIRS diff --git a/ets2panda/aot/CMakeLists.txt b/ets2panda/aot/CMakeLists.txt index 5da24a781a..b0fccc82c7 100644 --- a/ets2panda/aot/CMakeLists.txt +++ b/ets2panda/aot/CMakeLists.txt @@ -15,7 +15,7 @@ set(ES2PANDA_AOT_SRC main.cpp ) -panda_add_executable(es2panda ${ES2PANDA_AOT_SRC}) +panda_frontend_add_executable(es2panda ${ES2PANDA_AOT_SRC}) panda_target_link_libraries(es2panda es2panda-public es2panda-lib arkassembler arkbytecodeopt) panda_target_include_directories(es2panda PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) panda_target_include_directories(es2panda PRIVATE ${OUTPUT_DIR}) diff --git a/ets2panda/bindings/native/CMakeLists.txt b/ets2panda/bindings/native/CMakeLists.txt index 60dcbb51de..223ee8eef2 100644 --- a/ets2panda/bindings/native/CMakeLists.txt +++ b/ets2panda/bindings/native/CMakeLists.txt @@ -27,7 +27,7 @@ function(panda_add_node_library TARGET) set(ARG_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/bindings) endif() - panda_add_library(${TARGET} SHARED ${ARG_SOURCES}) + panda_frontend_add_library(${TARGET} SHARED ${ARG_SOURCES}) panda_target_link_libraries(${TARGET} ${ARG_LIBRARIES}) if(PANDA_TARGET_OHOS) @@ -99,6 +99,8 @@ panda_add_node_library(${NAPI_BINDINGS_LIB} OUTPUT_SUFFIX ".node" ) +add_dependencies(frontend_bins ${NAPI_BINDINGS_LIB}) + panda_target_include_directories(${NAPI_BINDINGS_LIB} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include SYSTEM PRIVATE ${NAPI_HEADERS_PATH} diff --git a/ets2panda/cmake/PandaCmakeFunctions.cmake b/ets2panda/cmake/PandaCmakeFunctions.cmake new file mode 100644 index 0000000000..a698304d3a --- /dev/null +++ b/ets2panda/cmake/PandaCmakeFunctions.cmake @@ -0,0 +1,31 @@ +# Copyright (c) 2025 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# 32-bits pointers optimization in Panda for objects => addresses usage low 4GB +# We need use linker scripts for section replacement above 4GB +# Note: AddressSanitizer reserves (mmap) addresses for its own needs, +# so we have difference start addresses for asan and default buildings + +function(panda_frontend_add_executable target) + if(PANDA_FRONTEND_BUILD) + set(ARGV "${ARGV};FORCE_REBUILD") + endif() + panda_add_executable(${ARGV}) +endfunction() + +function(panda_frontend_add_library target) + if(PANDA_FRONTEND_BUILD) + set(ARGV "${ARGV};FORCE_REBUILD") + endif() + panda_add_library(${ARGV}) +endfunction() diff --git a/ets2panda/declgen_ets2ts/CMakeLists.txt b/ets2panda/declgen_ets2ts/CMakeLists.txt index 994c760889..2fc43f2779 100644 --- a/ets2panda/declgen_ets2ts/CMakeLists.txt +++ b/ets2panda/declgen_ets2ts/CMakeLists.txt @@ -22,7 +22,7 @@ set(DECLGEN_ETS2TS_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR}/.. ) -panda_add_executable(declgen_ets2ts ${DECLGEN_ETS2TS_SRC}) +panda_frontend_add_executable(declgen_ets2ts ${DECLGEN_ETS2TS_SRC}) panda_target_link_libraries(declgen_ets2ts es2panda-public es2panda-lib arkassembler arkbytecodeopt) panda_target_include_directories(declgen_ets2ts PRIVATE ${DECLGEN_ETS2TS_INCLUDE_DIRS}) panda_target_compile_options(declgen_ets2ts PRIVATE -fexceptions) diff --git a/ets2panda/driver/dependency_analyzer/CMakeLists.txt b/ets2panda/driver/dependency_analyzer/CMakeLists.txt index 9a5380dd87..c00a99b5ae 100644 --- a/ets2panda/driver/dependency_analyzer/CMakeLists.txt +++ b/ets2panda/driver/dependency_analyzer/CMakeLists.txt @@ -17,9 +17,9 @@ set(DEP_ANALYZER_SRC dep_analyzer.cpp ) -panda_add_executable(dependency_analyzer main.cpp) +panda_frontend_add_executable(dependency_analyzer main.cpp) -panda_add_library(dependency_analyzer_lib ${PANDA_DEFAULT_LIB_TYPE} ${DEP_ANALYZER_SRC}) +panda_frontend_add_library(dependency_analyzer_lib ${PANDA_DEFAULT_LIB_TYPE} ${DEP_ANALYZER_SRC}) panda_target_link_libraries(dependency_analyzer_lib es2panda-public es2panda-lib arkassembler) panda_target_include_directories(dependency_analyzer_lib PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) diff --git a/ets2panda/lsp/CMakeLists.txt b/ets2panda/lsp/CMakeLists.txt index 0126ccf9b1..0367fd7309 100644 --- a/ets2panda/lsp/CMakeLists.txt +++ b/ets2panda/lsp/CMakeLists.txt @@ -131,8 +131,9 @@ set(ES2PANDA_LSP_SRC ./src/get_node.cpp ) -panda_add_library(${LSP_LIB} SHARED ${ES2PANDA_LSP_SRC}) +panda_frontend_add_library(${LSP_LIB} SHARED ${ES2PANDA_LSP_SRC}) add_dependencies(${LSP_LIB} es2panda_code_fix_register_gen) +add_dependencies(frontend_bins ${LSP_LIB}) panda_target_include_directories(${LSP_LIB} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include @@ -141,7 +142,7 @@ panda_target_include_directories(${LSP_LIB} ) panda_target_compile_options(${LSP_LIB} - PRIVATE -fexceptions -Werror=shadow + PRIVATE -fexceptions -Werror=shadow -Wno-return-type-c-linkage ) panda_target_link_libraries(${LSP_LIB} diff --git a/ets2panda/public/CMakeLists.txt b/ets2panda/public/CMakeLists.txt index 29ebe35e30..965ef9d300 100644 --- a/ets2panda/public/CMakeLists.txt +++ b/ets2panda/public/CMakeLists.txt @@ -646,7 +646,7 @@ if (PANDA_TARGET_WINDOWS) set(CMAKE_STATIC_LIBRARY_SUFFIX ".lib") endif() -panda_add_library(es2panda-public ${PANDA_DEFAULT_LIB_TYPE} ${ES2PANDA_PUBLIC_SOURCES}) +panda_frontend_add_library(es2panda-public ${PANDA_DEFAULT_LIB_TYPE} ${ES2PANDA_PUBLIC_SOURCES}) add_dependencies(es2panda-lib gen_api) add_dependencies(es2panda-public es2panda-lib) diff --git a/ets2panda/test/unit/declgen/CMakeLists.txt b/ets2panda/test/unit/declgen/CMakeLists.txt index 1e0cab0b03..26a2ab75ad 100644 --- a/ets2panda/test/unit/declgen/CMakeLists.txt +++ b/ets2panda/test/unit/declgen/CMakeLists.txt @@ -38,7 +38,7 @@ foreach(TEST_DATA IN ITEMS ${DECLGEN_PLUGIN_TESTS}) list(GET TEST_DATA_ELEM 0 TEST_NAME) list(GET TEST_DATA_ELEM 1 EXTENSION) - panda_add_executable(${TEST_NAME} ${TEST_NAME}.${EXTENSION} ${COMMON_SOURCE_FILES} OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) + panda_frontend_add_executable(${TEST_NAME} ${TEST_NAME}.${EXTENSION} ${COMMON_SOURCE_FILES} OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) panda_add_sanitizers(TARGET ${TEST_NAME} SANITIZERS ${PANDA_SANITIZERS_LIST}) panda_target_include_directories(${TEST_NAME} diff --git a/ets2panda/test/unit/plugin/CMakeLists.txt b/ets2panda/test/unit/plugin/CMakeLists.txt index e0fa2fe3f5..655ccb4560 100644 --- a/ets2panda/test/unit/plugin/CMakeLists.txt +++ b/ets2panda/test/unit/plugin/CMakeLists.txt @@ -133,9 +133,9 @@ foreach(TEST_DATA IN ITEMS ${PLUGIN_TESTS}) list(GET TEST_DATA_ELEM 3 EXTENSION) list(GET TEST_DATA_ELEM 4 PLUGIN_MODE) if(${PLUGIN_MODE} STREQUAL ${LIBRARY_PLUGIN}) - panda_add_library(${TEST_NAME} SHARED ${TEST_NAME}.${EXTENSION} ${COMMON_SOURCE_FILES}) + panda_frontend_add_library(${TEST_NAME} SHARED ${TEST_NAME}.${EXTENSION} ${COMMON_SOURCE_FILES}) else() - panda_add_executable(${TEST_NAME} ${TEST_NAME}.${EXTENSION} ${COMMON_SOURCE_FILES} OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) + panda_frontend_add_executable(${TEST_NAME} ${TEST_NAME}.${EXTENSION} ${COMMON_SOURCE_FILES} OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) panda_add_sanitizers(TARGET ${TEST_NAME} SANITIZERS ${PANDA_SANITIZERS_LIST}) endif() panda_target_include_directories(${TEST_NAME} diff --git a/ets2panda/test/unit/plugin_ut/CMakeLists.txt b/ets2panda/test/unit/plugin_ut/CMakeLists.txt index d71a3104c2..4e3c3607fe 100644 --- a/ets2panda/test/unit/plugin_ut/CMakeLists.txt +++ b/ets2panda/test/unit/plugin_ut/CMakeLists.txt @@ -49,7 +49,7 @@ foreach(TEST_DATA IN ITEMS ${PLUGIN_UT_TESTS}) list(GET TEST_DATA_ELEM 0 TEST_NAME) list(GET TEST_DATA_ELEM 3 EXTENSION) - panda_add_executable(${TEST_NAME} ${TEST_NAME}.${EXTENSION} ${COMMON_SOURCE_FILES} OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) + panda_frontend_add_executable(${TEST_NAME} ${TEST_NAME}.${EXTENSION} ${COMMON_SOURCE_FILES} OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) panda_add_sanitizers(TARGET ${TEST_NAME} SANITIZERS ${PANDA_SANITIZERS_LIST}) panda_target_include_directories(${TEST_NAME} -- Gitee