diff options
author | Jakob Odersky <jodersky@gmail.com> | 2013-06-30 11:56:29 +0200 |
---|---|---|
committer | Jakob Odersky <jodersky@gmail.com> | 2013-06-30 11:56:29 +0200 |
commit | 94a0ee545ab71c6779f15a5192745bedddfdb4d4 (patch) | |
tree | 208ed050a4e90490dac231d42981833f8b33b092 /project | |
parent | 719978035732a55261b753bbc33570d3c1f53785 (diff) | |
download | akka-serial-94a0ee545ab71c6779f15a5192745bedddfdb4d4.tar.gz akka-serial-94a0ee545ab71c6779f15a5192745bedddfdb4d4.tar.bz2 akka-serial-94a0ee545ab71c6779f15a5192745bedddfdb4d4.zip |
solve cyclic dependency issue
Diffstat (limited to 'project')
-rw-r--r-- | project/Build.scala | 41 | ||||
-rw-r--r-- | project/Dependencies.scala | 5 | ||||
-rw-r--r-- | project/Jni.scala | 5 |
3 files changed, 32 insertions, 19 deletions
diff --git a/project/Build.scala b/project/Build.scala index c08e766..55002d4 100644 --- a/project/Build.scala +++ b/project/Build.scala @@ -9,7 +9,7 @@ import Jni._ object FlowBuild extends Build { val Organization = "com.github.jodersky" val Version = "1.0-SNAPSHOT" //version of flow library - val BinaryMajorVersion = 1 //binary major (api-level) version used to select so's and dlls when publishing + val BinaryMajorVersion = 1 //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.1" lazy val commonSettings: Seq[Setting[_]] = Seq( @@ -22,32 +22,43 @@ object FlowBuild extends Build { lazy val runSettings: Seq[Setting[_]] = Seq( fork := true, connectInput in run := true) + lazy val main: Project = ( Project("flow-main", file("flow-main")) settings (commonSettings: _*) settings ( - libraryDependencies += Dependencies.akka, - compileOrder in Compile := CompileOrder.Mixed + libraryDependencies ++= Seq( + Dependencies.akkaActor, + Dependencies.ioCore, + Dependencies.ioFile), + compileOrder in Compile := CompileOrder.Mixed, + resourceGenerators in Compile <+= (resourceManaged in Compile, link in Native in LocalProject("flow-native-linux")) map { (resDir, binary) => + val file = resDir / "native" / sys.props("os.name").toLowerCase / sys.props("os.arch").toLowerCase / binary.getName + IO.copyFile(binary, file) + Seq(file) + } ) ) - lazy val samples = ( - Project("flow-samples-rwc", file("samples") / "rwc") + lazy val rwc = ( + Project("flow-samples-rwc", file("flow-samples") / "rwc") settings(commonSettings: _*) settings(runSettings: _*) dependsOn(main) ) - - //---native projects -------------------------------------------------- + + //--- native settings -------------------------------------------------- lazy val commonNativeSettings: Seq[Setting[_]] = Seq( includeDirectories in Native += file("flow-native") / "include", + nativeCompile in Native := ((nativeCompile in Native) dependsOn (compile in Compile in main)).value, + javahClasspath := Seq((classDirectory in Compile in main).value), javahClasses := Seq("com.github.jodersky.flow.internal.NativeSerial")) ++ Jni.defaultSettings - //---native unix like settings ---------------------------------------- + //--- native unix like settings ---------------------------------------- val UnixBinaryName = "flow" val UnixBinaryMinorVersion = 0 @@ -55,18 +66,20 @@ object FlowBuild extends Build { lazy val unixNativeSettings: Seq[Setting[_]] = commonNativeSettings ++ Seq( flags in Native := Seq("-fPIC", "-O2"), linkFlags in Native ++= Seq("-shared", s"-Wl,-soname,lib${UnixBinaryName}.so.${BinaryMajorVersion}"), - binaryName in Native := s"lib${UnixBinaryName}.so.${BinaryMajorVersion}.${UnixBinaryMinorVersion}") + binaryName in Native := s"lib${UnixBinaryName}.so.${BinaryMajorVersion}.${UnixBinaryMinorVersion}", + version := s"${BinaryMajorVersion}.${UnixBinaryMinorVersion}-${sys.props("os.name").toLowerCase}-${sys.props("os.arch").toLowerCase}", + nativeSource in Native := baseDirectory.value / "src") lazy val nativeLinux = ( NativeProject("flow-native-linux", file("flow-native") / "unix") settings (unixNativeSettings: _*) settings ( - nativeSource in Native := baseDirectory.value / "src", includeDirectories in Native += jdkHome.value / "include" / "linux" ) dependsOn (main) ) - + + /* Seq( libraryDependencies ++= Dependencies.all, @@ -76,11 +89,7 @@ object FlowBuild extends Build { binaryName in Native := "flow", options in Native := Seq("-fPIC", "-O2"), linkOptions in Native := Seq("-Wl,-soname,libflow.so.1"), - resourceGenerators in Compile <+= (resourceManaged in Compile, link in Native) map { (resDir, binary) => - val file = resDir / "native" / sys.props("os.name").toLowerCase / sys.props("os.arch").toLowerCase / binary.getName - IO.copyFile(binary, file) - Seq(file) - } + ) ++ Jni.defaultSettings * */ diff --git a/project/Dependencies.scala b/project/Dependencies.scala index a705cf3..aa3aa36 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -2,6 +2,9 @@ import sbt._ object Dependencies { - lazy val akka = "com.typesafe.akka" %% "akka-actor" % "2.2-M3" + lazy val akkaActor = "com.typesafe.akka" %% "akka-actor" % "2.2-M3" + + lazy val ioCore = "com.github.scala-incubator.io" %% "scala-io-core" % "0.4.2" + lazy val ioFile = "com.github.scala-incubator.io" %% "scala-io-file" % "0.4.2" }
\ No newline at end of file diff --git a/project/Jni.scala b/project/Jni.scala index d597269..db345e2 100644 --- a/project/Jni.scala +++ b/project/Jni.scala @@ -6,18 +6,19 @@ object Jni { val jdkHome = settingKey[File]("Home of JDK.") val javahHeaderDirectory = settingKey[File]("Directory where generated javah header files are placed.") val javahClasses = settingKey[Seq[String]]("Fully qualified names of classes containing native declarations.") + val javahClasspath = taskKey[Seq[File]]("Classpath to use in javah.") val javah = taskKey[Seq[File]]("Generate JNI headers.") val defaultSettings: Seq[Setting[_]] = Seq( jdkHome := file(sys.env("JAVA_HOME")), javahHeaderDirectory := (sourceManaged in Native).value / "javah", - javah := javahImpl.value, + javah := javahImpl.value, sourceGenerators in Native <+= javah map { headers => headers}, includeDirectories in Native += javahHeaderDirectory.value, includeDirectories in Native += jdkHome.value / "include") def javahImpl = Def.task { - val cps = (internalDependencyClasspath in Compile).value.map(_.data).map(_.getAbsolutePath) + val cps = javahClasspath.value val cp = cps.mkString(":") for (clazz <- javahClasses.value) { val parts = Seq( |