From 3a9e695fb4c485c0afd2cc6af06feac5e9872645 Mon Sep 17 00:00:00 2001 From: squid233 <60126026+squid233@users.noreply.github.com> Date: Thu, 29 Aug 2024 00:10:22 +0800 Subject: [PATCH] Update build scripts --- build.gradle.kts | 229 +----------------- .../main/kotlin/OverrunGLModuleExtension.kt | 12 + buildSrc/src/main/kotlin/accessors.kt | 8 + ...e.kts => generator.conventions.gradle.kts} | 0 .../main/kotlin/module.conventions.gradle.kts | 137 +++++++++++ .../main/kotlin/native.conventions.gradle.kts | 42 ++++ buildSrc/src/main/kotlin/natives.kt | 30 +-- .../kotlin/submodule.conventions.gradle.kts | 10 + buildSrc/src/main/kotlin/utils.kt | 31 +++ generators/build.gradle.kts | 2 +- generators/nfd/build.gradle.kts | 2 +- generators/opengl/build.gradle.kts | 2 +- generators/vulkan/build.gradle.kts | 2 +- gradle.properties | 9 +- modules/overrungl.core/build.gradle.kts | 9 + modules/overrungl.glfw/build.gradle.kts | 11 + modules/overrungl.joml/build.gradle.kts | 10 + modules/overrungl.nfd/build.gradle.kts | 11 + modules/overrungl.opengl/build.gradle.kts | 9 + modules/overrungl.stb/build.gradle.kts | 11 + modules/overrungl.vulkan/build.gradle.kts | 8 + modules/samples/build.gradle.kts | 6 +- settings.gradle.kts | 2 +- 23 files changed, 337 insertions(+), 256 deletions(-) create mode 100644 buildSrc/src/main/kotlin/OverrunGLModuleExtension.kt create mode 100644 buildSrc/src/main/kotlin/accessors.kt rename buildSrc/src/main/kotlin/{generator.java-conventions.gradle.kts => generator.conventions.gradle.kts} (100%) create mode 100644 buildSrc/src/main/kotlin/module.conventions.gradle.kts create mode 100644 buildSrc/src/main/kotlin/native.conventions.gradle.kts create mode 100644 buildSrc/src/main/kotlin/submodule.conventions.gradle.kts create mode 100644 buildSrc/src/main/kotlin/utils.kt create mode 100644 modules/overrungl.glfw/build.gradle.kts create mode 100644 modules/overrungl.nfd/build.gradle.kts create mode 100644 modules/overrungl.opengl/build.gradle.kts create mode 100644 modules/overrungl.stb/build.gradle.kts create mode 100644 modules/overrungl.vulkan/build.gradle.kts diff --git a/build.gradle.kts b/build.gradle.kts index ec68f9f9..959b667e 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,5 +1,3 @@ -import org.gradle.plugins.ide.idea.model.IdeaModel - plugins { `java-platform` `maven-publish` @@ -7,113 +5,18 @@ plugins { } val projGroupId: String by project -val projArtifactId: String by project -val projName: String by project val projVersion: String by project -val projVcs: String by project -val projBranch: String by project val projLicenseYear: String by project -val projLicenseFileName: String by project -val orgName: String by project -val orgUrl: String by project val jdkVersion: String by rootProject val jdkEnablePreview: String by rootProject val jdkEarlyAccessDoc: String? by rootProject -val kotlinTargetJdkVersion: String by rootProject val targetJavaVersion = jdkVersion.toInt() group = projGroupId version = projVersion -val artifactNameMap = buildMap { - Artifact.values().forEach { put(it.subprojectName, it.artifactName) } - put(":samples", "overrungl-samples") -} - -artifactNameMap.forEach { (subprojectName, artifactName) -> - project(subprojectName) { - apply(plugin = "java-library") - apply(plugin = "idea") - - group = projGroupId - version = projVersion - - repositories { - mavenCentral() - // temporary maven repositories - maven { url = uri("https://s01.oss.sonatype.org/content/repositories/snapshots") } - maven { url = uri("https://s01.oss.sonatype.org/content/repositories/releases") } - } - - val compileOnly by configurations - dependencies { - compileOnly("org.jetbrains:annotations:24.1.0") - if (project.name != "core") { - compileOnly(project(Artifact.CORE.subprojectName)) - constraints { api("io.github.over-run:overrungl:$projVersion") } - } - } - - tasks.withType { - options.encoding = "UTF-8" - if (jdkEnablePreview.toBoolean()) options.compilerArgs.add("--enable-preview") - options.release.set(targetJavaVersion) - } - - tasks.withType { - if (jdkEnablePreview.toBoolean()) jvmArgs("--enable-preview") - } - - extensions.configure("java") { - toolchain.languageVersion.set(JavaLanguageVersion.of(targetJavaVersion)) - withJavadocJar() - withSourcesJar() - } - - tasks.named("jar") { - manifestContentCharset = "utf-8" - metadataCharset = "utf-8" - manifest.attributes( - "Specification-Title" to projName, - "Specification-Vendor" to "Overrun Organization", - "Specification-Version" to projVersion.split('.', limit = 2)[0], - "Implementation-Title" to projName, - "Implementation-Vendor" to "Overrun Organization", - "Implementation-Version" to projVersion - ) - archiveBaseName.set(artifactName) - from(rootProject.file(projLicenseFileName)).rename( - projLicenseFileName, - "${projLicenseFileName}_$artifactName" - ) - } - - tasks.named("sourcesJar") { - dependsOn(tasks["classes"]) - archiveBaseName.set(artifactName) - archiveClassifier.set("sources") - from(sourceSets["main"].allSource) - } - - tasks.named("javadocJar") { - val javadoc by tasks - dependsOn(javadoc) - archiveBaseName.set(artifactName) - archiveClassifier.set("javadoc") - from(javadoc) - } - - artifacts { - archives(tasks["sourcesJar"]) - archives(tasks["javadocJar"]) - } - - the().module.inheritOutputDirs = true - } -} - allprojects { tasks.withType { options { @@ -144,145 +47,27 @@ allprojects { ) bottom = - "Report a bug or suggest an enhancement
" + - "Copyright © 2022-$projLicenseYear Overrun Organization
" + - "$projVersion" + """Report a bug or suggest an enhancement
""" + + "Copyright © $projLicenseYear Overrun Organization
" + + "$projVersion (env ${Runtime.version()})" } } encoding = "UTF-8" locale = "en_US" windowTitle = "OverrunGL $projVersion" + jFlags("-Duser.language=en-US") } title = "OverrunGL $projVersion" isFailOnError = false } } -Artifact.values().forEach { - project(it.subprojectName) { - val javaComponent = components.findByName("java") as AdhocComponentWithVariants - // Add a different runtime variant for each platform - it.nativeBinding?.platforms?.forEach { platform -> - val nativeFileName = it.nativeFileName(platform) - val file = File("${rootProject.projectDir}/natives/$nativeFileName") - - if (file.exists()) { - val archiveTaskName = "${it.nativeBinding?.bindingName}${platform.classifier}Jar" - - val nativeJar = tasks.register(archiveTaskName) { - archiveBaseName.set(it.artifactName) - archiveClassifier.set(platform.classifier) - from(file) { into(File(nativeFileName).parent) } - } - - val nativeRuntimeElements = configurations.create(platform.classifier + "RuntimeElements") { - isCanBeConsumed = true; isCanBeResolved = false - attributes { - attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category.LIBRARY)) - attribute(Bundling.BUNDLING_ATTRIBUTE, objects.named(Bundling.EXTERNAL)) - attribute(TargetJvmVersion.TARGET_JVM_VERSION_ATTRIBUTE, targetJavaVersion) - attribute(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, objects.named(LibraryElements.JAR)) - attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage.JAVA_RUNTIME)) - attributes.attribute( - OperatingSystemFamily.OPERATING_SYSTEM_ATTRIBUTE, - objects.named(platform.osFamilyName) - ) - attributes.attribute(MachineArchitecture.ARCHITECTURE_ATTRIBUTE, objects.named(platform.osArch)) - } - outgoing.artifact(tasks.named("jar")) - outgoing.artifact(nativeJar) - extendsFrom(configurations["runtimeElements"]) - } - javaComponent.addVariantsFromConfiguration(nativeRuntimeElements) {} - } - } - } -} - publishing.publications { - fun MavenPom.setupPom(pomName: String, pomDescription: String, pomPackaging: String) { - name.set(pomName) - description.set(pomDescription) - url.set("https://github.com/$projVcs") - packaging = pomPackaging - licenses { - license { - name.set("MIT") - url.set("https://raw.githubusercontent.com/$projVcs/$projBranch/LICENSE") - } - } - organization { - name.set(orgName) - url.set(orgUrl) - } - developers { - developer { - id = "squid233" - url = "https://github.com/squid233" - organization = orgName - organizationUrl = orgUrl - } - } - scm { - connection.set("scm:git:https://github.com/${projVcs}.git") - developerConnection.set("scm:git:https://github.com/${projVcs}.git") - url.set("https://github.com/${projVcs}.git") - } - } - - Artifact.values().forEach { module -> - create("maven${module.name}") { - groupId = projGroupId - artifactId = module.artifactName - version = projVersion - description = module.projectDescription - from(project(module.subprojectName).components["java"]) - pom { - setupPom(module.projectName, module.projectDescription, "jar") - } - } - } - create("overrunglBOM") { from(components["javaPlatform"]) artifactId = "overrungl-bom" pom { - fun org.w3c.dom.Node.appendBOM(platform: NativePlatform?, module: Artifact) { - ownerDocument.createElement("dependency").also(::appendChild).apply { - appendChild( - ownerDocument.createElement("groupId").also(::appendChild) - .apply { textContent = "io.github.over-run" }) - appendChild( - ownerDocument.createElement("artifactId").also(::appendChild) - .apply { textContent = module.artifactName }) - appendChild( - ownerDocument.createElement("version").also(::appendChild) - .apply { textContent = projVersion }) - if (platform != null) { - appendChild( - ownerDocument.createElement("classifier").also(::appendChild) - .apply { textContent = platform.classifier }) - } - } - } - setupPom("OverrunGL BOM", "OverrunGL Bill of Materials.", "pom") - withXml { - asElement().getElementsByTagName("dependencyManagement").item(0).apply { - asElement().getElementsByTagName("dependencies").item(0).apply { - Artifact.values().forEach { module -> - if (module.nativeBinding != null) { - module.nativeBinding!!.platforms.forEach { appendBOM(it, module) } - } else { - appendBOM(null, module) - } - } - } - } - - // Workaround for https://github.com/gradle/gradle/issues/7529 - asNode() - } } } } @@ -310,9 +95,3 @@ signing { if (!projVersion.endsWith("-SNAPSHOT") && System.getProperty("gpg.signing", "true").toBoolean()) sign(publishing.publications) } - -dependencies { - constraints { - Artifact.values().forEach { api("io.github.over-run:${it.artifactName}:$projVersion") } - } -} diff --git a/buildSrc/src/main/kotlin/OverrunGLModuleExtension.kt b/buildSrc/src/main/kotlin/OverrunGLModuleExtension.kt new file mode 100644 index 00000000..dc827aa8 --- /dev/null +++ b/buildSrc/src/main/kotlin/OverrunGLModuleExtension.kt @@ -0,0 +1,12 @@ +import org.gradle.api.provider.Property +import org.gradle.api.provider.Provider + +/** + * @author squid233 + * @since 0.1.0 + */ +abstract class OverrunGLModuleExtension { + abstract val artifactName: Property + abstract val publishInfo: Property + abstract val nativeBinding: Property +} diff --git a/buildSrc/src/main/kotlin/accessors.kt b/buildSrc/src/main/kotlin/accessors.kt new file mode 100644 index 00000000..c930a6ea --- /dev/null +++ b/buildSrc/src/main/kotlin/accessors.kt @@ -0,0 +1,8 @@ +import org.gradle.api.Action +import org.gradle.api.Project + +val Project.overrunglModule: OverrunGLModuleExtension + get() = extensions.getByName("overrunglModule") as OverrunGLModuleExtension + +fun Project.overrunglModule(configure: Action) = + extensions.configure("overrunglModule", configure) diff --git a/buildSrc/src/main/kotlin/generator.java-conventions.gradle.kts b/buildSrc/src/main/kotlin/generator.conventions.gradle.kts similarity index 100% rename from buildSrc/src/main/kotlin/generator.java-conventions.gradle.kts rename to buildSrc/src/main/kotlin/generator.conventions.gradle.kts diff --git a/buildSrc/src/main/kotlin/module.conventions.gradle.kts b/buildSrc/src/main/kotlin/module.conventions.gradle.kts new file mode 100644 index 00000000..a7172cdd --- /dev/null +++ b/buildSrc/src/main/kotlin/module.conventions.gradle.kts @@ -0,0 +1,137 @@ +import org.gradle.plugins.ide.idea.model.IdeaModel + +plugins { + `java-library` + idea +} + +val overrunglModule = extensions.create("overrunglModule") + +val projGroupId: String by rootProject +val projName: String by rootProject +val projVersion: String by rootProject + +val jdkVersion: String by rootProject +val jdkEnablePreview: String by rootProject + +val targetJavaVersion = jdkVersion.toInt() + +group = projGroupId +version = projVersion + +repositories { + mavenCentral() + // temporary maven repositories + maven { url = uri("https://s01.oss.sonatype.org/content/repositories/snapshots") } + maven { url = uri("https://s01.oss.sonatype.org/content/repositories/releases") } +} + +dependencies { + compileOnly("org.jetbrains:annotations:24.1.0") +} + +tasks.withType { + options.encoding = "UTF-8" + if (jdkEnablePreview.toBoolean()) options.compilerArgs.add("--enable-preview") + options.release.set(targetJavaVersion) +} + +tasks.withType { + if (jdkEnablePreview.toBoolean()) jvmArgs("--enable-preview") +} + +extensions.configure("java") { + toolchain.languageVersion.set(JavaLanguageVersion.of(targetJavaVersion)) + withJavadocJar() + withSourcesJar() +} + +tasks.named("jar") { + manifest.attributes( + "Specification-Title" to projName, + "Specification-Vendor" to "Overrun Organization", + "Specification-Version" to projVersion.split('.', limit = 2)[0], + "Implementation-Title" to projName, + "Implementation-Vendor" to "Overrun Organization", + "Implementation-Version" to projVersion + ) + archiveBaseName.set(overrunglModule.artifactName) + from(rootProject.file("LICENSE")) { + rename { "${it}_${overrunglModule.artifactName.get()}" } + } +} + +tasks.named("sourcesJar") { + dependsOn(tasks["classes"]) + archiveBaseName.set(overrunglModule.artifactName) + archiveClassifier.set("sources") + from(sourceSets["main"].allSource) +} + +tasks.named("javadocJar") { + val javadoc by tasks + dependsOn(javadoc) + archiveBaseName.set(overrunglModule.artifactName) + archiveClassifier.set("javadoc") + from(javadoc) +} + +artifacts { + add("archives", tasks["sourcesJar"]) + add("archives", tasks["javadocJar"]) +} + +the().module.inheritOutputDirs = true + +afterEvaluate { + overrunglModule.publishInfo.orNull?.also { + rootProject.pluginManager.withPlugin("publishing") { + rootProject.extensions.configure("publishing") { + publications { + create("maven${it.name}") { + groupId = projGroupId + artifactId = overrunglModule.artifactName.get() + version = projVersion + description = it.projectDescription + from(components["java"]) + pom { + setupPom(it.projectName, it.projectDescription, "jar") + } + } + overrunglModule.nativeBinding.orNull?.platforms?.forEach { platform -> + getByName("overrunglBOM") { + pom { + withXml { + asElement().getElementsByTagName("dependencyManagement").item(0).apply { + asElement().getElementsByTagName("dependencies").item(0).apply { + ownerDocument.createElement("dependency").also(::appendChild).apply { + appendChild(ownerDocument.createElement("groupId") + .also(::appendChild) + .apply { textContent = projGroupId }) + appendChild(ownerDocument.createElement("artifactId") + .also(::appendChild) + .apply { textContent = overrunglModule.artifactName.get() }) + appendChild(ownerDocument.createElement("version") + .also(::appendChild) + .apply { textContent = projVersion }) + appendChild(ownerDocument.createElement("classifier") + .also(::appendChild) + .apply { textContent = platform.classifier }) + } + } + } + } + } + } + } + } + } + } + + rootProject.dependencies { + constraints { + api("io.github.over-run:${overrunglModule.artifactName.get()}:$projVersion") + } + } + } +} diff --git a/buildSrc/src/main/kotlin/native.conventions.gradle.kts b/buildSrc/src/main/kotlin/native.conventions.gradle.kts new file mode 100644 index 00000000..441662f7 --- /dev/null +++ b/buildSrc/src/main/kotlin/native.conventions.gradle.kts @@ -0,0 +1,42 @@ +val jdkVersion: String by rootProject +val targetJavaVersion = jdkVersion.toInt() + +val javaComponent = components["java"] as AdhocComponentWithVariants + +// Add a different runtime variant for each platform +afterEvaluate { + overrunglModule.nativeBinding.get().also { nativeBinding -> + nativeBinding.platforms.forEach { platform -> + val archiveTaskName = "${nativeBinding.bindingName}${platform.classifier}Jar" + + val nativeJar = tasks.register(archiveTaskName) { + archiveBaseName.set(overrunglModule.artifactName) + archiveClassifier.set(platform.classifier) + + val nativeFileName = nativeFileName(nativeBinding, platform) + val file = rootProject.projectDir.resolve("natives").resolve(nativeFileName) + from(file) { into(File(nativeFileName).parent) } + } + + val nativeRuntimeElements = configurations.create(platform.classifier + "RuntimeElements") { + isCanBeConsumed = true; isCanBeResolved = false + attributes { + attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category.LIBRARY)) + attribute(Bundling.BUNDLING_ATTRIBUTE, objects.named(Bundling.EXTERNAL)) + attribute(TargetJvmVersion.TARGET_JVM_VERSION_ATTRIBUTE, targetJavaVersion) + attribute(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, objects.named(LibraryElements.JAR)) + attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage.JAVA_RUNTIME)) + attributes.attribute( + OperatingSystemFamily.OPERATING_SYSTEM_ATTRIBUTE, + objects.named(platform.osFamilyName) + ) + attributes.attribute(MachineArchitecture.ARCHITECTURE_ATTRIBUTE, objects.named(platform.osArch)) + } + outgoing.artifact(tasks.named("jar")) + outgoing.artifact(nativeJar) + extendsFrom(configurations["runtimeElements"]) + } + javaComponent.addVariantsFromConfiguration(nativeRuntimeElements) {} + } + } +} diff --git a/buildSrc/src/main/kotlin/natives.kt b/buildSrc/src/main/kotlin/natives.kt index 27035943..8b671724 100644 --- a/buildSrc/src/main/kotlin/natives.kt +++ b/buildSrc/src/main/kotlin/natives.kt @@ -34,49 +34,45 @@ enum class NativeBinding( } enum class Artifact( - val artifactName: String, val projectName: String, val projectDescription: String, - val subprojectName: String, - val nativeBinding: NativeBinding? = null + val subprojectName: String ) { CORE( - "overrungl", "OverrunGL", + "OverrunGL", "The OverrunGL core library.", ":core" ), GLFW( - "overrungl-glfw", "OverrunGL - GLFW bindings", + "OverrunGL - GLFW bindings", "A multi-platform library for OpenGL, OpenGL ES and Vulkan development on the desktop. It provides a simple API for creating windows, contexts and surfaces, receiving input and events.", - ":glfw", NativeBinding.GLFW + ":glfw" ), JOML( - "overrungl-joml", "OverrunGL - JOML native access", + "OverrunGL - JOML native access", "A Java math library for OpenGL rendering calculations", ":joml" ), NFD( - "overrungl-nfd", "OverrunGL - Native File Dialog", + "OverrunGL - Native File Dialog", "A tiny, neat C library that portably invokes native file open and save dialogs.", - ":nfd", NativeBinding.NFD + ":nfd" ), OPENGL( - "overrungl-opengl", "OverrunGL - OpenGL bindings", + "OverrunGL - OpenGL bindings", "The most widely adopted 2D and 3D graphics API in the industry, bringing thousands of applications to a wide variety of computer platforms.", ":opengl" ), STB( - "overrungl-stb", "OverrunGL - stb bindings", + "OverrunGL - stb bindings", "Single-file public domain libraries for fonts, images, ogg vorbis files and more.", - ":stb", NativeBinding.STB + ":stb" ), // VULKAN("overrungl-vulkan", "OverrunGL - Vulkan bindings", // "A new generation graphics and compute API that provides high-efficiency, cross-platform access to modern GPUs used in a wide variety of devices from PCs and consoles to mobile phones and embedded platforms.", // ":vulkan", "Vulkan", null), - ; +} - fun nativeFileName(platform: NativePlatform): String? { - return if (nativeBinding == null) null - else "${nativeBinding.bindingName}/${platform.osFamilyName}-${platform.osArch}/${platform.nativeLibPrefix}${nativeBinding.basename}${platform.nativeLibSuffix}" - } +fun nativeFileName(nativeBinding: NativeBinding, platform: NativePlatform): String { + return "${nativeBinding.bindingName}/${platform.osFamilyName}-${platform.osArch}/${platform.nativeLibPrefix}${nativeBinding.basename}${platform.nativeLibSuffix}" } diff --git a/buildSrc/src/main/kotlin/submodule.conventions.gradle.kts b/buildSrc/src/main/kotlin/submodule.conventions.gradle.kts new file mode 100644 index 00000000..9e10dbe3 --- /dev/null +++ b/buildSrc/src/main/kotlin/submodule.conventions.gradle.kts @@ -0,0 +1,10 @@ +plugins { + `java-library` +} + +val projVersion: String by rootProject + +dependencies { + compileOnly(project(":core")) + constraints { api("io.github.over-run:overrungl:$projVersion") } +} diff --git a/buildSrc/src/main/kotlin/utils.kt b/buildSrc/src/main/kotlin/utils.kt new file mode 100644 index 00000000..88408e15 --- /dev/null +++ b/buildSrc/src/main/kotlin/utils.kt @@ -0,0 +1,31 @@ +import org.gradle.api.publish.maven.MavenPom + +fun MavenPom.setupPom(pomName: String, pomDescription: String, pomPackaging: String) { + name.set(pomName) + description.set(pomDescription) + url.set("https://github.com/Over-Run/overrungl") + packaging = pomPackaging + licenses { + license { + name.set("MIT") + url.set("https://raw.githubusercontent.com/Over-Run/overrungl/main/LICENSE") + } + } + organization { + name.set("Overrun Organization") + url.set("https://over-run.github.io") + } + developers { + developer { + id.set("squid233") + url.set("https://github.com/squid233") + organization.set("Overrun Organization") + organizationUrl.set("https://over-run.github.io") + } + } + scm { + connection.set("scm:git:https://github.com/Over-Run/overrungl.git") + developerConnection.set("scm:git:https://github.com/Over-Run/overrungl.git") + url.set("https://github.com/Over-Run/overrungl.git") + } +} diff --git a/generators/build.gradle.kts b/generators/build.gradle.kts index ee8b8ea9..03f0fb39 100644 --- a/generators/build.gradle.kts +++ b/generators/build.gradle.kts @@ -1,3 +1,3 @@ plugins { - id("generator.java-conventions") + id("generator.conventions") } diff --git a/generators/nfd/build.gradle.kts b/generators/nfd/build.gradle.kts index f29846ad..a43b520e 100644 --- a/generators/nfd/build.gradle.kts +++ b/generators/nfd/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("generator.java-conventions") + id("generator.conventions") } dependencies { diff --git a/generators/opengl/build.gradle.kts b/generators/opengl/build.gradle.kts index 03acdcdb..b2fcfd05 100644 --- a/generators/opengl/build.gradle.kts +++ b/generators/opengl/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("generator.java-conventions") + id("generator.conventions") } dependencies { diff --git a/generators/vulkan/build.gradle.kts b/generators/vulkan/build.gradle.kts index 7a87ec35..899a9d01 100644 --- a/generators/vulkan/build.gradle.kts +++ b/generators/vulkan/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("generator.java-conventions") + id("generator.conventions") } dependencies { diff --git a/gradle.properties b/gradle.properties index d076e5d0..536f6009 100644 --- a/gradle.properties +++ b/gradle.properties @@ -5,14 +5,7 @@ projGroupId=io.github.over-run projArtifactId=overrungl projName=overrungl projVersion=0.1.0-SNAPSHOT -projVcs=Over-Run/overrungl -projBranch=main -projLicenseYear=2024 -projLicenseFileName=LICENSE - -# Organization -orgName=Overrun Organization -orgUrl=https://over-run.github.io/ +projLicenseYear=2022-2024 jdkVersion=22 jdkEnablePreview=true diff --git a/modules/overrungl.core/build.gradle.kts b/modules/overrungl.core/build.gradle.kts index d206fb48..5444dfe4 100644 --- a/modules/overrungl.core/build.gradle.kts +++ b/modules/overrungl.core/build.gradle.kts @@ -1,6 +1,15 @@ import java.nio.file.Files import kotlin.io.path.Path +plugins { + id("module.conventions") +} + +overrunglModule { + artifactName = "overrungl" + publishInfo = Artifact.CORE +} + val overrunMarshalVersion: String by rootProject val overrunPlatformVersion: String by rootProject diff --git a/modules/overrungl.glfw/build.gradle.kts b/modules/overrungl.glfw/build.gradle.kts new file mode 100644 index 00000000..a45678da --- /dev/null +++ b/modules/overrungl.glfw/build.gradle.kts @@ -0,0 +1,11 @@ +plugins { + id("module.conventions") + id("submodule.conventions") + id("native.conventions") +} + +overrunglModule { + artifactName = "overrungl-glfw" + publishInfo = Artifact.GLFW + nativeBinding = NativeBinding.GLFW +} diff --git a/modules/overrungl.joml/build.gradle.kts b/modules/overrungl.joml/build.gradle.kts index 48035195..557fecb6 100644 --- a/modules/overrungl.joml/build.gradle.kts +++ b/modules/overrungl.joml/build.gradle.kts @@ -1,3 +1,13 @@ +plugins { + id("module.conventions") + id("submodule.conventions") +} + +overrunglModule { + artifactName = "overrungl-joml" + publishInfo = Artifact.JOML +} + val jomlVersion: String by project dependencies { diff --git a/modules/overrungl.nfd/build.gradle.kts b/modules/overrungl.nfd/build.gradle.kts new file mode 100644 index 00000000..60075933 --- /dev/null +++ b/modules/overrungl.nfd/build.gradle.kts @@ -0,0 +1,11 @@ +plugins { + id("module.conventions") + id("submodule.conventions") + id("native.conventions") +} + +overrunglModule { + artifactName = "overrungl-nfd" + publishInfo = Artifact.NFD + nativeBinding = NativeBinding.NFD +} diff --git a/modules/overrungl.opengl/build.gradle.kts b/modules/overrungl.opengl/build.gradle.kts new file mode 100644 index 00000000..8723d157 --- /dev/null +++ b/modules/overrungl.opengl/build.gradle.kts @@ -0,0 +1,9 @@ +plugins { + id("module.conventions") + id("submodule.conventions") +} + +overrunglModule { + artifactName = "overrungl-opengl" + publishInfo = Artifact.OPENGL +} diff --git a/modules/overrungl.stb/build.gradle.kts b/modules/overrungl.stb/build.gradle.kts new file mode 100644 index 00000000..31835054 --- /dev/null +++ b/modules/overrungl.stb/build.gradle.kts @@ -0,0 +1,11 @@ +plugins { + id("module.conventions") + id("submodule.conventions") + id("native.conventions") +} + +overrunglModule { + artifactName = "overrungl-stb" + publishInfo = Artifact.STB + nativeBinding = NativeBinding.STB +} diff --git a/modules/overrungl.vulkan/build.gradle.kts b/modules/overrungl.vulkan/build.gradle.kts new file mode 100644 index 00000000..0e3160fe --- /dev/null +++ b/modules/overrungl.vulkan/build.gradle.kts @@ -0,0 +1,8 @@ +plugins { + id("module.conventions") + id("submodule.conventions") +} + +overrunglModule { + artifactName = "overrungl-vulkan" +} diff --git a/modules/samples/build.gradle.kts b/modules/samples/build.gradle.kts index 8b4b2d50..74754b37 100644 --- a/modules/samples/build.gradle.kts +++ b/modules/samples/build.gradle.kts @@ -1,8 +1,12 @@ plugins { id("me.champeau.jmh") version "0.7.2" + id("module.conventions") + id("submodule.conventions") } -val projModules: String by project +overrunglModule { + artifactName = "overrungl-samples" +} dependencies { Artifact.values().forEach { diff --git a/settings.gradle.kts b/settings.gradle.kts index de97c3d0..164c7a08 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -11,7 +11,7 @@ val projName: String by settings rootProject.name = projName -file("modules").listFiles().forEach { +file("modules").listFiles()?.forEach { val s = it.name.substringAfterLast("overrungl.") include(s) project(":$s").projectDir = it