diff --git a/repos/libports/lib/import/import-ffi.mk b/repos/libports/lib/import/import-ffi.mk index 422f73ee03..92fdaa37cd 100644 --- a/repos/libports/lib/import/import-ffi.mk +++ b/repos/libports/lib/import/import-ffi.mk @@ -5,3 +5,7 @@ endif ifeq ($(filter-out $(SPECS),arm),) INC_DIR += $(call select_from_ports,ffi)/include/ffi/arm endif + +ifeq ($(filter-out $(SPECS),arm_64),) +INC_DIR += $(call select_from_ports,ffi)/include/ffi/arm_64 +endif diff --git a/repos/libports/lib/mk/spec/arm_64/ffi.mk b/repos/libports/lib/mk/spec/arm_64/ffi.mk new file mode 100644 index 0000000000..e090c5a7d4 --- /dev/null +++ b/repos/libports/lib/mk/spec/arm_64/ffi.mk @@ -0,0 +1,20 @@ +SHARED_LIB = yes + +LIBS = libc + +FFI_PORT = $(call select_from_ports,ffi)/src/lib/ffi + +INC_DIR = $(FFI_PORT)/include + +INC_DIR += $(call select_from_ports,ffi)/include/ffi/arm_64 \ + $(REP_DIR)/src/lib/ffi + +CC_OPT = -DFFI_NO_RAW_API=0 + +SRC_C = prep_cif.c types.c ffi.c +SRC_S = sysv.S + +vpath prep_cif.c $(FFI_PORT)/src +vpath types.c $(FFI_PORT)/src +vpath ffi.c $(FFI_PORT)/src/aarch64 +vpath sysv.S $(FFI_PORT)/src/aarch64 diff --git a/repos/libports/ports/ffi.hash b/repos/libports/ports/ffi.hash index c5c7ee0eb4..8320dae3d9 100644 --- a/repos/libports/ports/ffi.hash +++ b/repos/libports/ports/ffi.hash @@ -1 +1 @@ -f406cbb77c4d8cd0167a5436988b147dae85734f +741f239d1a63d7402663db05ed1058e63f2aa105 diff --git a/repos/libports/ports/ffi.port b/repos/libports/ports/ffi.port index 183135ea8f..c2ac254d91 100644 --- a/repos/libports/ports/ffi.port +++ b/repos/libports/ports/ffi.port @@ -8,14 +8,16 @@ DIR(ffi) := src/lib/ffi $(call check_tool,sed) -DIRS := include/ffi/x86_64 include/ffi/arm +DIRS := include/ffi/x86_64 include/ffi/arm include/ffi/arm_64 DIR_CONTENT(include/ffi/x86_64) := src/lib/ffi/src/x86/ffitarget.h -DIR_CONTENT(include/ffi/arm) := src/lib/ffi/src/arm/ffitarget.h +DIR_CONTENT(include/ffi/arm) := src/lib/ffi/src/arm/ffitarget.h +DIR_CONTENT(include/ffi/arm_64) := src/lib/ffi/src/aarch64/ffitarget.h gen_inc := ffi.h gen_files := $(addprefix include/ffi/x86_64/,$(gen_inc)) \ - $(addprefix include/ffi/arm/,$(gen_inc)) + $(addprefix include/ffi/arm/,$(gen_inc)) \ + $(addprefix include/ffi/arm_64/,$(gen_inc)) default: $(gen_files) @@ -33,6 +35,12 @@ subst_ARM := \ "@HAVE_LONG_DOUBLE_VARIANT@/0" \ "@FFI_EXEC_TRAMPOLINE_TABLE@/0" +subst_ARM_64 := \ + "@TARGET@/AARCH64" \ + "@HAVE_LONG_DOUBLE@/0" \ + "@HAVE_LONG_DOUBLE_VARIANT@/0" \ + "@FFI_EXEC_TRAMPOLINE_TABLE@/0" + apply_substitutions = $(VERBOSE)for i in $(2); do sed -i "s/$$i/g" $(1); done include/ffi/x86_64/ffi.h: @@ -44,3 +52,8 @@ include/ffi/arm/ffi.h: @$(MSG_GENERATE)$@ $(VERBOSE)cp src/lib/ffi/include/ffi.h.in $@ $(call apply_substitutions,$@,$(subst_ARM)) + +include/ffi/arm_64/ffi.h: + @$(MSG_GENERATE)$@ + $(VERBOSE)cp src/lib/ffi/include/ffi.h.in $@ + $(call apply_substitutions,$@,$(subst_ARM_64))