diff options
author | Cong Zhang <congzhangzh@gmail.com> | 2016-10-30 15:56:37 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2016-11-01 14:10:08 (GMT) |
commit | 8444b984a29392c32a13521cc0e3d40788cc9530 (patch) | |
tree | c8276876040d8d6d5c310667738b50c908ac48aa | |
parent | 4c7de5d3940cdf7b648d89642968c95168949182 (diff) | |
download | CMake-8444b984a29392c32a13521cc0e3d40788cc9530.zip CMake-8444b984a29392c32a13521cc0e3d40788cc9530.tar.gz CMake-8444b984a29392c32a13521cc0e3d40788cc9530.tar.bz2 |
UseSWIG: Add option to specify swig output file directory
`swig` has two output-related options:
* `-o <outfile>`: Set name of C/C++ output file to <outfile>
* `-outdir <dir>`: Set language-specific files output directory to <dir>
We already have `CMAKE_SWIG_OUTDIR` for the latter. Add a new
`SWIG_OUTFILE_DIR` option for the former.
-rw-r--r-- | Help/release/dev/UseSWIG-SWIG_OUTFILE_DIR.rst | 6 | ||||
-rw-r--r-- | Modules/UseSWIG.cmake | 16 |
2 files changed, 19 insertions, 3 deletions
diff --git a/Help/release/dev/UseSWIG-SWIG_OUTFILE_DIR.rst b/Help/release/dev/UseSWIG-SWIG_OUTFILE_DIR.rst new file mode 100644 index 0000000..c001a88 --- /dev/null +++ b/Help/release/dev/UseSWIG-SWIG_OUTFILE_DIR.rst @@ -0,0 +1,6 @@ +UseSWIG-SWIG_OUTFILE_DIR +------------------------ + +* The :module:`UseSWIG` module ``swig_add_source_to_module`` command + learned a new ``SWIG_OUTFILE_DIR`` option to control the output + file location (``swig -o``). diff --git a/Modules/UseSWIG.cmake b/Modules/UseSWIG.cmake index d242f87..2df0011 100644 --- a/Modules/UseSWIG.cmake +++ b/Modules/UseSWIG.cmake @@ -36,8 +36,11 @@ # # 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) +# CMAKE_SWIG_OUTDIR allows one to specify where to write +# the language specific files (swig -outdir option). +# +# SWIG_OUTFILE_DIR allows one to specify where to write the output file +# (swig -o option). If not specified, CMAKE_SWIG_OUTDIR is used. # # The name-specific variable SWIG_MODULE_<name>_EXTRA_DEPS may be used to specify extra # dependencies for the generated modules. @@ -142,6 +145,13 @@ macro(SWIG_ADD_SOURCE_TO_MODULE name outfiles infile) else() set(swig_outdir ${CMAKE_CURRENT_BINARY_DIR}) endif() + + if(SWIG_OUTFILE_DIR) + set(swig_outfile_dir ${SWIG_OUTFILE_DIR}) + else() + set(swig_outfile_dir ${swig_outdir}) + endif() + if (NOT SWIG_MODULE_${name}_NOPROXY) SWIG_GET_EXTRA_OUTPUT_FILES(${SWIG_MODULE_${name}_LANGUAGE} swig_extra_generated_files @@ -149,7 +159,7 @@ macro(SWIG_ADD_SOURCE_TO_MODULE name outfiles infile) "${swig_source_file_fullname}") endif() set(swig_generated_file_fullname - "${swig_outdir}/${swig_source_file_name_we}") + "${swig_outfile_dir}/${swig_source_file_name_we}") # add the language into the name of the file (i.e. TCL_wrap) # this allows for the same .i file to be wrapped into different languages string(APPEND swig_generated_file_fullname |