Browse Source

ENH: add Matlab support

Bill Hoffman 20 years ago
parent
commit
db1903df89
1 changed files with 108 additions and 0 deletions
  1. 108 0
      Modules/FindMatlab.cmake

+ 108 - 0
Modules/FindMatlab.cmake

@@ -0,0 +1,108 @@
+# 
+# this module looks for Matlab
+#
+# Define
+# MATLAB_INCLUDE_DIR points to the include path for mex.h, engine.h
+# MATLAB_LIBRARIES   list of libraries need: libmex.lib, libmx.lib and libeng.lib
+# MATLAB_MEX_LIBRARY point to libmex.lib
+# MATLAB_MX_LIBRARY  point to libmx.lib
+# MATLAB_ENG_LIBRARY point to libeng.lib
+
+
+SET(MATLAB_FOUND 0)
+IF(WIN32)
+  IF(${CMAKE_GENERATOR} MATCHES "Visual Studio 6")
+    SET(MATLAB_ROOT "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MathWorks\\MATLAB\\7.0;MATLABROOT]/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 "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MathWorks\\MATLAB\\7.0;MATLABROOT]/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 "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MathWorks\\MATLAB\\7.0;MATLABROOT]/extern/lib/win32/microsoft/bcc54")
+      ELSE(${CMAKE_GENERATOR} MATCHES "Borland")
+        MESSAGE(FATAL_ERROR "Generator not compatible: ${CMAKE_GENERATOR}")
+      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"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MathWorks\\MATLAB\\7.0;MATLABROOT]/extern/include"
+    )
+ELSE( WIN32 )
+  IF(CMAKE_SIZEOF_VOID_P EQUAL 4)
+    # Regular x86
+    SET(MATLAB_ROOT
+      /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
+      /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)
+  FIND_LIBRARY(MATLAB_MEX_LIBRARY
+    mex
+    ${MATLAB_ROOT}
+    )
+  FIND_LIBRARY(MATLAB_MX_LIBRARY
+    mx
+    ${MATLAB_ROOT}
+    )
+  FIND_LIBRARY(MATLAB_ENG_LIBRARY
+    eng
+    ${MATLAB_ROOT}
+    )
+  FIND_PATH(MATLAB_INCLUDE_DIR
+    "mex.h"
+    "/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:
+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
+)
+