aboutsummaryrefslogtreecommitdiff
path: root/jni-plugin/src/main/scala/ch/jodersky/sbt/jni/build/CMake.scala
diff options
context:
space:
mode:
Diffstat (limited to 'jni-plugin/src/main/scala/ch/jodersky/sbt/jni/build/CMake.scala')
-rw-r--r--jni-plugin/src/main/scala/ch/jodersky/sbt/jni/build/CMake.scala53
1 files changed, 12 insertions, 41 deletions
diff --git a/jni-plugin/src/main/scala/ch/jodersky/sbt/jni/build/CMake.scala b/jni-plugin/src/main/scala/ch/jodersky/sbt/jni/build/CMake.scala
index cd0b363..3f75585 100644
--- a/jni-plugin/src/main/scala/ch/jodersky/sbt/jni/build/CMake.scala
+++ b/jni-plugin/src/main/scala/ch/jodersky/sbt/jni/build/CMake.scala
@@ -1,12 +1,8 @@
package ch.jodersky.sbt.jni
package build
-import Keys._
-import sbt._
-import sbt.Keys._
-import sbt.Logger
import java.io.File
-
+import sbt._
object CMake extends BuildTool {
@@ -14,46 +10,21 @@ object CMake extends BuildTool {
def detect(baseDirectory: File) = baseDirectory.list().contains("CMakeLists.txt")
- object api extends BuildToolApi {
+ object api extends ConfigureMakeInstall {
- def clean(baseDirectory: File, log: Logger) = Process("make clean", baseDirectory) ! log
-
- def library(
- baseDirectory: File,
- targetDirectory: File,
- log: Logger
- ): File = {
- val out = targetDirectory
- val outPath = out.getAbsolutePath
-
- val configure = Process(
+ override def configure(base: File, build: File, target: File) = {
+ val targetPath = target.getAbsolutePath
+ Process(
//Disable producing versioned library files, not needed for fat jars.
- s"cmake -DCMAKE_INSTALL_PREFIX:PATH=$outPath -DLIB_INSTALL_DIR:PATH=$outPath -DENABLE_VERSIONED_LIB:BOOLEAN=OFF",
- baseDirectory
+ "cmake " +
+ s"-DCMAKE_INSTALL_PREFIX:PATH=$targetPath " +
+ s"-DLIB_INSTALL_DIR:PATH=$targetPath " +
+ "-DENABLE_VERSIONED_LIB:BOOLEAN=OFF " +
+ base.getAbsolutePath,
+ build
)
-
- val make = Process("make", baseDirectory)
-
- val makeInstall = Process("make install", baseDirectory)
-
- val ev = configure #&& make #&& makeInstall ! log
- if (ev != 0) sys.error(s"Building native library failed. Exit code: ${ev}")
-
- val products: List[File] = (out ** ("*" -- "*.la")).get.filter(_.isFile).toList
-
- //only one produced library is expected
- products match {
- case Nil =>
- sys.error("No files were created during compilation, " +
- "something went wrong with the autotools configuration.")
- case head :: Nil =>
- head
- case head :: tail =>
- log.warn("More than one file was created during compilation, " +
- s"only the first one (${head.getAbsolutePath}) will be used.")
- head
- }
}
+
}
}