diff options
Diffstat (limited to 'project/FlowBuild.scala')
-rw-r--r-- | project/FlowBuild.scala | 110 |
1 files changed, 5 insertions, 105 deletions
diff --git a/project/FlowBuild.scala b/project/FlowBuild.scala index d509baa..dfef43c 100644 --- a/project/FlowBuild.scala +++ b/project/FlowBuild.scala @@ -1,16 +1,11 @@ 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 = "2.0.0" //version of flow library - val NativeMajorVersion = 3 //major version of native API - val NativeMinorVersionPosix = 0 //minor version of native posix implementation - val NativeVersionPosix = NativeMajorVersion + "." + NativeMinorVersionPosix val gitHeadCommitSha = settingKey[String]("Current commit sha.") @@ -32,7 +27,7 @@ object FlowBuild extends Build { ) lazy val root: Project = ( - Project("root", file(".")).aggregate(flow, flowPack) + Project("root", file(".")).aggregate(flow) settings( publish := (), publishLocal := () @@ -43,13 +38,9 @@ object FlowBuild extends Build { Project("flow", file("flow")) settings (commonSettings: _*) settings (JniDefaults.settings: _*) - settings (NativeDefaults.settings: _*) - settings (selectHost().settings: _*) settings( - nativeIncludeDirectories += (sourceDirectory in Compile).value / "native" / "include", - nativeIncludeDirectories ++= jdkHome.value.map(jdk => jdk / "include").toSeq, javahClasses := Seq("com.github.jodersky.flow.internal.NativeSerial"), - javahHeaderDirectory := (sourceDirectory in Compile).value / "native" / "include", + javahHeaderDirectory := (baseDirectory in ThisBuild).value / "flow-native" / "include", compileOrder in Compile := CompileOrder.Mixed, publishMavenStyle := true, publishTo := { @@ -73,106 +64,16 @@ object FlowBuild extends Build { </developers> }, libraryDependencies ++= Seq( - Dependencies.akkaActor, - Dependencies.ioCore, - Dependencies.ioFile) + Dependencies.akkaActor + ) ) ) - //the current operating system used to run the native compile - trait Host{ def settings: Seq[Setting[_]] } - - object Linux extends Host { - - val compiler = "gcc" - val linker = compiler - val cFlags = List("-O2", "-fPIC", "-Wall") - val linkerFlags = List("-shared", s"-Wl,-soname,libflow.so.${NativeMajorVersion}") - val binary = "libflow.so" - - val builds = List( - 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 - ) - - lazy val settings = Seq( - nativeVersion := NativeVersionPosix, - nativeIncludeDirectories ++= jdkHome.value.map(jdk => jdk / "include" / "linux").toSeq, - nativeSource := nativeSource.value / "posix", - nativeBuilds := builds - ) - - } - - //stub, not sure if this works - object MacOSX extends Host { - - val compiler = "gcc" - val linker = compiler - val cFlags = Seq("-O2", "-fPIC") - val linkerFlags = Seq("-dynamiclib") - val binary = s"libflow.jnilib" - - val localBuild = NativeBuild( - "amd64-macosx", - compiler, - cFlags, - linker, - linkerFlags, - binary - ) - - lazy val settings = Seq( - nativeVersion := NativeVersionPosix, - nativeIncludeDirectories += file("/System/Library/Frameworks/JavaVM.framework/Headers/jni.h"), - nativeIncludeDirectories += file("/Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/JavaVM.framework/Versions/A/Headers"), - nativeSource := nativeSource.value / "posix", - nativeBuilds := Seq(localBuild) - ) - - } - - private def osError = throw new RuntimeException("Sorry, native compilation under the current OS is not supported.") - def selectHost() = System.getProperty("os.name").toLowerCase match { - case "linux" => Linux - case "macosx" => MacOSX - case _ => new Host{ - val settings = Seq( - nativeCompile := osError, - nativeLink := osError - ) - } - } - - 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) - } - }, - exportJars := true - ) - dependsOn(flow) - ) - lazy val samplesTerminal = ( Project("flow-samples-terminal", file("flow-samples") / "flow-samples-terminal") settings(commonSettings: _*) settings(runSettings: _*) - dependsOn(flowPack) + //dependsOn(flowPack) dependsOn(flow) ) @@ -180,7 +81,6 @@ object FlowBuild extends Build { Project("flow-samples-broadcast", file("flow-samples") / "flow-samples-broadcast") settings(commonSettings: _*) settings(runSettings: _*) - dependsOn(flowPack) dependsOn(flow) ) |