Skip to content

Commit 775e588

Browse files
authored
Merge pull request #3918 from Gedochao/update/scala-native-0.5.9
Bump Scala Native to 0.5.9
2 parents 60714a4 + 8912949 commit 775e588

File tree

11 files changed

+194
-14
lines changed

11 files changed

+194
-14
lines changed

modules/build/src/test/scala/scala/build/tests/ScalaNativeUsingDirectiveTests.scala

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,48 @@ class ScalaNativeUsingDirectiveTests extends TestUtil.ScalaCliBuildSuite {
150150
}
151151
}
152152

153+
for { directiveKey <- Seq("nativeCCompile", "native-c-compile") }
154+
test(s"ScalaNativeOptions for $directiveKey") {
155+
val expectedOption1 = "compileOption1"
156+
val expectedOption2 = "compileOption2"
157+
val inputs = TestInputs(
158+
os.rel / "p.sc" ->
159+
s"""//> using $directiveKey $expectedOption1 $expectedOption2
160+
|def foo() = println("hello foo")
161+
|""".stripMargin
162+
)
163+
164+
inputs.withLoadedBuild(buildOptions, buildThreads, bloopConfig) { (_, _, maybeBuild) =>
165+
assert(
166+
maybeBuild.options.scalaNativeOptions.cCompileOptions.head == expectedOption1
167+
)
168+
assert(
169+
maybeBuild.options.scalaNativeOptions.cCompileOptions.drop(1).head == expectedOption2
170+
)
171+
}
172+
}
173+
174+
for { directiveKey <- Seq("nativeCppCompile", "native-cpp-compile") }
175+
test(s"ScalaNativeOptions for $directiveKey") {
176+
val expectedOption1 = "compileOption1"
177+
val expectedOption2 = "compileOption2"
178+
val inputs = TestInputs(
179+
os.rel / "p.sc" ->
180+
s"""//> using $directiveKey $expectedOption1 $expectedOption2
181+
|def foo() = println("hello foo")
182+
|""".stripMargin
183+
)
184+
185+
inputs.withLoadedBuild(buildOptions, buildThreads, bloopConfig) { (_, _, maybeBuild) =>
186+
assert(
187+
maybeBuild.options.scalaNativeOptions.cppCompileOptions.head == expectedOption1
188+
)
189+
assert(
190+
maybeBuild.options.scalaNativeOptions.cppCompileOptions.drop(1).head == expectedOption2
191+
)
192+
}
193+
}
194+
153195
test("ScalaNativeOptions for native-linking and no value") {
154196
val inputs = TestInputs(
155197
os.rel / "p.sc" ->

modules/cli/src/main/scala/scala/cli/commands/shared/ScalaNativeOptions.scala

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,16 @@ final case class ScalaNativeOptions(
5555
@Tag(tags.should)
5656
nativeCompile: List[String] = Nil,
5757

58+
@Group(HelpGroup.ScalaNative.toString)
59+
@HelpMessage("List of compile options (C files only)")
60+
@Tag(tags.should)
61+
nativeCCompile: List[String] = Nil,
62+
63+
@Group(HelpGroup.ScalaNative.toString)
64+
@HelpMessage("List of compile options (C++ files only)")
65+
@Tag(tags.should)
66+
nativeCppCompile: List[String] = Nil,
67+
5868
@Group(HelpGroup.ScalaNative.toString)
5969
@Hidden
6070
@HelpMessage("Use default compile options")

modules/cli/src/main/scala/scala/cli/commands/shared/SharedOptions.scala

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,8 @@ final case class SharedOptions(
273273
linkingOptions = nativeLinking,
274274
linkingDefaults = nativeLinkingDefaults,
275275
compileOptions = nativeCompile,
276+
cCompileOptions = nativeCCompile,
277+
cppCompileOptions = nativeCppCompile,
276278
compileDefaults = nativeCompileDefaults,
277279
embedResources = embedResources,
278280
buildTargetStr = nativeTarget,

modules/directives/src/main/scala/scala/build/preprocessing/directives/ScalaNative.scala

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ import scala.cli.commands.SpecificationLevel
1212
@DirectiveExamples(s"//> using nativeLto full")
1313
@DirectiveExamples(s"//> using nativeVersion ${Constants.scalaNativeVersion}")
1414
@DirectiveExamples(s"//> using nativeCompile -flto=thin")
15+
@DirectiveExamples(s"//> using nativeCCompile -std=c17")
16+
@DirectiveExamples(s"//> using nativeCppCompile -std=c++17 -fcxx-exceptions")
1517
@DirectiveExamples(s"//> using nativeLinking -flto=thin")
1618
@DirectiveExamples(s"//> using nativeClang ./clang")
1719
@DirectiveExamples(s"//> using nativeClangPP ./clang++")
@@ -32,6 +34,10 @@ import scala.cli.commands.SpecificationLevel
3234
|
3335
|`//> using nativeCompile` _value1_ _value2_ …
3436
|
37+
|`//> using nativeCCompile` _value1_ _value2_ …
38+
|
39+
|`//> using nativeCppCompile` _value1_ _value2_ …
40+
|
3541
|`//> using nativeLinking` _value1_ _value2_ …
3642
|
3743
|`//> using nativeClang` _value_
@@ -59,6 +65,8 @@ final case class ScalaNative(
5965
nativeLto: Option[String] = None,
6066
nativeVersion: Option[String] = None,
6167
nativeCompile: List[String] = Nil,
68+
nativeCCompile: List[String] = Nil,
69+
nativeCppCompile: List[String] = Nil,
6270
nativeLinking: List[String] = Nil,
6371
nativeClang: Option[String] = None,
6472
@DirectiveName("nativeClangPp")
@@ -74,6 +82,8 @@ final case class ScalaNative(
7482
ltoStr = nativeLto,
7583
version = nativeVersion,
7684
compileOptions = nativeCompile,
85+
cCompileOptions = nativeCCompile,
86+
cppCompileOptions = nativeCppCompile,
7787
linkingOptions = nativeLinking,
7888
clang = nativeClang,
7989
clangpp = nativeClangPP,

modules/options/src/main/scala/scala/build/options/ScalaNativeOptions.scala

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ final case class ScalaNativeOptions(
3636
linkingOptions: List[String] = Nil,
3737
linkingDefaults: Option[Boolean] = None,
3838
compileOptions: List[String] = Nil,
39+
cCompileOptions: List[String] = Nil,
40+
cppCompileOptions: List[String] = Nil,
3941
compileDefaults: Option[Boolean] = None,
4042
embedResources: Option[Boolean] = None,
4143
buildTargetStr: Option[String] = None,
@@ -109,6 +111,10 @@ final case class ScalaNativeOptions(
109111

110112
private def compileCliOptions(): List[String] =
111113
finalCompileOptions().flatMap(option => List("--compile-option", option))
114+
private def cCompileCliOptions(): List[String] =
115+
cCompileOptions.flatMap(option => List("--c-compile-option", option))
116+
private def cppCompileCliOptions(): List[String] =
117+
cppCompileOptions.flatMap(option => List("--cpp-compile-option", option))
112118
private def ltoOptions(): List[String] =
113119
ltoStr.map(_.trim).filter(_.nonEmpty)
114120
.map(lto => LTO.apply(lto))
@@ -176,6 +182,8 @@ final case class ScalaNativeOptions(
176182
clangppCliOption() ++
177183
linkingCliOptions() ++
178184
compileCliOptions() ++
185+
cCompileCliOptions() ++
186+
cppCompileCliOptions() ++
179187
resourcesCliOptions(resourcesExist) ++
180188
targetCliOption() ++
181189
multithreadingCliOption()

project/deps/package.mill.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ object Deps {
128128
def scalaMeta = "4.13.9"
129129
def scalafmt = "3.9.10"
130130
def scalaNative04 = "0.4.17"
131-
def scalaNative05 = "0.5.8"
131+
def scalaNative05 = "0.5.9"
132132
def scalaNative = scalaNative05
133133
def maxScalaNativeForToolkit = scalaNative05
134134
def maxScalaNativeForTypelevelToolkit = scalaNative04

website/docs/reference/cli-options.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1424,7 +1424,7 @@ Enable Scala Native. To show more options for Scala Native pass `--help-native`
14241424

14251425
### `--native-version`
14261426

1427-
Set the Scala Native version (0.5.8 by default).
1427+
Set the Scala Native version (0.5.9 by default).
14281428

14291429
### `--native-mode`
14301430

@@ -1459,6 +1459,14 @@ Use default linking settings
14591459

14601460
List of compile options
14611461

1462+
### `--native-c-compile`
1463+
1464+
List of compile options (C files only)
1465+
1466+
### `--native-cpp-compile`
1467+
1468+
List of compile options (C++ files only)
1469+
14621470
### `--native-compile-defaults`
14631471

14641472
[Internal]

website/docs/reference/directives.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -512,6 +512,10 @@ Add Scala Native options
512512

513513
`//> using nativeCompile` _value1_ _value2_
514514

515+
`//> using nativeCCompile` _value1_ _value2_
516+
517+
`//> using nativeCppCompile` _value1_ _value2_
518+
515519
`//> using nativeLinking` _value1_ _value2_
516520

517521
`//> using nativeClang` _value_
@@ -537,10 +541,14 @@ Add Scala Native options
537541

538542
`//> using nativeLto full`
539543

540-
`//> using nativeVersion 0.5.8`
544+
`//> using nativeVersion 0.5.9`
541545

542546
`//> using nativeCompile -flto=thin`
543547

548+
`//> using nativeCCompile -std=c17`
549+
550+
`//> using nativeCppCompile -std=c++17 -fcxx-exceptions`
551+
544552
`//> using nativeLinking -flto=thin`
545553

546554
`//> using nativeClang ./clang`

website/docs/reference/scala-command/cli-options.md

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -854,7 +854,7 @@ Enable Scala Native. To show more options for Scala Native pass `--help-native`
854854

855855
`SHOULD have` per Scala Runner specification
856856

857-
Set the Scala Native version (0.5.8 by default).
857+
Set the Scala Native version (0.5.9 by default).
858858

859859
### `--native-mode`
860860

@@ -904,6 +904,18 @@ Use default linking settings
904904

905905
List of compile options
906906

907+
### `--native-c-compile`
908+
909+
`SHOULD have` per Scala Runner specification
910+
911+
List of compile options (C files only)
912+
913+
### `--native-cpp-compile`
914+
915+
`SHOULD have` per Scala Runner specification
916+
917+
List of compile options (C++ files only)
918+
907919
### `--native-compile-defaults`
908920

909921
`IMPLEMENTATION specific` per Scala Runner specification

website/docs/reference/scala-command/directives.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -321,6 +321,10 @@ Add Scala Native options
321321

322322
`//> using nativeCompile` _value1_ _value2_
323323

324+
`//> using nativeCCompile` _value1_ _value2_
325+
326+
`//> using nativeCppCompile` _value1_ _value2_
327+
324328
`//> using nativeLinking` _value1_ _value2_
325329

326330
`//> using nativeClang` _value_
@@ -346,10 +350,14 @@ Add Scala Native options
346350

347351
`//> using nativeLto full`
348352

349-
`//> using nativeVersion 0.5.8`
353+
`//> using nativeVersion 0.5.9`
350354

351355
`//> using nativeCompile -flto=thin`
352356

357+
`//> using nativeCCompile -std=c17`
358+
359+
`//> using nativeCppCompile -std=c++17 -fcxx-exceptions`
360+
353361
`//> using nativeLinking -flto=thin`
354362

355363
`//> using nativeClang ./clang`

0 commit comments

Comments
 (0)