# Copyright (c) 2021-2022 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. import("//arkcompiler/runtime_core/ark_config.gni") import("//build/ohos.gni") config("arkencoder_config") { include_dirs = [ "$ark_root/compiler/optimizer/code_generator" ] cflags_cc = [ "-DPANDA_BUILD" ] if (ark_standalone_build) { ldflags = [ "-lrt" ] } } ohos_shared_library("libarkencoder") { sources = [ "target/asm_printer.cpp", "target/target.cpp", ] deps = [] if (current_cpu == "x86") { sources += [ "target/x86/callconv.cpp", "target/x86/encode.cpp", "target/x86/regfile.cpp", ] include_dirs = [ "$ark_root/compiler/optimizer/code_generator/target/x86" ] } else if (current_cpu == "amd64" || current_cpu == "x64" || current_cpu == "x86_64") { if (!is_mingw) { sources += [ "target/aarch64/callconv.cpp", "target/aarch64/encode.cpp", "target/aarch64/regfile.cpp", ] cflags_cc = [ "-DUSE_VIXL_ARM64", "-DVIXL_CODE_BUFFER_MMAP", ] include_dirs = [ "$ark_root/compiler/optimizer/code_generator/target/aarch64" ] if (ark_enable_compiler_x64) { sources += [ "target/amd64/callconv.cpp", "target/amd64/encode.cpp", "target/amd64/regfile.cpp", ] include_dirs += [ "$ark_third_party_root/asmjit/src", "$ark_third_party_root/zydis/include", "$ark_third_party_root/zydis/zycore/include", ] deps += [ "$ark_third_party_root/asmjit:libasmjit_frontend_static", "$ark_third_party_root/zydis:libZydis", ] } } } else if (current_cpu == "arm") { sources += [ "target/aarch32/callconv.cpp", "target/aarch32/encode.cpp", "target/aarch32/regfile.cpp", ] cflags_cc = [ "-DUSE_VIXL_ARM32", "-DVIXL_CODE_BUFFER_MMAP", ] include_dirs = [ "$ark_root/compiler/optimizer/code_generator/target/aarch32" ] } else if (current_cpu == "arm64") { sources += [ "target/aarch64/callconv.cpp", "target/aarch64/encode.cpp", "target/aarch64/regfile.cpp", ] cflags_cc = [ "-DUSE_VIXL_ARM64", "-DVIXL_CODE_BUFFER_MMAP", ] include_dirs = [ "$ark_root/compiler/optimizer/code_generator/target/aarch64" ] } configs = [ "$ark_root:ark_config", "$ark_root/libpandabase:arkbase_public_config", "$ark_root/compiler:arkcompiler_public_config", ":arkencoder_config", ] deps += [ "$ark_root/compiler:libarkcompiler_intrinsics_gen_inl_can_encode_builtin_inl", "$ark_root/compiler:libarkcompiler_intrinsics_gen_inl_generate_operations_intrinsic_graph_inl", "$ark_root/compiler:libarkcompiler_intrinsics_gen_inl_generate_operations_intrinsic_inst_inl", "$ark_root/compiler:libarkcompiler_intrinsics_gen_inl_get_intrinsics_inl", "$ark_root/compiler:libarkcompiler_intrinsics_gen_inl_get_intrinsics_names_inl", "$ark_root/compiler:libarkcompiler_intrinsics_gen_inl_intrinsic_codegen_test_inl", "$ark_root/compiler:libarkcompiler_intrinsics_gen_inl_intrinsics_enum_inl", "$ark_root/compiler:libarkcompiler_intrinsics_gen_inl_intrinsics_ir_build_inl", "$ark_root/libpandabase:libarkbase", ] output_extension = "so" relative_install_dir = "ark" part_name = "runtime_core" subsystem_name = "arkcompiler" } ohos_static_library("libarkencoder_frontend_static") { sources = [ "target/asm_printer.cpp", "target/target.cpp", ] deps = [] if (current_cpu == "x86") { sources += [ "target/x86/callconv.cpp", "target/x86/encode.cpp", "target/x86/regfile.cpp", ] include_dirs = [ "$ark_root/compiler/optimizer/code_generator/target/x86" ] } else if (current_cpu == "amd64" || current_cpu == "x64" || current_cpu == "x86_64") { if (!is_mingw) { sources += [ "target/aarch64/callconv.cpp", "target/aarch64/encode.cpp", "target/aarch64/regfile.cpp", ] cflags_cc = [ "-DUSE_VIXL_ARM64", "-DVIXL_CODE_BUFFER_MMAP", ] include_dirs = [ "$ark_root/compiler/optimizer/code_generator/target/aarch64" ] if (ark_enable_compiler_x64) { sources += [ "target/amd64/callconv.cpp", "target/amd64/encode.cpp", "target/amd64/regfile.cpp", ] include_dirs += [ "$ark_third_party_root/asmjit/src", "$ark_third_party_root/zydis/include", "$ark_third_party_root/zydis/zycore/include", ] deps += [ "$ark_third_party_root/asmjit:libasmjit_frontend_static", "$ark_third_party_root/zydis:libZydis", ] } } } else if (current_cpu == "arm") { sources += [ "target/aarch32/callconv.cpp", "target/aarch32/encode.cpp", "target/aarch32/regfile.cpp", ] cflags_cc = [ "-DUSE_VIXL_ARM32", "-DVIXL_CODE_BUFFER_MMAP", ] include_dirs = [ "$ark_root/compiler/optimizer/code_generator/target/aarch32" ] } else if (current_cpu == "arm64") { sources += [ "target/aarch64/callconv.cpp", "target/aarch64/encode.cpp", "target/aarch64/regfile.cpp", ] cflags_cc = [ "-DUSE_VIXL_ARM64", "-DVIXL_CODE_BUFFER_MMAP", ] include_dirs = [ "$ark_root/compiler/optimizer/code_generator/target/aarch64" ] } configs = [ "$ark_root:ark_config", "$ark_root/libpandabase:arkbase_public_config", "$ark_root/compiler:arkcompiler_public_config", ":arkencoder_config", ] deps += [ "$ark_root/compiler:intrinsics_stub_inl_h", "$ark_root/compiler:libarkcompiler_intrinsics_gen_inl_can_encode_builtin_inl", "$ark_root/compiler:libarkcompiler_intrinsics_gen_inl_generate_operations_intrinsic_graph_inl", "$ark_root/compiler:libarkcompiler_intrinsics_gen_inl_generate_operations_intrinsic_inst_inl", "$ark_root/compiler:libarkcompiler_intrinsics_gen_inl_get_intrinsics_inl", "$ark_root/compiler:libarkcompiler_intrinsics_gen_inl_get_intrinsics_names_inl", "$ark_root/compiler:libarkcompiler_intrinsics_gen_inl_intrinsics_enum_inl", "$ark_root/compiler:libarkcompiler_intrinsics_gen_inl_intrinsics_ir_build_inl", "$ark_root/compiler:libarkcompiler_opcodes_h_arch_info_gen_h", "$ark_root/libpandabase:libarkbase_frontend_static", ] }