aboutsummaryrefslogtreecommitdiff
path: root/project
diff options
context:
space:
mode:
authorJakob Odersky <jodersky@gmail.com>2014-01-18 17:21:14 +0100
committerJakob Odersky <jodersky@gmail.com>2014-01-18 17:21:14 +0100
commit17589dcc1899a615d5d31ba54b698e06c45cd13f (patch)
treef26abb735de4c657589ecfea910a1d30875fd561 /project
parent506e9436a6225b804fb3df9f8ce8d5cb62480106 (diff)
downloadakka-serial-17589dcc1899a615d5d31ba54b698e06c45cd13f.tar.gz
akka-serial-17589dcc1899a615d5d31ba54b698e06c45cd13f.tar.bz2
akka-serial-17589dcc1899a615d5d31ba54b698e06c45cd13f.zip
update readmev1.1.0-RC1
Diffstat (limited to 'project')
-rw-r--r--project/FlowBuild.scala59
-rw-r--r--project/nativefat.scala44
-rw-r--r--project/nativepack.scala37
3 files changed, 80 insertions, 60 deletions
diff --git a/project/FlowBuild.scala b/project/FlowBuild.scala
index 0de60bb..42b9cda 100644
--- a/project/FlowBuild.scala
+++ b/project/FlowBuild.scala
@@ -2,25 +2,26 @@ import sbt._
import Keys._
import JniKeys._
import NativeKeys._
+import NativePackKeys._
object FlowBuild extends Build {
val Organization = "com.github.jodersky"
val ScalaVersion = "2.10.3"
- val Version = "1.1.1" //version of flow library
+ val Version = "1.1.0" //version of flow library
val NativeMajorVersion = 2 //major version of native API
val NativeMinorVersionPosix = 0 //minor version of native posix implementation
val NativeVersionPosix = NativeMajorVersion + "." + NativeMinorVersionPosix
- val release = settingKey[Boolean]("Indicates if this build is a release.")
val gitHeadCommitSha = settingKey[String]("Current commit sha.")
lazy val commonSettings: Seq[Setting[_]] = Seq(
organization := Organization,
scalaVersion := ScalaVersion,
- release in ThisBuild := sys.props("release") == "true",
+ isSnapshot := sys.props("release") != "true",
gitHeadCommitSha in ThisBuild := Process("git rev-parse HEAD").lines.head,
- version in ThisBuild:= { if (release.value ) Version else Version + "-" + gitHeadCommitSha.value },
+ version in ThisBuild:= { if (!isSnapshot.value) Version else Version + "-" + gitHeadCommitSha.value },
licenses := Seq(("BSD-3-Clause", url("http://opensource.org/licenses/BSD-3-Clause"))),
+ homepage := Some(url("http://github.com/jodersky/flow")),
resolvers += "Typesafe Repo" at "http://repo.typesafe.com/typesafe/releases/",
scalacOptions ++= Seq("-deprecation", "-unchecked", "-feature"))
@@ -31,13 +32,12 @@ object FlowBuild extends Build {
)
lazy val root: Project = (
- Project("root", file(".")).aggregate(flow)
+ Project("root", file(".")).aggregate(flow, flowPack)
settings(
publish := (),
publishLocal := ()
)
)
-
lazy val flow: Project = (
Project("flow", file("flow"))
@@ -51,8 +51,15 @@ object FlowBuild extends Build {
javahClasses := Seq("com.github.jodersky.flow.internal.NativeSerial"),
javahHeaderDirectory := (sourceDirectory in Compile).value / "native" / "include",
compileOrder in Compile := CompileOrder.Mixed,
- publishTo := Some("Sonatype Snapshots Nexus" at "https://oss.sonatype.org/content/repositories/snapshots"),
- credentials += Credentials(Path.userHome / ".ivy2" / ".credentials"),
+ publishMavenStyle := true,
+ publishTo := {
+ val nexus = "https://oss.sonatype.org/"
+ if (isSnapshot.value)
+ Some("snapshots" at nexus + "content/repositories/snapshots")
+ else
+ Some("releases" at nexus + "service/local/staging/deploy/maven2")
+ },
+ pomIncludeRepository := { _ => false },
libraryDependencies ++= Seq(
Dependencies.akkaActor,
Dependencies.ioCore,
@@ -67,15 +74,15 @@ object FlowBuild extends Build {
val compiler = "gcc"
val linker = compiler
- val cFlags = Seq("-O2", "-fPIC")
-
- val linkerFlags = Seq("-shared", s"-Wl,-soname,libflow.so.${NativeMajorVersion}")
- val binary = s"libflow.so"
+ val cFlags = List("-O2", "-fPIC")
+ val linkerFlags = List("-shared", s"-Wl,-soname,libflow.so.${NativeMajorVersion}")
+ val binary = "libflow.so"
val builds = List(
- NativeBuild("amd64-linux", "gcc", cFlags :+ "-m64", "gcc", linkerFlags :+ "-m64", binary),
- NativeBuild("x86-linux", "gcc", cFlags :+ "-m32", "gcc", linkerFlags :+ "-m32", binary),
- NativeBuild("arm-linux", "arm-linux-gnueabihf-gcc", cFlags, "arm-linux-gnueabihf-gcc", linkerFlags, binary)
+ NativeBuild("x86_64-linux-gnu", "gcc", "-m64" :: cFlags, "gcc", "-m64" :: linkerFlags, binary),
+ NativeBuild("x86-linux-gnu", "gcc", "-m32" :: cFlags, "gcc", "-m32" :: linkerFlags, binary),
+ NativeBuild("arm-linux-gnueabihf", "arm-linux-gnueabihf-gcc", cFlags, "arm-linux-gnueabihf-gcc", linkerFlags, binary),
+ NativeBuild("arm-linux-gnueabi", "arm-linux-gnueabi-gcc", cFlags, "arm-linux-gnueabi-gcc", linkerFlags, binary)
//add other build configurations here or adapt existing ones to your needs
)
@@ -128,12 +135,32 @@ object FlowBuild extends Build {
}
}
+ lazy val flowPack: Project = (
+ Project("flow-pack", file("flow-pack"))
+ settings (commonSettings: _*)
+ settings (NativePackDefaults.settings: _*)
+ settings (
+ nativePackLinkages := {
+ val linkMappings = Map(
+ "x86_64-linux-gnu" -> "amd64-linux",
+ "x86-linux-gnu" -> "x86-linux",
+ "arm-linux-gnueabihf" -> "arm-linux"
+ )
+ val ls: Seq[(NativeBuild, File)] = (nativeLink in flow).value.toSeq
+ for ((build, binary) <- ls; n <- linkMappings.get(build.name)) yield {
+ (build.copy(name = n), binary)
+ }
+ }
+ )
+ //settings(NativeFatDefaults.settings: _*)
+ dependsOn(flow)
+ )
lazy val samplesTerminal = (
Project("flow-samples-terminal", file("flow-samples") / "flow-samples-terminal")
settings(commonSettings: _*)
settings(runSettings: _*)
- dependsOn(flow)
+ dependsOn(flowPack)
)
diff --git a/project/nativefat.scala b/project/nativefat.scala
deleted file mode 100644
index 02de33b..0000000
--- a/project/nativefat.scala
+++ /dev/null
@@ -1,44 +0,0 @@
-import sbt._
-import Keys._
-import NativeKeys._
-import java.io.File
-import scala.collection.mutable.HashSet
-
-object NativeFatKeys {
- val packageFat = taskKey[File]("Create a fat jar containing native binaries.")
- val packageFatSuffix = settingKey[String]("Suffix to add to name of fat jar.")
- val packageFatUnmanaged = settingKey[File]("Directory containing any pre-compiled native binaries.")
-}
-
-object NativeFatDefaults {
- import NativeFatKeys._
-
- val mappingsImpl = Def.task {
- val links = nativeLink.value //nativeLink produces native shared libraries for different platforms
- val unamanagedDir = packageFatUnmanaged.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 = sbt.Defaults.packageTaskSettings(packageFat, sbt.Defaults.packageBinMappings) ++
- Seq(
- packageFatSuffix := "-fat",
- packageFatUnmanaged := baseDirectory.value / "lib_native",
- products in packageFat := (products in Compile).value,
- artifact in packageFat := {
- val prev = (artifact in packageBin).value
- prev.copy(name = prev.name + packageFatSuffix.value)
- },
- mappings in packageFat ++= mappingsImpl.value,
- publishArtifact in packageFat := true
- ) ++ addArtifact(artifact in packageFat, packageFat)
-
-} \ No newline at end of file
diff --git a/project/nativepack.scala b/project/nativepack.scala
new file mode 100644
index 0000000..293848d
--- /dev/null
+++ b/project/nativepack.scala
@@ -0,0 +1,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
+ )
+
+} \ No newline at end of file