13af6ab5fSopenharmony_ci# Copyright (c) 2022 Huawei Device Co., Ltd. 23af6ab5fSopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License"); 33af6ab5fSopenharmony_ci# you may not use this file except in compliance with the License. 43af6ab5fSopenharmony_ci# You may obtain a copy of the License at 53af6ab5fSopenharmony_ci# 63af6ab5fSopenharmony_ci# http://www.apache.org/licenses/LICENSE-2.0 73af6ab5fSopenharmony_ci# 83af6ab5fSopenharmony_ci# Unless required by applicable law or agreed to in writing, software 93af6ab5fSopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS, 103af6ab5fSopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 113af6ab5fSopenharmony_ci# See the License for the specific language governing permissions and 123af6ab5fSopenharmony_ci# limitations under the License. 133af6ab5fSopenharmony_ci 143af6ab5fSopenharmony_ciimport("//arkcompiler/ets_frontend/ets_frontend_config.gni") 153af6ab5fSopenharmony_ciimport("//arkcompiler/runtime_core/ark_config.gni") 163af6ab5fSopenharmony_ci 173af6ab5fSopenharmony_ciTHIRDPARTY_PROTOBUF_SUBSYS_NAME = "thirdparty" 183af6ab5fSopenharmony_ciTHIRDPARTY_PROTOBUF_PART_NAME = "protobuf" 193af6ab5fSopenharmony_ci 203af6ab5fSopenharmony_ciproto_base_dir = "protos" 213af6ab5fSopenharmony_ciproto_out_dir = "$target_gen_dir" + "/protos_generated" 223af6ab5fSopenharmony_ci 233af6ab5fSopenharmony_ciprotobuf_snapshot_generator_sources = [ 243af6ab5fSopenharmony_ci "src/annotationProto.cpp", 253af6ab5fSopenharmony_ci "src/assemblyDebugProto.cpp", 263af6ab5fSopenharmony_ci "src/assemblyFieldProto.cpp", 273af6ab5fSopenharmony_ci "src/assemblyFileLocationProto.cpp", 283af6ab5fSopenharmony_ci "src/assemblyFunctionProto.cpp", 293af6ab5fSopenharmony_ci "src/assemblyInsProto.cpp", 303af6ab5fSopenharmony_ci "src/assemblyLabelProto.cpp", 313af6ab5fSopenharmony_ci "src/assemblyLiteralsProto.cpp", 323af6ab5fSopenharmony_ci "src/assemblyProgramProto.cpp", 333af6ab5fSopenharmony_ci "src/assemblyRecordProto.cpp", 343af6ab5fSopenharmony_ci "src/assemblyTypeProto.cpp", 353af6ab5fSopenharmony_ci "src/ideHelpersProto.cpp", 363af6ab5fSopenharmony_ci "src/mergeProgram.cpp", 373af6ab5fSopenharmony_ci "src/metaProto.cpp", 383af6ab5fSopenharmony_ci "src/protobufSnapshotGenerator.cpp", 393af6ab5fSopenharmony_ci] 403af6ab5fSopenharmony_ci 413af6ab5fSopenharmony_ciconfig("panda_assembly_proto_public_config") { 423af6ab5fSopenharmony_ci include_dirs = [ 433af6ab5fSopenharmony_ci "$ark_root/assembler", 443af6ab5fSopenharmony_ci "$ark_root/libpandabase", 453af6ab5fSopenharmony_ci "$ark_root/libpandabase/mem", 463af6ab5fSopenharmony_ci "$ark_root", 473af6ab5fSopenharmony_ci "src", 483af6ab5fSopenharmony_ci "$proto_out_dir", 493af6ab5fSopenharmony_ci "//third_party/protobuf/src", 503af6ab5fSopenharmony_ci "//third_party/protobuf/src/google", 513af6ab5fSopenharmony_ci "//third_party/protobuf/src/google/protobuf", 523af6ab5fSopenharmony_ci "../es2panda", 533af6ab5fSopenharmony_ci "../es2panda/util", 543af6ab5fSopenharmony_ci ] 553af6ab5fSopenharmony_ci} 563af6ab5fSopenharmony_ci 573af6ab5fSopenharmony_ciassembly_proto_configs = [ 583af6ab5fSopenharmony_ci sdk_libc_secshared_config, 593af6ab5fSopenharmony_ci "$ark_root:ark_config", 603af6ab5fSopenharmony_ci ":panda_assembly_proto_public_config", 613af6ab5fSopenharmony_ci "$ark_root/assembler:arkassembler_public_config", 623af6ab5fSopenharmony_ci "$ark_root/libpandabase:arkbase_public_config", 633af6ab5fSopenharmony_ci "$ark_root/libpandafile:arkfile_public_config", 643af6ab5fSopenharmony_ci] 653af6ab5fSopenharmony_ci 663af6ab5fSopenharmony_ciproto_file_defines = [ 673af6ab5fSopenharmony_ci # add your proto file here 683af6ab5fSopenharmony_ci "annotation", 693af6ab5fSopenharmony_ci "assemblyDebug", 703af6ab5fSopenharmony_ci "assemblyField", 713af6ab5fSopenharmony_ci "assemblyFileLocation", 723af6ab5fSopenharmony_ci "assemblyFunction", 733af6ab5fSopenharmony_ci "assemblyIns", 743af6ab5fSopenharmony_ci "assemblyLabel", 753af6ab5fSopenharmony_ci "assemblyLiterals", 763af6ab5fSopenharmony_ci "assemblyProgram", 773af6ab5fSopenharmony_ci "assemblyRecord", 783af6ab5fSopenharmony_ci "assemblyType", 793af6ab5fSopenharmony_ci "compositeProgram", 803af6ab5fSopenharmony_ci "ideHelpers", 813af6ab5fSopenharmony_ci "meta", 823af6ab5fSopenharmony_ci] 833af6ab5fSopenharmony_ci 843af6ab5fSopenharmony_ciproto_file_sources = [] 853af6ab5fSopenharmony_ciproto_generated_header = [] 863af6ab5fSopenharmony_ciproto_generated_source = [] 873af6ab5fSopenharmony_ci 883af6ab5fSopenharmony_ciforeach(proto_file, proto_file_defines) { 893af6ab5fSopenharmony_ci proto_generated_header += [ "$proto_out_dir" + "/" + "$proto_file.pb.h" ] 903af6ab5fSopenharmony_ci proto_generated_source += [ "$proto_out_dir" + "/" + "$proto_file.pb.cc" ] 913af6ab5fSopenharmony_ci proto_file_sources += [ "$proto_base_dir" + "/" + "$proto_file.proto" ] 923af6ab5fSopenharmony_ci} 933af6ab5fSopenharmony_ci 943af6ab5fSopenharmony_ciprotoc_binary_out_path = 953af6ab5fSopenharmony_ci "${THIRDPARTY_PROTOBUF_SUBSYS_NAME}/${THIRDPARTY_PROTOBUF_PART_NAME}" 963af6ab5fSopenharmony_ci 973af6ab5fSopenharmony_ciif (!ark_standalone_build) { 983af6ab5fSopenharmony_ci if (default_toolchain == current_toolchain) { 993af6ab5fSopenharmony_ci #if target build 1003af6ab5fSopenharmony_ci host_out_path = "/" + get_label_info(host_toolchain, "name") 1013af6ab5fSopenharmony_ci } else { 1023af6ab5fSopenharmony_ci #if host build (for some linke mingw) 1033af6ab5fSopenharmony_ci host_out_path = "/../" + get_label_info(host_toolchain, "name") 1043af6ab5fSopenharmony_ci } 1053af6ab5fSopenharmony_ci 1063af6ab5fSopenharmony_ci host_protoc_path = 1073af6ab5fSopenharmony_ci root_out_dir + host_out_path + "/" + protoc_binary_out_path + "/protoc" 1083af6ab5fSopenharmony_ci} else { 1093af6ab5fSopenharmony_ci host_protoc_path = 1103af6ab5fSopenharmony_ci get_label_info( 1113af6ab5fSopenharmony_ci "${ets_frontend_root}/merge_abc:merge_abc(${host_toolchain})", 1123af6ab5fSopenharmony_ci "root_out_dir") + "/" + protoc_binary_out_path + "/protoc" 1133af6ab5fSopenharmony_ci} 1143af6ab5fSopenharmony_ci 1153af6ab5fSopenharmony_ciaction("arkcompiler_generate_proto") { 1163af6ab5fSopenharmony_ci deps = [ "$ark_third_party_root/protobuf:protoc($host_toolchain)" ] 1173af6ab5fSopenharmony_ci args = [] 1183af6ab5fSopenharmony_ci sources = [] 1193af6ab5fSopenharmony_ci outputs = proto_generated_header + proto_generated_source 1203af6ab5fSopenharmony_ci script = "./script/build_proto.sh" 1213af6ab5fSopenharmony_ci 1223af6ab5fSopenharmony_ci args += [ rebase_path(host_protoc_path) ] 1233af6ab5fSopenharmony_ci args += [ 1243af6ab5fSopenharmony_ci "--proto_path", 1253af6ab5fSopenharmony_ci rebase_path(proto_base_dir), 1263af6ab5fSopenharmony_ci "--cpp_out", 1273af6ab5fSopenharmony_ci rebase_path(proto_out_dir), 1283af6ab5fSopenharmony_ci "--experimental_allow_proto3_optional", 1293af6ab5fSopenharmony_ci ] 1303af6ab5fSopenharmony_ci 1313af6ab5fSopenharmony_ci foreach(proto_file_source, proto_file_sources) { 1323af6ab5fSopenharmony_ci #tell gn to check which files as source time 1333af6ab5fSopenharmony_ci sources += [ rebase_path(proto_file_source) ] 1343af6ab5fSopenharmony_ci args += [ rebase_path(proto_file_source) ] 1353af6ab5fSopenharmony_ci } 1363af6ab5fSopenharmony_ci} 1373af6ab5fSopenharmony_ci 1383af6ab5fSopenharmony_ciconfig("proto_file_cpp_config") { 1393af6ab5fSopenharmony_ci include_dirs = [ proto_out_dir ] 1403af6ab5fSopenharmony_ci} 1413af6ab5fSopenharmony_ci 1423af6ab5fSopenharmony_ciohos_source_set("assembly_proto_static") { 1433af6ab5fSopenharmony_ci cflags = [ "-Wno-error=zero-length-array" ] 1443af6ab5fSopenharmony_ci 1453af6ab5fSopenharmony_ci deps = [ 1463af6ab5fSopenharmony_ci ":arkcompiler_generate_proto", 1473af6ab5fSopenharmony_ci "$ark_third_party_root/protobuf:protobuf_lite_static", 1483af6ab5fSopenharmony_ci "$ark_third_party_root/protobuf:protobuf_static", 1493af6ab5fSopenharmony_ci ] 1503af6ab5fSopenharmony_ci 1513af6ab5fSopenharmony_ci external_deps = [] 1523af6ab5fSopenharmony_ci if (!is_arkui_x) { 1533af6ab5fSopenharmony_ci external_deps += [ 1543af6ab5fSopenharmony_ci "runtime_core:libarkassembler_frontend_static", 1553af6ab5fSopenharmony_ci "runtime_core:libarkbase_frontend_static", 1563af6ab5fSopenharmony_ci "runtime_core:libarkfile_frontend_static", 1573af6ab5fSopenharmony_ci ] 1583af6ab5fSopenharmony_ci } else { 1593af6ab5fSopenharmony_ci deps += [ 1603af6ab5fSopenharmony_ci "$ark_root/assembler:libarkassembler_frontend_static", 1613af6ab5fSopenharmony_ci "$ark_root/libpandabase:libarkbase_frontend_static", 1623af6ab5fSopenharmony_ci "$ark_root/libpandafile:libarkfile_frontend_static", 1633af6ab5fSopenharmony_ci ] 1643af6ab5fSopenharmony_ci } 1653af6ab5fSopenharmony_ci 1663af6ab5fSopenharmony_ci sources = proto_generated_header + proto_generated_source + 1673af6ab5fSopenharmony_ci protobuf_snapshot_generator_sources 1683af6ab5fSopenharmony_ci public_configs = assembly_proto_configs 1693af6ab5fSopenharmony_ci public_configs += [ ":proto_file_cpp_config" ] 1703af6ab5fSopenharmony_ci 1713af6ab5fSopenharmony_ci part_name = "ets_frontend" 1723af6ab5fSopenharmony_ci subsystem_name = "arkcompiler" 1733af6ab5fSopenharmony_ci} 1743af6ab5fSopenharmony_ci 1753af6ab5fSopenharmony_ciohos_static_library("panda_assembly_proto_static") { 1763af6ab5fSopenharmony_ci deps = [ ":assembly_proto_static" ] 1773af6ab5fSopenharmony_ci 1783af6ab5fSopenharmony_ci part_name = "ets_frontend" 1793af6ab5fSopenharmony_ci subsystem_name = "arkcompiler" 1803af6ab5fSopenharmony_ci} 1813af6ab5fSopenharmony_ci 1823af6ab5fSopenharmony_ciohos_executable("merge_abc") { 1833af6ab5fSopenharmony_ci use_exceptions = true 1843af6ab5fSopenharmony_ci sources = [ 1853af6ab5fSopenharmony_ci "src/main.cpp", 1863af6ab5fSopenharmony_ci "src/options.cpp", 1873af6ab5fSopenharmony_ci ] 1883af6ab5fSopenharmony_ci 1893af6ab5fSopenharmony_ci include_dirs = [ "./src" ] 1903af6ab5fSopenharmony_ci 1913af6ab5fSopenharmony_ci configs = [ 1923af6ab5fSopenharmony_ci sdk_libc_secshared_config, 1933af6ab5fSopenharmony_ci "$ark_root:ark_config", 1943af6ab5fSopenharmony_ci ":panda_assembly_proto_public_config", 1953af6ab5fSopenharmony_ci "$ark_root/assembler:arkassembler_public_config", 1963af6ab5fSopenharmony_ci "$ark_root/libpandabase:arkbase_public_config", 1973af6ab5fSopenharmony_ci "$ark_root/libpandafile:arkfile_public_config", 1983af6ab5fSopenharmony_ci ":proto_file_cpp_config", 1993af6ab5fSopenharmony_ci ] 2003af6ab5fSopenharmony_ci 2013af6ab5fSopenharmony_ci deps = [ 2023af6ab5fSopenharmony_ci ":panda_assembly_proto_static", 2033af6ab5fSopenharmony_ci "$ark_third_party_root/icu/icu4c:static_icuuc", 2043af6ab5fSopenharmony_ci "../es2panda:es2panda_lib", 2053af6ab5fSopenharmony_ci ] 2063af6ab5fSopenharmony_ci 2073af6ab5fSopenharmony_ci if (!is_arkui_x) { 2083af6ab5fSopenharmony_ci external_deps = [ "runtime_core:libarkziparchive_frontend_static" ] 2093af6ab5fSopenharmony_ci } else { 2103af6ab5fSopenharmony_ci deps += [ "$ark_root/libziparchive:libarkziparchive_frontend_static" ] 2113af6ab5fSopenharmony_ci } 2123af6ab5fSopenharmony_ci 2133af6ab5fSopenharmony_ci ldflags = [] 2143af6ab5fSopenharmony_ci if (is_linux) { 2153af6ab5fSopenharmony_ci if (build_public_version) { 2163af6ab5fSopenharmony_ci ldflags += [ "-static-libstdc++" ] 2173af6ab5fSopenharmony_ci } else { 2183af6ab5fSopenharmony_ci libs = [ libcpp_static_lib ] 2193af6ab5fSopenharmony_ci } 2203af6ab5fSopenharmony_ci 2213af6ab5fSopenharmony_ci defines = [ "PANDA_TARGET_LINUX" ] 2223af6ab5fSopenharmony_ci } else if (is_mac) { 2233af6ab5fSopenharmony_ci defines = [ "PANDA_TARGET_MACOS" ] 2243af6ab5fSopenharmony_ci } else if (is_mingw) { 2253af6ab5fSopenharmony_ci defines = [ "PANDA_TARGET_WINDOWS" ] 2263af6ab5fSopenharmony_ci } 2273af6ab5fSopenharmony_ci 2283af6ab5fSopenharmony_ci if (!use_musl) { 2293af6ab5fSopenharmony_ci ldflags += [ "-lc++" ] 2303af6ab5fSopenharmony_ci } 2313af6ab5fSopenharmony_ci 2323af6ab5fSopenharmony_ci output_name = "merge_abc" 2333af6ab5fSopenharmony_ci install_enable = false 2343af6ab5fSopenharmony_ci part_name = "ets_frontend" 2353af6ab5fSopenharmony_ci subsystem_name = "arkcompiler" 2363af6ab5fSopenharmony_ci} 2373af6ab5fSopenharmony_ci 2383af6ab5fSopenharmony_ciif (is_linux) { 2393af6ab5fSopenharmony_ci ohos_copy("merge_abc_build") { 2403af6ab5fSopenharmony_ci deps = [ ":merge_abc" ] 2413af6ab5fSopenharmony_ci sources = [ "${root_out_dir}/arkcompiler/ets_frontend/merge_abc" ] 2423af6ab5fSopenharmony_ci outputs = [ "${target_out_dir}/merge_abc-tmp" ] 2433af6ab5fSopenharmony_ci module_source_dir = "${root_out_dir}/arkcompiler/ets_frontend" 2443af6ab5fSopenharmony_ci module_install_name = "merge_abc" 2453af6ab5fSopenharmony_ci } 2463af6ab5fSopenharmony_ci 2473af6ab5fSopenharmony_ci ohos_copy("merge_abc_build_ets") { 2483af6ab5fSopenharmony_ci deps = [ ":merge_abc" ] 2493af6ab5fSopenharmony_ci sources = [ "${root_out_dir}/arkcompiler/ets_frontend/merge_abc" ] 2503af6ab5fSopenharmony_ci outputs = [ "${root_out_dir}/arkcompiler/ets_frontend/merge_abc-ets" ] 2513af6ab5fSopenharmony_ci module_source_dir = "${root_out_dir}/arkcompiler/ets_frontend" 2523af6ab5fSopenharmony_ci module_install_name = "merge_abc" 2533af6ab5fSopenharmony_ci } 2543af6ab5fSopenharmony_ci} 2553af6ab5fSopenharmony_ci 2563af6ab5fSopenharmony_ciif (is_mingw) { 2573af6ab5fSopenharmony_ci ohos_copy("merge_abc_build_win") { 2583af6ab5fSopenharmony_ci deps = [ ":merge_abc" ] 2593af6ab5fSopenharmony_ci sources = [ "${root_out_dir}/arkcompiler/ets_frontend/merge_abc.exe" ] 2603af6ab5fSopenharmony_ci outputs = [ "${target_out_dir}/merge_abc-tmp" ] 2613af6ab5fSopenharmony_ci module_source_dir = "${root_out_dir}/arkcompiler/ets_frontend" 2623af6ab5fSopenharmony_ci module_install_name = "merge_abc.exe" 2633af6ab5fSopenharmony_ci } 2643af6ab5fSopenharmony_ci 2653af6ab5fSopenharmony_ci ohos_copy("merge_abc_build_win_ets") { 2663af6ab5fSopenharmony_ci deps = [ ":merge_abc" ] 2673af6ab5fSopenharmony_ci sources = [ "${root_out_dir}/arkcompiler/ets_frontend/merge_abc.exe" ] 2683af6ab5fSopenharmony_ci outputs = [ "${root_out_dir}/arkcompiler/ets_frontend/merge_abc-win-ets" ] 2693af6ab5fSopenharmony_ci module_source_dir = "${root_out_dir}/arkcompiler/ets_frontend" 2703af6ab5fSopenharmony_ci module_install_name = "merge_abc.exe" 2713af6ab5fSopenharmony_ci } 2723af6ab5fSopenharmony_ci} 2733af6ab5fSopenharmony_ci 2743af6ab5fSopenharmony_ciif (is_mac) { 2753af6ab5fSopenharmony_ci ohos_copy("merge_abc_build_mac") { 2763af6ab5fSopenharmony_ci deps = [ ":merge_abc" ] 2773af6ab5fSopenharmony_ci sources = [ "${root_out_dir}/arkcompiler/ets_frontend/merge_abc" ] 2783af6ab5fSopenharmony_ci outputs = [ "${target_out_dir}/merge_abc-tmp" ] 2793af6ab5fSopenharmony_ci module_source_dir = "${root_out_dir}/arkcompiler/ets_frontend" 2803af6ab5fSopenharmony_ci module_install_name = "merge_abc" 2813af6ab5fSopenharmony_ci } 2823af6ab5fSopenharmony_ci 2833af6ab5fSopenharmony_ci ohos_copy("merge_abc_build_mac_ets") { 2843af6ab5fSopenharmony_ci deps = [ ":merge_abc" ] 2853af6ab5fSopenharmony_ci sources = [ "${root_out_dir}/arkcompiler/ets_frontend/merge_abc" ] 2863af6ab5fSopenharmony_ci outputs = [ "${root_out_dir}/arkcompiler/ets_frontend/merge_abc-mac-ets" ] 2873af6ab5fSopenharmony_ci module_source_dir = "${root_out_dir}/arkcompiler/ets_frontend" 2883af6ab5fSopenharmony_ci module_install_name = "merge_abc" 2893af6ab5fSopenharmony_ci } 2903af6ab5fSopenharmony_ci} 2913af6ab5fSopenharmony_ci 2923af6ab5fSopenharmony_cigroup("merge_proto_abc_build") { 2933af6ab5fSopenharmony_ci if (host_os == "linux") { 2943af6ab5fSopenharmony_ci deps = [ ":merge_abc(${toolchain_linux})" ] 2953af6ab5fSopenharmony_ci } 2963af6ab5fSopenharmony_ci 2973af6ab5fSopenharmony_ci if (host_os == "mac") { 2983af6ab5fSopenharmony_ci deps = [ ":merge_abc(${toolchain_mac})" ] 2993af6ab5fSopenharmony_ci } 3003af6ab5fSopenharmony_ci} 3013af6ab5fSopenharmony_ci 3023af6ab5fSopenharmony_cigroup("merge_proto_abc_build_win") { 3033af6ab5fSopenharmony_ci deps = [ ":merge_abc(${toolchain_win})" ] 3043af6ab5fSopenharmony_ci} 305