Full name:
com.carrotgarden.maven:scalor-maven-plugin_2.12:1.5.0.20190502181145:scala-native-link-main
Description:
Attributes:
Name | Type | Since | Description |
---|---|---|---|
<commonMappingPattern> | String | - | Regular expression for plugin configuration map values provided in
pom.xml. Extractor for pattern:
key=value. Must define exactly two regex capture
groups. Mapping regular expression is used as follows:
case commonMappingPattern.r( key, value ) => ( key, value ) Default value is: \s*([^=\s]+)\s*=\s*([^\s]+)\s*. User property is: scalor.commonMappingPattern. |
<commonSequenceSeparator> | String | - | Separator for plugin configuration list values provided in
pom.xml. Separator regular expression is used as
follows:
string.split( commonSequenceSeparator ).map( _.trim ).filterNot( _.isEmpty ) Default value is: [★\n]+. User property is: scalor.commonSequenceSeparator. |
<nativeCdataZipEnable> | boolean | - | Enable to use a single zip archive for all C data resources. Insead
of embedding individual C data resouces files, put them in a zip
archive and then apply objcopy. Default value is: true. User property is: scalor.nativeCdataZipEnable. |
<nativeCdataZipFileName> | String | - | Name of the C data resource file used for embedding by objcopy.
Archive zip file is created with these steps:
for example, in file src/main/clang/main.c // objcopy naming convention extern char _binary_cdata_zip_start extern char _binary_cdata_zip_end // provide forwarders for scala @extern char* binary_cdata_zip_start() { return & _binary_cdata_zip_start; } char* binary_cdata_zip_end() { return & _binary_cdata_zip_end; } @extern object cdata { // access compressed zip archive def binary_cdata_zip_start : Ptr[ CChar ] = extern def binary_cdata_zip_end : Ptr[ CChar ] = extern } Default value is: cdata.zip. User property is: scalor.nativeCdataZipFileName. |
<nativeClassRegex> | String | - | Regular expression used to discover Scala.native *.nir
IR classes from class path. Default value is: .+[.]nir. User property is: scalor.nativeClassRegex. |
<nativeEnsureCdataFolders> | boolean | - | Enable to create C data resource root folders when missing. Default value is: true. User property is: scalor.nativeEnsureCdataFolders. |
<nativeEnsureClangFolders> | boolean | - | Enable to create C/CPP source root folders when missing. Default value is: true. User property is: scalor.nativeEnsureClangFolders. |
<nativeLibraryDetect> | boolean | - | Invoke Scala.native linker only when Scala.native library is
detected in project dependencies with given scope. Detection
parameter: nativeScalaLibRegex. Default value is: true. User property is: scalor.nativeLibraryDetect. |
<nativeLogBuildProcs> | boolean | - | Enable logging of Scala.native external executable invocations. Use
to review actual shell commands used to invoke external processes
such as LLMV. Default value is: false. User property is: scalor.nativeLogBuildProcs. |
<nativeLogBuildStats> | boolean | - | Enable logging of Scala.native build results. Use to review
generated resources locations and counts. Default value is: false. User property is: scalor.nativeLogBuildStats. |
<nativeLogBuildTimes> | boolean | - | Enable logging of Scala.native build phase durations. Use to review
compiler and linker performance profile. Default value is: false. User property is: scalor.nativeLogBuildTimes. |
<nativeLogBuildVerts> | boolean | - | Enable logging of Scala.native external command invocations
"vertically". Use to ease review of typical long LLVM compile and
linking shell commands. Default value is: false. User property is: scalor.nativeLogBuildVerts. |
<nativeLogClassPath> | boolean | - | Enable logging of Scala.native linker class path. Use to review
actual resources used for *.nir class discovery. Default value is: false. User property is: scalor.nativeLogClassPath. |
<nativeLogOptions> | boolean | - | Enable logging of linker options. Use to review actual Scala.native
linker invocation configuration. Default value is: false. User property is: scalor.nativeLogOptions. |
<nativeLogRuntime> | boolean | - | Enable logging of Scala.native linker runtime. Use to review actual
generated output runtime location. Default value is: false. User property is: scalor.nativeLogRuntime. |
<nativeLogUpdateResult> | boolean | - | Enable logging of Scala.native linker update result of M2E
incremental change detection. Use to review actual
*.nir classes which triggered Eclipse linker build. Default value is: false. User property is: scalor.nativeLogUpdateResult. |
<nativeMainBuildModeDebug> | String | - | Build mode for non-optimized nativeMainRuntimeDebug.
Normally uses always, to link during both Maven full
build and Eclipse incremental build. Available build modes:
always - link during both full and incremental build never - do not produce runtime at all full - link only during full build incr - link only during incremental build Default value is: always. User property is: scalor.nativeMainBuildModeDebug. |
<nativeMainBuildModeRelease> | String | - | Build mode for optimized/stripped nativeMainRuntimeRelease.
Normally uses full, to link only during Maven full
build and skip Eclipse incremental build. Available build modes:
always - link during both full and incremental build never - do not produce runtime at all full - link only during full build incr - link only during incremental build Default value is: full. User property is: scalor.nativeMainBuildModeRelease. |
<nativeMainCdataEnable> | boolean | - | Enable to convert project-provided C data resources in scope=main.
Provides a way to embed objcopy resources in binary
runtime. Basic explanation. Default value is: true. User property is: scalor.nativeMainCdataEnable. |
<nativeMainCdataFolders> | File[] | - | C data resource root folders to be included in compilation
scope=main. Normally uses [src/main/cdata]. Absolute
path. Conversion parameter nativeCdataZipEnable
Enablement parameter nativeMainCdataEnable Default value is: ${project.build.sourceDirectory}/../cdata. User property is: scalor.nativeMainCdataFolders. |
<nativeMainClangEnable> | boolean | - | Enable to compile project-provided C/CPP sources in scope=main.
Provides a way to inject #define constant extractors,
etc. Default value is: true. User property is: scalor.nativeMainClangEnable. |
<nativeMainClangFolders> | File[] | - | C/CPP source root folders to be included in compilation scope=main.
Normally uses [src/main/clang]. Absolute path.
Enablement parameter nativeMainClangEnable Default value is: ${project.build.sourceDirectory}/../clang. User property is: scalor.nativeMainClangFolders. |
<nativeMainDependencyFolders> | File[] | - | Folders with classes generated by current project and included in
linker class path. Normally includes build output from
scope=[macro,main] (target/classes). Default value is: ${project.build.outputDirectory}. User property is: scalor.nativeMainDependencyFolders. |
<nativeMainDependencyScopes> | String[] | - | Provide linker class path from project dependency artifacts based
on these scopes. Scopes reference. Default value is: provided. User property is: scalor.nativeMainDependencyScopes. |
<nativeMainEntryClass> | String | - | Entry point for native runtime in scope=main. Fully qualified class
name which follows Java main contract. For example,
Scala object in file main/Main.scala:
package main object Main { def main( args : Array[ String ] ) : Unit = { println( s"scala-native" ) } } Default value is: main.Main. User property is: scalor.nativeMainEntryClass. |
<nativeMainGarbageCollector> | String | - | Select garbage collector included with Scala.native runtime in
scope=main. Garbage collector reference.
Available garbage collectors:
none boehm immix Default value is: immix. User property is: scalor.nativeMainGarbageCollector. |
<nativeMainRuntimeDebug> | String | - | Relative path of the generated runtime binary file for scope=main,
mode=debug. File is packaged inside nativeMainTargetFolder Default value is: debug. User property is: scalor.nativeMainRuntimeDebug. |
<nativeMainRuntimeRelease> | String | - | Relative path of the generated runtime binary file for scope=main,
mode=release. File is packaged inside nativeMainTargetFolder Default value is: release. User property is: scalor.nativeMainRuntimeRelease. |
<nativeMainTargetFolder> | File | - | Build target directory for the generated runtime binary file with
scope=main. Default value is: ${project.build.directory}/scalor/native/output/main. User property is: scalor.nativeMainTargetFolder. |
<nativeMainWorkdir> | File | - | Linker working directory for scope=main. Default value is: ${project.build.directory}/scalor/native/workdir/main. User property is: scalor.nativeMainWorkdir. |
<nativeNativeLibRegex> | String | - | Regular expression used to discover Scala.native interop C/CPP
library from class path. This library normally comes as dependency
to scalalib, see nativeScalaLibRegex. This regular
expression is matched against resolved project depenencies in given
scope. Regular expression in the form:
${groupId}:${artifactId}. Default value is: org.scala-native:nativelib_.+. User property is: scalor.nativeNativeLibRegex. |
<nativeObjcopyMapping> | String | - | Mapping required for objcopy embedder. Used to convert
from LLVM triplet into GNU objcopy
binary-architecture/output. LLVM triplet
reference. GNU objcopy
--info reference. Separator parameter: commonSequenceSeparator.
Mapping parameter: commonMappingPattern.
Mapping format, where triplet-regex is regular expressoin mathced against LLVM triplet, binary-architecture/output is slash-separated pair describing GNU objcopy type: triplet-regex = binary-architecture/output Default value is: x86-([^-]+)-linux-([^-]+) = i386/elf32-i386 ★ x86_64-([^-]+)-linux-([^-]+) = i386/elf64-x86-64 ★ . User property is: scalor.nativeObjcopyMapping. |
<nativeOptionLinkStubs> | boolean | - | Linking behaviour for placeholder methods annotated with
@stub. By default stubs are not linked and are shown
as linking errors. Default value is: false. User property is: scalor.nativeOptionLinkStubs. |
<nativeOptionsClangPP> | String | - | Options used by LLVM clangpp during *.cpp
sources compilation. These options are added to auto-discovered
LLVM options. Sets standard by default. Separator parameter: commonSequenceSeparator. Default value is: -std=c++11 ★. User property is: scalor.nativeOptionsClangPP. |
<nativeOptionsCompileDebug> | String | - | LLVM compile options for mode=debug. Uses no optimization by
default. These options are added to auto-discovered LLVM options.
Separator parameter: commonSequenceSeparator. Default value is: -O0 ★. User property is: scalor.nativeOptionsCompileDebug. |
<nativeOptionsCompileRelease> | String | - | LLVM compile options for mode=release. Uses optimization by
default. These options are added to auto-discovered LLVM options.
Separator parameter: commonSequenceSeparator. Default value is: -O2 ★. User property is: scalor.nativeOptionsCompileRelease. |
<nativeOptionsLinkingDebug> | String | - | LLVM linking options for mode=release. Keeps symbols by default.
These options are added to auto-discovered LLVM options. Separator
parameter: commonSequenceSeparator. Default value is: -lpthread ★. User property is: scalor.nativeOptionsLinkingDebug. |
<nativeOptionsLinkingRelease> | String | - | LLVM linking options for mode=release. Strips symbols by default.
These options are added to auto-discovered LLVM options. Separator
parameter: commonSequenceSeparator. Default value is: -lpthread ★ -Wl,-s ★. User property is: scalor.nativeOptionsLinkingRelease. |
<nativeOptionsObjcopy> | String | - | Options used by objcopy tool during C data resource
embedding. These options are added to required hard-coded
objcopy invocation options. Empty by default.
Separator parameter: commonSequenceSeparator. Default value is: ★. User property is: scalor.nativeOptionsObjcopy. |
<nativeScalaLibRegex> | String | - | Regular expression used to discover Scala.native core
*.nir library from class path. This regular expression
is matched against resolved project depenencies in given scope.
Regular expression in the form:
${groupId}:${artifactId}. Enablement parameter: nativeLibraryDetect. Default value is: org.scala-native:scalalib_.+. User property is: scalor.nativeScalaLibRegex. |
<nativeSystemDetect> | boolean | - | Detect operating system and invoke native goals only when running
on supported o/s. When false, force native goals
invocation. Default value is: true. User property is: scalor.nativeSystemDetect. |
<skip> | boolean | - | Force to skip all executions of this plugin. Default value is: false. User property is: scalor.skip. |
<skipLogReason> | boolean | - | Enable logging of reason for skipping an execution. Default value is: true. User property is: scalor.skipLogReason. |
<skipNativeLink> | boolean | - | Flag to skip this execution: scala-native-link-*. Default value is: false. User property is: scalor.skipNativeLink. |
<skipNativeLinkMain> | boolean | - | Flag to skip this goal execution:
scala-native-link-main. Default value is: false. User property is: scalor.skipNativeLinkMain. |
<skipPackagingList> | String[] | - | List of packaging types, which are skipped by this plugin. Default value is: pom. User property is: scalor.skipPackagingList. |
case commonMappingPattern.r( key, value ) => ( key, value )
string.split( commonSequenceSeparator ).map( _.trim ).filterNot( _.isEmpty )
// objcopy naming convention extern char _binary_cdata_zip_start extern char _binary_cdata_zip_end // provide forwarders for scala @extern char* binary_cdata_zip_start() { return & _binary_cdata_zip_start; } char* binary_cdata_zip_end() { return & _binary_cdata_zip_end; }
@extern object cdata { // access compressed zip archive def binary_cdata_zip_start : Ptr[ CChar ] = extern def binary_cdata_zip_end : Ptr[ CChar ] = extern }
always - link during both full and incremental build never - do not produce runtime at all full - link only during full build incr - link only during incremental build
always - link during both full and incremental build never - do not produce runtime at all full - link only during full build incr - link only during incremental build
package main object Main { def main( args : Array[ String ] ) : Unit = { println( s"scala-native" ) } }
none boehm immix
triplet-regex = binary-architecture/output