diff options
author | Brad King <brad.king@kitware.com> | 2015-06-01 09:37:32 -0400 |
---|---|---|
committer | CMake Topic Stage <kwrobot@kitware.com> | 2015-06-01 09:37:32 -0400 |
commit | 02c4aa1f97f5436e3f2f2ba07c492a24bad04c4f (patch) | |
tree | e4243e5946baa2fcdad98d55a57aa6ffd26976f0 | |
parent | 40bad5149054c7e9efdc9fdd645e5ce024225b4f (diff) | |
parent | 8444809c47b0c2d6b9b2b57bd62d9a51fc5fa498 (diff) | |
download | cmake-02c4aa1f97f5436e3f2f2ba07c492a24bad04c4f.tar.gz |
Merge topic 'FindMatlab-fix-visibility-and-reconfiguration'
8444809c FindMatlab: fix reconfiguration of Matlab_ROOT_DIR
5752e558 FindMatlab: fix header visibility of the generated mex files
221a0263 FindMatlab: Drop incorrect usage option from test helper script
-rw-r--r-- | Modules/FindMatlab.cmake | 7 | ||||
-rw-r--r-- | Modules/MatlabTestsRedirect.cmake | 1 | ||||
-rw-r--r-- | Tests/RunCMake/FindMatlab/MatlabTest2-result.txt | 1 | ||||
-rw-r--r-- | Tests/RunCMake/FindMatlab/MatlabTest2-stderr.txt | 1 | ||||
-rw-r--r-- | Tests/RunCMake/FindMatlab/MatlabTest2.cmake | 9 | ||||
-rw-r--r-- | Tests/RunCMake/FindMatlab/RunCMakeTest.cmake | 48 |
6 files changed, 63 insertions, 4 deletions
diff --git a/Modules/FindMatlab.cmake b/Modules/FindMatlab.cmake index b4beec3d8e..028bf5a998 100644 --- a/Modules/FindMatlab.cmake +++ b/Modules/FindMatlab.cmake @@ -134,7 +134,8 @@ # returns the suffix to be used for the mex files # (platform/architecture dependant) # :command:`matlab_get_version_from_matlab_run` -# returns the version of Matlab, given the full directory of the Matlab program. +# returns the version of Matlab, given the full directory of the Matlab +# program. # # # Known issues @@ -918,7 +919,7 @@ function(matlab_add_mex ) PROPERTIES CXX_VISIBILITY_PRESET "hidden" C_VISIBILITY_PRESET "hidden" - VISIBILITY_INLINES_HIDDEN "hidden" + VISIBILITY_INLINES_HIDDEN ON ) # get_target_property( @@ -1064,7 +1065,7 @@ if(Matlab_ROOT_DIR) endif() else() # NOTFOUND indicates the code below to search for the version automatically - if(NOT DEFINED Matlab_VERSION_STRING_INTERNAL) + if("${Matlab_VERSION_STRING_INTERNAL}" STREQUAL "") list(APPEND _matlab_possible_roots "NOTFOUND" ${Matlab_ROOT_DIR}) # empty version else() list(APPEND _matlab_possible_roots ${Matlab_VERSION_STRING_INTERNAL} ${Matlab_ROOT_DIR}) # cached version diff --git a/Modules/MatlabTestsRedirect.cmake b/Modules/MatlabTestsRedirect.cmake index ebccbf662e..77b7afe69f 100644 --- a/Modules/MatlabTestsRedirect.cmake +++ b/Modules/MatlabTestsRedirect.cmake @@ -17,7 +17,6 @@ # Usage: cmake # -Dtest_timeout=180 -# -Dworking_directory="." # -Doutput_directory= # -Dadditional_paths="" # -Dno_unittest_framework="" diff --git a/Tests/RunCMake/FindMatlab/MatlabTest2-result.txt b/Tests/RunCMake/FindMatlab/MatlabTest2-result.txt new file mode 100644 index 0000000000..573541ac97 --- /dev/null +++ b/Tests/RunCMake/FindMatlab/MatlabTest2-result.txt @@ -0,0 +1 @@ +0 diff --git a/Tests/RunCMake/FindMatlab/MatlabTest2-stderr.txt b/Tests/RunCMake/FindMatlab/MatlabTest2-stderr.txt new file mode 100644 index 0000000000..9abb766cee --- /dev/null +++ b/Tests/RunCMake/FindMatlab/MatlabTest2-stderr.txt @@ -0,0 +1 @@ +.*
\ No newline at end of file diff --git a/Tests/RunCMake/FindMatlab/MatlabTest2.cmake b/Tests/RunCMake/FindMatlab/MatlabTest2.cmake new file mode 100644 index 0000000000..d5b0e6db14 --- /dev/null +++ b/Tests/RunCMake/FindMatlab/MatlabTest2.cmake @@ -0,0 +1,9 @@ +cmake_minimum_required (VERSION 2.8.12) +enable_testing() +project(findmatlab_runcmake_test2) + +if(NOT DEFINED matlab_required) + set(matlab_required REQUIRED) +endif() + +find_package(Matlab ${matlab_required} COMPONENTS MX_LIBRARY) diff --git a/Tests/RunCMake/FindMatlab/RunCMakeTest.cmake b/Tests/RunCMake/FindMatlab/RunCMakeTest.cmake index 33dbb772c4..f0eb6b4bbb 100644 --- a/Tests/RunCMake/FindMatlab/RunCMakeTest.cmake +++ b/Tests/RunCMake/FindMatlab/RunCMakeTest.cmake @@ -1,3 +1,51 @@ include(RunCMake) run_cmake(MatlabTest1) + +if(RunCMake_GENERATOR MATCHES "Make" AND UNIX) + # Use a single build tree for a few tests without cleaning. + set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/RerunFindMatlab-build-init) + set(RunCMake_TEST_NO_CLEAN 1) + file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}") + file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}") + + message(STATUS "RerunFindMatlab: first configuration to extract real Matlab_ROOT_DIR") + set(RunCMake_TEST_OPTIONS "-Dmatlab_required=REQUIRED") + run_cmake(MatlabTest2) + + message(STATUS "RerunFindMatlab: flushing the variables") + execute_process(COMMAND + ${CMAKE_COMMAND} -L ${RunCMake_TEST_BINARY_DIR} + RESULT_VARIABLE _MatlabTest2_error + OUTPUT_VARIABLE _MatlabTest2_output) + if(NOT _MatlabTest2_error EQUAL 0) + message(FATAL_ERROR "RerunFindMatlab: cannot list the variables ...") + endif() + + string(REGEX MATCH "Matlab_ROOT_DIR.+=([^\r\n]+)" _matched ${_MatlabTest2_output}) + + set(Matlab_ROOT_DIR_correct "${CMAKE_MATCH_1}") + if(Matlab_ROOT_DIR_correct STREQUAL "") + message(FATAL_ERROR "RerunFindMatlab: cannot extract Matlab_ROOT_DIR") + endif() + message(STATUS "RerunFindMatlab: detected correct Matlab_ROOT_DIR=${Matlab_ROOT_DIR_correct}") + + message(STATUS "RerunFindMatlab: change configuration, incorrect Matlab_ROOT_DIR setting") + set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/RerunFindMatlab-build-second) + set(RunCMake_TEST_NO_CLEAN 1) + file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}") + file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}") + + set(RunCMake_TEST_OPTIONS "-DMatlab_ROOT_DIR=/" "-Dmatlab_required=") + run_cmake(MatlabTest2) + + message(STATUS "RerunFindMatlab: fixing configuration with correct Matlab_ROOT_DIR setting") + set(RunCMake_TEST_OPTIONS "-DMatlab_ROOT_DIR=${Matlab_ROOT_DIR_correct}") # required this time? + run_cmake(MatlabTest2) + + # no target on this test + run_cmake_command(MatlabTest2 ${CMAKE_COMMAND} --build .) + + unset(RunCMake_TEST_BINARY_DIR) + unset(RunCMake_TEST_NO_CLEAN) +endif() |