diff options
author | Jakob Odersky <jodersky@gmail.com> | 2013-06-27 19:27:57 +0200 |
---|---|---|
committer | Jakob Odersky <jodersky@gmail.com> | 2013-06-27 19:27:57 +0200 |
commit | 719978035732a55261b753bbc33570d3c1f53785 (patch) | |
tree | de110fafce8b2ca11f7061f4c8f4b93a4baf548a | |
parent | f21d2de9405d5dd36f108a380f558cab930c1205 (diff) | |
download | akka-serial-719978035732a55261b753bbc33570d3c1f53785.tar.gz akka-serial-719978035732a55261b753bbc33570d3c1f53785.tar.bz2 akka-serial-719978035732a55261b753bbc33570d3c1f53785.zip |
refactor build to a more generic structure
-rw-r--r-- | flow-main/src/main/java/com/github/jodersky/flow/internal/NativeSerial.java (renamed from src/main/java/com/github/jodersky/flow/internal/NativeSerial.java) | 0 | ||||
-rw-r--r-- | flow-main/src/main/scala/com/github/jodersky/flow/Serial.scala (renamed from src/main/scala/com/github/jodersky/flow/Serial.scala) | 0 | ||||
-rw-r--r-- | flow-main/src/main/scala/com/github/jodersky/flow/SerialExt.scala (renamed from src/main/scala/com/github/jodersky/flow/SerialExt.scala) | 0 | ||||
-rw-r--r-- | flow-main/src/main/scala/com/github/jodersky/flow/SerialManager.scala (renamed from src/main/scala/com/github/jodersky/flow/SerialManager.scala) | 0 | ||||
-rw-r--r-- | flow-main/src/main/scala/com/github/jodersky/flow/SerialOperator.scala (renamed from src/main/scala/com/github/jodersky/flow/SerialOperator.scala) | 0 | ||||
-rw-r--r-- | flow-main/src/main/scala/com/github/jodersky/flow/exceptions.scala (renamed from src/main/scala/com/github/jodersky/flow/exceptions.scala) | 0 | ||||
-rw-r--r-- | flow-main/src/main/scala/com/github/jodersky/flow/internal/InternalSerial.scala (renamed from src/main/scala/com/github/jodersky/flow/internal/InternalSerial.scala) | 0 | ||||
-rw-r--r-- | flow-main/src/main/scala/com/github/jodersky/flow/internal/NativeLoader.scala (renamed from src/main/scala/com/github/jodersky/flow/internal/NativeLoader.scala) | 0 | ||||
-rw-r--r-- | flow-native/include/flow.h (renamed from src/main/native/flow.h) | 0 | ||||
-rw-r--r-- | flow-native/unix/src/flow.c (renamed from src/main/native/flow.c) | 0 | ||||
-rw-r--r-- | project/Build.scala | 95 | ||||
-rw-r--r-- | project/Dependencies.scala | 7 | ||||
-rw-r--r-- | project/Jni.scala | 42 |
13 files changed, 88 insertions, 56 deletions
diff --git a/src/main/java/com/github/jodersky/flow/internal/NativeSerial.java b/flow-main/src/main/java/com/github/jodersky/flow/internal/NativeSerial.java index dba3f44..dba3f44 100644 --- a/src/main/java/com/github/jodersky/flow/internal/NativeSerial.java +++ b/flow-main/src/main/java/com/github/jodersky/flow/internal/NativeSerial.java diff --git a/src/main/scala/com/github/jodersky/flow/Serial.scala b/flow-main/src/main/scala/com/github/jodersky/flow/Serial.scala index 6e4aefb..6e4aefb 100644 --- a/src/main/scala/com/github/jodersky/flow/Serial.scala +++ b/flow-main/src/main/scala/com/github/jodersky/flow/Serial.scala diff --git a/src/main/scala/com/github/jodersky/flow/SerialExt.scala b/flow-main/src/main/scala/com/github/jodersky/flow/SerialExt.scala index 080ddd3..080ddd3 100644 --- a/src/main/scala/com/github/jodersky/flow/SerialExt.scala +++ b/flow-main/src/main/scala/com/github/jodersky/flow/SerialExt.scala diff --git a/src/main/scala/com/github/jodersky/flow/SerialManager.scala b/flow-main/src/main/scala/com/github/jodersky/flow/SerialManager.scala index 688ae3c..688ae3c 100644 --- a/src/main/scala/com/github/jodersky/flow/SerialManager.scala +++ b/flow-main/src/main/scala/com/github/jodersky/flow/SerialManager.scala diff --git a/src/main/scala/com/github/jodersky/flow/SerialOperator.scala b/flow-main/src/main/scala/com/github/jodersky/flow/SerialOperator.scala index 604dc74..604dc74 100644 --- a/src/main/scala/com/github/jodersky/flow/SerialOperator.scala +++ b/flow-main/src/main/scala/com/github/jodersky/flow/SerialOperator.scala diff --git a/src/main/scala/com/github/jodersky/flow/exceptions.scala b/flow-main/src/main/scala/com/github/jodersky/flow/exceptions.scala index 0422018..0422018 100644 --- a/src/main/scala/com/github/jodersky/flow/exceptions.scala +++ b/flow-main/src/main/scala/com/github/jodersky/flow/exceptions.scala diff --git a/src/main/scala/com/github/jodersky/flow/internal/InternalSerial.scala b/flow-main/src/main/scala/com/github/jodersky/flow/internal/InternalSerial.scala index 315f395..315f395 100644 --- a/src/main/scala/com/github/jodersky/flow/internal/InternalSerial.scala +++ b/flow-main/src/main/scala/com/github/jodersky/flow/internal/InternalSerial.scala diff --git a/src/main/scala/com/github/jodersky/flow/internal/NativeLoader.scala b/flow-main/src/main/scala/com/github/jodersky/flow/internal/NativeLoader.scala index aebbe3f..aebbe3f 100644 --- a/src/main/scala/com/github/jodersky/flow/internal/NativeLoader.scala +++ b/flow-main/src/main/scala/com/github/jodersky/flow/internal/NativeLoader.scala diff --git a/src/main/native/flow.h b/flow-native/include/flow.h index 3b6df24..3b6df24 100644 --- a/src/main/native/flow.h +++ b/flow-native/include/flow.h diff --git a/src/main/native/flow.c b/flow-native/unix/src/flow.c index 174e9c0..174e9c0 100644 --- a/src/main/native/flow.c +++ b/flow-native/unix/src/flow.c diff --git a/project/Build.scala b/project/Build.scala index fc71e5b..c08e766 100644 --- a/project/Build.scala +++ b/project/Build.scala @@ -8,13 +8,66 @@ import Jni._ object FlowBuild extends Build { val Organization = "com.github.jodersky" - val Version = "1.0-SNAPSHOT" + 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 ScalaVersion = "2.10.1" + + 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) + + lazy val main: Project = ( + Project("flow-main", file("flow-main")) + settings (commonSettings: _*) + settings ( + libraryDependencies += Dependencies.akka, + compileOrder in Compile := CompileOrder.Mixed + ) + ) + + lazy val samples = ( + Project("flow-samples-rwc", file("samples") / "rwc") + settings(commonSettings: _*) + settings(runSettings: _*) + dependsOn(main) + ) + + + //---native projects -------------------------------------------------- + + lazy val commonNativeSettings: Seq[Setting[_]] = Seq( + includeDirectories in Native += file("flow-native") / "include", + javahClasses := Seq("com.github.jodersky.flow.internal.NativeSerial")) ++ Jni.defaultSettings + + + //---native unix like settings ---------------------------------------- + + val UnixBinaryName = "flow" + val UnixBinaryMinorVersion = 0 - lazy val main: Project = Project("flow", file("."), settings = - Defaults.defaultSettings ++ - buildSettings ++ - NativeDefault.defaultSettings ++ + 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}") + + 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, javahClasses := Seq("com.github.jodersky.flow.internal.NativeSerial"), @@ -28,33 +81,7 @@ object FlowBuild extends Build { IO.copyFile(binary, file) Seq(file) } - ) ++ Jni.defaultSettings) - - lazy val samples = Project( - id = "flow-rwc", - base = file("samples") / "rwc", - settings = buildSettings ++ runSettings ++ Seq(libraryDependencies ++= Dependencies.all)).dependsOn(main) - - lazy val buildSettings = Defaults.defaultSettings ++ Seq( - organization := Organization, - version := Version, - scalaVersion := ScalaVersion, - resolvers += "Typesafe Repo" at "http://repo.typesafe.com/typesafe/releases/", - scalacOptions ++= Seq("-deprecation", "-unchecked", "-feature"), - compileOrder in Compile := CompileOrder.Mixed) - - lazy val runSettings = Seq( - fork := true, - connectInput in run := true, - javaOptions in run += "-Djava.library.path=.") -} - -object Dependencies { - - lazy val io = "com.github.scala-incubator.io" %% "scala-io-core" % "0.4.2" - lazy val file = "com.github.scala-incubator.io" %% "scala-io-file" % "0.4.2" - lazy val akka = "com.typesafe.akka" %% "akka-actor" % "2.2-M3" - - lazy val all = Seq(akka) - + ) ++ Jni.defaultSettings + * + */ } diff --git a/project/Dependencies.scala b/project/Dependencies.scala new file mode 100644 index 0000000..a705cf3 --- /dev/null +++ b/project/Dependencies.scala @@ -0,0 +1,7 @@ +import sbt._ + +object Dependencies { + + lazy val akka = "com.typesafe.akka" %% "akka-actor" % "2.2-M3" + +}
\ No newline at end of file diff --git a/project/Jni.scala b/project/Jni.scala index 8aacf3b..d597269 100644 --- a/project/Jni.scala +++ b/project/Jni.scala @@ -11,27 +11,25 @@ object Jni { val defaultSettings: Seq[Setting[_]] = Seq( jdkHome := file(sys.env("JAVA_HOME")), javahHeaderDirectory := (sourceManaged in Native).value / "javah", - javah := { - - val cp = (classDirectory in Compile).value - for (clazz <- javahClasses.value) { - val parts = Seq( - "javah", - "-d", javahHeaderDirectory.value, - "-classpath", cp, - clazz) - val cmd = parts.mkString(" ") - val ev = Process(cmd) ! streams.value.log - if (ev != 0) throw new RuntimeException("Error occured running javah.") - } - IO.listFiles(javahHeaderDirectory.value) - }, - sourceGenerators in Native <+= javah map {headers => - headers - }, - includeDirectories in Native += javahHeaderDirectory.value, - javah <<= (javah dependsOn (compile in Compile)), - includeDirectories in Native += jdkHome.value / "include" - ) + 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 cp = cps.mkString(":") + for (clazz <- javahClasses.value) { + val parts = Seq( + "javah", + "-d", javahHeaderDirectory.value, + "-classpath", cp, + clazz) + val cmd = parts.mkString(" ") + val ev = Process(cmd) ! streams.value.log + if (ev != 0) throw new RuntimeException("Error occured running javah.") + } + IO.listFiles(javahHeaderDirectory.value) + } } |