pfmaptst.gms : Checks files in distribution

Description

Compares the list of existing files with the list of expected files.

Contributor: Lutz

 For changes on all platforms


Small Model of Type : GAMS


Category : GAMS Test library


Main file : pfmaptst.gms

$title 'Checks files in distribution' (GMSPFMAPTEST,SEQ=352)

$ontext
Compares the list of existing files with the list of expected files.

Contributor: Lutz
$offtext

$offlisting
$if not set GOLD $set GOLD 0
*For changes on all platforms
$set ALLPF (AIX,DEG,LEG,SIG,SOX,VS8,WEI)
$set JAVPF (    DEG,LEG,SIG,SOX,VS8,WEI)
$set ALLNX (                    VS8,WEI)
$set ALLUX (AIX,DEG,LEG,SIG,SOX        )

alias (*,prd,prda,dir,fil);
set ppp                                Possible platforms /aix,bgp,lnx,sig,sol,sox,vs8,deg,dei,dig,leg,wei/;

*Sets containing input data
set curfil(prd,dir,fil)                Files of current version
    lstall(ppp,prd,dir,fil)            Files of last version containing all platforms
    lstfil(prd,dir,fil)                Files of last version
    curprd(prd)                        All products contained in current version
    lstprd(prd)                        All products contained in last version
*Sets containing expected products/files
    expprd(prd)                        Expected products
    expfil(prd,dir,fil)                Expected files
*Sets containing errors
    nexprd(prd)                        Products being not expected but contained in current version
    misprd(prd)                        Products missing in current version
    drwprd(prd)                        Products dropped wrongly (dropped but not in previous version)
    adwprd(prd)                        Products added wrongly (added but already in previous version)
    nexfil(prd,dir,fil)                Files per product and directory being not expected but contained in current version
    misfil(prd,dir,fil)                Files per product and directory missing in current version
    drwfil(prd,dir,fil)                Files per product and directory dropped wrongly (dropped but not in previous version)
    adwfil(prd,dir,fil)                Files per product and directory added wrongly (added but already in previous version)
    nexfila(prd,dir,fil)               Files per product and directory being not expected but contained in current version (for solver aliases)
    misfila(prd,dir,fil)               Files per product and directory missing in current version (for solver aliases)
    wronga(prd)                        Alias entered for a product which does not exist
*Sets containing expected changes
$onempty
    newprd(ppp,prd)             New products /
                                    deg.(decisc,decism,decis)
                                    (leg,deg,vs8,wei).(solveengine)
                                /
    drpprd(ppp,prd)             Dropped products /
                                /


$onecho > modlib.txt
'dqq.414', 'pilot4.gdx', 'pilot.gdx', 'pilot87.gdx'
           'tma_me.gdx', 'glcaerwt.gdx', 'glcalift.gdx'
'cbenders.415', 'robustlp.416'
$offecho

$onecho > tstlib.txt
'fnsincosintrv.714', 'procdir1.715', 'empbp06.716'
'fnslexp.717',   'fnslexp.gdx',   'fnslexp2.718'
'fnsqexp.719',   'fnsqexp.gdx',   'fnsqexp2.720'
'fnsllog10.721', 'fnsllog10.gdx', 'fnsllog102.722'
'fnsqlog10.723', 'fnsqlog10.gdx', 'fnsqlog102.724'
'fnslrec.725',   'fnslrec.gdx',   'fnslrec2.726'
'fnsqrec.727',   'fnsqrec.gdx',   'fnsqrec2.728'
'fnloggamma.729','fnloggamma.gdx','fnbinomial.730','fnbinomial.gdx','fnfact.gdx'
'fnlogbeta.732', 'fnlogbeta.gdx', 'fnbeta.733',    'fnbeta.gdx'
'breakcont2.731','ssuffix.734',   'embpy01.735',   'embpy02.736'
$offecho

*$onecho > emplib.txt
*$offecho

$onecho > datalib.txt
'embeddedSort.gms', 'embeddedSplit.gms', 'embeddedMultiInstance.gms'
$offecho

*$onecho > apilib.txt
*$offecho

$onEchoV > wrapperlib.inc
                               (AIX,LEG,SIG,SOX).(%1 . '%2'           .('lib%3lib64.so'))
                                DEG             .(%1 . '%2'           .('lib%3lib64.dylib'))
                                VS8             .(%1 . '%2'           .('%3lib.dll'))
                                WEI             .(%1 . '%2'           .('%3lib64.dll'))
$offEcho

$onEchoV > api.inc
                                %ALLPF% . %1     .('./apifiles/C/api'    .('%2cc.c','%2cc.h')
                                                          './apifiles/Java/api' .('%2.java','%2jni.c')
                                                          './apifiles/Python/api'.('%2cc.i','%2cc.py','%2cc_wrap.c','%2setup.py')
                                                          './apifiles/C++/api'  .('%2co.cpp','%2co.hpp')
                                                          './apifiles/CSharp/api'.'%2cs.cs'
                                                          './apifiles/Delphi/api'.('%2dcpdef.pas','%2docpdef.pas','%2dopdef.pas','%2dpdef.pas')
                                                          './apifiles/Fortran/api'.('%2f9def.f90','%2f9glu.c','%2f9glu.h','%2ifort32def.def','%2ifort32def.f90','%2ifort32deflib.f90','%2ifort64def.def','%2ifort64def.f90','%2ifort64deflib.f90','%2lfdef.def','%2lfdef.f90','%2lfdeflib.f90')
                                                          './apifiles/VBA/api'  . '%2vba.bas'
                                                          './apifiles/VBnet/api'. '%2vbnet.vb'
                                                          './docs/apis/expert-level'.'%2qdrep.html')
                          (LEG,VS8,WEI) . %1     . './apifiles/Python/api_26'      .('%2cc.py')
                                %ALLNX% . %1     .('./apifiles/Python/api','./apifiles/Python/api_26').'_%2cc.pyd'
                                    LEG . %1     .('./apifiles/Python/api','./apifiles/Python/api_26').'_%2cc.so'
                                    DEG . %1     . './apifiles/Python/api'                            .'_%2cc.so'
                                    VS8 . %1     . './apifiles/Java/api'                              .'%2jni.dll'
                                    WEI . %1     . './apifiles/Java/api'                              .'%2jni64.dll'
                      (AIX,LEG,SIG,SOX) . %1     . './apifiles/Java/api'                              .'lib%2jni64.so'
                                    DEG . %1     . './apifiles/Java/api'                              .'lib%2jni64.dylib'
$offEcho

    newfil(ppp,prd,dir,fil)     New files per product and directory /

                                 %ALLPF% .(
                                            gamsAPI .('./apifiles/C/api'          .('emblib.h', 'embpyoo.h', 'gcdllinit.h', 'emblib.c', 'embpyoo.c'))
APILibrary.'./apilib_ml'.'CPPex3.gms'

gamsAPI.'./apifiles/C++/api'.(
"cfgmco.cpp", "dctmco.cpp",  "gdxco.cpp", "gevmco.cpp", "gmdco.cpp", "gmomco.cpp", "idxco.cpp", "optco.cpp"
"cfgmco.hpp", "dctmco.hpp",  "gdxco.hpp", "gevmco.hpp", "gmdco.hpp", "gmomco.hpp", "idxco.hpp", "optco.hpp"
)
gamsAPI.'./apifiles/CPPnet/Transport5'.'app.ico'
gamsAPI.'./apifiles/CPPnet/Transport5'.'app.rc'                 ,    gamsAPI.'./apifiles/CPPnet/Transport5'.'AssemblyInfo.cpp'       ,    gamsAPI.'./apifiles/CPPnet/Transport5'.'resource.h'
gamsAPI.'./apifiles/CPPnet/Transport5'.'stdafx.cpp'             ,    gamsAPI.'./apifiles/CPPnet/Transport5'.'stdafx.h'               ,    gamsAPI.'./apifiles/CPPnet/Transport5'.'Transport5.cpp'
gamsAPI.'./apifiles/CPPnet/Transport5'.'Transport5.vcxproj'     ,    gamsAPI.'./apifiles/CPPnet/Transport3'.'app.ico'                ,    gamsAPI.'./apifiles/CPPnet/Transport3'.'app.rc'
gamsAPI.'./apifiles/CPPnet/Transport3'.'AssemblyInfo.cpp'       ,    gamsAPI.'./apifiles/CPPnet/Transport3'.'resource.h'             ,    gamsAPI.'./apifiles/CPPnet/Transport3'.'stdafx.cpp'
gamsAPI.'./apifiles/CPPnet/Transport3'.'stdafx.h'               ,    gamsAPI.'./apifiles/CPPnet/Transport3'.'Transport3.cpp'         ,    gamsAPI.'./apifiles/CPPnet/Transport3'.'Transport3.vcxproj'
gamsAPI.'./apifiles/CPPnet/Transport4'.'app.ico'                ,    gamsAPI.'./apifiles/CPPnet/Transport4'.'app.rc'                 ,    gamsAPI.'./apifiles/CPPnet/Transport4'.'AssemblyInfo.cpp'
gamsAPI.'./apifiles/CPPnet/Transport4'.'resource.h'             ,    gamsAPI.'./apifiles/CPPnet/Transport4'.'stdafx.cpp'             ,    gamsAPI.'./apifiles/CPPnet/Transport4'.'stdafx.h'
gamsAPI.'./apifiles/CPPnet/Transport4'.'Transport4.cpp'         ,    gamsAPI.'./apifiles/CPPnet/Transport4'.'Transport4.vcxproj'     ,    gamsAPI.'./apifiles/CPPnet/Transport10'.'app.ico'
gamsAPI.'./apifiles/CPPnet/Transport10'.'app.rc'                 ,    gamsAPI.'./apifiles/CPPnet/Transport10'.'AssemblyInfo.cpp'       ,    gamsAPI.'./apifiles/CPPnet/Transport10'.'resource.h'
gamsAPI.'./apifiles/CPPnet/Transport10'.'stdafx.cpp'             ,    gamsAPI.'./apifiles/CPPnet/Transport10'.'stdafx.h'               ,    gamsAPI.'./apifiles/CPPnet/Transport10'.'Transport10.cpp'
gamsAPI.'./apifiles/CPPnet/Transport10'.'Transport10.vcxproj'    ,    gamsAPI.'./apifiles/CPPnet/Transport11'.'app.ico'                ,    gamsAPI.'./apifiles/CPPnet/Transport11'.'app.rc'
gamsAPI.'./apifiles/CPPnet/Transport11'.'AssemblyInfo.cpp'       ,    gamsAPI.'./apifiles/CPPnet/Transport11'.'resource.h'             ,    gamsAPI.'./apifiles/CPPnet/Transport11'.'stdafx.cpp'
gamsAPI.'./apifiles/CPPnet/Transport11'.'stdafx.h'               ,    gamsAPI.'./apifiles/CPPnet/Transport11'.'Transport11.cpp'        ,    gamsAPI.'./apifiles/CPPnet/Transport11'.'Transport11.vcxproj'
gamsAPI.'./apifiles/CPPnet/Transport7'.'app.ico'                ,    gamsAPI.'./apifiles/CPPnet/Transport7'.'app.rc'                 ,    gamsAPI.'./apifiles/CPPnet/Transport7'.'AssemblyInfo.cpp'
gamsAPI.'./apifiles/CPPnet/Transport7'.'resource.h'             ,    gamsAPI.'./apifiles/CPPnet/Transport7'.'stdafx.cpp'             ,    gamsAPI.'./apifiles/CPPnet/Transport7'.'stdafx.h'
gamsAPI.'./apifiles/CPPnet/Transport7'.'Transport7.cpp'         ,    gamsAPI.'./apifiles/CPPnet/Transport7'.'Transport7.vcxproj'     ,    gamsAPI.'./apifiles/CPPnet/Transport9'.'app.ico'
gamsAPI.'./apifiles/CPPnet/Transport9'.'app.rc'                 ,    gamsAPI.'./apifiles/CPPnet/Transport9'.'AssemblyInfo.cpp'       ,    gamsAPI.'./apifiles/CPPnet/Transport9'.'resource.h'
gamsAPI.'./apifiles/CPPnet/Transport9'.'stdafx.cpp'             ,    gamsAPI.'./apifiles/CPPnet/Transport9'.'stdafx.h'               ,    gamsAPI.'./apifiles/CPPnet/Transport9'.'Transport9.cpp'
gamsAPI.'./apifiles/CPPnet/Transport9'.'Transport9.vcxproj'     ,    gamsAPI.'./apifiles/CPPnet'.'TransportSeq.sln'       ,    gamsAPI.'./apifiles/CPPnet/Transport6'.'app.ico'
gamsAPI.'./apifiles/CPPnet/Transport6'.'app.rc'                 ,    gamsAPI.'./apifiles/CPPnet/Transport6'.'AssemblyInfo.cpp'       ,    gamsAPI.'./apifiles/CPPnet/Transport6'.'resource.h'
gamsAPI.'./apifiles/CPPnet/Transport6'.'stdafx.cpp'             ,    gamsAPI.'./apifiles/CPPnet/Transport6'.'stdafx.h'               ,    gamsAPI.'./apifiles/CPPnet/Transport6'.'Lock.cpp'
gamsAPI.'./apifiles/CPPnet/Transport6'.'Lock.h'                 ,    gamsAPI.'./apifiles/CPPnet/Transport6'.'Transport6.cpp'         ,    gamsAPI.'./apifiles/CPPnet/Transport6'.'Transport6.vcxproj'
gamsAPI.'./apifiles/CPPnet/Transport2'.'app.ico'                ,    gamsAPI.'./apifiles/CPPnet/Transport2'.'app.rc'                 ,    gamsAPI.'./apifiles/CPPnet/Transport2'.'AssemblyInfo.cpp'
gamsAPI.'./apifiles/CPPnet/Transport2'.'resource.h'             ,    gamsAPI.'./apifiles/CPPnet/Transport2'.'stdafx.cpp'             ,    gamsAPI.'./apifiles/CPPnet/Transport2'.'stdafx.h'
gamsAPI.'./apifiles/CPPnet/Transport2'.'Transport2.cpp'         ,    gamsAPI.'./apifiles/CPPnet/Transport2'.'Transport2.vcxproj'     ,    gamsAPI.'./apifiles/CPPnet/Transport8'.'app.ico'
gamsAPI.'./apifiles/CPPnet/Transport8'.'app.rc'                 ,    gamsAPI.'./apifiles/CPPnet/Transport8'.'AssemblyInfo.cpp'       ,    gamsAPI.'./apifiles/CPPnet/Transport8'.'resource.h'
gamsAPI.'./apifiles/CPPnet/Transport8'.'stdafx.cpp'             ,    gamsAPI.'./apifiles/CPPnet/Transport8'.'stdafx.h'               ,    gamsAPI.'./apifiles/CPPnet/Transport8'.'Lock.cpp'
gamsAPI.'./apifiles/CPPnet/Transport8'.'Lock.h'                 ,    gamsAPI.'./apifiles/CPPnet/Transport8'.'Transport8.cpp'         ,    gamsAPI.'./apifiles/CPPnet/Transport8'.'Transport8.vcxproj'
gamsAPI.'./apifiles/CPPnet/Transport1'.'app.ico'                ,    gamsAPI.'./apifiles/CPPnet/Transport1'.'app.rc'                 ,    gamsAPI.'./apifiles/CPPnet/Transport1'.'AssemblyInfo.cpp'
gamsAPI.'./apifiles/CPPnet/Transport1'.'resource.h'             ,    gamsAPI.'./apifiles/CPPnet/Transport1'.'stdafx.cpp'             ,    gamsAPI.'./apifiles/CPPnet/Transport1'.'stdafx.h'
gamsAPI.'./apifiles/CPPnet/Transport1'.'Transport1.cpp'         ,    gamsAPI.'./apifiles/CPPnet/Transport1'.'Transport1.vcxproj'     ,
                                          ModelLibrary  . './gamslib_ml'.(
$include modlib.txt
)
                                          TestLibrary   . './testlib_ml'.(
$include tstlib.txt
)
                                          DataLibrary   . './datalib_ml'.(
$include datalib.txt
)
*                                          EmpLibrary    . './emplib_ml'.(
*$include emplib.txt
*)
*                                          APILibrary    . './apilib_ml'.(
*$include apilib.txt
*)
                                          gamsAPI   . './apifiles/Java/interrupt' .'InterruptGUI.java'
                                          gamsAPI   . './apifiles/Java/transport' .'TransportGUI.java'
                                 )
                                 %ALLNX%.(
                                          gamsAPI   . './apifiles/Python/api_36'  .('gamsxcc.py', '_gamsxcc.pyd')
                                          gdxAPI    . './apifiles/Python/api_36'  .('gdxcc.py', '_gdxcc.pyd')
                                          gmdAPI    . './apifiles/Python/api_36'  .('gmdcc.py', '_gmdcc.pyd')
                                          idxgdxAPI . './apifiles/Python/api_36'  .('idxcc.py', '_idxcc.pyd')
                                          joatAPI   . './apifiles/Python/api_36'  .('gevmcc.py', '_gevmcc.pyd', 'gmomcc.py', '_gmomcc.pyd','cfgmcc.py', '_cfgmcc.pyd', 'dctmcc.py', '_dctmcc.pyd')
                                          optionAPI . './apifiles/Python/api_36'  .('optcc.py', '_optcc.pyd')
                                          GAMS      . '.'                         .('Qt5Sql.dll', 'Qt5Gui.dll', 'Qt5Widgets.dll')
                                          GAMS      . './sqldrivers'              .('qsqlite.dll', 'qsqlited.dll', 'qsqlmysql.dll', 'qsqlmysqld.dll', 'qsqlodbc.dll', 'qsqlodbcd.dll', 'qsqlpsql.dll', 'qsqlpsqld.dll')
                                          GAMS      . './platforms'               .('qwindows.dll')
                                 )
*                                 %ALLUX%.(
*                                 )
                                AIX     .(
                                          CPLEX     . '.'                         .('libcplex1271remote.a', 'libcplex1271tcpiptransport.a')
                                          GUROBI    . '.'                         .('libaes75.so')
                                         )
                                DEG     .(
                                          BARON     . '.'                         . 'libcplex1271.jnilib'
                                          CPLEXD    . '.'                         .('libcplex1271remote.dylib', 'libcplex1271tcpiptransport.dylib')
                                          GUROBI    . '.'                         .('libgurobi75.so','libaes75.so')
                                          knitro    . '.'                         .'libknitro1030.dylib'
                                          gamsAPI   . './apifiles/Python/api_36'  .('gamsxcc.py', '_gamsxcc.so')
                                          gdxAPI    . './apifiles/Python/api_36'  .('gdxcc.py', '_gdxcc.so')
                                          gmdAPI    . './apifiles/Python/api_36'  .('gmdcc.py', '_gmdcc.so')
                                          idxgdxAPI . './apifiles/Python/api_36'  .('idxcc.py', '_idxcc.so')
                                          joatAPI   . './apifiles/Python/api_36'  .('gevmcc.py', '_gevmcc.so', 'gmomcc.py', '_gmomcc.so', 'dctmcc.py', '_dctmcc.so', 'cfgmcc.py', '_cfgmcc.so')
                                          optionAPI . './apifiles/Python/api_36'  .('optcc.py', '_optcc.so')
                                          DECISC    . '.'                         .('decisc','gmsdecus.run','gmsderux.out','gmsdesux.out','gmsdetux.out','decis.lic')
                                          DECISM    . '.'                         .('decism','gmsdemus.run','gmsderux.out','gmsdesux.out','gmsdetux.out','decis.lic')
                                          DECIS     . '.'                         .('gmsderux.out','gmsdesux.out','gmsdetux.out','decis.lic','libsptdclib64.dylib','optde.def','optdecis.def','optlindo.def')
                                          GAMS      .('.'                         .('QtCore','libz.1.dylib','libembpycclib64.dylib'),
                                                      './apifiles/Python/api_36'  .'gamsemb.py')
                                         (LINDO,LINDOGLOBAL).'.'                  .('liblindo64.11.0.dylib', 'libmosek64.8.1.dylib')
                                          solveengine.'.'                         .('libse_cclib64.dylib','optsolveengine.def')
                                          MOSEK.'.'.'libmosek64.8.1.dylib'
                                         )
                                LEG     .(
                                          CPLEXD    . '.'                         .('libcplex1271.so', 'libcplex1271remote.so', 'libcplex1271tcpiptransport.so')
                                          gurobi    . '.'                         .('libgurobi.so.7.5.2', 'libaes75.so')
                                          gamsAPI   . './apifiles/Python/api_36'  .('gamsxcc.py', '_gamsxcc.so')
                                          gdxAPI    . './apifiles/Python/api_36'  .('gdxcc.py', '_gdxcc.so')
                                          gmdAPI    . './apifiles/Python/api_36'  .('gmdcc.py', '_gmdcc.so')
                                          idxgdxAPI . './apifiles/Python/api_36'  .('idxcc.py', '_idxcc.so ')
                                          joatAPI   . './apifiles/Python/api_36'  .('gevmcc.py', '_gevmcc.so', 'gmomcc.py', '_gmomcc.so', 'cfgmcc.py', '_cfgmcc.so', 'dctmcc.py', '_dctmcc.so')
                                          knitro    . '.'                         . 'libknitro1030.so'
                                          optionAPI . './apifiles/Python/api_36'  .('optcc.py', '_optcc.so')
                                          xpress    . '.'                         .('libxprl-2.8.6-x8.3.so', 'libxprl.so.x8.3', 'libxprs.so.31.01.09', 'libxprs.so.31.01')
                                          GAMS      .('.'                         .('libQt5Core.so','libQt5Core.so.5','libgfortran.so.4','libembpycclib64.so')
                                                      './apifiles/Python/api_36'  .'gamsemb.py')
                                         (LINDO,LINDOGLOBAL).'.'                  .('liblindo64.so.11.0', 'libmosek64.so.8.1', 'libgfortran.so.3')
                                          solveengine.'.'                         .('libse_cclib64.so','optsolveengine.def')
                                          MOSEK.'.'.'libmosek64.so.8.1'
                                         )
                                SIG     .(
                                          xpress    . '.'                         .('libxprl-2.8.6-x8.3.so', 'libxprl.so.x8.3', 'libxprs.so.31.01.09', 'libxprs.so.31.01')
                                         )
                                SOX     .(
                                          xpress    . '.'                         .('libxprl-2.8.6-x8.3.so', 'libxprl.so.x8.3', 'libxprs.so.31.01.09', 'libxprs.so.31.01')
                                         )
                                VS8     .(
                                          GUROBI    . '.'                         .('gurobi75.dll','aes75.dll')
                                          GAMS      .('.'                         .('Qt5Core.dll','embpycclib.dll','msvcp140.dll')
                                                      './apifiles/Python/api_36'  . 'gamsemb.py'
                                                      './apifiles/C/api'  . 'emblib.def'
                                                     )
                                          knitro    . '.'                         . 'knitro1030.dll'
                                         (LINDO,LINDOGLOBAL).'.'                  .('lindo11_0.dll', 'mosek8_1.dll')
                                          solveengine.'.'                         .('se_cclib.dll','optsolveengine.def','cacert.pem')
                                          MOSEK.'.'.'mosek8_1.dll'
                                         )
                                WEI     .(
                                          BARON     . '.'                         . 'cplex1271.dll'
                                          CPLEX     . '.'                         . 'cplex1271.dll'
                                          CPLEXD    . '.'                         .('cplex1271.dll', 'cplex1271remote.dll', 'cplex1271tcpiptransport.dll')
                                          DECISC    . '.'                         . 'cplex1271.dll'
                                          GAMS      .('.'                         .('Qt5Core.dll','embpycclib64.dll','msvcp140.dll')
                                                      './apifiles/Python/api_36'  . 'gamsemb.py')
                                          GUROBI    . '.'                         .('gurobi75.dll','aes75.dll')
                                          knitro    . '.'                         . 'knitro1030.dll'
                                         (LINDO,LINDOGLOBAL).'.'                  .('lindo64_11_0.dll', 'mosek64_8_1.dll')
                                          solveengine.'.'                         .('se_cclib64.dll','optsolveengine.def','cacert.pem')
                                          MOSEK.'.'.'mosek64_8_1.dll'
                                         )
                                /
    drpfil(ppp,prd,dir,fil)     Dropped files per product and directory /
                                %ALLPF% .(TestLibrary.'./testlib_ml'.'doc02.682'
                                           gamsAPI    .('./apifiles/C++'.'TransportSeq.sln',
                                                        './apifiles/C++/Transport1'.'app.ico',
                                                        './apifiles/C++/Transport1'.'app.rc',
                                                        './apifiles/C++/Transport1'.'AssemblyInfo.cpp',
                                                        './apifiles/C++/Transport1'.'resource.h',
                                                        './apifiles/C++/Transport1'.'stdafx.cpp',
                                                        './apifiles/C++/Transport1'.'stdafx.h',
                                                        './apifiles/C++/Transport10'.'app.ico',
                                                        './apifiles/C++/Transport10'.'app.rc',
                                                        './apifiles/C++/Transport10'.'AssemblyInfo.cpp',
                                                        './apifiles/C++/Transport10'.'resource.h',
                                                        './apifiles/C++/Transport10'.'stdafx.cpp',
                                                        './apifiles/C++/Transport10'.'stdafx.h',
                                                        './apifiles/C++/Transport11'.'app.ico',
                                                        './apifiles/C++/Transport11'.'app.rc',
                                                        './apifiles/C++/Transport11'.'AssemblyInfo.cpp',
                                                        './apifiles/C++/Transport11'.'resource.h',
                                                        './apifiles/C++/Transport11'.'stdafx.cpp',
                                                        './apifiles/C++/Transport11'.'stdafx.h',
                                                        './apifiles/C++/Transport2'.'app.ico',
                                                        './apifiles/C++/Transport2'.'app.rc',
                                                        './apifiles/C++/Transport2'.'AssemblyInfo.cpp',
                                                        './apifiles/C++/Transport2'.'resource.h',
                                                        './apifiles/C++/Transport2'.'stdafx.cpp',
                                                        './apifiles/C++/Transport2'.'stdafx.h',
                                                        './apifiles/C++/Transport3'.'app.ico',
                                                        './apifiles/C++/Transport3'.'app.rc',
                                                        './apifiles/C++/Transport3'.'AssemblyInfo.cpp',
                                                        './apifiles/C++/Transport3'.'resource.h',
                                                        './apifiles/C++/Transport3'.'stdafx.cpp',
                                                        './apifiles/C++/Transport3'.'stdafx.h',
                                                        './apifiles/C++/Transport4'.'app.ico',
                                                        './apifiles/C++/Transport4'.'app.rc',
                                                        './apifiles/C++/Transport4'.'AssemblyInfo.cpp',
                                                        './apifiles/C++/Transport4'.'resource.h',
                                                        './apifiles/C++/Transport4'.'stdafx.cpp',
                                                        './apifiles/C++/Transport4'.'stdafx.h',
                                                        './apifiles/C++/Transport5'.'app.ico',
                                                        './apifiles/C++/Transport5'.'app.rc',
                                                        './apifiles/C++/Transport5'.'AssemblyInfo.cpp',
                                                        './apifiles/C++/Transport5'.'resource.h',
                                                        './apifiles/C++/Transport5'.'stdafx.cpp',
                                                        './apifiles/C++/Transport5'.'stdafx.h',
                                                        './apifiles/C++/Transport6'.'app.ico',
                                                        './apifiles/C++/Transport6'.'app.rc',
                                                        './apifiles/C++/Transport6'.'AssemblyInfo.cpp',
                                                        './apifiles/C++/Transport6'.'resource.h',
                                                        './apifiles/C++/Transport6'.'stdafx.cpp',
                                                        './apifiles/C++/Transport6'.'stdafx.h',
                                                        './apifiles/C++/Transport6'.'Lock.cpp',
                                                        './apifiles/C++/Transport6'.'Lock.h',
                                                        './apifiles/C++/Transport7'.'app.ico',
                                                        './apifiles/C++/Transport7'.'app.rc',
                                                        './apifiles/C++/Transport7'.'AssemblyInfo.cpp',
                                                        './apifiles/C++/Transport7'.'resource.h',
                                                        './apifiles/C++/Transport7'.'stdafx.cpp',
                                                        './apifiles/C++/Transport7'.'stdafx.h',
                                                        './apifiles/C++/Transport8'.'app.ico',
                                                        './apifiles/C++/Transport8'.'app.rc',
                                                        './apifiles/C++/Transport8'.'AssemblyInfo.cpp',
                                                        './apifiles/C++/Transport8'.'resource.h',
                                                        './apifiles/C++/Transport8'.'stdafx.cpp',
                                                        './apifiles/C++/Transport8'.'stdafx.h',
                                                        './apifiles/C++/Transport8'.'Lock.cpp',
                                                        './apifiles/C++/Transport8'.'Lock.h',
                                                        './apifiles/C++/Transport9'.'app.ico',
                                                        './apifiles/C++/Transport9'.'app.rc',
                                                        './apifiles/C++/Transport9'.'AssemblyInfo.cpp',
                                                        './apifiles/C++/Transport9'.'resource.h',
                                                        './apifiles/C++/Transport9'.'stdafx.cpp',
                                                        './apifiles/C++/Transport9'.'stdafx.h',
                                                        './apifiles/C++'.'xp_example1.cpp',
                                                        './apifiles/C++'.'xp_example1.vcproj',
                                                        './apifiles/C++'.'xp_example2.cpp',
                                                        './apifiles/C++'.'xp_example2.vcproj'
                                                        )
'gamsAPI'.'./apifiles/C++/Transport1' .'Transport1.cpp'     ,    'gamsAPI'.'./apifiles/C++/Transport1' .'Transport1.vcxproj' ,    'gamsAPI'.'./apifiles/C++/Transport10'.'Transport10.cpp'
'gamsAPI'.'./apifiles/C++/Transport10'.'Transport10.vcxproj',    'gamsAPI'.'./apifiles/C++/Transport11'.'Transport11.cpp'    ,    'gamsAPI'.'./apifiles/C++/Transport11'.'Transport11.vcxproj'
'gamsAPI'.'./apifiles/C++/Transport2' .'Transport2.cpp'     ,    'gamsAPI'.'./apifiles/C++/Transport2' .'Transport2.vcxproj' ,    'gamsAPI'.'./apifiles/C++/Transport3' .'Transport3.cpp'
'gamsAPI'.'./apifiles/C++/Transport3' .'Transport3.vcxproj' ,    'gamsAPI'.'./apifiles/C++/Transport4' .'Transport4.cpp'     ,    'gamsAPI'.'./apifiles/C++/Transport4' .'Transport4.vcxproj'
'gamsAPI'.'./apifiles/C++/Transport5' .'Transport5.cpp'     ,    'gamsAPI'.'./apifiles/C++/Transport5' .'Transport5.vcxproj' ,    'gamsAPI'.'./apifiles/C++/Transport6' .'Transport6.cpp'
'gamsAPI'.'./apifiles/C++/Transport6' .'Transport6.vcxproj' ,    'gamsAPI'.'./apifiles/C++/Transport7' .'Transport7.cpp'     ,    'gamsAPI'.'./apifiles/C++/Transport7' .'Transport7.vcxproj'
'gamsAPI'.'./apifiles/C++/Transport8' .'Transport8.cpp'     ,    'gamsAPI'.'./apifiles/C++/Transport8' .'Transport8.vcxproj' ,    'gamsAPI'.'./apifiles/C++/Transport9' .'Transport9.cpp'
'gamsAPI'.'./apifiles/C++/Transport9' .'Transport9.vcxproj'
)
                                AIX     .(
                                          CPLEX     . '.'                         .('libcplex1270remote.a', 'libcplex1270tcpiptransport.a')
                                          GUROBI    . '.'                         .('libaes70.so')
                                         )
                                DEG     .(
                                          GUROBI    . '.'                         .('libgurobi70.so','libaes70.so')
                                          BARON     . '.'                         . 'libcplex1270.jnilib'
                                          CPLEXD    . '.'                         .('libcplex1270remote.dylib', 'libcplex1270tcpiptransport.dylib')
                                          knitro    . '.'                         .'libknitro.dylib'
                                         (LINDO,LINDOGLOBAL).'.'                  .('liblindo64.10.0.dylib', 'libmosek64.7.1.dylib')
                                          MOSEK.'.'.'libmosek64.8.0.dylib'
                                         )
                                LEG     .(
                                          CPLEXD    . '.'                         .('libcplex1270.so', 'libcplex1270remote.so', 'libcplex1270tcpiptransport.so')
                                          gurobi    . '.'                         .('libgurobi.so.7.0.1','libaes70.so')
                                          knitro    . '.'                         .('libknitro.so.10.2.0','libknitro.so.10')
                                         (LINDO,LINDOGLOBAL).'.'                  .('liblindo64.so.10.0', 'libmosek64.so.7.1')
                                          xpress    . '.'                         .('libxprl-2.8.0-x8.0.so', 'libxprl.so.x8.0', 'libxprs.so.29.01.11', 'libxprs.so.29.01')
                                          gams.'.'.'libgfortran.so.3'
                                          MOSEK.'.'.'libmosek64.so.8.0'
                                         )
                                SIG     .(
                                          xpress    . '.'                         .('libxprl-2.8.0-x8.0.so', 'libxprl.so.x8.0', 'libxprs.so.29.01.07', 'libxprs.so.29.01')
                                         )
                                SOX     .(
                                          xpress    . '.'                         .('libxprl-2.8.0-x8.0.so', 'libxprl.so.x8.0', 'libxprs.so.29.01.07', 'libxprs.so.29.01')
                                         )
                                VS8     .(
                                          GUROBI    . '.'                         .('gurobi70.dll','aes70.dll')
                                          knitro    . '.'                         . 'knitro1020.dll'
                                         (LINDO,LINDOGLOBAL).'.'                  .('lindo10_0.dll', 'mosek7_1.dll')
                                          model2tex . '.'                         .('bz2.pyd', 'model2tex.lib', 'python27.dll', 'select.pyd', 'unicodedata.pyd', '_gdxcc.pyd', '_hashlib.pyd')
                                          tools . '.'                         .('bz2.pyd', 'model2tex.lib', 'python27.dll', 'select.pyd', 'unicodedata.pyd', '_gdxcc.pyd', '_hashlib.pyd')
                                          kestrel   . '.'                         .('bz2.pyd', 'kestrel.lib', 'pyexpat.pyd', 'python27.dll', 'select.pyd', 'unicodedata.pyd', '_ctypes.pyd', '_gevmcc.pyd', '_gmomcc.pyd', '_hashlib.pyd', '_memimporter.pyd', '_multiprocessing.pyd', '_socket.pyd', '_ssl.pyd')
                                          MOSEK.'.'.'mosek8_0.dll'
                                         )
                                WEI     .(
                                          BARON     . '.'                         . 'cplex1270.dll'
                                          CPLEX     . '.'                         . 'cplex1270.dll'
                                          CPLEXD    . '.'                         .('cplex1270.dll', 'cplex1270remote.dll', 'cplex1270tcpiptransport.dll')
                                          DECISC    . '.'                         . 'cplex1270.dll'
                                          GUROBI    . '.'                         .('gurobi70.dll','aes70.dll')
                                          knitro    . '.'                         . 'knitro1020.dll'
                                         (LINDO,LINDOGLOBAL).'.'                  .('lindo64_10_0.dll', 'mosek64_7_1.dll')
                                         model2tex  . '.'                         .('bz2.pyd', 'model2tex.lib', 'python27.dll', 'select.pyd', 'unicodedata.pyd', '_gdxcc.pyd', '_hashlib.pyd')
                                         tools . '.'                         .('bz2.pyd', 'model2tex.lib', 'python27.dll', 'select.pyd', 'unicodedata.pyd', '_gdxcc.pyd', '_hashlib.pyd')
                                         kestrel    . '.'                         .('bz2.pyd', 'kestrel.lib', 'pyexpat.pyd', 'python27.dll', 'select.pyd', 'unicodedata.pyd', '_ctypes.pyd', '_gevmcc.pyd', '_gmomcc.pyd', '_hashlib.pyd', '_memimporter.pyd', '_multiprocessing.pyd', '_socket.pyd', '_ssl.pyd')
                                          MOSEK.'.'.'mosek64_8_0.dll'
                                         )
                                /
$offempty
;

SET APM(ppp,prda,prd) 'Alias Product Map' /
  (    sig    ,vs8,deg,leg,wei).COINBONMIN. BONMIN
  (    sig    ,vs8,deg,leg,wei).BONMINH.    BONMIN
  (    sig    ,vs8,deg,leg,wei).COINCBC.    CBC
  (    sig    ,vs8,deg,leg,wei).COINCOUENNE.COUENNE
  (    sig    ,vs8,deg,leg,wei).COINIPOPT.  IPOPT
  (    sig    ,vs8,deg,leg,wei).IPOPTH.     IPOPT
  (    sig    ,vs8,deg,leg,wei).COINOS.     OS
  (    sig    ,vs8,deg,leg,wei).COINSCIP.   SCIP
  (aix,sig,sox,vs8,deg,leg,wei).CONOPT.     CONOPTD
  (aix,sig,sox,vs8,deg,leg,wei).CONOPT3.    CONOPTD
  (    sig,sox,vs8,deg,leg,wei).LGO.        LGOD
  (aix,sig,sox,vs8,deg,leg,wei).LOGMIP.     JAMS
  (aix,sig,sox,vs8,deg,leg,wei).MILESE.     MILES
  (aix,sig,sox,vs8,deg,leg,wei).MINOS.      MINOS55
  (aix,sig,sox,vs8,deg,leg,wei).MINOS5.     MINOS55
  (aix,sig,sox,vs8,deg,leg,wei).PATH.       PATHC
  (    sig    ,vs8,deg,leg,wei).SOPLEX.     OSISOPLEX
/;

SET prdAlias(prda) 'Aliases of Products';
option prdAlias < APM;

$call rm -f apilib.txt datalib.txt emplib.txt modlib.txt tstlib.txt wrapperlib.inc api.inc

$gdxin "%gams.sysdir%gmspfmap"
$load curfil=pfmap

$gdxin allpfmap
$load lstall=pfmap

$if %GOLD% == 1 $goto mkallpf

lstfil(prd,dir,fil)=lstall('%system.buildcode%',prd,dir,fil);

option curprd<curfil, lstprd<lstfil;

* Skiplist
$onempty
set sPrd(prd)   'Products to be skipped' /
                (GAMSDOTNET, GAMSJAVA, GAMSPYTHON)      'These are skipped in mkpfmap, see #2579'
                GMSPYTHON                               'See #2615'
                Documents                               'too many files and changing too often'
                gamscpp                                 'in development'
                /;
$offempty

expprd(prd)$(not prdAlias(prd)) = lstprd(prd) and not drpprd('%system.buildcode%',prd) or newprd('%system.buildcode%',prd);
expfil(prd,dir,fil)$(not prdAlias(prd)) = lstfil(prd,dir,fil) and not (drpfil('%system.buildcode%',prd,dir,fil) or drpprd('%system.buildcode%',prd)) or newfil('%system.buildcode%',prd,dir,fil);

nexprd(curprd)$(not prdAlias(curprd) and not sPrd(curprd)) = not expprd(curprd);
misprd(expprd)$(not prdAlias(expprd) and not sPrd(expprd)) = not curprd(expprd);
drwprd(prd)$(not prdAlias(prd) and not sPrd(prd))          = drpprd('%system.buildcode%',prd) and not lstprd(prd);
adwprd(prd)$(not prdAlias(prd) and not sPrd(prd)   )       = newprd('%system.buildcode%',prd) and     lstprd(prd);

nexfil(curfil(prd,dir,fil))$(not prdAlias(prd) and not sPrd(prd)) = not expfil(curfil);
misfil(expfil(prd,dir,fil))$(not prdAlias(prd) and not sPrd(prd)) = not curfil(expfil);
drwfil(prd,dir,fil)$(not prdAlias(prd) and not sPrd(prd))         = drpfil('%system.buildcode%',prd,dir,fil) and not lstfil(prd,dir,fil);
adwfil(prd,dir,fil)$(not prdAlias(prd) and not sPrd(prd))         = newfil('%system.buildcode%',prd,dir,fil) and     lstfil(prd,dir,fil);

nexfila(prdAlias,dir,fil) = curfil(prdAlias,dir,fil) and not sum(APM('%system.buildcode%',prdAlias,prd)$(not sPrd(prd)),expfil(prd,dir,fil));
* This is slow, use loop instead
* misfila(prdAlias,dir,fil) = (not curfil(prdAlias,dir,fil)) and sum(APM('%system.buildcode%',prdAlias,prd)$(not sPrd(prd)),expfil(prd,dir,fil));
set fa(dir,fil),fo(dir,fil);
loop(APM('%system.buildcode%',prda,prd)$(not sPrd(prd)),
  fa(dir,fil) = curfil(prda,dir,fil);
  fo(dir,fil) = expfil(prd,dir,fil);
  misfila(prda,dir,fil) = not fa(dir,fil) and fo(dir,fil);
);
wronga(prdAlias) = sum(APM('%system.buildcode%',prdAlias,prd)$(not sPrd(prd)),1) and (sum(APM('%system.buildcode%',prdAlias,expprd),1)=0);

option nexfil:0:0:3,misfil:0:0:3,drwfil:0:0:3,adwfil:0:0:3,nexfila:0:0:3,misfila:0:0:3,wronga:0:0:3;

abort$(card(nexprd) + card(misprd) + card(drwprd) + card(adwprd) + card(nexfil) + card(misfil) + card(drwfil) + card(adwfil) + card(nexfila) + card(misfila) + card(wronga))
      nexprd, misprd, drwprd, adwprd, nexfil, misfil, drwfil, adwfil, nexfila, misfila, wronga;
$exit
$label mkallpf
set curall(ppp,prd,dir,fil)     Files of current version containing all platforms;
curall(ppp,prd,dir,fil) = lstall(ppp,prd,dir,fil) and not (drpfil(ppp,prd,dir,fil) or drpprd(ppp,prd)) or newfil(ppp,prd,dir,fil);
execute_unload 'allpfmap' curall=pfmap;