Subversion Repositories seema-scanner

Rev

Rev 194 | Blame | Compare with Previous | Last modification | View Log | RSS feed

%%
% Build Matlab MEX functions
% Jakob Wilm, DTU, 2014

%% Camera
srcDirCamera = '../src/camera/';
if ismac
    CXXFLAGS = 'CXXFLAGS=$CXXFLAGS -I/opt/local/lib/';
    LDFLAGS = 'LDFLAGS=$LDFLAGS -ldc1394';
    DEFINES = {'-DWITH_CAMERAIIDC'};
    srcFilesCamera = {'Camera.cpp', 'CameraIIDC.cpp'};
elseif isunix
    CXXFLAGS = 'CXXFLAGS=$CXXFLAGS -I/usr/include/flycapture';
    LDFLAGS = 'LINKLIBS=$LINKLIBS -lflycapture';
    DEFINES = {'-DWITH_CAMERAPOINTGREY'};
    srcFilesCamera = {'Camera.cpp', 'CameraPointGrey.cpp'};
elseif ispc
        CXXFLAGS = '';
    LDFLAGS = '';
    DEFINES = {};
    srcFilesCamera = {'Camera.cpp'};
end

srcFilesCamera = strcat(srcDirCamera, srcFilesCamera);
srcFilesCamera = ['CameraMex.cpp' srcFilesCamera];

%mex('-v', 'GCC=/usr/bin/g++-4.7', ['-I' srcDirCamera], DEFINES{:}, srcFilesCamera{:}, CXXFLAGS, LDFLAGS);
mex('-v', ['-I' srcDirCamera], DEFINES{:}, srcFilesCamera{:}, CXXFLAGS, LDFLAGS);

%% Projector
srcDirProjector = '../src/projector/';
srcFilesProjector = {'ProjectorOpenGL.cpp'};
if ismac
    srcFilesProjector = [srcFilesProjector 'OpenGLContext.Mac.cpp'];
    CXXFLAGS = 'CXXFLAGS=$CXXFLAGS -ObjC++';
    LDFLAGS = 'LINKLIBS=$LINKLIBS -framework Cocoa -framework OpenGL"';
elseif isunix
    srcFilesProjector = [srcFilesProjector 'OpenGLContext.Xscreens.cpp'];
    %srcFilesProjector = [srcFilesProjector 'OpenGLContext.XRandr.cpp'];
    CXXFLAGS = 'CXXFLAGS=$CXXFLAGS';
    LDFLAGS = 'LINKLIBS=$LINKLIBS -lGL -lGLU -lX11 -lXxf86vm -lXi -lXcursor -lXrandr';
elseif ispc
    srcFilesProjector = [srcFilesProjector 'OpenGLContext.Win.cpp']; 
        CXXFLAGS = '-I.';
    LDFLAGS = '-lOpenGL32';
end

srcFilesProjector = strcat(srcDirProjector, srcFilesProjector);
srcFilesProjector = ['ProjectorMex.cpp' srcFilesProjector];

mex('-v', ['-I' srcDirProjector], srcFilesProjector{:}, CXXFLAGS, LDFLAGS);

%% Rotation Stage
srcDirRotationStage = '../src/rotationstage/';
srcFilesRotationStage = {'RotationStage.cpp'};
if ismac
    CFLAGS = 'CFLAGS=$CFLAGS';
    CXXFLAGS = 'CXXFLAGS=$CXXFLAGS';
    LINKLIBS = 'LINKLIBS=$LINKLIBS"';
elseif isunix
    CFLAGS = 'CFLAGS=$CFLAGS -std=c99';
    CXXFLAGS = 'CXXFLAGS=$CXXFLAGS';
    LINKLIBS = 'LINKLIBS=$LINKLIBS -lusb-1.0';
elseif ispc
        CFLAGS = 'CFLAGS=$CFLAGS';
    LINKLIBS = 'LINKLIBS=$LINKLIBS';
end

srcFilesRotationStage = strcat(srcDirRotationStage, srcFilesRotationStage);
srcFilesRotationStage = ['RotationStageMex.cpp' srcFilesRotationStage];

% C file needs own call to gcc (c99, not ansi)
mex('-v', '-c', ['-I' srcDirRotationStage], [srcDirRotationStage 'ArcusPerformaxDriver.c'], CFLAGS);
% C++ files will be compiled with g++
mex('-v', ['-I' srcDirRotationStage], srcFilesRotationStage{:}, 'ArcusPerformaxDriver.o', CXXFLAGS, LINKLIBS);