plugins { `jni-library` } fun DependencyHandlerScope.javaImplementation(dep: Any) { compileOnly(dep) runtimeOnly(dep) } dependencies { javaImplementation(project(":darklaf-native-utils")) javaImplementation(project(":darklaf-utils")) javaImplementation(project(":darklaf-decorations-base")) javaImplementation(project(":darklaf-property-loader")) } val macPath by tasks.registering(MacOSSdkPathTask::class) val sdkRoot: Provider get() = macPath.map { it.sdkPath.absolutePath } fun ListProperty.addJavaFrameworks() { addAll("-framework", "JavaNativeFoundation") add("-F") add(sdkRoot.map { "$it/System/Library/Frameworks/JavaVM.framework/Frameworks" }) } library { targetMachines.addAll(machines.macOS.x86_64) binaries.configureEach { compileTask.get().apply { dependsOn(macPath) compilerArgs.addAll("-x", "objective-c++") compilerArgs.addAll("-mmacosx-version-min=10.10") compilerArgs.addJavaFrameworks() source.from(file("src/main/objectiveCpp/JNIDecorations.mm")) } } binaries.whenElementFinalized(CppSharedLibrary::class) { linkTask.get().apply { dependsOn(macPath) linkerArgs.addAll("-lobjc", "-framework", "AppKit") linkerArgs.addJavaFrameworks() } } }