aboutsummaryrefslogtreecommitdiff
path: root/plugin/src/main/scala/ch/jodersky/sbt/jni/build/CMake.scala
blob: 07517a90c84cf48d413c3a38833b4b2729c82f2f (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
package ch.jodersky.sbt.jni
package build

import sbt._

object CMake extends BuildTool with ConfigureMakeInstall {

  override val name = "CMake"

  override def detect(baseDirectory: File) = baseDirectory.list().contains("CMakeLists.txt")

  override protected def templateMappings = Seq(
    "/ch/jodersky/sbt/jni/templates/CMakeLists.txt" -> "CMakeLists.txt"
  )

  override def getInstance(baseDir: File, buildDir: File, logger: Logger) = new Instance {

    override def log = logger
    override def baseDirectory = baseDir
    override def buildDirectory = buildDir

    override def configure(target: File) = Process(
      // disable producing versioned library files, not needed for fat jars
      "cmake " +
        s"-DCMAKE_INSTALL_PREFIX:PATH=${target.getAbsolutePath} " +
        "-DCMAKE_BUILD_TYPE=Release " +
        "-DSBT:BOOLEAN=true " +
        baseDirectory.getAbsolutePath,
      buildDirectory
    )
  }

}