From fe7e8a4278d33baa587f72ed760a5f4156733eb4 Mon Sep 17 00:00:00 2001 From: Un1q32 Date: Sun, 20 Apr 2025 12:30:37 -0400 Subject: [PATCH] support mac --- build.sh | 14 +++---- jni-headers/darwin/jawt_md.h | 77 ++++++++++++++++++++++++++++++++++++ jni-headers/darwin/jni_md.h | 66 +++++++++++++++++++++++++++++++ jni-headers/jni_md.h | 2 + 4 files changed, 152 insertions(+), 7 deletions(-) create mode 100644 jni-headers/darwin/jawt_md.h create mode 100644 jni-headers/darwin/jni_md.h diff --git a/build.sh b/build.sh index 58bd62b..d6e7566 100755 --- a/build.sh +++ b/build.sh @@ -25,12 +25,12 @@ if ! [ -d macsdk-arm64 ]; then mv MacOS* macsdk-arm64 fi -#$CLANG $CFLAGS -Ijni-headers -fuse-ld=lld -target x86_64-apple-macos10.8 oc2rnet.c -shared -o liboc2rnet-x86_64.dylib -#$CLANG $CFLAGS -Ijni-headers -fuse-ld=lld -target x86_64-apple-macos11 oc2rnet.c -shared -o liboc2rnet-arm64.dylib +$CLANG $CFLAGS -Ijni-headers -fuse-ld=lld oc2rnet.c -shared -target x86_64-apple-macos10.8 -isysroot macsdk-intel -o liboc2rnet-x86_64.dylib +$CLANG $CFLAGS -Ijni-headers -fuse-ld=lld oc2rnet.c -shared -target arm64-apple-macos11.0 -isysroot macsdk-arm64 -o liboc2rnet-arm64.dylib -#$STRIP liboc2rnet-* +$STRIP liboc2rnet-* -#$LIPO -create liboc2rnet-*.dylib -output liboc2rnet.dylib +$LIPO -create liboc2rnet-*.dylib -output liboc2rnet.dylib rm -f liboc2rnet-*.dylib @@ -41,9 +41,9 @@ if ! [ -d zig ]; then mv zig-* zig fi -zig/zig cc $CFLAGS -Ijni-headers oc2rnet.c -static -shared -target x86_64-linux-musl -o liboc2rnet-x86_64.so -zig/zig cc $CFLAGS -Ijni-headers oc2rnet.c -static -shared -target aarch64-linux-musl -o liboc2rnet-arm64.so +zig/zig cc $CFLAGS -Ijni-headers oc2rnet.c -static -shared -target x86_64-linux-musl -o liboc2rnet-linux-x86_64.so +zig/zig cc $CFLAGS -Ijni-headers oc2rnet.c -static -shared -target aarch64-linux-musl -o liboc2rnet-linux-arm64.so zig/zig cc $CFLAGS -Ijni-headers oc2rnet.c -shared -target x86_64-windows-gnu -o oc2rnet-x86_64.dll -licmp zig/zig cc $CFLAGS -Ijni-headers oc2rnet.c -shared -target aarch64-windows-gnu -o oc2rnet-arm64.dll -licmp -$STRIP *.so +$STRIP ./*.so ./*.dylib diff --git a/jni-headers/darwin/jawt_md.h b/jni-headers/darwin/jawt_md.h new file mode 100644 index 0000000..94a13c9 --- /dev/null +++ b/jni-headers/darwin/jawt_md.h @@ -0,0 +1,77 @@ +/* + * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +#ifndef _JAVASOFT_JAWT_MD_H_ +#define _JAVASOFT_JAWT_MD_H_ + +#include "jawt.h" + +#ifdef __OBJC__ +#import +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * MacOS specific declarations for AWT native interface. + * See notes in jawt.h for an example of use. + */ + +/* + * When calling JAWT_GetAWT with a JAWT version less than 1.7, you must pass this + * flag or you will not be able to get a valid drawing surface and JAWT_GetAWT will + * return false. This is to maintain compatibility with applications that used the + * interface with Java 6 which had multiple rendering models. This flag is not necessary + * when JAWT version 1.7 or greater is used as this is the only supported rendering mode. + * + * Example: + * JAWT awt; + * awt.version = JAWT_VERSION_1_4 | JAWT_MACOSX_USE_CALAYER; + * jboolean success = JAWT_GetAWT(env, &awt); + */ +#define JAWT_MACOSX_USE_CALAYER 0x80000000 + +/* + * When the native Cocoa toolkit is in use, the pointer stored in + * JAWT_DrawingSurfaceInfo->platformInfo points to a NSObject that conforms to the + * JAWT_SurfaceLayers protocol. Setting the layer property of this object will cause the + * specified layer to be overlaid on the Components rectangle. If the window the + * Component belongs to has a CALayer attached to it, this layer will be accessible via + * the windowLayer property. + */ +#ifdef __OBJC__ +@protocol JAWT_SurfaceLayers +@property (readwrite, retain) CALayer *layer; +@property (readonly) CALayer *windowLayer; +@end +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* !_JAVASOFT_JAWT_MD_H_ */ diff --git a/jni-headers/darwin/jni_md.h b/jni-headers/darwin/jni_md.h new file mode 100644 index 0000000..6e583da --- /dev/null +++ b/jni-headers/darwin/jni_md.h @@ -0,0 +1,66 @@ +/* + * Copyright (c) 1996, 2020, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +#ifndef _JAVASOFT_JNI_MD_H_ +#define _JAVASOFT_JNI_MD_H_ + +#ifndef __has_attribute + #define __has_attribute(x) 0 +#endif + +#ifndef JNIEXPORT + #if (defined(__GNUC__) && ((__GNUC__ > 4) || (__GNUC__ == 4) && (__GNUC_MINOR__ > 2))) || __has_attribute(visibility) + #ifdef ARM + #define JNIEXPORT __attribute__((externally_visible,visibility("default"))) + #else + #define JNIEXPORT __attribute__((visibility("default"))) + #endif + #else + #define JNIEXPORT + #endif +#endif + +#if (defined(__GNUC__) && ((__GNUC__ > 4) || (__GNUC__ == 4) && (__GNUC_MINOR__ > 2))) || __has_attribute(visibility) + #ifdef ARM + #define JNIIMPORT __attribute__((externally_visible,visibility("default"))) + #else + #define JNIIMPORT __attribute__((visibility("default"))) + #endif +#else + #define JNIIMPORT +#endif + +#define JNICALL + +typedef int jint; +#ifdef _LP64 +typedef long jlong; +#else +typedef long long jlong; +#endif + +typedef signed char jbyte; + +#endif /* !_JAVASOFT_JNI_MD_H_ */ diff --git a/jni-headers/jni_md.h b/jni-headers/jni_md.h index 214f69e..064f9f8 100644 --- a/jni-headers/jni_md.h +++ b/jni-headers/jni_md.h @@ -2,6 +2,8 @@ #include #elif defined(_WIN32) #include +#elif defined(__APPLE__) +#include #else #error platform not supported #endif