diff options
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.scala | 53 |
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 - } } + } } |