From a0a423614afd35973c6055f9682acc3434e32c86 Mon Sep 17 00:00:00 2001 From: Arman Bilge Date: Mon, 17 Apr 2023 14:19:17 +0000 Subject: [PATCH 1/2] `crossProjectBaseDirectory` should be absolute --- sbt-crossproject-test/src/sbt-test/new-api/detection/build.sbt | 2 +- .../src/main/scala/sbtcrossproject/CrossProject.scala | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/sbt-crossproject-test/src/sbt-test/new-api/detection/build.sbt b/sbt-crossproject-test/src/sbt-test/new-api/detection/build.sbt index 42e3660..01106b4 100644 --- a/sbt-crossproject-test/src/sbt-test/new-api/detection/build.sbt +++ b/sbt-crossproject-test/src/sbt-test/new-api/detection/build.sbt @@ -9,7 +9,7 @@ def doCheckType(got: CrossType, expected: CrossType) = assert(got == expected) def doCheckBase(got: File, expected: File) = - assert(got == expected) + assert(got == expected.getAbsoluteFile) lazy val root = crossProject(JVMPlatform, NativePlatform, JSPlatform) diff --git a/sbt-crossproject/src/main/scala/sbtcrossproject/CrossProject.scala b/sbt-crossproject/src/main/scala/sbtcrossproject/CrossProject.scala index eb7b52a..1cc9f4b 100644 --- a/sbt-crossproject/src/main/scala/sbtcrossproject/CrossProject.scala +++ b/sbt-crossproject/src/main/scala/sbtcrossproject/CrossProject.scala @@ -205,7 +205,8 @@ object CrossProject { ).settings( CrossPlugin.autoImport.crossProjectPlatform := platform, CrossPlugin.autoImport.crossProjectCrossType := crossType, - CrossPlugin.autoImport.crossProjectBaseDirectory := base, + CrossPlugin.autoImport.crossProjectBaseDirectory := + IO.resolve((LocalRootProject / baseDirectory).value, base), name := id, // #80 sharedSrc(platform), sharedResources(platform) From 4972b7c823ec677e11d59c7e44aad9825c60cf0b Mon Sep 17 00:00:00 2001 From: Arman Bilge Date: Mon, 17 Apr 2023 14:27:01 +0000 Subject: [PATCH 2/2] `CrossProject#in` sets `crossProjectBaseDirectory` --- .../src/sbt-test/new-api/detection/build.sbt | 25 +++++++++++++++++++ .../src/sbt-test/new-api/detection/test | 3 +++ .../scala/sbtcrossproject/CrossProject.scala | 8 ++++-- 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/sbt-crossproject-test/src/sbt-test/new-api/detection/build.sbt b/sbt-crossproject-test/src/sbt-test/new-api/detection/build.sbt index 01106b4..0fea604 100644 --- a/sbt-crossproject-test/src/sbt-test/new-api/detection/build.sbt +++ b/sbt-crossproject-test/src/sbt-test/new-api/detection/build.sbt @@ -64,3 +64,28 @@ lazy val fullCross = doCheckBase(crossProjectBaseDirectory.value, file("fullCross")) } ) + +lazy val nonDefaultBase = + crossProject(JVMPlatform, NativePlatform, JSPlatform) + .in(file("non-default-base")) + .jvmSettings( + check := { + doCheckPlatform(crossProjectPlatform.value, "jvm") + doCheckType(crossProjectCrossType.value, CrossType.Full) + doCheckBase(crossProjectBaseDirectory.value, file("non-default-base")) + } + ) + .jsSettings( + check := { + doCheckPlatform(crossProjectPlatform.value, "js") + doCheckType(crossProjectCrossType.value, CrossType.Full) + doCheckBase(crossProjectBaseDirectory.value, file("non-default-base")) + } + ) + .nativeSettings( + check := { + doCheckPlatform(crossProjectPlatform.value, "native") + doCheckType(crossProjectCrossType.value, CrossType.Full) + doCheckBase(crossProjectBaseDirectory.value, file("non-default-base")) + } + ) diff --git a/sbt-crossproject-test/src/sbt-test/new-api/detection/test b/sbt-crossproject-test/src/sbt-test/new-api/detection/test index 24a0284..ea39a6c 100644 --- a/sbt-crossproject-test/src/sbt-test/new-api/detection/test +++ b/sbt-crossproject-test/src/sbt-test/new-api/detection/test @@ -4,3 +4,6 @@ > fullCrossJVM/check > fullCrossJS/check > fullCrossNative/check +> nonDefaultBaseJVM/check +> nonDefaultBaseJS/check +> nonDefaultBaseNative/check diff --git a/sbt-crossproject/src/main/scala/sbtcrossproject/CrossProject.scala b/sbt-crossproject/src/main/scala/sbtcrossproject/CrossProject.scala index 1cc9f4b..daaa1c6 100644 --- a/sbt-crossproject/src/main/scala/sbtcrossproject/CrossProject.scala +++ b/sbt-crossproject/src/main/scala/sbtcrossproject/CrossProject.scala @@ -84,8 +84,12 @@ final class CrossProject private[sbtcrossproject] ( configurePlatforms(platforms: _*)(_.enablePlugins(plugins: _*)) def in(dir: File): CrossProject = - mapProjectsByPlatform( - (platform, project) => project.in(crossType.platformDir(dir, platform))) + settings( + CrossPlugin.autoImport.crossProjectBaseDirectory := + IO.resolve((LocalRootProject / baseDirectory).value, dir) + ).mapProjectsByPlatform { (platform, project) => + project.in(crossType.platformDir(dir, platform)) + } def overrideConfigs(cs: Configuration*): CrossProject = transform(_.overrideConfigs(cs: _*))