# - this module looks for Matlab # Defines: # MATLAB_INCLUDE_DIR: include path for mex.h, engine.h # MATLAB_LIBRARIES: required libraries: libmex, etc # MATLAB_MEX_LIBRARY: path to libmex.lib # MATLAB_MX_LIBRARY: path to libmx.lib # MATLAB_ENG_LIBRARY: path to libeng.lib #============================================================================= # Copyright 2005-2009 Kitware, Inc. # # Distributed under the OSI-approved BSD License (the "License"); # see contents of file Copyright.txt included below for details. # # This software is distributed WITHOUT ANY WARRANTY; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the License for more information. #============================================================================= # (To distribute this file outside of CMake, substitute the full # License text for the above reference.) # Contents of Copyright.txt: # # CMake - Cross Platform Makefile Generator # Copyright 2000-2009 Kitware, Inc., Insight Software Consortium # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # * Neither the names of Kitware, Inc., the Insight Software Consortium, # nor the names of their contributors may be used to endorse or promote # products derived from this software without specific prior written # permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT # HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # 04/30/2012, BMA: Modified for DAKOTA to have MATLAB_DIR option for Linux SET(MATLAB_FOUND 0) IF(WIN32) IF(NOT MATLAB_DIR) SET(MATLAB_DIR "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MathWorks\\MATLAB\\7.0;MATLABROOT]") ENDIF(MATLAB_DIR) IF(${CMAKE_GENERATOR} MATCHES "Visual Studio 6") SET(MATLAB_ROOT "${MATLAB_DIR}/extern/lib/win32/microsoft/msvc60") ELSE(${CMAKE_GENERATOR} MATCHES "Visual Studio 6") IF(${CMAKE_GENERATOR} MATCHES "Visual Studio 7") # Assume people are generally using 7.1, # if using 7.0 need to link to: ../extern/lib/win32/microsoft/msvc70 SET(MATLAB_ROOT "${MATLAB_DIR}/extern/lib/win32/microsoft/msvc71") ELSE(${CMAKE_GENERATOR} MATCHES "Visual Studio 7") IF(${CMAKE_GENERATOR} MATCHES "Borland") # Same here, there are also: bcc50 and bcc51 directories SET(MATLAB_ROOT "${MATLAB_DIR}/extern/lib/win32/microsoft/bcc54") ELSE(${CMAKE_GENERATOR} MATCHES "Borland") IF(MATLAB_FIND_REQUIRED) MESSAGE(FATAL_ERROR "Generator not compatible: ${CMAKE_GENERATOR}") ENDIF(MATLAB_FIND_REQUIRED) ENDIF(${CMAKE_GENERATOR} MATCHES "Borland") ENDIF(${CMAKE_GENERATOR} MATCHES "Visual Studio 7") ENDIF(${CMAKE_GENERATOR} MATCHES "Visual Studio 6") FIND_LIBRARY(MATLAB_MEX_LIBRARY libmex ${MATLAB_ROOT} ) FIND_LIBRARY(MATLAB_MX_LIBRARY libmx ${MATLAB_ROOT} ) FIND_LIBRARY(MATLAB_ENG_LIBRARY libeng ${MATLAB_ROOT} ) FIND_PATH(MATLAB_INCLUDE_DIR "mex.h" "${MATLAB_DIR}/extern/include" ) ELSE( WIN32 ) IF( APPLE ) IF(NOT MATLAB_DIR) FILE(GLOB MATLAB_DIRS "/Applications/MATLAB_*.app") LIST(REVERSE MATLAB_DIRS) LIST(GET MATLAB_DIRS 0 MATLAB_DIR) ENDIF(NOT MATLAB_DIR) IF(CMAKE_SIZEOF_VOID_P EQUAL 4) # Regular x86 SET(MATLAB_ROOT "${MATLAB_DIR}/bin/maci") ELSE(CMAKE_SIZEOF_VOID_P EQUAL 4) # AMD64: SET(MATLAB_ROOT "${MATLAB_DIR}/bin/maci64") ENDIF(CMAKE_SIZEOF_VOID_P EQUAL 4) ELSE( APPLE ) #UNIX case IF(CMAKE_SIZEOF_VOID_P EQUAL 4) # Regular x86 SET(MATLAB_ROOT "${MATLAB_DIR}/bin/glnx86/" /usr/local/matlab-7sp1/bin/glnx86/ /opt/matlab-7sp1/bin/glnx86/ $ENV{HOME}/matlab-7sp1/bin/glnx86/ $ENV{HOME}/redhat-matlab/bin/glnx86/ ) ELSE(CMAKE_SIZEOF_VOID_P EQUAL 4) # AMD64: SET(MATLAB_ROOT "${MATLAB_DIR}/bin/glnxa64/" /usr/local/matlab-7sp1/bin/glnxa64/ /opt/matlab-7sp1/bin/glnxa64/ $ENV{HOME}/matlab7_64/bin/glnxa64/ $ENV{HOME}/matlab-7sp1/bin/glnxa64/ $ENV{HOME}/redhat-matlab/bin/glnxa64/ ) ENDIF(CMAKE_SIZEOF_VOID_P EQUAL 4) ENDIF(APPLE) # This is common to Mac & UNIX: FIND_LIBRARY(MATLAB_MEX_LIBRARY mex ${MATLAB_ROOT} ) # libmx is installed by default on some Mac systems. # Search for it with NO_DEFAULT_PATH first so we are more likely to find # the copy that shipped with MATLAB. FIND_LIBRARY(MATLAB_MX_LIBRARY mx ${MATLAB_ROOT} NO_DEFAULT_PATH ) FIND_LIBRARY(MATLAB_MX_LIBRARY mx ${MATLAB_ROOT} ) FIND_LIBRARY(MATLAB_ENG_LIBRARY eng ${MATLAB_ROOT} ) FIND_PATH(MATLAB_INCLUDE_DIR "mex.h" "${MATLAB_DIR}/extern/include/" "/usr/local/matlab-7sp1/extern/include/" "/opt/matlab-7sp1/extern/include/" "$ENV{HOME}/matlab-7sp1/extern/include/" "$ENV{HOME}/redhat-matlab/extern/include/" ) ENDIF(WIN32) # This is common to UNIX and Win32 and Mac: SET(MATLAB_LIBRARIES ${MATLAB_MEX_LIBRARY} ${MATLAB_MX_LIBRARY} ${MATLAB_ENG_LIBRARY} ) IF(MATLAB_INCLUDE_DIR AND MATLAB_LIBRARIES) SET(MATLAB_FOUND 1) ENDIF(MATLAB_INCLUDE_DIR AND MATLAB_LIBRARIES) MARK_AS_ADVANCED( MATLAB_LIBRARIES MATLAB_MEX_LIBRARY MATLAB_MX_LIBRARY MATLAB_ENG_LIBRARY MATLAB_INCLUDE_DIR MATLAB_FOUND MATLAB_ROOT )