diff options
author | Jakob Odersky <jodersky@gmail.com> | 2014-01-18 17:21:14 +0100 |
---|---|---|
committer | Jakob Odersky <jodersky@gmail.com> | 2014-01-18 17:21:14 +0100 |
commit | 17589dcc1899a615d5d31ba54b698e06c45cd13f (patch) | |
tree | f26abb735de4c657589ecfea910a1d30875fd561 /project | |
parent | 506e9436a6225b804fb3df9f8ce8d5cb62480106 (diff) | |
download | akka-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.scala | 59 | ||||
-rw-r--r-- | project/nativefat.scala | 44 | ||||
-rw-r--r-- | project/nativepack.scala | 37 |
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 |