package( default_visibility = [ "@//:android_cuttlefish", "@wayland//:__subpackages__", ], ) COMMON_SRCS = [ "src/closures.c", "src/debug.c", "src/java_raw_api.c", "src/prep_cif.c", "src/raw_api.c", "src/types.c", ] SRCS_X86_64 = [ "src/x86/asmnames.h", "src/x86/ffitarget.h", "src/x86/ffi64.c", "src/x86/ffiw64.c", "src/x86/internal64.h", "src/x86/unix64.S", "src/x86/win64.S", ] SRCS_ARM64 = [ "src/aarch64/ffi.c", "src/aarch64/ffitarget.h", "src/aarch64/internal.h", "src/aarch64/sysv.S", ] COPTS_X86_64 = [ "-DHAVE_AS_X86_PCREL", "-DHAVE_AS_ASCII_PSEUDO_OP", ] COPTS_ARM64 = [ ] DEPS_X86_64 = [ "@//libffi/linux-x86:libffi_linux_x86", ] DEPS_ARM64 = [ "@//libffi/linux-arm64:libffi_linux_arm64", ] genrule( name = "ffi_header", srcs = ["include/ffi.h.in"], outs = ["ffi_gen.h"], cmd = "$(location @//:gen_ffi_header) < $(SRCS) > $(OUTS)", tools = ["@//:gen_ffi_header"], ) cc_library( name = "libffi_include", hdrs = [ "include/ffi_cfi.h", "include/ffi_common.h", "src/dlmalloc.c", ":ffi_header", ], includes = [ "include", "src", ], ) cc_library( name = "libffi", srcs = COMMON_SRCS + select({ "@platforms//cpu:x86_64": SRCS_X86_64, "@platforms//cpu:arm64": SRCS_ARM64, "//conditions:default": [], }), copts = [ "-Wall", "-Werror", "-Wno-error=incompatible-pointer-types", "-Wno-incompatible-pointer-types", "-Wno-deprecated-declarations", "-Wno-missing-field-initializers", "-Wno-null-pointer-arithmetic", "-Wno-pointer-arith", "-Wno-sign-compare", "-Wno-unused-parameter", "-Wno-unused-result", "-Wno-unused-but-set-variable", ] + select({ "@platforms//cpu:x86_64": COPTS_X86_64, "@platforms//cpu:arm64": COPTS_ARM64, "//conditions:default": [], }), deps = [":libffi_include"] + select({ "@platforms//cpu:x86_64": DEPS_X86_64, "@platforms//cpu:arm64": DEPS_ARM64, "//conditions:default": [], }), )