diff options
Diffstat (limited to 'project/native.scala')
-rw-r--r-- | project/native.scala | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/project/native.scala b/project/native.scala index 84537a3..edd80c1 100644 --- a/project/native.scala +++ b/project/native.scala @@ -9,17 +9,21 @@ object NativeKeys { val nativeTargetDirectory = settingKey[File]("Base directory to store native products.") val nativeOutputDirectory = settingKey[File]("Actual directory where native products are stored.") val nativePackageUnmanagedDirectory = settingKey[File]("Directory containing external products that will be copied to the native jar.") - val nativePackageArtifact = settingKey[Artifact]("Native artifact.") - + val nativeClean = taskKey[Unit]("Clean native build.") val nativeBuild = taskKey[File]("Invoke native build.") - val nativePackage = taskKey[File]("Package native products into a jar.") - } object NativeDefaults { import NativeKeys._ + val autoClean = Def.task { + val log = streams.value.log + val build = nativeBuildDirectory.value + + Process("make distclean", build) #|| Process("clean", build) ! log + } + val autoLib = Def.task { val log = streams.value.log val build = nativeBuildDirectory.value @@ -45,15 +49,13 @@ object NativeDefaults { out } - val nativePackageImpl = Def.task { + val nativePackageMappings = Def.task { val managedDir = nativeTargetDirectory.value val unmanagedDir = nativePackageUnmanagedDirectory.value val managed = (nativeBuild.value ** "*").get val unmanaged = (unmanagedDir ** "*").get - val jarFile = nativeTargetDirectory.value / (name.value + "-" + version.value + "-native.jar") - val managedMappings: Seq[(File, String)] = for (file <- managed; if file.isFile) yield { file -> ("native/" + (file relativeTo managedDir).get.getPath) } @@ -62,8 +64,7 @@ object NativeDefaults { file -> ("native/" + (file relativeTo unmanagedDir).get.getPath) } - IO.jar(managedMappings ++ unmanagedMappings, jarFile, new Manifest()) - jarFile + managedMappings ++ unmanagedMappings } def os = System.getProperty("os.name").toLowerCase.filter(_ != ' ') @@ -72,11 +73,11 @@ object NativeDefaults { val settings: Seq[Setting[_]] = Seq( nativeTargetDirectory := target.value / "native", nativeOutputDirectory := nativeTargetDirectory.value / (os + "-" + arch), + nativeClean := autoClean.value, nativeBuild := autoLib.value, - nativePackage := nativePackageImpl.value, - nativePackageArtifact := Artifact(name.value, "native"), - nativePackageUnmanagedDirectory := baseDirectory.value / "lib_native" - ) ++ addArtifact(nativePackageArtifact, nativePackage).settings + nativePackageUnmanagedDirectory := baseDirectory.value / "lib_native", + mappings in (Compile, packageBin) ++= nativePackageMappings.value + ) } |