Skip to content

Commit c117947

Browse files
committed
changes to support Windows containerized builds
1 parent 09159f5 commit c117947

File tree

2 files changed

+19
-5
lines changed

2 files changed

+19
-5
lines changed

build-support/src/main/kotlin/aws/sdk/kotlin/gradle/crt/CMakeTasks.kt

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,8 @@ private fun Project.registerCmakeConfigureTask(
8080
val cmakeBuildDir = project.cmakeBuildDir(knTarget)
8181
val installDir = project.cmakeInstallDir(knTarget)
8282

83-
val relativeBuildDir = cmakeBuildDir.relativeTo(project.rootDir).path
84-
val relativeInstallDir = installDir.relativeTo(project.rootDir).path
83+
val relativeBuildDir = cmakeBuildDir.relativeTo(project.rootDir).slashPath
84+
val relativeInstallDir = installDir.relativeTo(project.rootDir).slashPath
8585
val cmakeLists = project.rootProject.projectDir.resolve("CMakeLists.txt")
8686

8787
return project.tasks.register(knTarget.cmakeConfigureTaskName) {
@@ -142,7 +142,7 @@ private fun Project.registerCmakeBuildTask(
142142
buildType: CMakeBuildType,
143143
): TaskProvider<Task> {
144144
val cmakeBuildDir = project.cmakeBuildDir(knTarget)
145-
val relativeBuildDir = cmakeBuildDir.relativeTo(project.rootDir).path
145+
val relativeBuildDir = cmakeBuildDir.relativeTo(project.rootDir).slashPath
146146

147147
return project.tasks.register(knTarget.cmakeBuildTaskName) {
148148
group = "ffi"
@@ -188,7 +188,7 @@ private fun Project.registerCmakeInstallTask(
188188
buildType: CMakeBuildType,
189189
): TaskProvider<Task> {
190190
val cmakeBuildDir = project.cmakeBuildDir(knTarget)
191-
val relativeBuildDir = cmakeBuildDir.relativeTo(project.rootDir).path
191+
val relativeBuildDir = cmakeBuildDir.relativeTo(project.rootDir).slashPath
192192
val installDir = project.cmakeInstallDir(knTarget)
193193

194194
return project.tasks.register(knTarget.cmakeInstallTaskName) {
@@ -212,6 +212,11 @@ private fun Project.registerCmakeInstallTask(
212212
private val containerCompileTargets = setOf(
213213
KonanTarget.LINUX_X64,
214214
KonanTarget.LINUX_ARM64,
215+
KonanTarget.MINGW_X64,
216+
)
217+
218+
private val requiresExplicitBash = setOf(
219+
KonanTarget.MINGW_X64,
215220
)
216221

217222
private fun runCmake(project: Project, target: KotlinNativeTarget, cmakeArgs: List<String>) {
@@ -225,7 +230,13 @@ private fun runCmake(project: Project, target: KotlinNativeTarget, cmakeArgs: Li
225230
exeArgs.addAll(0, containerScriptArgs)
226231
val script = "dockcross-" + target.konanTarget.name.replace("_", "-")
227232
validateCrossCompileScriptsAvailable(project, script)
228-
"./$script"
233+
234+
if (target.konanTarget in requiresExplicitBash) {
235+
exeArgs.add(0, "./$script")
236+
"bash"
237+
} else {
238+
"./$script"
239+
}
229240
}
230241
else -> "cmake"
231242
}

build-support/src/main/kotlin/aws/sdk/kotlin/gradle/crt/CMakeUtils.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,3 +87,6 @@ val KotlinNativeTarget.cmakeBuildTaskName: String
8787

8888
val KotlinNativeTarget.cmakeInstallTaskName: String
8989
get() = namedSuffix("cmakeInstall", capitalized = true)
90+
91+
val File.slashPath: String
92+
get() = path.replace(File.separatorChar, '/')

0 commit comments

Comments
 (0)