diff options
author | Jakob Odersky <jodersky@gmail.com> | 2014-04-21 00:53:04 +0200 |
---|---|---|
committer | Jakob Odersky <jodersky@gmail.com> | 2014-04-21 00:58:41 +0200 |
commit | 21768dcd18843620daf64fc759693385b8b6a547 (patch) | |
tree | 678799dba823b31f85d50086de07f4e8a7469848 /project/native.scala | |
parent | 2b8d4feff9a342910192218a33fc9880abc1f33d (diff) | |
download | akka-serial-21768dcd18843620daf64fc759693385b8b6a547.tar.gz akka-serial-21768dcd18843620daf64fc759693385b8b6a547.tar.bz2 akka-serial-21768dcd18843620daf64fc759693385b8b6a547.zip |
move native build to separate sbt project
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 + ) } |