@@ -24,7 +24,15 @@ lazy val catsDoctestSettings = Seq(
2424 doctestWithDependencies := false
2525) ++ doctestSettings
2626
27- lazy val algebraVersion = " 0.4.2"
27+ lazy val kernelSettings = Seq (
28+ // don't warn on value discarding because it's broken on 2.10 with @sp(Unit)
29+ scalacOptions ++= commonScalacOptions.filter(_ != " -Ywarn-value-discard" ),
30+ resolvers ++= Seq (
31+ Resolver .sonatypeRepo(" releases" ),
32+ Resolver .sonatypeRepo(" snapshots" )),
33+ parallelExecution in Test := false ,
34+ scalacOptions in (Compile , doc) := (scalacOptions in (Compile , doc)).value.filter(_ != " -Xfatal-warnings" )
35+ ) ++ warnUnusedImport
2836
2937lazy val commonSettings = Seq (
3038 scalacOptions ++= commonScalacOptions,
@@ -35,8 +43,6 @@ lazy val commonSettings = Seq(
3543 ),
3644 libraryDependencies ++= Seq (
3745 " com.github.mpilquist" %%% " simulacrum" % " 0.7.0" ,
38- " org.spire-math" %%% " algebra" % algebraVersion,
39- " org.spire-math" %%% " algebra-std" % algebraVersion,
4046 " org.typelevel" %%% " machinist" % " 0.4.1" ,
4147 compilerPlugin(" org.scalamacros" %% " paradise" % " 2.1.0" cross CrossVersion .full),
4248 compilerPlugin(" org.spire-math" %% " kind-projector" % " 0.6.3" )
@@ -82,8 +88,12 @@ lazy val scalacheckVersion = "1.12.5"
8288
8389lazy val disciplineDependencies = Seq (
8490 libraryDependencies += " org.scalacheck" %%% " scalacheck" % scalacheckVersion,
85- libraryDependencies += " org.typelevel" %%% " discipline" % " 0.4"
86- )
91+ libraryDependencies += " org.typelevel" %%% " discipline" % " 0.4" )
92+
93+ lazy val testingDependencies = Seq (
94+ libraryDependencies += " org.typelevel" %%% " catalysts-platform" % " 0.0.2" ,
95+ libraryDependencies += " org.typelevel" %%% " catalysts-macros" % " 0.0.2" % " test" ,
96+ libraryDependencies += " org.scalatest" %%% " scalatest" % " 3.0.0-M7" % " test" )
8797
8898/**
8999 * Remove 2.10 projects from doc generation, as the macros used in the projects
@@ -138,15 +148,15 @@ lazy val catsJVM = project.in(file(".catsJVM"))
138148 .settings(moduleName := " cats" )
139149 .settings(catsSettings)
140150 .settings(commonJvmSettings)
141- .aggregate(macrosJVM, coreJVM, lawsJVM, testsJVM, jvm, docs, bench)
142- .dependsOn(macrosJVM, coreJVM, lawsJVM, testsJVM % " test-internal -> test" , jvm, bench % " compile-internal;test-internal -> test" )
151+ .aggregate(macrosJVM, kernelJVM, kernelLawsJVM, coreJVM, lawsJVM, testsJVM, jvm, docs, bench)
152+ .dependsOn(macrosJVM, kernelJVM, kernelLawsJVM, coreJVM, lawsJVM, testsJVM % " test-internal -> test" , jvm, bench % " compile-internal;test-internal -> test" )
143153
144154lazy val catsJS = project.in(file(" .catsJS" ))
145155 .settings(moduleName := " cats" )
146156 .settings(catsSettings)
147157 .settings(commonJsSettings)
148- .aggregate(macrosJS, coreJS, lawsJS, testsJS, js)
149- .dependsOn(macrosJS, coreJS, lawsJS, testsJS % " test-internal -> test" , js)
158+ .aggregate(macrosJS, kernelJS, kernelLawsJS, coreJS, lawsJS, testsJS, js)
159+ .dependsOn(macrosJS, kernelJS, kernelLawsJS, coreJS, lawsJS, testsJS % " test-internal -> test" , js)
150160 .enablePlugins(ScalaJSPlugin )
151161
152162
@@ -160,14 +170,41 @@ lazy val macros = crossProject.crossType(CrossType.Pure)
160170lazy val macrosJVM = macros.jvm
161171lazy val macrosJS = macros.js
162172
173+ lazy val kernel = crossProject.crossType(CrossType .Pure )
174+ .in(file(" kernel" ))
175+ .settings(moduleName := " cats-kernel" )
176+ .settings(kernelSettings : _* )
177+ .settings(buildSettings : _* )
178+ .settings(publishSettings : _* )
179+ .settings(scoverageSettings : _* )
180+ .settings(sourceGenerators in Compile <+= (sourceManaged in Compile ).map(KernelBoiler .gen))
181+ .jsSettings(commonJsSettings:_* )
182+ .jvmSettings(commonJvmSettings:_* )
183+
184+ lazy val kernelJVM = kernel.jvm
185+ lazy val kernelJS = kernel.js
186+
187+ lazy val kernelLaws = crossProject.crossType(CrossType .Pure )
188+ .in(file(" kernel-laws" ))
189+ .settings(moduleName := " cats-kernel-laws" )
190+ .settings(kernelSettings : _* )
191+ .settings(buildSettings : _* )
192+ .settings(publishSettings : _* )
193+ .settings(scoverageSettings : _* )
194+ .settings(disciplineDependencies : _* )
195+ .settings(testingDependencies : _* )
196+ .jsSettings(commonJsSettings:_* )
197+ .jvmSettings(commonJvmSettings:_* )
198+ .dependsOn(kernel)
199+
200+ lazy val kernelLawsJVM = kernelLaws.jvm
201+ lazy val kernelLawsJS = kernelLaws.js
163202
164203lazy val core = crossProject.crossType(CrossType .Pure )
165- .dependsOn(macros)
204+ .dependsOn(macros, kernel )
166205 .settings(moduleName := " cats-core" )
167206 .settings(catsSettings:_* )
168- .settings(
169- sourceGenerators in Compile <+= (sourceManaged in Compile ).map(Boilerplate .gen)
170- )
207+ .settings(sourceGenerators in Compile <+= (sourceManaged in Compile ).map(Boilerplate .gen))
171208 .settings(libraryDependencies += " org.scalacheck" %%% " scalacheck" % scalacheckVersion % " test" )
172209 .jsSettings(commonJsSettings:_* )
173210 .jvmSettings(commonJvmSettings:_* )
@@ -176,13 +213,11 @@ lazy val coreJVM = core.jvm
176213lazy val coreJS = core.js
177214
178215lazy val laws = crossProject.crossType(CrossType .Pure )
179- .dependsOn(macros, core)
216+ .dependsOn(macros, kernel, core, kernelLaws )
180217 .settings(moduleName := " cats-laws" )
181218 .settings(catsSettings:_* )
182219 .settings(disciplineDependencies:_* )
183- .settings(libraryDependencies ++= Seq (
184- " org.spire-math" %%% " algebra-laws" % algebraVersion,
185- " org.typelevel" %%% " catalysts-platform" % " 0.0.2" ))
220+ .settings(libraryDependencies ++= Seq (" org.typelevel" %%% " catalysts-platform" % " 0.0.2" ))
186221 .jsSettings(commonJsSettings:_* )
187222 .jvmSettings(commonJvmSettings:_* )
188223
@@ -195,9 +230,7 @@ lazy val tests = crossProject.crossType(CrossType.Pure)
195230 .settings(catsSettings:_* )
196231 .settings(disciplineDependencies:_* )
197232 .settings(noPublishSettings:_* )
198- .settings(libraryDependencies ++= Seq (
199- " org.scalatest" %%% " scalatest" % " 3.0.0-M7" % " test" ,
200- " org.typelevel" %%% " catalysts-platform" % " 0.0.2" % " test" ))
233+ .settings(testingDependencies : _* )
201234 .jsSettings(commonJsSettings:_* )
202235 .jvmSettings(commonJvmSettings:_* )
203236
0 commit comments