aboutsummaryrefslogtreecommitdiff
path: root/project/nativepack.scala
blob: 293848de864b5d8b4583c9ba7925e806a99280a7 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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
  )

}