From 47a4c37affff56a1fb11d2f5d765069df87f9e58 Mon Sep 17 00:00:00 2001 From: Euclid Skyline Date: Thu, 18 Dec 2025 00:04:24 +0300 Subject: [PATCH] Fix Windows CMake path handling. The CMake module path was not being handled correctly on Windows because backslashes were not escaped. This change explicitly replaces backslashes with forward slashes for the `CMAKE_MODULE_PATH` argument when building on Windows. --- .../buildlogic/AndroidApplicationConventionPlugin.kt | 10 +++++++++- .../buildlogic/AndroidLibraryConventionPlugin.kt | 10 +++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/build-logic/src/main/java/com/android/ndk/samples/buildlogic/AndroidApplicationConventionPlugin.kt b/build-logic/src/main/java/com/android/ndk/samples/buildlogic/AndroidApplicationConventionPlugin.kt index 80085c899..e3626078d 100644 --- a/build-logic/src/main/java/com/android/ndk/samples/buildlogic/AndroidApplicationConventionPlugin.kt +++ b/build-logic/src/main/java/com/android/ndk/samples/buildlogic/AndroidApplicationConventionPlugin.kt @@ -5,6 +5,7 @@ import com.android.build.api.dsl.ApplicationExtension import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.kotlin.dsl.configure +import java.lang.System.getProperty class AndroidApplicationConventionPlugin : Plugin { override fun apply(target: Project) { @@ -30,7 +31,14 @@ class AndroidApplicationConventionPlugin : Plugin { externalNativeBuild { cmake { arguments.add("-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON") - arguments.add("-DCMAKE_MODULE_PATH=${rootDir.resolve("cmake")}") + // Determine if the OS is Windows + val isWindows = getProperty("os.name").lowercase().contains("win") + val cmakeModulePath = if (isWindows) { + rootDir.resolve("cmake").toString().replace('\\', '/') + } else { + rootDir.resolve("cmake").toString() + } + arguments.add("-DCMAKE_MODULE_PATH=$cmakeModulePath") } } diff --git a/build-logic/src/main/java/com/android/ndk/samples/buildlogic/AndroidLibraryConventionPlugin.kt b/build-logic/src/main/java/com/android/ndk/samples/buildlogic/AndroidLibraryConventionPlugin.kt index c697c99e6..7bb3a96b9 100644 --- a/build-logic/src/main/java/com/android/ndk/samples/buildlogic/AndroidLibraryConventionPlugin.kt +++ b/build-logic/src/main/java/com/android/ndk/samples/buildlogic/AndroidLibraryConventionPlugin.kt @@ -4,6 +4,7 @@ import com.android.build.api.dsl.LibraryExtension import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.kotlin.dsl.configure +import java.lang.System.getProperty class AndroidLibraryConventionPlugin : Plugin { override fun apply(target: Project) { @@ -33,7 +34,14 @@ class AndroidLibraryConventionPlugin : Plugin { externalNativeBuild { cmake { arguments.add("-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON") - arguments.add("-DCMAKE_MODULE_PATH=${rootDir.resolve("cmake")}") + // Determine if the OS is Windows + val isWindows = getProperty("os.name").lowercase().contains("win") + val cmakeModulePath = if (isWindows) { + rootDir.resolve("cmake").toString().replace('\\', '/') + } else { + rootDir.resolve("cmake").toString() + } + arguments.add("-DCMAKE_MODULE_PATH=$cmakeModulePath") } } ndk {