aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakob Odersky <jodersky@gmail.com>2013-06-27 19:27:57 +0200
committerJakob Odersky <jodersky@gmail.com>2013-06-27 19:27:57 +0200
commit719978035732a55261b753bbc33570d3c1f53785 (patch)
treede110fafce8b2ca11f7061f4c8f4b93a4baf548a
parentf21d2de9405d5dd36f108a380f558cab930c1205 (diff)
downloadakka-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.scala95
-rw-r--r--project/Dependencies.scala7
-rw-r--r--project/Jni.scala42
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)
+ }
}