diff --git a/build.xml b/build.xml
index 02223dd48f..bce1851575 100644
--- a/build.xml
+++ b/build.xml
@@ -276,8 +276,7 @@
-
-
+
@@ -295,6 +294,11 @@
+
+
+
+
+
@@ -316,6 +320,9 @@
+
+
+
@@ -521,7 +528,7 @@ com/sun/jna/openbsd-x86-64/libjnidispatch.so;
processor=x86-64;osname=openbsd,
com/sun/jna/darwin/libjnidispatch.jnilib;
-osname=macosx;processor=x86;processor=x86-64;processor=ppc
+osname=macosx;processor=x86;processor=x86-64;processor=aarch64;processor=ppc
"/>
@@ -873,6 +880,21 @@ osname=macosx;processor=x86;processor=x86-64;processor=ppc
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -882,27 +904,12 @@ osname=macosx;processor=x86;processor=x86-64;processor=ppc
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -918,49 +925,41 @@ osname=macosx;processor=x86;processor=x86-64;processor=ppc
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
+
+
-
+
-
-
+
+
-
+
-
-
+
+
+
+
+
+
+
+
+
@@ -989,7 +988,7 @@ osname=macosx;processor=x86;processor=x86-64;processor=ppc
-
+
@@ -1055,6 +1054,68 @@ cd ..
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1074,6 +1135,7 @@ cd ..
+
-
+
-
+
diff --git a/lib/native/darwin.jar b/lib/native/darwin.jar
index b67789b883..7ac4a0daf0 100644
Binary files a/lib/native/darwin.jar and b/lib/native/darwin.jar differ
diff --git a/native/Makefile b/native/Makefile
index 48dbd6d594..5f0b633489 100644
--- a/native/Makefile
+++ b/native/Makefile
@@ -11,7 +11,7 @@
#
# Windows (x86/amd64/aarch64)
# Windows CE/Mobile (arm)
-# Darwin/OS X (i386/x86_64/ppc)
+# Darwin/OS X (i386/x86-64/ppc/aarch64)
# Linux (i386/amd64/ppc/arm)
# Solaris (i386/amd64/sparc/sparcv9)
# AIX (ppc/ppc64)
@@ -392,44 +392,56 @@ endif
ifeq ($(OS),darwin)
-XCODE_VERSION=$(shell xcodebuild -version | grep Xcode | sed 's/^Xcode \([1-9]\).*/\1/g')
-JAVA_INCLUDES+=-I/System/Library/Frameworks/JavaVM.framework/Headers
-DEFAULT_ARCH=$(shell arch)
-ARCH=$(shell arch)
-HOST_CONFIG=--host $(ARCH)-apple-darwin
-FFI_ENV += CC="$(CC)" CFLAGS="-arch $(ARCH) $(ISYSROOT) $(COPT) $(CDEBUG)" CPPFLAGS="$(CDEFINES)" LD="$(LD) -arch $(ARCH)"
-ALT_ARCHS=
-ifneq ($(ARCH),i386)
-ALT_ARCHS+=i386
+
+DARWIN_ARCH=$(ARCH)
+ifeq ($(ARCH),aarch64)
+ DARWIN_ARCH=arm64
+else
+ifeq ($(ARCH),x86-64)
+ DARWIN_ARCH=x86_64
+else
+ifeq ($(ARCH),x86)
+ DARWIN_ARCH=x86
+else
endif
-ifneq ($(ARCH),x86_64)
-ALT_ARCHS+=x86_64
endif
+endif
+
+XCODE_VERSION=$(shell xcodebuild -version | grep Xcode | sed 's/^Xcode \([1-9][0-9]*\).*/\1/g')
+MACOS_VERSION_MAJOR=$(shell sw_vers -productVersion | cut -d. -f 1)
+MACOS_VERSION_MINOR=$(shell sw_vers -productVersion | cut -d. -f 2)
+JAVA_INCLUDES+=-I/System/Library/Frameworks/JavaVM.framework/Headers
+DEFAULT_ARCH=$(shell arch)
+HOST_CONFIG=--host $(DARWIN_ARCH)-apple-darwin
+FFI_ENV += CC="$(CC)" CFLAGS="-arch $(DARWIN_ARCH) $(ISYSROOT) $(COPT) $(CDEBUG)" CPPFLAGS="$(CDEFINES)" LD="$(LD) -arch $(DARWIN_ARCH)"
+LIBSFX=.dylib
+JNISFX=-$(ARCH).jnilib
+# JAWT no longer supported on OSX
+CDEFINES+=-DTARGET_RT_MAC_CFM=0 -DFFI_MMAP_EXEC_WRIT -DNO_JAWT
+
ifneq ($(ARCH),ppc)
-ifeq ($(XCODE_VERSION),3)
-# Xcode 3 options
-# not supported on XCode 4+
-ALT_ARCHS+=ppc
-else
+ifneq ($(XCODE_VERSION),3)
# Xcode 4+ options
NO_COMPACT_UNWIND=-Wl,-no_compact_unwind
endif
endif
-LIBSFX=.dylib
-JNISFX=.jnilib
ifneq ($(SDKROOT),)
SYSLIBROOT=-Wl,-syslibroot,$(SDKROOT)
ISYSROOT=-isysroot $(SDKROOT)
-ARCHFLAGS=-arch i386 -arch x86_64
-ifeq ($(XCODE_VERSION),3)
-ARCHFLAGS+=-arch ppc
-endif
+ARCHFLAGS+=-arch $(DARWIN_ARCH)
endif
PCFLAGS+=$(ISYSROOT) -x objective-c
-# JAWT no longer supported on OSX
-CDEFINES+=-DTARGET_RT_MAC_CFM=0 -DFFI_MMAP_EXEC_WRIT -DNO_JAWT
-LDFLAGS=$(ARCHFLAGS) -dynamiclib -o $@ -framework JavaVM \
+
+# MAJOR < 10 || (MAJOR = 10 && MINOR < 7)
+MACOS_LT_10_7 = $(shell [ ${MACOS_VERSION_MAJOR} -lt 10 -o ${MACOS_VERSION_MAJOR} -eq 10 -a ${MACOS_VERSION_MINOR} -lt 7 ] && echo true)
+
+# JavaVM.framwork is "Deprecated in OS X v10.7."
+ifeq ($(MACOS_LT_10_7),true)
+FRAMEWORK=-framework JavaVM
+endif
+
+LDFLAGS=$(ARCHFLAGS) -dynamiclib -o $@ $(FRAMEWORK) \
-compatibility_version $(shell echo ${JNA_JNI_VERSION}|sed 's/^\([0-9][0-9]*\).*/\1/g') \
-current_version $(JNA_JNI_VERSION) \
-mmacosx-version-min=10.3 \
@@ -447,11 +459,7 @@ endif
$(BUILD)/%.o : %.c dispatch.h protect.h $(FFI_LIB)
@mkdir -p $(BUILD)
ifneq ($(SDKROOT),)
- $(CC) $(LOC_CC_OPTS) -arch $(ARCH) $(CFLAGS) -c $< -o $@.$(ARCH)
- for arch in $(ALT_ARCHS); do \
- $(CC) $(LOC_CC_OPTS) -arch $$arch -I$(BUILD)/libffi.$$arch/include $(CFLAGS) -c $< -o $@.$$arch; \
- done
- lipo -create -output $@ $@.*
+ $(CC) $(LOC_CC_OPTS) -arch $(DARWIN_ARCH) $(CFLAGS) -c $< -o $@
else
$(CC) $(CFLAGS) $(LOC_CC_OPTS) -c $< $(COUT)
endif
@@ -507,25 +515,6 @@ $(FFI_LIB):
&& $(FFI_ENV) $(FFI_SRC)/configure $(FFI_CONFIG) $(HOST_CONFIG)); \
fi
$(MAKE) -C $(FFI_BUILD)
-ifneq ($(SDKROOT),)
- @for arch in $(ALT_ARCHS); do \
- mkdir -p $(BUILD)/libffi.$$arch; \
- if [ ! -f $(BUILD)/libffi.$$arch/Makefile ]; then \
- echo "Configuring libffi ($$arch)"; \
- (cd $(BUILD)/libffi.$$arch \
- && CC="$(CC)" CFLAGS="-arch $$arch $(ISYSROOT) $(COPT) $(CDEBUG)" CPPFLAGS="$(CDEFINES)" \
- LDFLAGS="-arch $$arch" \
- $(FFI_SRC)/configure $(FFI_CONFIG) --host=$$arch-apple-darwin --disable-dependency-tracking); \
- fi; \
- $(MAKE) -C $(BUILD)/libffi.$$arch; \
- done
-ifneq ($(ALT_ARCHS),)
- /usr/bin/libtool -static -o $@.tmp $(FFI_BUILD)/.libs/${@F} $(BUILD)/libffi.*/.libs/${@F}
-else
- /usr/bin/libtool -static -o $@.tmp $(FFI_BUILD)/.libs/${@F}
-endif
- mv $@.tmp $@
-endif
endif
clean:
diff --git a/native/build.xml b/native/build.xml
index 1d17b6d84e..84a36aa27b 100644
--- a/native/build.xml
+++ b/native/build.xml
@@ -15,8 +15,7 @@
-
-
+
@@ -238,11 +237,17 @@
-
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -250,12 +255,6 @@
-
-
-
-
-
-
@@ -279,43 +278,40 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
+
+
-
+
-
-
+
+
-
+
-
-
+
+
+
+
+
+
+
+
diff --git a/test/com/sun/jna/PlatformTest.java b/test/com/sun/jna/PlatformTest.java
index 21eea41c8d..b82679aa38 100644
--- a/test/com/sun/jna/PlatformTest.java
+++ b/test/com/sun/jna/PlatformTest.java
@@ -47,6 +47,9 @@ public void testOSPrefix() {
assertEquals("Wrong resource path Mac/x86_64", "darwin",
Platform.getNativeLibraryResourcePrefix(Platform.MAC,
"x86_64", "Mac"));
+ assertEquals("Wrong resource path Mac/aarch64", "darwin",
+ Platform.getNativeLibraryResourcePrefix(Platform.MAC,
+ "aarch64", "Mac"));
assertEquals("Wrong resource path Solaris/sparc", "sunos-sparc",
Platform.getNativeLibraryResourcePrefix(Platform.SOLARIS,
"sparc", "Solaris"));