|
|
@@ -2,9 +2,7 @@
|
|
|
# UseSWIG
|
|
|
# -------
|
|
|
#
|
|
|
-# SWIG module for CMake
|
|
|
-#
|
|
|
-# Defines the following macros:
|
|
|
+# Defines the following macros for use with SWIG:
|
|
|
#
|
|
|
# ::
|
|
|
#
|
|
|
@@ -13,20 +11,38 @@
|
|
|
# SWIG_LINK_LIBRARIES(name [ libraries ])
|
|
|
# - Link libraries to swig module
|
|
|
#
|
|
|
-# All other macros are for internal use only. To get the actual name of
|
|
|
-# the swig module, use: ${SWIG_MODULE_${name}_REAL_NAME}. Set Source
|
|
|
-# files properties such as CPLUSPLUS and SWIG_FLAGS to specify special
|
|
|
-# behavior of SWIG. Also global CMAKE_SWIG_FLAGS can be used to add
|
|
|
-# special flags to all swig calls. Another special variable is
|
|
|
-# CMAKE_SWIG_OUTDIR, it allows one to specify where to write all the
|
|
|
-# swig generated module (swig -outdir option) The name-specific variable
|
|
|
-# SWIG_MODULE_<name>_EXTRA_DEPS may be used to specify extra
|
|
|
-# dependencies for the generated modules. If the source file generated
|
|
|
-# by swig need some special flag you can use::
|
|
|
+# Source files properties on module files can be set before the invocation
|
|
|
+# of the SWIG_ADD_MODULE macro to specify special behavior of SWIG.
|
|
|
#
|
|
|
-# set_source_files_properties( ${swig_generated_file_fullname}
|
|
|
-# PROPERTIES COMPILE_FLAGS "-bla")
|
|
|
-
|
|
|
+# The source file property CPLUSPLUS calls SWIG in c++ mode, e.g.::
|
|
|
+#
|
|
|
+# set_property(SOURCE mymod.i PROPERTY CPLUSPLUS ON)
|
|
|
+# swig_add_module(mymod python mymod.i)
|
|
|
+#
|
|
|
+# The source file property SWIG_FLAGS adds custom flags to the SWIG executable.
|
|
|
+#
|
|
|
+# The source-file property SWIG_MODULE_NAME have to be provided to specify the actual
|
|
|
+# import name of the module in the target language if it cannot be scanned automatically
|
|
|
+# from source or different from the module file basename.::
|
|
|
+#
|
|
|
+# set_property(SOURCE mymod.i PROPERTY SWIG_MODULE_NAME mymod_realname)
|
|
|
+#
|
|
|
+# To get the name of the swig module target library, use: ${SWIG_MODULE_${name}_REAL_NAME}.
|
|
|
+#
|
|
|
+# Also some variables can be set to specify special behavior of SWIG.
|
|
|
+#
|
|
|
+# CMAKE_SWIG_FLAGS can be used to add special flags to all swig calls.
|
|
|
+#
|
|
|
+# Another special variable is CMAKE_SWIG_OUTDIR, it allows one to specify
|
|
|
+# where to write all the swig generated module (swig -outdir option)
|
|
|
+#
|
|
|
+# The name-specific variable SWIG_MODULE_<name>_EXTRA_DEPS may be used to specify extra
|
|
|
+# dependencies for the generated modules.
|
|
|
+#
|
|
|
+# If the source file generated by swig need some special flag you can use::
|
|
|
+#
|
|
|
+# set_source_files_properties( ${swig_generated_file_fullname}
|
|
|
+# PROPERTIES COMPILE_FLAGS "-bla")
|
|
|
|
|
|
#=============================================================================
|
|
|
# Copyright 2004-2009 Kitware, Inc.
|
|
|
@@ -86,7 +102,30 @@ macro(SWIG_GET_EXTRA_OUTPUT_FILES language outfiles generatedpath infile)
|
|
|
get_source_file_property(SWIG_GET_EXTRA_OUTPUT_FILES_module_basename
|
|
|
${infile} SWIG_MODULE_NAME)
|
|
|
if(SWIG_GET_EXTRA_OUTPUT_FILES_module_basename STREQUAL "NOTFOUND")
|
|
|
- get_filename_component(SWIG_GET_EXTRA_OUTPUT_FILES_module_basename "${infile}" NAME_WE)
|
|
|
+
|
|
|
+ # try to get module name from "%module foo" syntax
|
|
|
+ if ( EXISTS ${infile} )
|
|
|
+ file ( STRINGS ${infile} _MODULE_NAME REGEX "[ ]*%module[ ]*[a-zA-Z0-9_]+.*" )
|
|
|
+ endif ()
|
|
|
+ if ( _MODULE_NAME )
|
|
|
+ string ( REGEX REPLACE "[ ]*%module[ ]*([a-zA-Z0-9_]+).*" "\\1" _MODULE_NAME "${_MODULE_NAME}" )
|
|
|
+ set(SWIG_GET_EXTRA_OUTPUT_FILES_module_basename "${_MODULE_NAME}")
|
|
|
+
|
|
|
+ else ()
|
|
|
+ # try to get module name from "%module (options=...) foo" syntax
|
|
|
+ if ( EXISTS ${infile} )
|
|
|
+ file ( STRINGS ${infile} _MODULE_NAME REGEX "[ ]*%module[ ]*\\(.*\\)[ ]*[a-zA-Z0-9_]+.*" )
|
|
|
+ endif ()
|
|
|
+ if ( _MODULE_NAME )
|
|
|
+ string ( REGEX REPLACE "[ ]*%module[ ]*\\(.*\\)[ ]*([a-zA-Z0-9_]+).*" "\\1" _MODULE_NAME "${_MODULE_NAME}" )
|
|
|
+ set(SWIG_GET_EXTRA_OUTPUT_FILES_module_basename "${_MODULE_NAME}")
|
|
|
+
|
|
|
+ else ()
|
|
|
+ # fallback to file basename
|
|
|
+ get_filename_component(SWIG_GET_EXTRA_OUTPUT_FILES_module_basename ${infile} NAME_WE)
|
|
|
+ endif ()
|
|
|
+ endif ()
|
|
|
+
|
|
|
endif()
|
|
|
foreach(it ${SWIG_${language}_EXTRA_FILE_EXTENSION})
|
|
|
set(${outfiles} ${${outfiles}}
|