[mlpack-svn] r13705 - mlpack/trunk/CMake
fastlab-svn at coffeetalk-1.cc.gatech.edu
fastlab-svn at coffeetalk-1.cc.gatech.edu
Mon Oct 15 17:56:00 EDT 2012
Author: rcurtin
Date: 2012-10-15 17:56:00 -0400 (Mon, 15 Oct 2012)
New Revision: 13705
Added:
mlpack/trunk/CMake/FindMatlabMex.cmake
Log:
Utility to find MATLAB and the mex compiler.
Added: mlpack/trunk/CMake/FindMatlabMex.cmake
===================================================================
--- mlpack/trunk/CMake/FindMatlabMex.cmake (rev 0)
+++ mlpack/trunk/CMake/FindMatlabMex.cmake 2012-10-15 21:56:00 UTC (rev 13705)
@@ -0,0 +1,107 @@
+# This module looks for mex, the MATLAB compiler.
+# The following variables are defined when the script completes:
+# MATLAB_MEX: location of mex compiler
+# MATLAB_ROOT: root of MATLAB installation
+# MATLAB_MEX_FOUND: 0 if not found, 1 if found
+
+SET(MATLAB_MEX_FOUND 0)
+
+IF(WIN32)
+ # This is untested but taken from the older FindMatlab.cmake script as well as
+ # the modifications by Ramon Casero and Tom Doel for Gerardus.
+
+ # Search for a version of Matlab available, starting from the most modern one
+ # to older versions.
+ FOREACH(MATVER "7.20" "7.19" "7.18" "7.17" "7.16" "7.15" "7.14" "7.13" "7.12"
+"7.11" "7.10" "7.9" "7.8" "7.7" "7.6" "7.5" "7.4")
+ IF((NOT DEFINED MATLAB_ROOT)
+ OR ("${MATLAB_ROOT}" STREQUAL "")
+ OR ("${MATLAB_ROOT}" STREQUAL "/registry"))
+ GET_FILENAME_COMPONENT(MATLAB_ROOT
+ "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MathWorks\\MATLAB\\${MATVER};MATLABROOT]"
+ ABSOLUTE)
+ SET(MATLAB_VERSION ${MATVER})
+ ENDIF((NOT DEFINED MATLAB_ROOT)
+ OR ("${MATLAB_ROOT}" STREQUAL "")
+ OR ("${MATLAB_ROOT}" STREQUAL "/registry"))
+ ENDFOREACH(MATVER)
+
+ FIND_PROGRAM(MATLAB_MEX
+ mex
+ ${MATLAB_ROOT}/bin
+ )
+ELSE(WIN32)
+ # Check if this is a Mac.
+ IF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
+ # This code is untested but taken from the older FindMatlab.cmake script as
+ # well as the modifications by Ramon Casero and Tom Doel for Gerardus.
+
+ SET(LIBRARY_EXTENSION .dylib)
+
+ # If this is a Mac and the attempts to find MATLAB_ROOT have so far failed,~
+ # we look in the applications folder
+ IF((NOT DEFINED MATLAB_ROOT) OR ("${MATLAB_ROOT}" STREQUAL ""))
+
+ # Search for a version of Matlab available, starting from the most modern
+ # one to older versions
+ FOREACH(MATVER "R2013b" "R2013a" "R2012b" "R2012a" "R2011b" "R2011a"
+"R2010b" "R2010a" "R2009b" "R2009a" "R2008b")
+ IF((NOT DEFINED MATLAB_ROOT) OR ("${MATLAB_ROOT}" STREQUAL ""))
+ IF(EXISTS /Applications/MATLAB_${MATVER}.app)
+ SET(MATLAB_ROOT /Applications/MATLAB_${MATVER}.app)
+
+ ENDIF(EXISTS /Applications/MATLAB_${MATVER}.app)
+ ENDIF((NOT DEFINED MATLAB_ROOT) OR ("${MATLAB_ROOT}" STREQUAL ""))
+ ENDFOREACH(MATVER)
+
+ ENDIF((NOT DEFINED MATLAB_ROOT) OR ("${MATLAB_ROOT}" STREQUAL ""))
+
+ FIND_PROGRAM(MATLAB_MEX
+ mex
+ PATHS
+ ${MATLAB_ROOT}/bin
+ )
+
+ ELSE(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
+ # On a Linux system. The goal is to find MATLAB_ROOT.
+ SET(LIBRARY_EXTENSION .so)
+
+ FIND_PROGRAM(MATLAB_MEX_POSSIBLE_LINK
+ mex
+ PATHS
+ ${MATLAB_ROOT}/bin
+ /opt/matlab/bin
+ /usr/local/matlab/bin
+ $ENV{HOME}/matlab/bin
+ # Now all the versions
+ /opt/matlab/[rR]20[0-9][0-9][abAB]/bin
+ /usr/local/matlab/[rR]20[0-9][0-9][abAB]/bin
+ /opt/matlab-[rR]20[0-9][0-9][abAB]/bin
+ /opt/matlab_[rR]20[0-9][0-9][abAB]/bin
+ /usr/local/matlab-[rR]20[0-9][0-9][abAB]/bin
+ /usr/local/matlab_[rR]20[0-9][0-9][abAB]/bin
+ $ENV{HOME}/matlab/[rR]20[0-9][0-9][abAB]/bin
+ $ENV{HOME}/matlab-[rR]20[0-9][0-9][abAB]/bin
+ $ENV{HOME}/matlab_[rR]20[0-9][0-9][abAB]/bin
+ )
+
+ GET_FILENAME_COMPONENT(MATLAB_MEX "${MATLAB_MEX_POSSIBLE_LINK}" REALPATH)
+ GET_FILENAME_COMPONENT(MATLAB_BIN_ROOT "${MATLAB_MEX}" PATH)
+ # Strip ./bin/.
+ GET_FILENAME_COMPONENT(MATLAB_ROOT "${MATLAB_BIN_ROOT}" PATH)
+ ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
+ENDIF(WIN32)
+
+IF(MATLAB_MEX)
+ SET(MATLAB_MEX_FOUND 1)
+ENDIF(MATLAB_MEX)
+
+MESSAGE(STATUS "Found MATLAB mex compiler: ${MATLAB_MEX}")
+MESSAGE(STATUS "MATLAB root: ${MATLAB_ROOT}")
+
+MARK_AS_ADVANCED(
+ MATLAB_MEX
+ MATLAB_MEX_FOUND
+ MATLAB_ROOT
+)
+
More information about the mlpack-svn
mailing list