diff --git a/packages/react-native/ReactAndroid/hermes-engine/build.gradle.kts b/packages/react-native/ReactAndroid/hermes-engine/build.gradle.kts index 7db67e79333a..3c5bae1e0776 100644 --- a/packages/react-native/ReactAndroid/hermes-engine/build.gradle.kts +++ b/packages/react-native/ReactAndroid/hermes-engine/build.gradle.kts @@ -183,9 +183,18 @@ fun buildHermesCCommandLineArgs() = listOf( ndkBuildJobs, ) +// CMake caches contain absolute paths. Clear them only when Gradle runs configuration again. +fun CustomExecTask.clearCMakeCacheBeforeConfigure(hermesBuildDir: File) { + doFirst { + File(hermesBuildDir, "CMakeCache.txt").delete() + File(hermesBuildDir, "CMakeFiles").deleteRecursively() + } +} + val configureBuildForHermes by tasks.registering(CustomExecTask::class) { dependsOn(installCMake) + clearCMakeCacheBeforeConfigure(hermesBuildDir) workingDir(hermesDir) inputs.dir(hermesDir) outputs.files(hermesBuildOutputFileTree) @@ -240,6 +249,7 @@ val buildHermesLib by val configureBuildForHermesWithDebugger by tasks.registering(CustomExecTask::class) { dependsOn(installCMake) + clearCMakeCacheBeforeConfigure(hermesBuildDir) workingDir(hermesDir) inputs.dir(hermesDir) outputs.files(hermesBuildOutputFileTree)