-
Notifications
You must be signed in to change notification settings - Fork 0
/
build.sbt
110 lines (77 loc) · 4.03 KB
/
build.sbt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
lazy val ilc = project in file(".")
lazy val clients = project in file("clients") dependsOn (ilc % "test->test;compile->test")
lazy val bigClients = project in file("bigClients") dependsOn (clients % "test->compile;compile->compile") dependsOn (ilc % "test->test;compile->test")
lazy val icfp2014 = project in file("icfp2014") dependsOn (ilc % "test->test;compile->test")
scalaVersion in ThisBuild := "2.11.8"
scalacOptions in ThisBuild := Seq("-deprecation", "-feature", "-unchecked", "-Xlint")
scalacOptions in ThisBuild ++= Seq("-optimize")
//Link to the Scala standard library. See http://stackoverflow.com/a/18747266/53974.
//For Scaladoc.
autoAPIMappings in ThisBuild := true
//Add a manual mapping for the standard library,
apiMappings in ThisBuild += (scalaInstance.value.libraryJar -> url(s"http://www.scala-lang.org/api/${scalaVersion.value}/"))
//More explicit variant:
//scalacOptions in doc += s"-doc-external-doc:${scalaInstance.value.libraryJar}#http://www.scala-lang.org/api/${scalaVersion.value}/"
scalacOptions in doc in ThisBuild ++= Seq("-implicits",
"-diagrams",
"-doc-title", "ILC",
"-doc-source-url", "file:€{FILE_PATH}.scala")
scalacOptions in (Compile, doc) in ThisBuild := (scalacOptions in doc).value
scalacOptions in (Test, doc) in ThisBuild := (scalacOptions in doc).value
libraryDependencies += "org.scalatest" %% "scalatest" % "2.1.3" % "test"
libraryDependencies += "org.scala-lang" % "scala-reflect" % scalaVersion.value
libraryDependencies += "org.scala-lang" % "scala-compiler" % scalaVersion.value
libraryDependencies +=
"com.chuusai" %% "shapeless" % "2.0.0"
libraryDependencies +=
"org.scalaz" %% "scalaz-core" % "7.0.6"
libraryDependencies += "io.github.nicolasstucki" %% "multisets" % "0.3"
libraryDependencies +=
"com.googlecode.kiama" %% "kiama" % "1.8.0"
initialCommands in console in ThisBuild := """
import ilc.examples._
import ilc._; import language._; import feature._
"""
//XXX rather local, feel free to clobber the content.
initialCommands in (Test, console) in ThisBuild := """
import ilc.feature.inference._
val h = new InferenceTestHelper {}
import h._
import shapeless._
"""
//By default, initialCommands in console is also used for consoleQuick [1],
//where however we can't reference the project code! So disable this default by
//setting empty initialCommands.
//[1] http://www.scala-sbt.org/0.13.1/docs/Howto/scala.html#initial
initialCommands in consoleQuick := ""
// SCALA METER BEGINS
// http://axel22.github.io/scalameter//2013/06/14/release_0_4_M2.html
// resolver for ScalaMeter
resolvers ++= Seq(Resolver.sonatypeRepo("releases"), Resolver.sonatypeRepo("snapshots"))
// ScalaMeter
libraryDependencies += "com.github.axel22" %% "scalameter" % "0.5-M2" % "test"
logBuffered in ThisBuild := false
val scalaMeterFramework = new TestFramework("org.scalameter.ScalaMeterFramework")
testFrameworks in ThisBuild += scalaMeterFramework
// -preJDK7 allows ScalaMeter to run on JDK 6 ─ see
// http://axel22.github.io/scalameter/2013/02/14/release_0_3.html
testOptions in ThisBuild += Tests.Argument(scalaMeterFramework, "-preJDK7 -CresultDir testOutput -silent")
parallelExecution in Test in ThisBuild := false
//SCALA METER ENDS
////Also generate HTML during compilation. We might want to move this later to a
////separate task.
//resolvers += Resolver.url("Typesafe Releases", url("http://repo.typesafe.com/typesafe/ivy-releases"))(Resolver.ivyStylePatterns)
//
//addCompilerPlugin("org.scala-sbt.sxr" %% "sxr" % "0.3.0")
//
//scalacOptions in (Compile, compile) in ThisBuild <+= scalaSource in Compile map { "-P:sxr:base-directory:" + _.getAbsolutePath }
//
//scalacOptions in (Test, compile) in ThisBuild <+= scalaSource in Test map { "-P:sxr:base-directory:" + _.getAbsolutePath }
//
//scalacOptions in (Test, compile) in ThisBuild <+= baseDirectory map { base =>
// val linkFile = base / "sxr.links"
// "-P:sxr:link-file:" + linkFile.getAbsolutePath
//}
// Also enable access to source files for navigation.
EclipseKeys.withSource in ThisBuild := true
EclipseKeys.eclipseOutput in ThisBuild := Some("bin")