-
Notifications
You must be signed in to change notification settings - Fork 16
/
Copy pathbuild.sbt
109 lines (104 loc) · 3.08 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
/*
* Copyright 2020 Spotify AB.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import Dependencies._
ThisBuild / scalaVersion := "3.4.2"
ThisBuild / scalacOptions ++= Seq(
"-language:implicitConversions",
"-Ykind-projector"
)
ThisBuild / organization := "com.spotify"
ThisBuild / organizationName := "spotify"
ThisBuild / licenses := Seq(
"APL2" -> url("http://www.apache.org/licenses/LICENSE-2.0.txt")
)
ThisBuild / homepage := Some(url("https://github.com/spotify/tfreader"))
ThisBuild / scmInfo := Some(
ScmInfo(
url("https://github.com/spotify/tfreader"),
"scm:git@github.com:spotify/tfr.git"
)
)
ThisBuild / developers := List(
Developer(
id = "regadas",
name = "Filipe Regadas",
email = "filiperegadas@gmail.com",
url = url("https://github.com/regadas")
)
)
lazy val noPublishSettings = Def.settings(
publish / skip := true,
Compile / packageDoc / publishArtifact := false
)
lazy val tfr = project
.in(file("."))
.settings(noPublishSettings)
.aggregate(core, cli)
lazy val core = project
.in(file("modules/core"))
.settings(noPublishSettings)
.settings(
name := "tfr-core",
compileOrder := CompileOrder.JavaThenScala,
libraryDependencies ++= Seq(
gcs,
guava,
munit % Test,
catsCore,
fs2Io,
circeCore,
circeParser
),
Test / classLoaderLayeringStrategy := ClassLoaderLayeringStrategy.Flat,
testFrameworks += new TestFramework("munit.Framework"),
ProtobufConfig / version := protobufVersion
)
.enablePlugins(ProtobufPlugin)
lazy val cli = project
.in(file("modules/cli"))
.settings(noPublishSettings)
.settings(
name := "tfr-cli",
buildInfoKeys := Seq[BuildInfoKey](version),
buildInfoPackage := "tfr",
libraryDependencies ++= Seq(
catsCore,
fs2Io,
scallop
),
GraalVMNativeImage / name := "tfr",
graalVMNativeImageOptions ++= Seq(
"-H:+UnlockExperimentalVMOptions",
"-H:+StrictImageHeap",
"-H:-CheckToolchain",
"-H:+ReportExceptionStackTraces",
"-H:EnableURLProtocols=http,https",
"-H:ReflectionConfigurationFiles=" + baseDirectory.value / "src" / "graal" / "reflect-config.json",
"--no-fallback",
"-march=native"
),
assembly / assemblyMergeStrategy := {
case PathList("module-info.class") => MergeStrategy.rename
case s if s.endsWith(".class") => MergeStrategy.last
case x =>
val oldStrategy = (assembly / assemblyMergeStrategy).value
oldStrategy(x)
}
)
.dependsOn(core)
.enablePlugins(GraalVMNativeImagePlugin)
.enablePlugins(BuildInfoPlugin)