diff options
Diffstat (limited to 'project/nativepack.scala')
-rw-r--r-- | project/nativepack.scala | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/project/nativepack.scala b/project/nativepack.scala new file mode 100644 index 0000000..293848d --- /dev/null +++ b/project/nativepack.scala @@ -0,0 +1,37 @@ +import sbt._ +import Keys._ +import NativeKeys._ +import java.io.File +import scala.collection.mutable.HashSet + +object NativePackKeys { + + val nativePackLinkages = taskKey[Seq[(NativeBuild, File)]]("") + val nativePackUnmanaged = settingKey[File]("Directory containing any pre-compiled native binaries.") + +} + +object NativePackDefaults { + import NativePackKeys._ + + val mappingsImpl = Def.task { + val links = nativePackLinkages.value + val unamanagedDir = nativePackUnmanaged.value + + val managed: Seq[(File, String)] = for ( (build, binary) <- links.toSeq) yield { + binary -> ("native/" + build.name + "/" + binary.name) + } + + val unmanaged: Seq[(File, String)] = for (file <- (unamanagedDir ** "*").get; if file.isFile) yield { + file -> ("native/" + (file relativeTo unamanagedDir).get.getPath) + } + + managed ++ unmanaged + } + + def settings = Seq( + nativePackUnmanaged := baseDirectory.value / "lib_native", + mappings in (Compile, packageBin) ++= mappingsImpl.value + ) + +}
\ No newline at end of file |