project.ext.lwjglVersion = "3.2.3" def osArch = System.getProperty("os.arch") project.ext.arch = osArch.startsWith("armv8") || osArch.contains("64") ? "x86-64" : "x86" //switch ( OperatingSystem.current() ) { // case OperatingSystem.WINDOWS: // project.ext.OS = "windows" // break // case OperatingSystem.LINUX: // project.ext.OS = "linux" // break // case OperatingSystem.MAC_OS: // project.ext.OS = "macos" // break //} project.ext.OS = "linux" class LwjglRule implements ComponentMetadataRule { //val os: String, val arch: String, val classifier: String) private def nativeVariants = [ [os: OperatingSystemFamily.LINUX, arch: "arm32", classifier: "natives-linux-arm32"], [os: OperatingSystemFamily.LINUX, arch: "arm64", classifier: "natives-linux-arm64"], [os: OperatingSystemFamily.LINUX, arch: "x86-64", classifier: "natives-linux"], [os: OperatingSystemFamily.WINDOWS, arch: "x86", classifier: "natives-windows-x86"], [os: OperatingSystemFamily.WINDOWS, arch: "x86-64", classifier: "natives-windows"], [os: OperatingSystemFamily.MACOS, arch: "x86-64", classifier: "natives-macos"] ] @javax.inject.Inject ObjectFactory getObjects() { } void execute(ComponentMetadataContext context) { context.details.withVariant("runtime") { attributes { attributes.attribute(OperatingSystemFamily.OPERATING_SYSTEM_ATTRIBUTE, objects.named(OperatingSystemFamily, "none")) attributes.attribute(MachineArchitecture.ARCHITECTURE_ATTRIBUTE, objects.named(MachineArchitecture, "none")) } } nativeVariants.each { variantDefinition -> context.details.addVariant("${variantDefinition.classifier}-runtime", "runtime") { attributes { attributes.attribute(OperatingSystemFamily.OPERATING_SYSTEM_ATTRIBUTE, objects.named(OperatingSystemFamily, variantDefinition.os)) attributes.attribute(MachineArchitecture.ARCHITECTURE_ATTRIBUTE, objects.named(MachineArchitecture, variantDefinition.arch)) } withFiles { addFile("${context.details.id.name}-${context.details.id.version}-${variantDefinition.classifier}.jar") } } } } }