UseSWIG: Add -dllimport only if not already specified

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.
This commit is contained in:
Robert Langlois authored and Mona Lisa committed 2017-06-13 18:07:32 -07:00
1 parent ee47d80c3b
commit 76a0286b1d
1 file changed
+7 -4
+7 -4
View File
@@ -82,10 +82,6 @@ macro(SWIG_MODULE_INITIALIZE name language)
set(SWIG_MODULE_${name}_REAL_NAME "_${name}")
elseif("x${SWIG_MODULE_${name}_LANGUAGE}" STREQUAL "xPERL")
set(SWIG_MODULE_${name}_EXTRA_FLAGS "-shadow")
elseif("x${SWIG_MODULE_${name}_LANGUAGE}" STREQUAL "xCSHARP")
# This makes sure that the name used in the generated DllImport
# matches the library name created by CMake
set(SWIG_MODULE_${name}_EXTRA_FLAGS "-dllimport;${name}")
endif()
endmacro()
@@ -192,6 +188,13 @@ macro(SWIG_ADD_SOURCE_TO_MODULE name outfiles infile)
if(swig_source_file_cplusplus)
set(swig_special_flags ${swig_special_flags} "-c++")
endif()
if("x${SWIG_MODULE_${name}_LANGUAGE}" STREQUAL "xCSHARP")
if(NOT ";${swig_source_file_flags};${CMAKE_SWIG_FLAGS};" MATCHES ";-dllimport;")
# This makes sure that the name used in the generated DllImport
# matches the library name created by CMake
set(SWIG_MODULE_${name}_EXTRA_FLAGS "-dllimport;${name}")
endif()
endif()
set(swig_extra_flags)
if(SWIG_MODULE_${name}_EXTRA_FLAGS)
set(swig_extra_flags ${swig_extra_flags} ${SWIG_MODULE_${name}_EXTRA_FLAGS})