Remove -shims. Warning for -linkerOpts for native flavor (#2730)
This commit is contained in:
+1
-1
@@ -445,7 +445,7 @@ components.main {
|
|||||||
includeDirs "include/directory" "another/directory"
|
includeDirs "include/directory" "another/directory"
|
||||||
|
|
||||||
// Pass additional command line options to the cinterop tool.
|
// Pass additional command line options to the cinterop tool.
|
||||||
extraOpts '-shims', 'true'
|
extraOpts '-verbose'
|
||||||
|
|
||||||
// Additional configuration for Linux.
|
// Additional configuration for Linux.
|
||||||
target('linux') {
|
target('linux') {
|
||||||
|
|||||||
-1
@@ -63,7 +63,6 @@ fun getCInteropArguments(): List<OptionDescriptor> {
|
|||||||
"additional compiler options", isMultiple = true, delimiter = " "),
|
"additional compiler options", isMultiple = true, delimiter = " "),
|
||||||
OptionDescriptor(ArgType.String(), "linkerOpts", "lopt",
|
OptionDescriptor(ArgType.String(), "linkerOpts", "lopt",
|
||||||
"additional linker options", isMultiple = true, delimiter = " "),
|
"additional linker options", isMultiple = true, delimiter = " "),
|
||||||
OptionDescriptor(ArgType.Boolean(), "shims", description = "wrap bindings by a tracing layer", defaultValue = "false"),
|
|
||||||
OptionDescriptor(ArgType.String(), "linker", description = "use specified linker")
|
OptionDescriptor(ArgType.String(), "linker", description = "use specified linker")
|
||||||
)
|
)
|
||||||
return (options + getCommonInteropArguments())
|
return (options + getCommonInteropArguments())
|
||||||
|
|||||||
-1
@@ -30,7 +30,6 @@ class StubGenerator(
|
|||||||
val nativeIndex: NativeIndex,
|
val nativeIndex: NativeIndex,
|
||||||
val configuration: InteropConfiguration,
|
val configuration: InteropConfiguration,
|
||||||
val libName: String,
|
val libName: String,
|
||||||
val dumpShims: Boolean,
|
|
||||||
val verbose: Boolean = false,
|
val verbose: Boolean = false,
|
||||||
val platform: KotlinPlatform = KotlinPlatform.JVM,
|
val platform: KotlinPlatform = KotlinPlatform.JVM,
|
||||||
val imports: Imports
|
val imports: Imports
|
||||||
|
|||||||
+5
-2
@@ -177,8 +177,11 @@ private fun processCLib(args: Array<String>, additionalArgs: Map<String, Any> =
|
|||||||
|
|
||||||
val def = DefFile(defFile, tool.substitutions)
|
val def = DefFile(defFile, tool.substitutions)
|
||||||
|
|
||||||
|
if (flavorName == "native" && argParser.getOrigin("linkerOpts") == ArgParser.ValueOrigin.SET_BY_USER) {
|
||||||
|
warn("-linkerOpts/-lopt option is not supported by cinterop. Please add linker options to .def file or binary compilation instead.")
|
||||||
|
}
|
||||||
|
|
||||||
val additionalLinkerOpts = argParser.getValuesAsArray("linkerOpts")
|
val additionalLinkerOpts = argParser.getValuesAsArray("linkerOpts")
|
||||||
val generateShims = argParser.get<Boolean>("shims")!!
|
|
||||||
val verbose = argParser.get<Boolean>("verbose")!!
|
val verbose = argParser.get<Boolean>("verbose")!!
|
||||||
|
|
||||||
val language = selectNativeLanguage(def.config)
|
val language = selectNativeLanguage(def.config)
|
||||||
@@ -228,7 +231,7 @@ private fun processCLib(args: Array<String>, additionalArgs: Map<String, Any> =
|
|||||||
|
|
||||||
val nativeIndex = buildNativeIndex(library, verbose)
|
val nativeIndex = buildNativeIndex(library, verbose)
|
||||||
|
|
||||||
val gen = StubGenerator(nativeIndex, configuration, libName, generateShims, verbose, flavor, imports)
|
val gen = StubGenerator(nativeIndex, configuration, libName, verbose, flavor, imports)
|
||||||
|
|
||||||
outKtFile.parentFile.mkdirs()
|
outKtFile.parentFile.mkdirs()
|
||||||
|
|
||||||
|
|||||||
@@ -254,10 +254,6 @@ class NamedNativeInteropConfig implements Named {
|
|||||||
args '-header', it
|
args '-header', it
|
||||||
}
|
}
|
||||||
|
|
||||||
if (project.hasProperty('shims') && project.ext.shims) {
|
|
||||||
args '-shims'
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -128,6 +128,9 @@ class ArgParser(optionsList: List<OptionDescriptor>, argsList: List<ArgDescripto
|
|||||||
).toList()
|
).toList()
|
||||||
private val arguments = argsList
|
private val arguments = argsList
|
||||||
private lateinit var parsedValues: MutableMap<String, ParsedArg?>
|
private lateinit var parsedValues: MutableMap<String, ParsedArg?>
|
||||||
|
private lateinit var valuesOrigin: MutableMap<String, ValueOrigin?>
|
||||||
|
|
||||||
|
enum class ValueOrigin { SET_BY_USER, SET_DEFAULT_VALUE, UNSET }
|
||||||
|
|
||||||
inner class ParsedArg(val descriptor: Descriptor, val values: List<String>) {
|
inner class ParsedArg(val descriptor: Descriptor, val values: List<String>) {
|
||||||
init {
|
init {
|
||||||
@@ -166,6 +169,9 @@ class ArgParser(optionsList: List<OptionDescriptor>, argsList: List<ArgDescripto
|
|||||||
error("$message\n${makeUsage()}")
|
error("$message\n${makeUsage()}")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Get origin of option value.
|
||||||
|
fun getOrigin(name: String) = valuesOrigin[name] ?: printError("No option/argument $name in list of avaliable options")
|
||||||
|
|
||||||
private fun saveAsArg(argDescriptors: Map<String, ArgDescriptor>, arg: String, processedValues: Map<String, MutableList<String>>): Boolean {
|
private fun saveAsArg(argDescriptors: Map<String, ArgDescriptor>, arg: String, processedValues: Map<String, MutableList<String>>): Boolean {
|
||||||
// Find uninitialized arguments.
|
// Find uninitialized arguments.
|
||||||
val nullArgs = argDescriptors.keys.filter { processedValues.getValue(it).isEmpty() }
|
val nullArgs = argDescriptors.keys.filter { processedValues.getValue(it).isEmpty() }
|
||||||
@@ -203,6 +209,7 @@ class ArgParser(optionsList: List<OptionDescriptor>, argsList: List<ArgDescripto
|
|||||||
val descriptorsKeys = optDescriptors.keys.union(argDescriptors.keys).toList()
|
val descriptorsKeys = optDescriptors.keys.union(argDescriptors.keys).toList()
|
||||||
val processedValues = descriptorsKeys.map { it to mutableListOf<String>() }.toMap().toMutableMap()
|
val processedValues = descriptorsKeys.map { it to mutableListOf<String>() }.toMap().toMutableMap()
|
||||||
parsedValues = descriptorsKeys.map { it to null }.toMap().toMutableMap()
|
parsedValues = descriptorsKeys.map { it to null }.toMap().toMutableMap()
|
||||||
|
valuesOrigin = descriptorsKeys.map { it to ValueOrigin.UNSET }.toMap().toMutableMap()
|
||||||
while (index < args.size) {
|
while (index < args.size) {
|
||||||
val arg = args[index]
|
val arg = args[index]
|
||||||
if (arg.startsWith('-')) {
|
if (arg.startsWith('-')) {
|
||||||
@@ -246,6 +253,7 @@ class ArgParser(optionsList: List<OptionDescriptor>, argsList: List<ArgDescripto
|
|||||||
if (value.isEmpty()) {
|
if (value.isEmpty()) {
|
||||||
descriptor.defaultValue?. let {
|
descriptor.defaultValue?. let {
|
||||||
parsedValues[key] = ParsedArg(descriptor, listOf(descriptor.defaultValue))
|
parsedValues[key] = ParsedArg(descriptor, listOf(descriptor.defaultValue))
|
||||||
|
valuesOrigin[key] = ValueOrigin.SET_DEFAULT_VALUE
|
||||||
} ?: run {
|
} ?: run {
|
||||||
if (descriptor.isRequired) {
|
if (descriptor.isRequired) {
|
||||||
printError("Please, provide value for ${descriptor.textDescription}. It should be always set")
|
printError("Please, provide value for ${descriptor.textDescription}. It should be always set")
|
||||||
@@ -255,6 +263,7 @@ class ArgParser(optionsList: List<OptionDescriptor>, argsList: List<ArgDescripto
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
parsedValues[key] = ParsedArg(descriptor, value)
|
parsedValues[key] = ParsedArg(descriptor, value)
|
||||||
|
valuesOrigin[key] = ValueOrigin.SET_BY_USER
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
|
|||||||
+1
-1
@@ -208,7 +208,7 @@ class IncrementalSpecification extends BaseKonanSpecification {
|
|||||||
"linkerOpts" | "'--help'"
|
"linkerOpts" | "'--help'"
|
||||||
"includeDirs" | "'src'"
|
"includeDirs" | "'src'"
|
||||||
"includeDirs.allHeaders" | "'src'"
|
"includeDirs.allHeaders" | "'src'"
|
||||||
"extraOpts" | "'-shims'"
|
"extraOpts" | "'-verbose'"
|
||||||
"noDefaultLibs" | "true"
|
"noDefaultLibs" | "true"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user