75 lines
2.7 KiB
Matlab
75 lines
2.7 KiB
Matlab
% Build file for Dynare MEX Librairies under Matlab
|
|
% Copyright Dynare Team (2007-2008)
|
|
% GNU Public License
|
|
|
|
addpath '../../matlab'; % For matlab_ver_less_than
|
|
|
|
MATLAB_PATH = matlabroot;
|
|
|
|
COMPILE_OPTIONS = '';
|
|
|
|
if strcmpi('GLNX86', computer) || strcmpi('GLNXA64', computer) ...
|
|
|| strcmpi('MACI', computer) || strcmpi('MAC', computer)
|
|
% GNU/Linux (x86-32 or x86-64) or MacOS (Intel or PPC)
|
|
LAPACK_PATH = '-lmwlapack';
|
|
if matlab_ver_less_than('7.5')
|
|
BLAS_PATH = LAPACK_PATH; % On <= 7.4, BLAS in included in LAPACK
|
|
else
|
|
BLAS_PATH = '-lmwblas';
|
|
end
|
|
elseif strcmpi('PCWIN', computer)
|
|
% Windows (x86-32) with Microsoft or gcc compiler
|
|
LIBRARY_PATH = [MATLAB_PATH '/extern/lib/win32/microsoft/'];
|
|
LAPACK_PATH = ['"' LIBRARY_PATH 'libmwlapack.lib"'];
|
|
if matlab_ver_less_than('7.5')
|
|
BLAS_PATH = LAPACK_PATH; % On <= 7.4, BLAS in included in LAPACK
|
|
else
|
|
BLAS_PATH = ['"' LIBRARY_PATH 'libmwblas.lib"'];
|
|
end
|
|
else
|
|
error('Unsupported platform')
|
|
end
|
|
|
|
% mwSize and mwIndex appeared in Matlab 7.3
|
|
if matlab_ver_less_than('7.3')
|
|
COMPILE_OPTIONS = [ COMPILE_OPTIONS ' -DMWTYPES_NOT_DEFINED' ];
|
|
end
|
|
|
|
% Large array dims for 64 bits platforms appeared in Matlab 7.3
|
|
if strcmpi('GLNXA64', computer) && ~matlab_ver_less_than('7.3')
|
|
COMPILE_OPTIONS = [ COMPILE_OPTIONS ' -largeArrayDims' ];
|
|
end
|
|
|
|
% blas.h and lapack.h appeared in Matlab 7.5
|
|
if matlab_ver_less_than('7.5')
|
|
COMPILE_OPTIONS = [ COMPILE_OPTIONS ' -DNO_BLAS_H -DNO_LAPACK_H' ];
|
|
end
|
|
|
|
if matlab_ver_less_than('7.5')
|
|
OUTPUT_DIR = '../2007a';
|
|
else
|
|
OUTPUT_DIR = '../2007b';
|
|
end
|
|
|
|
% Comment next line to suppress compilation debugging info
|
|
COMPILE_OPTIONS = [ COMPILE_OPTIONS ' -v' ];
|
|
|
|
COMPILE_COMMAND = [ 'mex ' COMPILE_OPTIONS ' -outdir ' OUTPUT_DIR ];
|
|
|
|
disp('Compiling mjdgges...')
|
|
eval([ COMPILE_COMMAND ' mjdgges/mjdgges.c ' LAPACK_PATH ]);
|
|
disp('Compiling sparse_hessian_times_B_kronecker_C...')
|
|
eval([ COMPILE_COMMAND ' kronecker/sparse_hessian_times_B_kronecker_C.cc ' BLAS_PATH ]);
|
|
disp('Compiling A_times_B_kronecker_C...')
|
|
eval([ COMPILE_COMMAND ' kronecker/A_times_B_kronecker_C.cc ' BLAS_PATH ]);
|
|
disp('Compiling gensylv...')
|
|
eval([ COMPILE_COMMAND ' -DMATLAB -Igensylv/cc gensylv/matlab/gensylv.cpp' ...
|
|
' gensylv/cc/*.cpp ' BLAS_PATH ' ' LAPACK_PATH ]);
|
|
disp('Compiling simulate...')
|
|
eval([ COMPILE_COMMAND ' -Isimulate -I../../preprocessor/include simulate/simulate.cc simulate/Interpreter.cc simulate/Mem_Mngr.cc simulate/SparseMatrix.cc simulate/linbcg.cc' ]);
|
|
|
|
% Forcing exit is necessary when autobuilding MEX files for Debian packages.
|
|
% In interactive mode, if anything fails during the compilation process,
|
|
% this line will not be reached and the user will see the error message.
|
|
exit
|