mirror of
https://gitee.com/openharmony/third_party_libffi
synced 2024-11-23 03:09:42 +00:00
11f14b52e5
Signed-off-by: cyberbox <468042667@qq.com>
219 lines
6.2 KiB
Plaintext
219 lines
6.2 KiB
Plaintext
# Copyright (c) Huawei Technologies Co., Ltd. 2021. All rights reserved.
|
|
|
|
import("//build/ohos.gni")
|
|
|
|
libffi_dir = "${target_gen_dir}/libffi-3.4.2"
|
|
action("libffi_action") {
|
|
print("libffi_action is exec")
|
|
script = "//third_party/libffi/install.py"
|
|
outputs = [
|
|
"$libffi_dir/src/raw_api.c",
|
|
"$libffi_dir/src/tramp.c",
|
|
"$libffi_dir/src/closures.c",
|
|
"$libffi_dir/src/debug.c",
|
|
"$libffi_dir/src/types.c",
|
|
"$libffi_dir/src/java_raw_api.c",
|
|
"$libffi_dir/src/dlmalloc.c",
|
|
"$libffi_dir/src/prep_cif.c",
|
|
"$libffi_dir/src/cris/sysv.S",
|
|
"$libffi_dir/src/cris/ffi.c",
|
|
"$libffi_dir/src/arc/ffi.c",
|
|
"$libffi_dir/src/arc/arcompact.S",
|
|
"$libffi_dir/src/s390/sysv.S",
|
|
"$libffi_dir/src/s390/ffi.c",
|
|
"$libffi_dir/src/or1k/sysv.S",
|
|
"$libffi_dir/src/or1k/ffi.c",
|
|
"$libffi_dir/src/avr32/sysv.S",
|
|
"$libffi_dir/src/avr32/ffi.c",
|
|
"$libffi_dir/src/tile/ffi.c",
|
|
"$libffi_dir/src/tile/tile.S",
|
|
"$libffi_dir/src/pa/linux.S",
|
|
"$libffi_dir/src/pa/ffi.c",
|
|
"$libffi_dir/src/pa/hpux32.S",
|
|
"$libffi_dir/src/x86/win64_intel.S",
|
|
"$libffi_dir/src/x86/sysv.S",
|
|
"$libffi_dir/src/x86/ffi.c",
|
|
"$libffi_dir/src/x86/sysv_intel.S",
|
|
"$libffi_dir/src/x86/ffi64.c",
|
|
"$libffi_dir/src/x86/ffiw64.c",
|
|
"$libffi_dir/src/x86/win64.S",
|
|
"$libffi_dir/src/x86/unix64.S",
|
|
"$libffi_dir/src/alpha/ffi.c",
|
|
"$libffi_dir/src/alpha/osf.S",
|
|
"$libffi_dir/src/csky/sysv.S",
|
|
"$libffi_dir/src/csky/ffi.c",
|
|
"$libffi_dir/src/bfin/sysv.S",
|
|
"$libffi_dir/src/bfin/ffi.c",
|
|
"$libffi_dir/src/sh/sysv.S",
|
|
"$libffi_dir/src/sh/ffi.c",
|
|
"$libffi_dir/src/arm/sysv.S",
|
|
"$libffi_dir/src/arm/ffi.c",
|
|
"$libffi_dir/src/arm/sysv_msvc_arm32.S",
|
|
"$libffi_dir/src/sparc/v9.S",
|
|
"$libffi_dir/src/sparc/ffi.c",
|
|
"$libffi_dir/src/sparc/ffi64.c",
|
|
"$libffi_dir/src/sparc/v8.S",
|
|
"$libffi_dir/src/xtensa/sysv.S",
|
|
"$libffi_dir/src/xtensa/ffi.c",
|
|
"$libffi_dir/src/moxie/ffi.c",
|
|
"$libffi_dir/src/moxie/eabi.S",
|
|
"$libffi_dir/src/frv/ffi.c",
|
|
"$libffi_dir/src/frv/eabi.S",
|
|
"$libffi_dir/src/m88k/ffi.c",
|
|
"$libffi_dir/src/m88k/obsd.S",
|
|
"$libffi_dir/src/ia64/ffi.c",
|
|
"$libffi_dir/src/ia64/unix.S",
|
|
"$libffi_dir/src/nios2/sysv.S",
|
|
"$libffi_dir/src/nios2/ffi.c",
|
|
"$libffi_dir/src/riscv/sysv.S",
|
|
"$libffi_dir/src/riscv/ffi.c",
|
|
"$libffi_dir/src/m68k/sysv.S",
|
|
"$libffi_dir/src/m68k/ffi.c",
|
|
"$libffi_dir/src/sh64/sysv.S",
|
|
"$libffi_dir/src/sh64/ffi.c",
|
|
"$libffi_dir/src/powerpc/ffi_linux64.c",
|
|
"$libffi_dir/src/powerpc/darwin.S",
|
|
"$libffi_dir/src/powerpc/darwin_closure.S",
|
|
"$libffi_dir/src/powerpc/sysv.S",
|
|
"$libffi_dir/src/powerpc/ffi_sysv.c",
|
|
"$libffi_dir/src/powerpc/ffi.c",
|
|
"$libffi_dir/src/powerpc/aix_closure.S",
|
|
"$libffi_dir/src/powerpc/linux64_closure.S",
|
|
"$libffi_dir/src/powerpc/linux64.S",
|
|
"$libffi_dir/src/powerpc/ffi_darwin.c",
|
|
"$libffi_dir/src/powerpc/aix.S",
|
|
"$libffi_dir/src/powerpc/ppc_closure.S",
|
|
"$libffi_dir/src/aarch64/sysv.S",
|
|
"$libffi_dir/src/aarch64/ffi.c",
|
|
"$libffi_dir/src/aarch64/win64_armasm.S",
|
|
"$libffi_dir/src/microblaze/sysv.S",
|
|
"$libffi_dir/src/microblaze/ffi.c",
|
|
"$libffi_dir/src/metag/sysv.S",
|
|
"$libffi_dir/src/metag/ffi.c",
|
|
"$libffi_dir/src/mips/o32.S",
|
|
"$libffi_dir/src/mips/n32.S",
|
|
"$libffi_dir/src/mips/ffi.c",
|
|
"$libffi_dir/src/sw_64/ffi.c",
|
|
"$libffi_dir/src/sw_64/osf.S",
|
|
"$libffi_dir/src/m32r/sysv.S",
|
|
"$libffi_dir/src/m32r/ffi.c",
|
|
"$libffi_dir/src/kvx/sysv.S",
|
|
"$libffi_dir/src/kvx/ffi.c",
|
|
"$libffi_dir/src/vax/elfbsd.S",
|
|
"$libffi_dir/src/vax/ffi.c",
|
|
]
|
|
|
|
inputs = [ "//third_party/libffi/libffi-3.4.2.tar.gz" ]
|
|
libffi_path = rebase_path("${target_gen_dir}", root_build_dir)
|
|
libffi_source_path = rebase_path("//third_party/libffi", root_build_dir)
|
|
args = [
|
|
"--gen-dir",
|
|
"$libffi_path",
|
|
"--source-dir",
|
|
"$libffi_source_path",
|
|
]
|
|
}
|
|
|
|
config("ffi_public_config") {
|
|
if (target_cpu == "arm") {
|
|
include_dirs = [
|
|
"$libffi_dir/include",
|
|
"$libffi_dir/src/arm",
|
|
]
|
|
} else if (target_cpu == "x86_64") {
|
|
include_dirs = [
|
|
"$libffi_dir/include",
|
|
"$libffi_dir/src/x86",
|
|
]
|
|
} else {
|
|
include_dirs = [
|
|
"$libffi_dir/include",
|
|
"$libffi_dir/src/aarch64",
|
|
]
|
|
}
|
|
}
|
|
|
|
ohos_shared_library("ffi") {
|
|
if (target_cpu == "arm") {
|
|
include_dirs = [
|
|
"$libffi_dir",
|
|
"$libffi_dir/include",
|
|
"$libffi_dir/src/arm",
|
|
]
|
|
|
|
cflags = [
|
|
"-DTARGET=ARM",
|
|
"-Wno-sign-compare",
|
|
"-Wno-implicit-function-declaration",
|
|
"-Wno-extern-initializer",
|
|
]
|
|
|
|
sources = [
|
|
"$libffi_dir/src/arm/ffi.c",
|
|
"$libffi_dir/src/arm/sysv.S",
|
|
"$libffi_dir/src/closures.c",
|
|
"$libffi_dir/src/java_raw_api.c",
|
|
"$libffi_dir/src/prep_cif.c",
|
|
"$libffi_dir/src/raw_api.c",
|
|
"$libffi_dir/src/tramp.c",
|
|
"$libffi_dir/src/types.c",
|
|
]
|
|
} else if (target_cpu == "x86_64") {
|
|
include_dirs = [
|
|
"$libffi_dir",
|
|
"$libffi_dir/include",
|
|
"$libffi_dir/src/x86",
|
|
]
|
|
|
|
cflags = [
|
|
"-DTARGET=X86_64",
|
|
"-Wno-sign-compare",
|
|
"-Wno-implicit-function-declaration",
|
|
"-Wno-extern-initializer",
|
|
]
|
|
|
|
sources = [
|
|
"$libffi_dir/src/closures.c",
|
|
"$libffi_dir/src/java_raw_api.c",
|
|
"$libffi_dir/src/prep_cif.c",
|
|
"$libffi_dir/src/raw_api.c",
|
|
"$libffi_dir/src/tramp.c",
|
|
"$libffi_dir/src/types.c",
|
|
"$libffi_dir/src/x86/ffi64.c",
|
|
"$libffi_dir/src/x86/ffiw64.c",
|
|
"$libffi_dir/src/x86/unix64.S",
|
|
"$libffi_dir/src/x86/win64.S",
|
|
]
|
|
} else {
|
|
include_dirs = [
|
|
"$libffi_dir",
|
|
"$libffi_dir/include",
|
|
"$libffi_dir/src/aarch64",
|
|
]
|
|
|
|
cflags = [
|
|
"-DTARGET=AARCH64",
|
|
"-Wno-sign-compare",
|
|
"-Wno-implicit-function-declaration",
|
|
"-Wno-extern-initializer",
|
|
]
|
|
|
|
sources = [
|
|
"$libffi_dir/src/aarch64/ffi.c",
|
|
"$libffi_dir/src/aarch64/sysv.S",
|
|
"$libffi_dir/src/closures.c",
|
|
"$libffi_dir/src/java_raw_api.c",
|
|
"$libffi_dir/src/prep_cif.c",
|
|
"$libffi_dir/src/raw_api.c",
|
|
"$libffi_dir/src/tramp.c",
|
|
"$libffi_dir/src/types.c",
|
|
]
|
|
}
|
|
|
|
deps = [ ":libffi_action" ]
|
|
public_configs = [ ":ffi_public_config" ]
|
|
|
|
part_name = "libffi"
|
|
subsystem_name = "thirdparty"
|
|
}
|