home *** CD-ROM | disk | FTP | other *** search
- @echo off
- rem
- rem CMEX.BAT - Batch file for building MATLAB V.4 MEX-files
- rem
- rem Using: Microsoft C/C++ V7.00 (DLL MEX-files)
- rem Metaware High C/C++ V3.03 (REX MEX-files)
- rem Watcom C V9.0 (REX MEX-files)
- rem
- rem USAGE: cmex [source_files] [object_files] [libraries]
- rem
- rem Mounil Patel Setptember 30, 1992
- rem Revised by: Marc Ullman March 1, 1993
- rem Copyright (C) 1992-1993 The MathWorks, Inc.
- rem All Rights Reserved
-
- set ORIG_PATH=%PATH%
- if "%1"=="" goto USAGE
-
- rem ********************************************************************
- rem Edit the following to reflect where you installed MATLAB
- rem ********************************************************************
- set MAT_ROOT=C:\MATLAB
-
- rem ********************************************************************
- rem Set MEX_TYPE to one of the following:
- rem DLLMEX if using Microsoft C (DLL MEX-files)
- rem METMEX if using Metaware High C (REX MEX-files)
- rem WATMEX if using Watcom C (REX MEX-files)
- rem
- rem Make sure that you use all CAPITAL letters!
- rem ********************************************************************
- set MEX_TYPE=WATMEX
-
- rem ********************************************************************
- rem Edit the following to reflect where you installed your compiler
- rem ********************************************************************
- set COMP_ROOT=C:\WATCOM
-
- rem ********************************************************************
- rem Edit the following to reflect where you installed your Phar Lap
- rem linker if you are making REX MEX-Files with the METAWARE C Compiler
- rem ********************************************************************
- set PL_ROOT=C:\PHARLAP
-
- rem ********************************************************************
- rem Edit the following to reflect where you installed your MS Windows
- rem SDK if you are making DLL MEX-Files
- rem ********************************************************************
- set SDK_ROOT=C:WINSDK
-
-
- rem Check to see if we're to make a stand-alone program for debugging
- rem and if we're compiling a V3.5 MEX-file
- set MEX_DBG=FALSE
- set DBG_OPT=
- set V35_FLAG=
- if "%1"=="-DEBUG" set MEX_DBG=TRUE
- if "%1"=="-debug" set MEX_DBG=TRUE
- if "%1"=="-V3.5" set V35_FLAG=-DOLDSTYLE
- if "%1"=="-v3.5" set V35_FLAG=-DOLDSTYLE
- if "%MEX_DBG%"=="TRUE" goto check_arg2
- if not "%V35_FLAG%"=="" goto check_arg2
- goto save_name
- rem Do it all again so we can accept these options in either order
- :check_arg2
- if "%2"=="-DEBUG" set MEX_DBG=TRUE
- if "%2"=="-debug" set MEX_DBG=TRUE
- if "%2"=="-V3.5" set V35_FLAG=-DOLDSTYLE
- if "%2"=="-v3.5" set V35_FLAG=-DOLDSTYLE
- if "%MEX_DBG%"=="TRUE" shift
- if not "%V35_FLAG%"=="" shift
-
- :save_name
- rem Save the name of the first argument
- set MEXFILENAME=%1
-
- if "%MEX_TYPE%"=="DLLMEX" goto CHECKDLL
- if "%MEX_TYPE%"=="METMEX" goto CHECKMET
- if "%MEX_TYPE%"=="WATMEX" goto CHECKWAT
-
- echo You must set MEX_TYPE to either DLLMEX, METMEX or WATMEX!
- echo Make your corrections to cmex.bat and try again.
- goto EXIT
-
- :CHECKDLL
- if not exist %COMP_ROOT%\bin\cl.exe goto SETUP1
- if not exist %COMP_ROOT%\bin\link.exe goto SETUP1
- if not exist %SDK_ROOT%\bin\rc.exe goto SETUP2
-
- if not exist cmexdll.lnk goto COMPILE
- del cmexdll.lnk
- if not exist cmexdll.def goto COMPILE
- del cmexdll.def
-
- goto COMPILE
-
- :CHECKMET
- if not exist %COMP_ROOT%\bin\hc386.exe goto SETUP1
- if not exist %PL_ROOT%\bin\386link.exe goto SETUP3
-
- set PATH=%COMP_ROOT%\bin
-
- rem Create the link response file
- echo -twocase > hcmex.rsp
- echo -nomap >> hcmex.rsp
- if "%MEX_DBG%"=="TRUE" goto METEXE
- %MAT_ROOT%\bin\basename "-relexe %1" >> hcmex.rsp
- echo .mex >> hcmex.rsp
- goto COMPILE
-
- :METEXE
- %MAT_ROOT%\bin\basename "-exe %1" >> hcmex.rsp
- echo .exe >> hcmex.rsp
- echo -attributes group CGROUP er >> hcmex.rsp
- echo -attributes group DGROUP rw >> hcmex.rsp
- echo -cvsymbols >> hcmex.rsp
- echo %PL_ROOT%\bin\stub386.exe >> hcmex.rsp
- set DBG_OPT=-g
- goto COMPILE
-
- :CHECKWAT
- if not exist %COMP_ROOT%\bin\wcc386.exe goto SETUP1
- if not exist %COMP_ROOT%\binb\wlink.exe goto SETUP1
-
- rem Create the link response file
- echo option caseexact > wcmex.rsp
- %MAT_ROOT%\bin\basename "name %1" >> wcmex.rsp
- if "%MEX_DBG%"=="TRUE" goto WATEXE
- echo .mex >> wcmex.rsp
- echo format pharlap rex >> wcmex.rsp
- goto COMPILE
-
- :WATEXE
- echo .exe >> wcmex.rsp
- echo format os2 le >> wcmex.rsp
- echo debug all >> wcmex.rsp
- echo option stub=%COMP_ROOT%\binb\wstub.exe >> wcmex.rsp
- set DBG_OPT=-d2
- goto COMPILE
-
- :COMPILE
-
- if "%MEX_TYPE%"=="DLLMEX" goto PROC_DLL
- if "%MEX_TYPE%"=="METMEX" goto PROC_MET
- if "%MEX_TYPE%"=="WATMEX" goto PROC_WAT
-
- :PROC_DLL
-
- %MAT_ROOT%\bin\is_ext %1 .c
- if not errorlevel 1 goto COMPDLL
-
- %MAT_ROOT%\bin\is_ext %1 .obj
- if not errorlevel 1 goto DLL_OBJ
-
- %MAT_ROOT%\bin\is_ext %1 .lib
- if not errorlevel 1 goto DLL_LIBS
-
- :COMPDLL
-
- rem Set environment variable for INCLUDE
-
- set INCLUDE=%SDK_ROOT%\include;%COMP_ROOT%\include;%MAT_ROOT%\extern\include
-
- rem Compile the Mex file module
-
- @echo on
- %COMP_ROOT%\bin\cl -c -ALw -Zip -FPi87 -G2D -Od -W3 -DDLLMEX %V35_FLAG% %1
- @echo off
- if errorlevel 1 goto EXIT
-
- :DLL_OBJ
- %MAT_ROOT%\bin\basename %1 >> cmexdll.lnk
- echo .obj + >> cmexdll.lnk
-
- goto END_OF_LOOP
-
- :PROC_MET
-
- %MAT_ROOT%\bin\is_ext %1 .c
- if not errorlevel 1 goto COMPMET
-
- %MAT_ROOT%\bin\is_ext %1 .obj
- if not errorlevel 1 goto MET_OBJ
-
- %MAT_ROOT%\bin\is_ext %1 .lib
- if not errorlevel 1 goto MET_LIBS
-
- :COMPMET
- @echo on
- %COMP_ROOT%\bin\hc386 -c -I%COMP_ROOT%\include -I%MAT_ROOT%\extern\include -f387 %1 %DBG_OPT% %V35_FLAG%
- @echo off
- if errorlevel 1 goto EXIT
-
- :MET_OBJ
- %MAT_ROOT%\bin\basename %1 >> hcmex.rsp
- echo .obj >> hcmex.rsp
-
- goto END_OF_LOOP
-
- :PROC_WAT
-
- %MAT_ROOT%\bin\is_ext %1 .c
- if not errorlevel 1 goto COMPWAT
-
- %MAT_ROOT%\bin\is_ext %1 .obj
- if not errorlevel 1 goto WAT_OBJ
-
- %MAT_ROOT%\bin\is_ext %1 .lib
- if not errorlevel 1 goto WAT_LIBS
-
- :COMPWAT
- @echo on
- %COMP_ROOT%\bin\wcc386p -I%COMP_ROOT%\h -7 -3s -I%MAT_ROOT%\extern\include %1 %DBG_OPT% %V35_FLAG%
- @echo off
- if errorlevel 1 goto EXIT
-
- :WAT_OBJ
- %MAT_ROOT%\bin\basename "file %1" >> wcmex.rsp
- echo .obj >> wcmex.rsp
-
- goto END_OF_LOOP
-
- :END_OF_LOOP
- shift
- if not "%1" == "" goto COMPILE
- if not "%MEX_TYPE%"=="DLLMEX" goto LINK
-
- :DLL_LIBS
- echo , >> cmexdll.lnk
- %MAT_ROOT%\bin\basename %MEXFILENAME% >> cmexdll.lnk
- echo .dll >> cmexdll.lnk
- %MAT_ROOT%\bin\basename %MEXFILENAME% >> cmexdll.lnk
- echo .map >> cmexdll.lnk
-
- if "%1" == "" goto LINK
-
- :DLL_LIB_LOOP
- %MAT_ROOT%\bin\is_ext %1 .lib
- if errorlevel 1 goto LIB_ERROR
- echo %1 + >> cmexdll.lnk
- shift
- if "%1" == "" goto LINK
- goto :DLL_LIB_LOOP
-
- :MET_LIBS
- %MAT_ROOT%\bin\is_ext %1 .lib
- if errorlevel 1 goto LIB_ERROR
- echo -lib >> hcmex.rsp
- echo %1 >> hcmex.rsp
- shift
- if "%1" == "" goto LINK
- goto :MET_LIBS
-
- :WAT_LIBS
- %MAT_ROOT%\bin\is_ext %1 .lib
- if errorlevel 1 goto LIB_ERROR
- echo library %1 >> wcmex.rsp
- shift
- if "%1" == "" goto LINK
- goto :WAT_LIBS
-
- :LINK
- if "%MEX_TYPE%"=="DLLMEX" goto LINKDLL
- if "%MEX_TYPE%"=="METMEX" goto LINKMET
- if "%MEX_TYPE%"=="WATMEX" goto LINKWAT
-
- :LINKDLL
- rem Set enviroment variable for LIB
- set LIB=%SDK_ROOT%\lib;%COMP_ROOT%\lib
-
- rem Create the module definition file
- %MAT_ROOT%\bin\basename "LIBRARY %MEXFILENAME%" > cmexdll.def
- echo .dll >> cmexdll.def
- echo EXETYPE WINDOWS >> cmexdll.def
- echo STUB '%COMP_ROOT%\BIN\WINSTUB.EXE' >> cmexdll.def
- echo CODE PRELOAD MOVEABLE DISCARDABLE >> cmexdll.def
- echo DATA PRELOAD MOVEABLE SINGLE >> cmexdll.def
- echo HEAPSIZE 1024 >> cmexdll.def
- echo EXPORTS >> cmexdll.def
- echo WEP @1 RESIDENTNAME >> cmexdll.def
- echo set_entry_point @2 >> cmexdll.def
- echo mexFunction @3 >> cmexdll.def
- echo mexAtExitFcn @4 >> cmexdll.def
-
- echo %MAT_ROOT%\extern\lib\libmexdl.lib + >> cmexdll.lnk
- echo ldllcew.lib + >> cmexdll.lnk
- echo libw.lib >> cmexdll.lnk
- echo cmexdll.def >> cmexdll.lnk
-
- rem Link the Mex file
- rem
- @echo on
- %COMP_ROOT%\bin\link /align:32 /CO /NOD /NOE @cmexdll.lnk
- @echo off
- if errorlevel 1 goto EXIT
-
- rem Resource compile the Mex file
- rem
- %MAT_ROOT%\bin\basename "%SDK_ROOT%\bin\rc %MEXFILENAME%" > cmexdll.bat
- echo .dll >> cmexdll.bat
- call cmexdll.bat
-
- rem Cleanup temporary files
- rem
- del cmexdll.lnk
- del cmexdll.def
- del cmexdll.bat
- goto EXIT
-
- :LINKMET
-
- rem Build remainder of link response file
-
- set LIBNAME=libmexhc.lib
- if "%MEX_DBG%"=="TRUE" set LIBNAME=libdbghc.LIB
-
- echo -lib >> hcmex.rsp
- echo %MAT_ROOT%\extern\lib\%LIBNAME% >> hcmex.rsp
- echo %COMP_ROOT%\small\hc387.lib >> hcmex.rsp
- echo %COMP_ROOT%\small\hc386.lib >> hcmex.rsp
- echo %COMP_ROOT%\small\hcna.lib >> hcmex.rsp
-
- @echo on
- %PL_ROOT%\bin\386link @hcmex.rsp
- @echo off
- del hcmex.rsp
- goto EXIT
-
- :LINKWAT
-
- rem Build remainder of link response file
-
- if "%MEX_DBG%"=="TRUE" goto WAT_DBG
-
- echo library %MAT_ROOT%\extern\lib\libmexwc.lib >> wcmex.rsp
- echo library %COMP_ROOT%\lib386\math387s.lib >> wcmex.rsp
- echo library %COMP_ROOT%\lib386\dos\clib3s.lib >> wcmex.rsp
- goto DO_WAT_LINK
-
- :WAT_DBG
- echo library %MAT_ROOT%\extern\lib\libdbgwc.lib >> wcmex.rsp
- echo libpath %COMP_ROOT%\lib386 >> wcmex.rsp
- echo libpath %COMP_ROOT%\lib386\dos >> wcmex.rsp
-
- :DO_WAT_LINK
- @echo on
- %COMP_ROOT%\binb\wlink @wcmex.rsp
- @echo off
- del wcmex.rsp
- goto EXIT
-
- :USAGE
- echo Usage: cmex [source_files] [object_files] [libaries]
- goto EXIT
-
- :LIB_ERROR
- echo All libraries must be placed at the end of the cmex command line
- goto EXIT
-
- :SETUP1
- echo You must edit this batch file to set the environment variable COMP_ROOT
- echo equal to the path where you installed your compiler before you can use
- echo it to create MEX files.
- goto EXIT
-
- :SETUP2
- echo You must edit this batch file to set the environment variable SDK_ROOT
- echo equal to the path where you installed the Microsoft Windows SDK 3.x
- echo before you can use it to create MEX files.
- goto EXIT
-
- :SETUP3
- echo You must edit this batch file to set the environment variable PL_ROOT
- echo equal to the path where you installed the PharLap linker before you
- echo can use it to create MEX files.
- goto EXIT
-
- :EXIT
- set PATH=%ORIG_PATH%
- set ORIG_PATH=
- set MEX_TYPE=
- set MEX_DBG=
- set DBG_OPT=
- set MAT_ROOT=
- set COMP_ROOT=
- set PL_ROOT=
- set SDK_ROOT=
- set MEXFILENAME=
- set LIBNAME=
-
-