Remove -shims. Warning for -linkerOpts for native flavor (#2730)

This commit is contained in:
LepilkinaElena
2019-02-28 17:23:28 +03:00
committed by GitHub
parent 62be127935
commit de6fa0e72f
7 changed files with 16 additions and 10 deletions
+1 -1
View File
@@ -445,7 +445,7 @@ components.main {
includeDirs "include/directory" "another/directory"
// Pass additional command line options to the cinterop tool.
extraOpts '-shims', 'true'
extraOpts '-verbose'
// Additional configuration for Linux.
target('linux') {
@@ -63,7 +63,6 @@ fun getCInteropArguments(): List<OptionDescriptor> {
"additional compiler options", isMultiple = true, delimiter = " "),
OptionDescriptor(ArgType.String(), "linkerOpts", "lopt",
"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")
)
return (options + getCommonInteropArguments())
@@ -30,7 +30,6 @@ class StubGenerator(
val nativeIndex: NativeIndex,
val configuration: InteropConfiguration,
val libName: String,
val dumpShims: Boolean,
val verbose: Boolean = false,
val platform: KotlinPlatform = KotlinPlatform.JVM,
val imports: Imports
@@ -177,8 +177,11 @@ private fun processCLib(args: Array<String>, additionalArgs: Map<String, Any> =
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 generateShims = argParser.get<Boolean>("shims")!!
val verbose = argParser.get<Boolean>("verbose")!!
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 gen = StubGenerator(nativeIndex, configuration, libName, generateShims, verbose, flavor, imports)
val gen = StubGenerator(nativeIndex, configuration, libName, verbose, flavor, imports)
outKtFile.parentFile.mkdirs()
@@ -254,10 +254,6 @@ class NamedNativeInteropConfig implements Named {
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()
private val arguments = argsList
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>) {
init {
@@ -166,6 +169,9 @@ class ArgParser(optionsList: List<OptionDescriptor>, argsList: List<ArgDescripto
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 {
// Find uninitialized arguments.
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 processedValues = descriptorsKeys.map { it to mutableListOf<String>() }.toMap().toMutableMap()
parsedValues = descriptorsKeys.map { it to null }.toMap().toMutableMap()
valuesOrigin = descriptorsKeys.map { it to ValueOrigin.UNSET }.toMap().toMutableMap()
while (index < args.size) {
val arg = args[index]
if (arg.startsWith('-')) {
@@ -246,6 +253,7 @@ class ArgParser(optionsList: List<OptionDescriptor>, argsList: List<ArgDescripto
if (value.isEmpty()) {
descriptor.defaultValue?. let {
parsedValues[key] = ParsedArg(descriptor, listOf(descriptor.defaultValue))
valuesOrigin[key] = ValueOrigin.SET_DEFAULT_VALUE
} ?: run {
if (descriptor.isRequired) {
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 {
parsedValues[key] = ParsedArg(descriptor, value)
valuesOrigin[key] = ValueOrigin.SET_BY_USER
}
}
return true
@@ -208,7 +208,7 @@ class IncrementalSpecification extends BaseKonanSpecification {
"linkerOpts" | "'--help'"
"includeDirs" | "'src'"
"includeDirs.allHeaders" | "'src'"
"extraOpts" | "'-shims'"
"extraOpts" | "'-verbose'"
"noDefaultLibs" | "true"
}