Add make as a compile task in the generator project, remove capnpc-java binary when sbt clean is run

This commit is contained in:
Adam Rosenberger 2014-05-16 13:16:00 -04:00
parent 575158ba49
commit 0c8aeb1432
3 changed files with 22 additions and 14 deletions

2
.gitignore vendored
View file

@ -4,3 +4,5 @@ project/target
.idea .idea
*.ipr *.ipr
*.iws *.iws
capnpc-java
generated/

View file

@ -5,11 +5,10 @@ CAPNPC_JAVA_SOURCES=generator/src/main/cpp/compiler/capnpc-java.c++
.PHONY: all clean addressbook .PHONY: all clean addressbook
all : capnpc-java addressbook all : capnpc-java
clean : clean :
rm capnpc-java rm capnpc-java
sbt clean
capnpc-java : $(CAPNPC_JAVA_SOURCES) capnpc-java : $(CAPNPC_JAVA_SOURCES)
$(CXX) $(CAPNPC_JAVA_SOURCES) $(CXX_FLAGS) -g -o capnpc-java $(CXX) $(CAPNPC_JAVA_SOURCES) $(CXX_FLAGS) -g -o capnpc-java
@ -18,4 +17,4 @@ addressbook : capnpc-java
PWD=pwd PWD=pwd
mkdir -p examples/src/main/generated mkdir -p examples/src/main/generated
capnp compile -I$(PWD)/generator/src/main/cpp/compiler --src-prefix=examples/src/main/schema -o./capnpc-java:examples/src/main/generated examples/src/main/schema/addressbook.capnp capnp compile -I$(PWD)/generator/src/main/cpp/compiler --src-prefix=examples/src/main/schema -o./capnpc-java:examples/src/main/generated examples/src/main/schema/addressbook.capnp
sbt examples/"compile" sbt examples/compile

View file

@ -1,6 +1,5 @@
import sbt.Keys._ import sbt.Keys._
import sbt._ import sbt._
import org.sbtidea.SbtIdeaPlugin._
object Build extends sbt.Build { object Build extends sbt.Build {
@ -9,25 +8,27 @@ object Build extends sbt.Build {
id = "capnproto-java", id = "capnproto-java",
base = file(".") base = file(".")
).aggregate(generator, examples) ).aggregate(generator, examples)
.settings(cleanFiles <+= baseDirectory { base => base / "capnpc-java"})
lazy val generator = lazy val generator =
project( project(
id = "generator", id = "generator",
base = file("generator") base = file("generator")
).settings(Defaults.itSettings: _*) ).settings(Defaults.itSettings: _*)
.settings(compile <<= compile in Compile dependsOn(compile in Test, compile in IntegrationTest)) .settings(makeCppTask)
.settings(compile <<= compile in Compile dependsOn makeCpp)
lazy val examples = lazy val examples =
project( project(
id = "examples", id = "examples",
base = file("examples") base = file("examples")
).dependsOn(generator) ).dependsOn(generator)
.settings(unmanagedSourceDirectories in Compile += sourceDirectory.value / "main" / "generated") .settings(unmanagedSourceDirectories in Compile += sourceDirectory.value / "main" / "generated")
.settings(publish := {}) .settings(publish := {})
.settings(publishLocal := {}) .settings(publishLocal := {})
.settings(fork in run := true) .settings(fork in run := true)
.settings(outputStrategy := Some(StdoutOutput)) .settings(outputStrategy := Some(StdoutOutput))
.settings(javaOptions in run ++= Seq( .settings(javaOptions in run ++= Seq(
"-ms2g", "-ms2g",
"-mx2g", "-mx2g",
"-XX:+AlwaysPreTouch", "-XX:+AlwaysPreTouch",
@ -43,6 +44,12 @@ object Build extends sbt.Build {
Shared.settings ++ Shared.settings ++
Seq(libraryDependencies ++= Shared.testDeps) Seq(libraryDependencies ++= Shared.testDeps)
).configs(IntegrationTest) ).configs(IntegrationTest)
val makeCpp = taskKey[Unit]("Run make against the C++ code to create the Java code generator")
val makeCppTask = makeCpp := {
val makeResult = "make".!!
println(s"**** C++ Build Started\n$makeResult\n**** C++ Build Complete")
}
} }
object Shared { object Shared {
@ -76,9 +83,9 @@ object ShellPrompt {
} }
def currBranch = ( def currBranch = (
("git status -sb" lines_! devnull headOption) ("git status -sb" lines_! devnull headOption)
getOrElse "-" stripPrefix "## " getOrElse "-" stripPrefix "## "
) )
val buildShellPrompt = { val buildShellPrompt = {
(state: State) => { (state: State) => {