Rework cinterop linkerOpts/compilerOpts (KT-29970) (#2805)
This commit is contained in:
+14
-4
@@ -59,10 +59,20 @@ fun getCInteropArguments(): List<OptionDescriptor> {
|
||||
isMultiple = true, delimiter = ",", deprecatedWarning = "Option -h is deprecated. Please use -header."),
|
||||
OptionDescriptor(ArgType.String(), HEADER_FILTER_ADDITIONAL_SEARCH_PREFIX, "hfasp",
|
||||
"header file to produce kotlin bindings for", isMultiple = true, delimiter = ","),
|
||||
OptionDescriptor(ArgType.String(), "compilerOpts", "copt",
|
||||
"additional compiler options", isMultiple = true, delimiter = " "),
|
||||
OptionDescriptor(ArgType.String(), "linkerOpts", "lopt",
|
||||
"additional linker options", isMultiple = true, delimiter = " "),
|
||||
OptionDescriptor(ArgType.String(), "compilerOpts",
|
||||
description = "additional compiler options (allows to add several options separated by spaces)",
|
||||
isMultiple = true, delimiter = " "),
|
||||
OptionDescriptor(ArgType.String(), "linkerOpts",
|
||||
description = "additional linker options (allows to add several options separated by spaces)",
|
||||
isMultiple = true, delimiter = " "),
|
||||
OptionDescriptor(ArgType.String(), "compilerOpt",
|
||||
description = "additional compiler option", isMultiple = true),
|
||||
OptionDescriptor(ArgType.String(), "linkerOpt",
|
||||
description = "additional linker option", isMultiple = true),
|
||||
OptionDescriptor(ArgType.String(), "copt", description = "additional compiler options (allows to add several options separated by spaces)",
|
||||
isMultiple = true, delimiter = " ", deprecatedWarning = "Option -copt is deprecated. Please use -compilerOpts."),
|
||||
OptionDescriptor(ArgType.String(), "lopt", description = "additional linker options (allows to add several options separated by spaces)",
|
||||
isMultiple = true, delimiter = " ", deprecatedWarning = "Option -lopt is deprecated. Please use -linkerOpts."),
|
||||
OptionDescriptor(ArgType.String(), "linker", description = "use specified linker")
|
||||
)
|
||||
return (options + getCommonInteropArguments())
|
||||
|
||||
+9
-5
@@ -176,12 +176,15 @@ private fun processCLib(args: Array<String>, additionalArgs: Map<String, Any> =
|
||||
val tool = prepareTool(argParser.get<String>("target"), flavor)
|
||||
|
||||
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 isLinkerOptsSetByUser = (argParser.getOrigin("linkerOpts") == ArgParser.ValueOrigin.SET_BY_USER) ||
|
||||
(argParser.getOrigin("linkerOpt") == ArgParser.ValueOrigin.SET_BY_USER) ||
|
||||
(argParser.getOrigin("lopt") == ArgParser.ValueOrigin.SET_BY_USER)
|
||||
if (flavorName == "native" && isLinkerOptsSetByUser) {
|
||||
warn("-linkerOpt(s)/-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") + argParser.getValuesAsArray("linkerOpt") +
|
||||
argParser.getValuesAsArray("lopt")
|
||||
val verbose = argParser.get<Boolean>("verbose")!!
|
||||
|
||||
val language = selectNativeLanguage(def.config)
|
||||
@@ -302,7 +305,8 @@ internal fun buildNativeLibrary(
|
||||
imports: ImportsImpl
|
||||
): NativeLibrary {
|
||||
val additionalHeaders = arguments.getValuesAsArray("header") + arguments.getValuesAsArray("h")
|
||||
val additionalCompilerOpts = arguments.getValuesAsArray("compilerOpts")
|
||||
val additionalCompilerOpts = arguments.getValuesAsArray("compilerOpts") + arguments.getValuesAsArray("compilerOpt") +
|
||||
arguments.getValuesAsArray("copt")
|
||||
|
||||
val headerFiles = def.config.headers + additionalHeaders
|
||||
val language = selectNativeLanguage(def.config)
|
||||
|
||||
Reference in New Issue
Block a user