Manage alternate library name by passing -interface <library_name>
for python language or -dllimport <library_name> for CSharp language
to the SWIG compiler.
Fixes: #18771
This command is intended for modules that issue policy warnings so
they can get the warning string from CMake in a uniform manner,
rather than duplicating the string. Several modules been updated
to include an example of the usage of this new command.
In commit v3.12.0-rc1~2^2 (UseSWIG: Add CSHARP variant for wrapper
files, 2018-06-08) we explicitly marked swig-generated `.cs` files as
`LANGUAGE` CSharp so that the resulting sources can be compiled.
However, this works only when the CSharp language has been enabled.
Fixes: #18184
Fix a typo from commit 0bef9eb410 (UseSWIG: modernize module,
2018-01-29) that caused `UseSWIG` to ignore an eventually set property
`SWIG_MODLUE_NAME`.
Building multiple python modules using the mentioned property as
described in the docs could lead to an invalid, or even worse,
inconsistent `build.ninja` file. The reason is that the generated list
of support files was not unique. For each module the support file was
always named the same, namely `path/to/builddir/MODULENAME.py`.
Fix logic added by commit 2ee10119ea (swig: fix incremental build in
case of removed interface files, 2017-11-06). Name the extra targets
added for Makefile generators using both the module name and .i base
name to avoid collisions across modules. Also make sure the extra
targets added for all .i files in a module are added as dependencies
instead of just the last one.
Fixes: #17704
The `SWIG_OUTFILE_DIR` variable provides the option to specify an output
directory location. This commit removes portion stating that this is
equal to the `swig -o` option since it does not set the output filename.
Fixes: #17703
Signed-off-by: Noel Eck <noel.eck@intel.com>
Commit v3.8.0-rc1~123^2 (UseSWIG: Automatically scan dependencies of SWIG files
for Makefiles, 2016-12-21) introduced automatic dependency scanning for files
`%include`d in a swig interface definition file. This works fine as long as no
such file is removed. But removing a dependent file breaks an incremental build
and `make` complains about a missing dependency, see #16830.
Integrate the approach proposed in the issue above into the SWIG-module, do the
workaround in a conditional step as it arises only for Makefile generators. For
other generators use the implementation before that commit.
Fixes: #17433.
Since commit v3.8.0-rc1~251^2 (UseSWIG: Record generated java files as
custom command outputs, 2016-11-28) the generated `.java` files are
listed as sources in the call to `add_library` by swig_add_library.
They are listed only as the outputs of custom commands and not intended
for compilation as part of the library.
Reported-by: Alan W. Irwin <irwin@beluga.phys.uvic.ca>
SWIG fails with a redefined macro error when `-dllimport` is specified
more than once. One case where you would want to specify your own
dllimport is when using SWIG with netstandard2.0. .NET Core does not
search for shared library like Mono or .NET, so you need a fully
qualified shared library name.
Teach `SWIG_ADD_LIBRARY` to fall back to an empty library prefix for
languages we don't explicitly define already.
Suggested-by: Alan W. Irwin <irwin@beluga.phys.uvic.ca>
The cmake_parse_arguments command is builtin with version 3.5.
The CMakeParseArguments module is empty and exists for backwards
compatibility with CMake 3.4 and lower.
Remove the includes of CMakeParseArguments from CMake's modules.
The modules are always used with the current version of CMake.
Leave the includes in the tests, as the tests may be run with an older
version of CMake.