Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Port to Scala Native #160

Merged
merged 6 commits into from
Aug 13, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,15 @@ matrix:
scala: 2.12.3
jdk: oraclejdk8

# Scala Native only supports 2.11. The before_install takes a while so we
# run all tests together.
- env:
- CI_SCRIPT: '"fastparseNative/test; scalaparseNative/test; pythonparseNative/test; cssparseNative/test "'
before_install:
- curl https://raw.githubusercontent.com/scala-native/scala-native/v0.3.2/bin/travis_setup.sh | bash -x
scala: 2.11.11
jdk: oraclejdk8

# For pythonparse and cssparse, just run it on one JDK/Scala version combo
# to make sure it basically works; hopefully any cross-version incompatibilities
# in fastparse will already be sussed out by earlier builds
Expand Down
45 changes: 34 additions & 11 deletions build.sbt
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import sbtcrossproject.{crossProject, CrossType}
import sbt.Keys._

publishArtifact := false
Expand All @@ -10,6 +11,11 @@ lazy val scala212 = "2.12.3"

crossScalaVersions := Seq(scala210, scala211, scala212)

lazy val nativeSettings = Seq(
scalaVersion := scala211,
crossScalaVersions := Seq(scala211)
)

scalaJSUseRhino in Global := false

def macroDependencies(version: String) =
Expand All @@ -27,7 +33,7 @@ val shared = Seq(
libraryDependencies ++= macroDependencies(scalaVersion.value),
libraryDependencies ++= Seq(
"com.lihaoyi" %%% "utest" % "0.4.8" % "test",
"com.lihaoyi" %%% "sourcecode" % "0.1.3"
"com.lihaoyi" %%% "sourcecode" % "0.1.4"
),
scalaJSStage in Global := FullOptStage,
organization := "com.lihaoyi",
Expand Down Expand Up @@ -59,7 +65,7 @@ val shared = Seq(
</developers>
)

lazy val utils = crossProject
lazy val utils = crossProject(JSPlatform, JVMPlatform, NativePlatform)
.settings(shared:_*)
.settings(
name := "fastparse-utils",
Expand All @@ -72,11 +78,13 @@ lazy val utils = crossProject
}
}
)
.nativeSettings(nativeSettings)
lazy val utilsJS = utils.js
lazy val utilsJVM= utils.jvm
lazy val utilsNative = utils.native


lazy val fastparse = crossProject
lazy val fastparse = crossProject(JSPlatform, JVMPlatform, NativePlatform)
.dependsOn(utils)
.settings(shared:_*)
.settings(
Expand Down Expand Up @@ -112,22 +120,25 @@ lazy val fastparse = crossProject
)
// In order to make the midi-parser-test in fastparseJVM/test:run work
.jvmSettings(fork in (Test, run) := true)
.nativeSettings(nativeSettings)

lazy val fastparseJS = fastparse.js
lazy val fastparseJVM = fastparse.jvm
lazy val fastparseNative = fastparse.native

lazy val fastparseByte = crossProject
lazy val fastparseByte = crossProject(JSPlatform, JVMPlatform)
.dependsOn(fastparse)
.settings(shared:_*)
.settings(
name := "fastparse-byte",
libraryDependencies += "org.scodec" %%% "scodec-bits" % "1.1.2"
libraryDependencies += "org.scodec" %%% "scodec-bits" % "1.1.5"
)

lazy val fastparseByteJS = fastparseByte.js
lazy val fastparseByteJVM = fastparseByte.jvm
// Native support blocked by https://github.com/scala-native/scala-native/issues/925

lazy val scalaparse = crossProject
lazy val scalaparse = crossProject(JSPlatform, JVMPlatform, NativePlatform)
.dependsOn(fastparse)
.settings(shared:_*)
.settings(
Expand All @@ -136,36 +147,43 @@ lazy val scalaparse = crossProject
.jvmSettings(
libraryDependencies += "org.scala-lang" % "scala-compiler" % scalaVersion.value % "test"
)
.nativeSettings(nativeSettings)

lazy val scalaparseJS = scalaparse.js

lazy val scalaparseJVM = scalaparse.jvm

lazy val scalaparseNative = scalaparse.native


lazy val pythonparse = crossProject
lazy val pythonparse = crossProject(JSPlatform, JVMPlatform, NativePlatform)
.dependsOn(fastparse)
.settings(shared:_*)
.settings(
name := "pythonparse"
)
.nativeSettings(nativeSettings)


lazy val pythonparseJVM = pythonparse.jvm
lazy val pythonparseJS = pythonparse.js
lazy val pythonparseNative = pythonparse.native


lazy val cssparse = crossProject
lazy val cssparse = crossProject(JSPlatform, JVMPlatform, NativePlatform)
.dependsOn(fastparse)
.settings(name := "cssparse")
.settings(shared:_*)
.jvmSettings(
libraryDependencies += "net.sourceforge.cssparser" % "cssparser" % "0.9.18" % "test"
)
.nativeSettings(nativeSettings)

lazy val cssparseJVM = cssparse.jvm
lazy val cssparseJS = cssparse.js
lazy val cssparseNative = cssparse.native

lazy val classparse = crossProject
lazy val classparse = crossProject(JSPlatform, JVMPlatform)
.dependsOn(fastparseByte)
.settings(shared:_*)
.settings(
Expand All @@ -175,7 +193,7 @@ lazy val classparse = crossProject
lazy val classparseJVM = classparse.jvm
lazy val classparseJS = classparse.js

lazy val perftests = crossProject
lazy val perftests = crossProject(JSPlatform, JVMPlatform)
.dependsOn(
fastparse % "compile->compile;compile->test",
fastparseByte % "compile->compile;compile->test",
Expand All @@ -197,18 +215,23 @@ lazy val modules = project
.aggregate(
fastparseJS,
fastparseJVM,
fastparseNative,
fastparseByteJS,
fastparseByteJVM,
pythonparseJS,
pythonparseJVM,
pythonparseNative,
cssparseJS,
cssparseJVM,
cssparseNative,
scalaparseJS,
scalaparseJVM,
scalaparseNative,
classparseJVM,
classparseJS,
utilsJS,
utilsJVM
utilsJVM,
utilsNative
)
.settings(
publishArtifact := false,
Expand Down
5 changes: 5 additions & 0 deletions project/build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,8 @@ addSbtPlugin("com.jsuereth" % "sbt-pgp" % "1.0.0")

addSbtPlugin("com.github.gseitz" % "sbt-release" % "1.0.5")

addSbtPlugin("org.scala-native" % "sbt-crossproject" % "0.2.1")

addSbtPlugin("org.scala-native" % "sbt-scalajs-crossproject" % "0.2.1")

addSbtPlugin("org.scala-native" % "sbt-scala-native" % "0.3.2")