aboutsummaryrefslogtreecommitdiff
path: root/project/nativepack.scala
diff options
context:
space:
mode:
Diffstat (limited to 'project/nativepack.scala')
-rw-r--r--project/nativepack.scala37
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