1function make 2%MAKE Make PRIMME's Matlab module 3 4 % Get the path of this directory 5 [p,~,~] = fileparts(mfilename('fullpath')); 6 7 % Save the current path and changed the working path to here 8 w = pwd; 9 cd(p); 10 11 flags = {'-O', '-I../include', '-I../src/include'}; 12 libs = {}; 13 14 % If not is Windows, add underscore for blas/lapack calls 15 if ~ispc 16 flags{end+1} = '-DF77UNDERSCORE'; 17 end 18 19 % If using octave, blas/lapack' int is 32bits and they are linked by default 20 if ~exist('OCTAVE_VERSION') 21 flags{end+1} = '-DPRIMME_BLASINT_SIZE=64'; 22 % If is Windows, add the paths to blas/lapack libraries 23 if ispc 24 libs{end+1} = ['-L' fullfile(matlabroot,'extern','lib','win64','mingw64')]; 25 libs{end+1} = ['-L' fullfile(matlabroot,'extern','lib','win64','microsoft')]; 26 end 27 libs{end+1} = '-lmwlapack'; 28 libs{end+1} = '-lmwblas'; 29 end 30 31 % Sources 32 sources = { '../src/eigs/auxiliary_eigs.c', ... 33 '../src/eigs/auxiliary_eigs_normal.c', ... 34 '../src/eigs/convergence.c', ... 35 '../src/eigs/correction.c', ... 36 '../src/eigs/factorize.c', ... 37 '../src/eigs/init.c', ... 38 '../src/eigs/inner_solve.c', ... 39 '../src/eigs/main_iter.c', ... 40 '../src/eigs/ortho.c', ... 41 '../src/eigs/primme_c.c', ... 42 '../src/eigs/primme_f77.c', ... 43 '../src/eigs/primme_interface.c', ... 44 '../src/eigs/restart.c', ... 45 '../src/eigs/solve_projection.c', ... 46 '../src/eigs/update_projection.c', ... 47 '../src/eigs/update_W.c', ... 48 '../src/linalg/auxiliary.c', ... 49 '../src/linalg/blaslapack.c', ... 50 '../src/linalg/magma_wrapper.c', ... 51 '../src/linalg/memman.c', ... 52 '../src/linalg/wtime.c', ... 53 '../src/svds/primme_svds_c.c', ... 54 '../src/svds/primme_svds_f77.c', ... 55 '../src/svds/primme_svds_interface.c', ... 56 'primme_mex.cpp'}; 57 58 % Compile PRIMME 59 try 60 mex(flags{:}, sources{:}, '-largeArrayDims', libs{:}, '-output', 'primme_mex'); 61 catch me 62 cd(w); 63 rethrow(me); 64 end 65 66 % Change back the current path 67 cd(w) 68