$title Test external equations (TESTEXEQ,SEQ=562) $onText This test makes sure that the simple examples using external equations work with different compilers on different platforms. Contributor: D. Tischinberg $offText * Dataname same as Modelname and expanded with additional letter from Programming Language * 'f' for fortran, 'd' for Delphi * For Example Model 'ex1.gms' uses C library 'ex1c.dll' and Fortran library 'ex1f.dll' Set ex examples /er1*er3, ex1*ex6, ex1x, ex4x, exmcp1*exmcp5/ cb call back or message vector / '', '_cb' / lang languages / c '.c', fortran90 '.f90', delphi '.dpr', java '.java'/ bc GAMS build codes / wei, lag, leg, deg, dac / extequExample(ex,cb,lang) / er1 .'_cb'.C er1c er1 .'_cb'.Fortran90 er1f er2 .'_cb'.C er2c er2 .'_cb'.Fortran90 er2f er3 .'_cb'.C er3c er3 .'_cb'.Fortran90 er3f ex1 .'' .C ex1c ex1 .'' .Fortran90 ex1f ex1 .'' .Delphi ex1d ex1 .'' .Java Ex1j ex1 .'_cb'.C ex1c ex1 .'_cb'.Fortran90 ex1f ex1 .'_cb'.Delphi ex1d ex1x .''. Fortran90 ex1xf ex1x .'_cb'.C ex1xc ex2 .'_cb'.C ex2c ex2 .'_cb'.Fortran90 ex2f ex2 .'_cb'.Delphi ex2d ex3 .'' .Delphi ex3d ex3 .'_cb'.C ex3c ex3 .'_cb'.Fortran90 ex3f ex4 .'' .Delphi ex4d ex4 .'_cb'.C ex4c ex4 .'_cb'.Fortran90 ex4f ex4x .'_cb'.C ex4xc ex4x .'_cb'.Fortran90 ex4xf ex5 .'' .C ex5c ex5 .'' .Fortran90 ex5f ex6 .'' .C ex6c exmcp1.'' .C exmcp1c exmcp1.'' .Fortran90 exmcp1f exmcp2.'' .C exmcp2c exmcp2.'' .Fortran90 exmcp2f exmcp2.'_cb'.C exmcp2c exmcp2.'_cb'.Fortran90 exmcp2f exmcp3.'_cb'.C exmcp3c exmcp3.'_cb'.Fortran90 exmcp3f exmcp4.'_cb'.C exmcp4c exmcp4.'_cb'.Fortran90 exmcp4f exmcp5.'' .C exmcp5c /; Set os / Windows '.dll', Unix '.so', Mac '.dylib'/; Set ExtraFiles(os,cb,lang) / Unix. '_cb'.Fortran90 gehelper.f90 msg2_f.f90 Unix. '' .Fortran90 gehelper.f90 Windows.'_cb'.Fortran90 gehelper.f90 msg2_f.f90 Windows.'' .Fortran90 gehelper.f90 /; ExtraFiles('Mac',cb,lang) = ExtraFiles('Unix',cb,lang); $set myos Windows $ifI %system.filesys%==unix $set myos Unix $ifI %system.platform%==dex $set myos Mac $ifI %system.platform%==dax $set myos Mac *Since we need to call compilers, run only during our tests (that is GSYS has been setup) $ifI not %sysenv.GSYS% == %system.buildcode% $exit *Now exclude the testers, as they don't have all compilers (nocomp is set in quality for the testers) $if set nocomp $exit *for Java: before using the DLL make sure jvm.dll is in the PATH $ifI %system.buildcode%==wei $prefixPath C:\Java\bin\server * anton.gams.com $ifI %system.buildcode%==lag $setEnv LD_LIBRARY_PATH /usr/lib/jvm/jre/lib/server:%SysEnv.LD_LIBRARY_PATH% $ifI %system.buildcode%==leg $setEnv LD_LIBRARY_PATH /usr/lib/jvm/jre/lib/server:%SysEnv.LD_LIBRARY_PATH% *$ifI %system.buildcode%==deg $setEnv DYLD_LIBRARY_PATH/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Libraries:%SysEnv.LD_LIBRARY_PATH% *running single example from set $if not set TEST $goTo alltests set ex2(ex) / %TEST% /; $goTo singletests $label alltests set ex2(ex); ex2(ex) = yes; $label singletests *not running single example from set $if not set NOTEST $goTo noalltest set exn(ex) /%NOTEST%/; ex2(ex) = not exn(ex); $label noalltest *under macOS no java $if not set LAN $ifI %system.buildcode%==deg $set LAN "c,fortran90,delphi" $if not set LAN $ifI %system.buildcode%==dac $set LAN "c,fortran90,delphi" *under WEI no delphi, # 2237 $ifI %system.buildcode%==wei $set LAN "c,fortran90,java" *run examples with defined language $if not set LAN $goTo alllang set lang2(lang) / %LAN% /; $goTo singlelang $label alllang set lang2(lang); lang2(lang) = yes; $label singlelang * p3c makefile does not handle spaces in the path to the library that is build, #5912 * (for WEI, this skip is redundant, see above mention of #2237) lang2('delphi') = no; scalar fp; file fpf / pf.txt /; file fx; loop(ex2(ex)$sum(extequExample(ex,cb,lang2),1), Put_utility fx 'exec' /'testlib -q ' ex.tl; loop(extequExample(ex,cb,lang2(lang)), put fpf / 'eolonly=1' / '--lang=', lang.tl:0 / '--files='; loop(ExtraFiles('%myos%',cb,lang), put ExtraFiles.te('%myos%',cb,lang) ' '); put extequExample.te(extequExample); put cb.tl:0 lang.te(lang); put / '--libname=' put extequExample.te(extequExample); loop(os$sameas('%myos%',os), put cb.tl:0 os.te(os)); put / '--namestub=' put extequExample.te(extequExample); putclose fpf; execute 'gams complink idir=.. lo=%gams.lo% pf=pf.txt' abort$errorlevel 'problems compiling'; ) put fpf / 'input=' ex.tl:0 '.gms' loop(extequExample(ex,cb,lang2(lang)), put / '--run'; fp = fpf.cc; put lang.tl:0; put @(fp+1) ' '; put @(fp+1) cb.tl:0 '=yes' ); putclose fpf; execute 'gams dummy lo=%gams.lo% pf=pf.txt'; abort$errorlevel 'problems running example'; );