summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2019-07-01 13:52:32 (GMT)
committerKitware Robot <kwrobot@kitware.com>2019-07-01 13:52:44 (GMT)
commitdd433c98e4297cc4b7bfeaa510f4c2cc84ea9da4 (patch)
tree52c5544b0ed4b2f621906257c97921849dc02726
parent1892bf2d65062ce45092990b8226bd8cd36752fa (diff)
parent11e0009b7721262a0eb772fe45abb38ef19bf7b4 (diff)
downloadCMake-dd433c98e4297cc4b7bfeaa510f4c2cc84ea9da4.zip
CMake-dd433c98e4297cc4b7bfeaa510f4c2cc84ea9da4.tar.gz
CMake-dd433c98e4297cc4b7bfeaa510f4c2cc84ea9da4.tar.bz2
Merge topic 'FindMatlab-EXCLUDE_FROM_ALL'
11e0009b77 FindMatlab: EXCLUDE_FROM_ALL parameter to matlab_add_mex Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !3474
-rw-r--r--Modules/FindMatlab.cmake14
-rw-r--r--Tests/FindMatlab/basic_checks/CMakeLists.txt12
-rw-r--r--Tests/FindMatlab/matlab_wrapper_failure.cpp13
3 files changed, 38 insertions, 1 deletions
diff --git a/Modules/FindMatlab.cmake b/Modules/FindMatlab.cmake
index 5138f2a..03f1500 100644
--- a/Modules/FindMatlab.cmake
+++ b/Modules/FindMatlab.cmake
@@ -889,6 +889,7 @@ endfunction()
[DOCUMENTATION file.txt]
[LINK_TO target1 target2 ...]
[R2017b | R2018a]
+ [EXCLUDE_FROM_ALL]
[...]
)
@@ -918,6 +919,10 @@ endfunction()
``MODULE`` or ``SHARED`` may be given to specify the type of library to be
created. ``EXECUTABLE`` may be given to create an executable instead of
a library. If no type is given explicitly, the type is ``SHARED``.
+ ``EXCLUDE_FROM_ALL``
+ This option has the same meaning as for :prop_tgt:`EXCLUDE_FROM_ALL` and
+ is forwarded to :command:`add_library` or :command:`add_executable`
+ commands.
The documentation file is not processed and should be in the following
format:
@@ -944,7 +949,7 @@ function(matlab_add_mex)
endif()
- set(options EXECUTABLE MODULE SHARED R2017b R2018a)
+ set(options EXECUTABLE MODULE SHARED R2017b R2018a EXCLUDE_FROM_ALL)
set(oneValueArgs NAME DOCUMENTATION OUTPUT_NAME)
set(multiValueArgs LINK_TO SRC)
@@ -974,8 +979,14 @@ function(matlab_add_mex)
endif()
endif()
+ set(_option_EXCLUDE_FROM_ALL)
+ if(${prefix}_EXCLUDE_FROM_ALL)
+ set(_option_EXCLUDE_FROM_ALL "EXCLUDE_FROM_ALL")
+ endif()
+
if(${prefix}_EXECUTABLE)
add_executable(${${prefix}_NAME}
+ ${_option_EXCLUDE_FROM_ALL}
${${prefix}_SRC}
${MEX_VERSION_FILE}
${${prefix}_DOCUMENTATION}
@@ -989,6 +1000,7 @@ function(matlab_add_mex)
add_library(${${prefix}_NAME}
${type}
+ ${_option_EXCLUDE_FROM_ALL}
${${prefix}_SRC}
${MEX_VERSION_FILE}
${${prefix}_DOCUMENTATION}
diff --git a/Tests/FindMatlab/basic_checks/CMakeLists.txt b/Tests/FindMatlab/basic_checks/CMakeLists.txt
index c5be1ea..c0c752a 100644
--- a/Tests/FindMatlab/basic_checks/CMakeLists.txt
+++ b/Tests/FindMatlab/basic_checks/CMakeLists.txt
@@ -71,3 +71,15 @@ if(RUN_UNIT_TESTS)
)
set_tests_properties(${PROJECT_NAME}_matlabtest-4 PROPERTIES WILL_FAIL TRUE)
endif()
+
+
+# checking correct flags passed
+# EXCLUDE_FROM_ALL appears after a multiargs (like SRC)
+matlab_add_mex(
+ # target name
+ NAME cmake_matlab_test_exclude_from_all
+ # output name
+ OUTPUT_NAME cmake_matlab_mex_dummy
+ SRC ${CMAKE_CURRENT_SOURCE_DIR}/../matlab_wrapper_failure.cpp
+ EXCLUDE_FROM_ALL
+ )
diff --git a/Tests/FindMatlab/matlab_wrapper_failure.cpp b/Tests/FindMatlab/matlab_wrapper_failure.cpp
new file mode 100644
index 0000000..3fe437b
--- /dev/null
+++ b/Tests/FindMatlab/matlab_wrapper_failure.cpp
@@ -0,0 +1,13 @@
+// This should not link, as the mex function is missing.
+// This is mostly for checking we are passing the right arguments to the
+// add_library
+
+#include <algorithm>
+
+#include "mex.h"
+
+void mexFunctionXX(const int nlhs, mxArray* plhs[], const int nrhs,
+ const mxArray* prhs[])
+{
+ mexErrMsgTxt("Should not be running");
+}