Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Upgrade Gradle Metal to 0.5 #179

Open
wants to merge 13 commits into
base: next
Choose a base branch
from
4 changes: 2 additions & 2 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
plugins {
id("br.dev.pedrolamarao.metal.commands")
id("br.dev.pedrolamarao.metal.base")
}

allprojects {
Expand All @@ -18,5 +18,5 @@ dependencies {
}

tasks.wrapper.configure {
gradleVersion = "8.4"
gradleVersion = "8.6"
}
11 changes: 5 additions & 6 deletions elf/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
plugins {
id("br.dev.pedrolamarao.metal.archive")
id("br.dev.pedrolamarao.metal.cpp")
id("br.dev.pedrolamarao.metal.library")
id("br.dev.pedrolamarao.metal.cxx")
id("br.dev.pedrolamarao.metal.ixx")
}

group = "br.dev.pedrolamarao.metal.elf"
Expand All @@ -12,9 +10,10 @@ dependencies {
testImplementation(project(":googletest"))
}

metal {
library {
compileOptions = listOf("-fasm-blocks","-g","-std=c++20","-Wno-unused-command-line-argument")
}

applications { test { targets = setOf("x86_64-pc-linux-gnu","x86_64-pc-windows-msvc") } }
ixx.main { public = true }
test {
targets = listOf(metal.host.get())
}
15 changes: 5 additions & 10 deletions googletest/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,6 @@ plugins {
val source = layout.projectDirectory.dir("src")
val build = layout.buildDirectory.dir("release").get()

val metalPath = providers.gradleProperty("metal.path")
.orElse(providers.environmentVariable("PATH"))

val cmake = metal.locateTool("cmake")

val clone = tasks.register("clone") {
Expand All @@ -30,7 +27,7 @@ val configure = tasks.register<Exec>("configure") {
dependsOn(clone)
inputs.dir(source)
outputs.file(build.file("CMakeCache.txt"))
environment("PATH" to metalPath.get())
environment("PATH" to metal.path.get())
executable(cmake.get())
args(
"-B",build,
Expand All @@ -43,14 +40,12 @@ val configure = tasks.register<Exec>("configure") {

val make = tasks.register<Exec>("make") {
dependsOn(configure)
environment("PATH" to metalPath.get())
environment("PATH" to metal.path.get())
executable(cmake.get())
args("--build",build)
}

metal {
prebuilt {
includable( source.dir("googletest/include") ) { builtBy(clone) }
linkable( metal.archiveFileName("gtest").map { build.file("lib/${it}") } ) { builtBy(make) }
}
prebuilt {
includable( source.dir("googletest/include") ) { builtBy(clone) }
linkable( metal.archiveFileName("gtest").map { build.file("lib/${it}") } ) { builtBy(make) }
}
2 changes: 1 addition & 1 deletion gradle/plugins/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ group = "br.dev.pedrolamarao.metal.plugins"

val elf = "1.0.0-SNAPSHOT"
val gdb = "1.0.0-SNAPSHOT"
val metal = "0.4"
val metal = "0.5"

kotlin.jvmToolchain {
languageVersion.set(JavaLanguageVersion.of(17))
Expand Down
9 changes: 3 additions & 6 deletions gradle/plugins/src/main/kotlin/metal-test.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,8 @@ plugins {
id("br.dev.pedrolamarao.metal.cxx")
}

val mainExecutable = metal.applications.named("main").flatMap { it.output }

val createImage = project.tasks.register<MultibootCreateImageTask>("make-main-image") {
dependsOn("link-main")
inputFile = mainExecutable
inputFile = tasks.link.flatMap { it.output }
}

tasks.register("image") {
Expand All @@ -17,9 +14,9 @@ tasks.register("image") {

val testImage = project.tasks.register<MultibootTestImageTask>("test-main-image") {
imageFile = createImage.flatMap { it.outputFile }
executableFile = mainExecutable
executableFile = tasks.link.flatMap { it.output }
}

tasks.test.configure {
tasks.check.configure {
dependsOn(testImage)
}
Binary file modified gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Expand Down
11 changes: 5 additions & 6 deletions multiboot2/foo/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,18 +1,17 @@
plugins {
id("br.dev.pedrolamarao.metal.archive")
id("br.dev.pedrolamarao.metal.cpp")
id("br.dev.pedrolamarao.metal.library")
id("br.dev.pedrolamarao.metal.cxx")
id("br.dev.pedrolamarao.metal.ixx")
}

dependencies {
api(project(":psys"))
testImplementation(project(":googletest"))
}

metal {
library {
compileOptions = listOf("-fasm-blocks","-g","-std=c++20","-Wno-unused-command-line-argument")
}

applications { test { targets = setOf("x86_64-pc-linux-gnu","x86_64-pc-windows-msvc") } }
ixx { main { public = true } }
test {
targets = listOf(metal.host.get())
}
12 changes: 3 additions & 9 deletions multiboot2/start/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
import br.dev.pedrolamarao.gradle.metal.base.MetalCompileTask

plugins {
id("br.dev.pedrolamarao.metal.archive")
id("br.dev.pedrolamarao.metal.library")
id("br.dev.pedrolamarao.metal.cxx")
}

Expand All @@ -13,15 +11,11 @@ dependencies {
api(project(":x86"))
}

metal {
library {
compileOptions = listOf("-fasm-blocks","-g","-std=c++20")
targets = setOf("i686-elf","x86_64-elf")
}

// #TODO: Gradle Metal DSL does not allow filtering

tasks.named<MetalCompileTask>("compile-main-cxx") {
when (target.get()) {
when (metal.target.get()) {
"i686-elf" -> include("x86_32-elf/*")
"x86_64-elf" -> include("x86_64-elf/*")
}
Expand Down
46 changes: 22 additions & 24 deletions multiboot2/test/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import br.dev.pedrolamarao.gradle.metal.base.MetalExtension
import br.dev.pedrolamarao.gradle.metal.base.MetalSourceTask
import br.dev.pedrolamarao.gradle.metal.MetalApplication

plugins {
id("metal-test") apply(false)
Expand All @@ -8,29 +7,28 @@ plugins {
val x86_32_elf_multiboot2_ld = rootProject.file("multiboot2/x86_32-elf.ld")
val x86_64_elf_multiboot2_ld = rootProject.file("multiboot2/x86_64-elf.ld")

subprojects {
group = "br.dev.pedrolamarao.metal.multiboot2.test"
subprojects.filter { it.name != "module" }.forEach {

pluginManager.apply("br.dev.pedrolamarao.metal.base")
group = "br.dev.pedrolamarao.metal.multiboot2.test"

val metal: MetalExtension by extensions
metal.targets = listOf("x86_64-elf","i686-elf")
pluginManager.apply("metal-test")

pluginManager.withPlugin("metal-test") {
dependencies {
add("implementation",project(":multiboot2:foo"))
}
metal.compileOptions = listOf(
"-flto", "-fasm-blocks",
"-gdwarf",
"-mno-red-zone", "-mno-mmx", "-mno-sse", "-mno-sse2",
"-std=c++20"
)
metal.linkOptions = listOf(
"-gdwarf",
"-nostdlib",
"-static",
"-Wl,--script=${x86_32_elf_multiboot2_ld}"
)
dependencies {
add("implementation",project(":multiboot2:foo"))
}
}

val application: MetalApplication by extensions
application.compileOptions = listOf(
"-flto", "-fasm-blocks",
"-gdwarf",
"-mno-red-zone", "-mno-mmx", "-mno-sse", "-mno-sse2",
"-std=c++20"
)
application.linkOptions = listOf(
"-gdwarf",
"-nostdlib",
"-static",
"-Wl,--script=${x86_32_elf_multiboot2_ld}"
)
application.targets = listOf("x86_64-elf","i686-elf")
}
3 changes: 0 additions & 3 deletions multiboot2/test/entry/build.gradle.kts

This file was deleted.

3 changes: 0 additions & 3 deletions multiboot2/test/layout/build.gradle.kts

This file was deleted.

3 changes: 0 additions & 3 deletions multiboot2/test/minimal/build.gradle.kts

This file was deleted.

22 changes: 0 additions & 22 deletions multiboot2/test/modular/build.gradle.kts

This file was deleted.

3 changes: 2 additions & 1 deletion multiboot2/test/module/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ val options = listOf(
"-std=c++20"
)

metal {
application {
compileOptions = options
linkOptions = options
targets = listOf("x86_64-elf","i686-elf")
}
7 changes: 0 additions & 7 deletions multiboot2/test/start/build.gradle.kts

This file was deleted.

11 changes: 5 additions & 6 deletions pc/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
plugins {
id("br.dev.pedrolamarao.metal.archive")
id("br.dev.pedrolamarao.metal.cpp")
id("br.dev.pedrolamarao.metal.library")
id("br.dev.pedrolamarao.metal.cxx")
id("br.dev.pedrolamarao.metal.ixx")
}

group = "br.dev.pedrolamarao.metal.pc"
Expand All @@ -12,9 +10,10 @@ dependencies {
testImplementation(project(":googletest"))
}

metal {
library {
compileOptions = listOf("-fasm-blocks","-g","-std=c++20","-Wno-unused-command-line-argument")
}

applications { test { targets = setOf("x86_64-pc-linux-gnu","x86_64-pc-windows-msvc") } }
ixx { main { public = true } }
test {
targets = listOf(metal.host.get())
}
11 changes: 5 additions & 6 deletions pc/test/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import br.dev.pedrolamarao.gradle.metal.base.MetalExtension
import br.dev.pedrolamarao.gradle.metal.base.MetalSourceTask
import br.dev.pedrolamarao.gradle.metal.MetalApplication

plugins {
id("metal-test") apply(false)
Expand All @@ -19,11 +18,11 @@ subprojects {
add("implementation",project(":x86"))
}

val metal: MetalExtension by extensions
metal.compileOptions = listOf(
val application: MetalApplication by extensions
application.compileOptions = listOf(
"-std=c++20", "-flto", "-fasm-blocks", "-gdwarf",
"-mno-red-zone", "-mno-mmx", "-mno-sse", "-mno-sse2"
)
metal.linkOptions = listOf("-gdwarf","-nostdlib","-static","-Wl,--script=${x86_32_elf_multiboot2_ld}")
metal.targets = listOf("x86_64-elf","i686-elf")
application.linkOptions = listOf("-gdwarf","-nostdlib","-static","-Wl,--script=${x86_32_elf_multiboot2_ld}")
application.targets = listOf("x86_64-elf","i686-elf")
}
11 changes: 5 additions & 6 deletions psys/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
plugins {
id("br.dev.pedrolamarao.metal.archive")
id("br.dev.pedrolamarao.metal.cpp")
id("br.dev.pedrolamarao.metal.library")
id("br.dev.pedrolamarao.metal.cxx")
id("br.dev.pedrolamarao.metal.ixx")
}

group = "br.dev.pedrolamarao.metal.psys"
Expand All @@ -11,9 +9,10 @@ dependencies {
testImplementation(project(":googletest"))
}

metal {
library {
compileOptions = listOf("-fasm-blocks","-g","-std=c++20")
}

applications { test { targets = setOf("x86_64-pc-linux-gnu","x86_64-pc-windows-msvc") } }
ixx { main { public = true } }
test {
targets = listOf(metal.host.get())
}
4 changes: 2 additions & 2 deletions psys/start/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
plugins {
id("br.dev.pedrolamarao.metal.archive")
id("br.dev.pedrolamarao.metal.library")
id("br.dev.pedrolamarao.metal.cxx")
}

Expand All @@ -9,6 +9,6 @@ dependencies {
api(project(":multiboot2:start"))
}

metal {
library {
compileOptions = listOf("-std=c++20", "-flto", "-fasm-blocks", "-gdwarf")
}
4 changes: 2 additions & 2 deletions settings.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
enableFeaturePreview("STABLE_CONFIGURATION_CACHE")
//enableFeaturePreview("STABLE_CONFIGURATION_CACHE")

pluginManagement {
includeBuild("gradle/plugins")
Expand All @@ -13,7 +13,7 @@ pluginManagement {
resolutionStrategy {
eachPlugin {
if (requested.id.id.startsWith("br.dev.pedrolamarao.metal.")) {
useModule("br.dev.pedrolamarao.gradle.metal:plugins:0.4")
useModule("br.dev.pedrolamarao.gradle.metal:plugins:0.5")
}
}
}
Expand Down
Loading
Loading