# Program Listing for File CompileOctave.m

↰ Return to documentation for file (`CompileOctave.m`)

    clc;
    clear functions;

    NAMES = { ...
      'FresnelCS', ...
      'XY_to_angle', ...
      'CircleArcMexWrapper', ...
      'BiarcMexWrapper', ...
      'BiarcListMexWrapper', ...
      'LineSegmentMexWrapper', ...
      'PolyLineMexWrapper', ...
      'Triangle2DMexWrapper', ...
      'ClothoidCurveMexWrapper', ...
      'ClothoidListMexWrapper', ...
      'ClothoidSplineG2MexWrapper', ...
      'TriTriOverlap'
    };

    LIB_NAMES = { ...
      'G2lib', ...
      'G2lib_intersect', ...
      'AABBtree', ...
      'Line',...
      'PolyLine', ...
      'Circle', ...
      'Biarc', ...
      'BiarcList', ...
      'Clothoid', ...
      'ClothoidList', ...
      'ClothoidDistance', ...
      'ClothoidG2', ...
      'Fresnel', ...
      'Triangle2D', ...
    };

    LIB_NAMES2 = { ...
      'PolynomialRoots-1-Quadratic', ...
      'PolynomialRoots-2-Cubic', ...
      'PolynomialRoots-Utils', ...
    };

    if isunix
      MEX = 'mkoctfile --mex -O2';
    elseif ispc
      MEX = 'mkoctfile --mex';
    end

    INC = ' -I../submodules/quarticRootsFlocke/src -I../src ';

    LIB_SRCS = '';
    LIB_OBJS = '';
    for k=1:length(LIB_NAMES)
      LIB_SRCS = [ LIB_SRCS, ' ../src/', LIB_NAMES{k}, '.cc' ];
      LIB_OBJS = [ LIB_OBJS, LIB_NAMES{k}, '.o ' ];
      CMD = [ MEX, ' -c ', INC, '../src/', LIB_NAMES{k}, '.cc' ];
      disp(CMD);
      eval(CMD);
    end
    for k=1:length(LIB_NAMES2)
      LIB_SRCS = [ LIB_SRCS, ' ../submodules/quarticRootsFlocke/src/', LIB_NAMES2{k}, '.cc' ];
      LIB_OBJS = [ LIB_OBJS, LIB_NAMES2{k}, '.o ' ];
      CMD = [ MEX, ' -c ', INC, '../submodules/quarticRootsFlocke/src/', LIB_NAMES2{k}, '.cc' ];
      disp(CMD);
      eval(CMD);
    end

    disp('---------------------------------------------------------');

    for k=1:length(NAMES)
      N=NAMES{k};
      disp('---------------------------------------------------------');
      fprintf(1,'Compiling: %s\n',N);
      CMD = [ MEX ' -output ../matlab/', N, ' -I../src ../src_mex/mex_', N, '.cc ', LIB_OBJS ];
      if isunix
        CMD = [CMD, ' -lstdc++ -O2'];
      elseif ispc
      end
      disp(CMD);
      eval(CMD);
    end

    for k=1:length(LIB_NAMES)
      delete([ LIB_NAMES{k}, '.o' ]);
    end

    disp('Install struct, io, statistics, optim package, it may take long time');

    pkg install -forge struct
    pkg install -forge io
    pkg install -forge statistics
    pkg install -forge optim

    disp('----------------------- DONE ----------------------------');