aboutsummaryrefslogtreecommitdiff
path: root/project/Build.scala
diff options
context:
space:
mode:
authorJakob Odersky <jodersky@gmail.com>2013-07-19 20:45:52 +0200
committerJakob Odersky <jodersky@gmail.com>2013-07-19 20:45:52 +0200
commitc80a8e478568b60242a19149ea2d599b58ed792b (patch)
tree2aa6b9cea0c60881a8a89059cb92ec4832f7c16a /project/Build.scala
parent09eb7f7803e6935ea6e8f694d17fa1c245eda39d (diff)
downloadakka-serial-c80a8e478568b60242a19149ea2d599b58ed792b.tar.gz
akka-serial-c80a8e478568b60242a19149ea2d599b58ed792b.tar.bz2
akka-serial-c80a8e478568b60242a19149ea2d599b58ed792b.zip
cleanup build
Diffstat (limited to 'project/Build.scala')
-rw-r--r--project/Build.scala159
1 files changed, 0 insertions, 159 deletions
diff --git a/project/Build.scala b/project/Build.scala
deleted file mode 100644
index bd31c1b..0000000
--- a/project/Build.scala
+++ /dev/null
@@ -1,159 +0,0 @@
-import sbt._
-import Keys._
-
-import NativeKeys._
-import NativeDefaults._
-import JniKeys._
-
-object FlowBuild extends Build {
- val Organization = "com.github.jodersky"
- val Version = "1.0-SNAPSHOT" //version of flow library
- val BinaryMajorVersion = 2 //binary major version used to select so's and dlls when publishing (needs to be incremented if API changes are made to flow.h or NativeSerial.java)
- val ScalaVersion = "2.10.2"
- //see native settings down below
-
- lazy val commonSettings: Seq[Setting[_]] = Seq(
- organization := Organization,
- version := Version,
- scalaVersion := ScalaVersion,
- resolvers += "Typesafe Repo" at "http://repo.typesafe.com/typesafe/releases/",
- scalacOptions ++= Seq("-deprecation", "-unchecked", "-feature"))
-
- lazy val runSettings: Seq[Setting[_]] = Seq(
- fork := true,
- connectInput in run := true,
- outputStrategy := Some(StdoutOutput)
- )
-
- lazy val main: Project = (
- Project("flow", file("flow-main"))
- settings (commonSettings: _*)
- settings (
- libraryDependencies ++= Seq(
- Dependencies.akkaActor,
- Dependencies.ioCore,
- Dependencies.ioFile),
- compileOrder in Compile := CompileOrder.Mixed,
- resourceGenerators in Compile <+= (resourceManaged in Compile, binariesDirectory in ThisBuild) map { (resDir, binDir) =>
- val binaries: Seq[(File, File)] = getLatestBinaries(binDir, BinaryMajorVersion)
- val resources = for (binary <- binaries) yield {
- val versionedBinary = binary._1
- val unversionedBinary = binary._2
-
- val relative = (unversionedBinary relativeTo binDir).get.getPath
-
- val resource = resDir / "native" / relative
- IO.copyFile(versionedBinary, resource)
- resource
- }
- resources
- }
- )
- )
-
- def getLatestBinaries(base: File, majorVersion: Int): Seq[(File, File)] = {
- def latest(platform: File) = {
- val Pattern = "(.+)\\.(\\d+)\\.(\\d+)".r
- val MajorVersion = majorVersion.toString
- val majorCompatible = platform.listFiles.map(_.getAbsolutePath) collect {
- case path @ Pattern(strippedPath, MajorVersion, minorVersion) => (path, strippedPath, minorVersion)
- }
- val latestMinor = majorCompatible.sortBy(_._3).lastOption
- latestMinor map { case (path, strippedPath, _) =>
- (file(path), file(strippedPath))
- }
- }
-
- val oSs = IO.listFiles(base).filter(file => !file.name.startsWith("."))
- val platforms = oSs.flatMap(_.listFiles)
-
- platforms.flatMap(latest(_))
- }
-
- lazy val terminal = (
- Project("flow-samples-terminal", file("flow-samples") / "terminal")
- settings(commonSettings: _*)
- settings(runSettings: _*)
- dependsOn(main)
- )
-
-
- //--- native settings --------------------------------------------------
-
- val binariesDirectory = settingKey[File]("Directory containing published native binaries.")
- override lazy val settings = super.settings ++ Seq(
- (binariesDirectory in ThisBuild) := (baseDirectory in ThisBuild).value / "flow-binaries"
- )
-
- def canonicalBinaryPath(base: File, binaryName: String) = {
- base / sys.props("os.name").toLowerCase.filter(_ != ' ') / sys.props("os.arch").toLowerCase / binaryName
- }
- val publishNative = taskKey[File]("Publish native binary compiled on current OS to flow-binaries project so that it may be packaged in a distribution of flow.")
- val publishNativeImpl = Def.task{
- val in = (link in Native).value
- val out = canonicalBinaryPath((binariesDirectory in ThisBuild).value, in.getName)
- IO.copyFile(in, out)
- out
- }
-
- lazy val commonNativeSettings: Seq[Setting[_]] = Seq(
- nativeSource in Native := baseDirectory.value / "src",
- includeDirectories in Native += file("flow-native") / "shared" / "include",
- nativeCompile in Native := ((nativeCompile in Native) dependsOn (compile in Compile in main)).value,
- publishNative := publishNativeImpl.value,
- javahClasspath := Seq((classDirectory in Compile in main).value),
- javahClasses := Seq("com.github.jodersky.flow.internal.NativeSerial")) ++ JniDefaults.defaultSettings
-
-
- //--- native unix-like settings ----------------------------------------
-
- val UnixBinaryMinorVersion = 1
-
- lazy val unixNativeSettings: Seq[Setting[_]] = commonNativeSettings ++ Seq(
- flags in Native := Seq("-fPIC", "-O2")
- )
-
- lazy val nativeLinux = (
- NativeProject("flow-native-linux", file("flow-native") / "unix")
- settings (unixNativeSettings: _*)
- settings (
- target := baseDirectory.value / "target" / "linux",
- includeDirectories in Native ++= jdkHome.value.map(jdk => jdk / "include" / "linux").toSeq,
- linkFlags in Native ++= Seq("-shared", s"-Wl,-soname,libflow.so.${BinaryMajorVersion}"),
- binaryName in Native := s"libflow.so.${BinaryMajorVersion}.${UnixBinaryMinorVersion}"
- )
- dependsOn(main)
- )
-
- lazy val nativeMacOSX = (
- NativeProject("flow-native-macosx", file("flow-native") / "unix")
- settings (unixNativeSettings: _*)
- settings (
- target := baseDirectory.value / "target" / "macosx",
- includeDirectories in Native += file("/System/Library/Frameworks/JavaVM.framework/Headers/jni.h"),
- includeDirectories in Native += file("/Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/JavaVM.framework/Versions/A/Headers"),
- linkFlags in Native ++= Seq("-dynamiclib"),
- binaryName in Native := s"libflow.jnilib.${BinaryMajorVersion}.${UnixBinaryMinorVersion}"
- )
- dependsOn (main)
- )
-
-
- /* stub for native project on windows, I don't know if this would actually work...
- *
- * val WindowsBinaryMinorVersion = 0
- *
- lazy val nativeWindows = (
- NativeProject("flow-native-windows", file("flow-native") / "windows") //note: change from unix to windows
- settings (
- //windows is not a unix-like OS, several default settings need to be changed
- cCompiler in Native := "???",
- flags in Native := Seq("-fPIC", "-O2"),
- linkFlags in Native ++= ???,
- binaryName in Native := s"flow.dll.${BinaryMajorVersion}.${WindowsBinaryMinorVersion}"
- includeDirectories in Native += jdkHome.value / "include" / "windows"
- )
- dependsOn (main)
- )*/
-
-}