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.gamsCPP
                                  leg.gamsCPP
                                  (leg,deg,vs8,wei).localsolver70/
    drpprd(ppp,prd)             Dropped products
                                / vs8.cpoptimizer /


$onecho > modlib.txt
'embmiex1.417','spbenders1.418','spbenders2.419','spbenders3.420','spbenders4.421','spbenders5.422'
$offecho

$onecho > tstlib.txt
'scensol7.737', 'emp27.738', 'embpy03.739', 'qcp11.740', 'put11.741'
$offecho

*$onecho > emplib.txt
*$offecho

*$onecho > datalib.txt
*$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/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/CSharp/TransportGDX'.('TransportGDX.cs', 'TransportGDX.csproj')
                                                        './apifiles/CSharp/TransportGDX/Properties'.'AssemblyInfo.cs'
                                                        './apifiles/Python'    . 'transport_gdx.py')
                                          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
*)
                                         )
                                 %ALLNX%.(
                                          gamsCPP.('./apifiles/C++'               .('examples-vs2013.sln'          )
                                                   './apifiles/C++/domainchecking'.('DomainChecking-vs2013.vcxproj')
												   './apifiles/C++/transportGDX'  .('TransportGDX-vs2013.vcxproj'  )
                                                   './apifiles/C++/transport1'    .('Transport1-vs2013.vcxproj'    )
                                                   './apifiles/C++/transport2'    .('Transport2-vs2013.vcxproj'    )
                                                   './apifiles/C++/transport3'    .('Transport3-vs2013.vcxproj'    )
                                                   './apifiles/C++/transport4'    .('Transport4-vs2013.vcxproj'    )
                                                   './apifiles/C++/transport5'    .('Transport5-vs2013.vcxproj'    )
                                                   './apifiles/C++/transport6'    .('Transport6-vs2013.vcxproj'    )
                                                   './apifiles/C++/transport7'    .('Transport7-vs2013.vcxproj'    )
                                                   './apifiles/C++/transport8'    .('Transport8-vs2013.vcxproj'    )
                                                   './apifiles/C++/transport9'    .('Transport9-vs2013.vcxproj'    )
                                                   './apifiles/C++/transport10'   .('Transport10-vs2013.vcxproj'   )
                                                   './apifiles/C++/transport11'   .('Transport11-vs2013.vcxproj'   )
                                                   './apifiles/C++/transport12'   .('Transport12-vs2013.vcxproj'   )
                                                   './apifiles/C++/transport13'   .('Transport13-vs2013.vcxproj'   )
                                                   './apifiles/C++/transport14'   .('Transport14-vs2013.vcxproj'   )
                                                   './apifiles/C++/warehouse'     .('Warehouse-vs2013.vcxproj'     )
                                                   './apifiles/C++/xp_associative'.('xp_associative-vs2013.vcxproj')
                                                   './apifiles/C++/xp_associative_vec'.('xp_associative_vec-vs2013.vcxproj')
                                                   './apifiles/C++/xp_dataWrite'  .('xp_dataWrite-vs2013.vcxproj'  )
                                                   './apifiles/C++/xp_example1'   .('xp_example1-vs2013.vcxproj'   )
                                                   './apifiles/C++/xp_example2'   .('xp_example2-vs2013.vcxproj'   ))
                                         )
*                                 %ALLUX%.(
*                                         )
                                AIX     .(
                                          CPLEX             . '.'       .('libcplex1280remote.a', 'libcplex1280tcpiptransport.a')
                                         )
                       (DEG,LEG,VS8,WEI).(
                                          GAMS              . './inclib'.'pyEmbMI.gms'
                                          gamsCPP.('./apifiles/C++/api' .('gams.h', 'gamscheckpoint.h', 'gamsdatabase.h', 'gamsdatabasedomainviolation.h', 'gamsdatabaseiter.h', 'gamsdomain.h',
                                                                          'gamsenum.h', 'gamsequation.h', 'gamsequationrecord.h', 'gamsexception.h', 'gamsexceptionexecution.h', 'gamsjob.h',
                                                                          'gamslib_global.h', 'gamslog.h', 'gamsmodelinstance.h', 'gamsmodelinstanceopt.h', 'gamsmodifier.h', 'gamsoptions.h',
                                                                          'gamsparameter.h', 'gamsparameterrecord.h', 'gamsplatform.h', 'gamsset.h', 'gamssetrecord.h', 'gamssymbol.h',
                                                                          'gamssymboldomainviolation.h', 'gamssymboliter.h', 'gamssymbolrecord.h', 'gamsvariable.h', 'gamsvariablerecord.h',
                                                                          'gamsversion.h', 'gamsworkspace.h', 'gamsworkspaceinfo.h', 'gamsworkspacepool.h', 'solveroptions.h',
                                                                          'README.md', 'LICENSE', 'LICENSE.Qt')
                                                   './apifiles/C++'     .('README.md', 'CMakeLists.txt', 'examples.pri', 'examples.pro', 'qt.props')
                                                   './apifiles/C++/domainchecking'.('CMakeLists.txt', 'domainchecking.cpp', 'domainchecking.pro')
												   './apifiles/C++/transportGDX'  .('CMakeLists.txt', 'TransportGDX.cpp',     'transportGDX.pro')
                                                   './apifiles/C++/transport'     .('CMakeLists.txt', 'transport.cpp',      'transport.h')
                                                   './apifiles/C++/transport1'    .('CMakeLists.txt', 'Transport1.cpp',     'transport1.pro')
                                                   './apifiles/C++/transport2'    .('CMakeLists.txt', 'Transport2.cpp',     'transport2.pro')
                                                   './apifiles/C++/transport3'    .('CMakeLists.txt', 'Transport3.cpp',     'transport3.pro')
                                                   './apifiles/C++/transport4'    .('CMakeLists.txt', 'Transport4.cpp',     'transport4.pro')
                                                   './apifiles/C++/transport5'    .('CMakeLists.txt', 'Transport5.cpp',     'transport5.pro')
                                                   './apifiles/C++/transport6'    .('CMakeLists.txt', 'Transport6.cpp',     'transport6.pro')
                                                   './apifiles/C++/transport7'    .('CMakeLists.txt', 'Transport7.cpp',     'transport7.pro')
                                                   './apifiles/C++/transport8'    .('CMakeLists.txt', 'Transport8.cpp',     'transport8.pro')
                                                   './apifiles/C++/transport9'    .('CMakeLists.txt', 'Transport9.cpp',     'transport9.pro')
                                                   './apifiles/C++/transport10'   .('CMakeLists.txt', 'Transport10.cpp',    'transport10.pro')
                                                   './apifiles/C++/transport11'   .('CMakeLists.txt', 'Transport11.cpp',    'transport11.pro')
                                                   './apifiles/C++/transport12'   .('CMakeLists.txt', 'transport12.cpp',    'transport12.pro')
                                                   './apifiles/C++/transport13'   .('CMakeLists.txt', 'transport13.cpp',    'transport13.pro')
                                                   './apifiles/C++/transport14'   .('CMakeLists.txt', 'transport14.cpp',    'transport14.pro', 'optimizer.cpp', 'optimizer.h')
                                                   './apifiles/C++/warehouse'     .('CMakeLists.txt', 'warehouse.cpp',      'warehouse.pro')
                                                   './apifiles/C++/xp_associative'.('CMakeLists.txt', 'xp_associative.cpp')
                                                   './apifiles/C++/xp_associative_vec'.('CMakeLists.txt', 'xp_associative_vec.cpp')
                                                   './apifiles/C++/xp_dataWrite'  .('CMakeLists.txt', 'xp_dataWrite.cpp')
                                                   './apifiles/C++/xp_example1'   .('CMakeLists.txt', 'xp_example1.cpp')
                                                   './apifiles/C++/xp_example2'   .('CMakeLists.txt', 'xp_example2.cpp'))
                                         )
                                DEG     .(
                                          gamsCPP            .'./apifiles/C++/lib'.('QtCore', 'libgamscpp.dylib')
                                          (lindo,lindoglobal).'.'       . 'libmosek64.8.1.dylib'
                                          BARON              . '.'                .('libcplex1280.jnilib')
                                          CPLEXD             . '.'                .('libcplex1280remote.dylib', 'libcplex1280tcpiptransport.dylib')
                                          localsolver.'.'.'lskeygen'
                                          localsolver70.'.'.('liblocalsolver70.dylib','libls7cclib64.dylib')
                                         )
                                LEG     .(
                                          gamsCPP            .'./apifiles/C++/lib'.('libQt5Core.so', 'libQt5Core.so.5', 'libgamscpp.so')
                                          (lindo,lindoglobal).'.'       . 'libmosek64.so.8.1'
                                          CPLEXD             . '.'      .('libcplex1280.so', 'libcplex1280remote.so', 'libcplex1280tcpiptransport.so')
                                          gurobi             .'.'       . 'libgurobi.so.7.5.2'
                                          xpress             .'.'       .('libxprl-2.8.9-x8.4.so', 'libxprl.so.x8.4', 'libxprs.so.32.01.05', 'libxprs.so.32.01')
                                          LOCALSOLVER.'.'.'liblocalsolver70.so'
                                          localsolver70.'.'.('liblocalsolver70.so','libls7cclib64.so')
                                         )
*                                SIG     .(
*                                         )
                                SOX     .(
                                          xpress             .'.'       .('libxprl-2.8.8-x8.4.so', 'libxprl.so.x8.4', 'libxprs.so.32.01.03', 'libxprs.so.32.01')
                                         )
                                VS8     .(
                                          gamsCPP            .('./apifiles/C++/lib/vs2013'             .('Qt5Core.dll', 'Qt5Gui.dll', 'Qt5Widgets.dll', 'Qt5Sql.dll', 'Qt5Svg.dll', 'gamscpp.dll', 'gamscpp.exp', 'gamscpp.lib', 'd3dcompiler_47.dll', 'libEGL.dll', 'libGLESV2.dll', 'opengl32sw.dll', 'vcredist_x86.exe')
                                                               './apifiles/C++/lib/vs2013/iconengines' .('qsvgicon.dll')
                                                               './apifiles/C++/lib/vs2013/imageformats'.('qgif.dll', 'qicns.dll', 'qico.dll', 'qjpeg.dll', 'qsvg.dll', 'qtga.dll', 'qtiff.dll', 'qwbmp.dll', 'qwebp.dll')
                                                               './apifiles/C++/lib/vs2013/platforms'   .('qwindows.dll')
                                                               './apifiles/C++/lib/vs2013/sqldrivers'  .('qsqlite.dll', 'qsqlmysql.dll', 'qsqlodbc.dll', 'qsqlpsql.dll'))
                                          (lindo,lindoglobal).'.'          . 'mosek8_1.dll'
                                          localsolver.'.'.'lskeygen.exe'
                                          localsolver70.'.'.('localsolv70.dll','ls7cclib.dll')
                                         )
                                WEI     .(
                                          gamsCPP            .(('./apifiles/C++/lib/vs2013', './apifiles/C++/lib/vs2015', './apifiles/C++/lib/vs2017').('Qt5Core.dll', 'Qt5Gui.dll', 'Qt5Widgets.dll', 'Qt5Sql.dll', 'Qt5Svg.dll', 'gamscpp.dll', 'gamscpp.exp', 'gamscpp.lib', 'd3dcompiler_47.dll', 'libEGL.dll', 'libGLESV2.dll', 'opengl32sw.dll', 'vcredist_x64.exe')
                                                               ('./apifiles/C++/lib/vs2013/iconengines',  './apifiles/C++/lib/vs2015/iconengines',  './apifiles/C++/lib/vs2017/iconengines') .('qsvgicon.dll')
                                                               ('./apifiles/C++/lib/vs2013/imageformats', './apifiles/C++/lib/vs2015/imageformats', './apifiles/C++/lib/vs2017/imageformats').('qgif.dll', 'qicns.dll', 'qico.dll', 'qjpeg.dll', 'qsvg.dll', 'qtga.dll', 'qtiff.dll', 'qwbmp.dll', 'qwebp.dll')
                                                               ('./apifiles/C++/lib/vs2013/platforms',    './apifiles/C++/lib/vs2015/platforms',    './apifiles/C++/lib/vs2017/platforms')   .('qwindows.dll')
                                                               ('./apifiles/C++/lib/vs2013/sqldrivers',   './apifiles/C++/lib/vs2015/sqldrivers',   './apifiles/C++/lib/vs2017/sqldrivers')  .('qsqlite.dll', 'qsqlmysql.dll', 'qsqlodbc.dll', 'qsqlpsql.dll')
                                                                './apifiles/C++'               .('examples-vs2015.sln',           'examples-vs2017.sln')
                                                                './apifiles/C++/domainchecking'.('DomainChecking-vs2015.vcxproj', 'DomainChecking-vs2017.vcxproj')
																'./apifiles/C++/transportGDX'  .('TransportGDX-vs2015.vcxproj',   'TransportGDX-vs2017.vcxproj')
                                                                './apifiles/C++/transport1'    .('Transport1-vs2015.vcxproj',     'Transport1-vs2017.vcxproj')
                                                                './apifiles/C++/transport2'    .('Transport2-vs2015.vcxproj',     'Transport2-vs2017.vcxproj')
                                                                './apifiles/C++/transport3'    .('Transport3-vs2015.vcxproj',     'Transport3-vs2017.vcxproj')
                                                                './apifiles/C++/transport4'    .('Transport4-vs2015.vcxproj',     'Transport4-vs2017.vcxproj')
                                                                './apifiles/C++/transport5'    .('Transport5-vs2015.vcxproj',     'Transport5-vs2017.vcxproj')
                                                                './apifiles/C++/transport6'    .('Transport6-vs2015.vcxproj',     'Transport6-vs2017.vcxproj')
                                                                './apifiles/C++/transport7'    .('Transport7-vs2015.vcxproj',     'Transport7-vs2017.vcxproj')
                                                                './apifiles/C++/transport8'    .('Transport8-vs2015.vcxproj',     'Transport8-vs2017.vcxproj')
                                                                './apifiles/C++/transport9'    .('Transport9-vs2015.vcxproj',     'Transport9-vs2017.vcxproj')
                                                                './apifiles/C++/transport10'   .('Transport10-vs2015.vcxproj',    'Transport10-vs2017.vcxproj')
                                                                './apifiles/C++/transport11'   .('Transport11-vs2015.vcxproj',    'Transport11-vs2017.vcxproj')
                                                                './apifiles/C++/transport12'   .('Transport12-vs2015.vcxproj',    'Transport12-vs2017.vcxproj')
                                                                './apifiles/C++/transport13'   .('Transport13-vs2015.vcxproj',    'Transport13-vs2017.vcxproj')
                                                                './apifiles/C++/transport14'   .('Transport14-vs2015.vcxproj',    'Transport14-vs2017.vcxproj')
                                                                './apifiles/C++/warehouse'     .('Warehouse-vs2015.vcxproj',      'Warehouse-vs2017.vcxproj')
                                                                './apifiles/C++/xp_associative'.('xp_associative-vs2015.vcxproj', 'xp_associative-vs2017.vcxproj')
                                                                './apifiles/C++/xp_associative_vec'.('xp_associative_vec-vs2015.vcxproj', 'xp_associative_vec-vs2017.vcxproj')
                                                                './apifiles/C++/xp_dataWrite'  .('xp_dataWrite-vs2015.vcxproj',   'xp_dataWrite-vs2017.vcxproj')
                                                                './apifiles/C++/xp_example1'   .('xp_example1-vs2015.vcxproj',    'xp_example1-vs2017.vcxproj')
                                                                './apifiles/C++/xp_example2'   .('xp_example2-vs2015.vcxproj',    'xp_example2-vs2017.vcxproj'))
                                          (lindo,lindoglobal)        .'.'  . 'mosek64_8_1.dll'
                                          (baron,cplex,cplexd,decisc). '.' . 'cplex1280.dll'
                                          cplexd                     . '.' . ('cplex1280remote.dll', 'cplex1280tcpiptransport.dll')
                                          localsolver.'.'.'lskeygen.exe'
                                          localsolver70.'.'.('localsolv70.dll','ls7cclib64.dll')
                                         )
                                /
    drpfil(ppp,prd,dir,fil)     Dropped files per product and directory /
                                %ALLPF% .(
                                          gamsAPI     .'./apifiles/C++/api'.('cfgmco.cpp', 'dctmco.cpp', 'gamsxco.cpp', 'gdxco.cpp', 'gevmco.cpp', 'gmdco.cpp', 'gmomco.cpp', 'idxco.cpp', 'optco.cpp',
                                                                             'cfgmco.hpp', 'dctmco.hpp', 'gamsxco.hpp', 'gdxco.hpp', 'gevmco.hpp', 'gmdco.hpp', 'gmomco.hpp', 'idxco.hpp', 'optco.hpp')
                                          gdxAPI      .'./apifiles/C++/api'.('gdxco.cpp', 'gdxco.hpp')
                                          idxgdxAPI   .'./apifiles/C++/api'.('idxco.cpp', 'idxco.hpp')
                                          optionAPI   .'./apifiles/C++/api'.('optco.cpp', 'optco.hpp')
                                          TestLibrary .'./testlib_ml'    . 'doc02.682'
                                         )
%ALLPF%.(
gamsAPI.'./apifiles/Java/alias       '.'Alias.java'           ,    gamsAPI.'./apifiles/Java/benders     '.'Benders2Stage.java'   ,    gamsAPI.'./apifiles/Java/benders     '.'Benders2StageMT.java'
gamsAPI.'./apifiles/Java/clad        '.'Clad.java'            ,    gamsAPI.'./apifiles/Java/cutstock    '.'Cutstock.java'        ,    gamsAPI.'./apifiles/Java/cutstock    '.'CutstockModel.java'
gamsAPI.'./apifiles/Java/cutstock    '.'SimpleCutstock.java'  ,    gamsAPI.'./apifiles/Java/domain      '.'DomainCheck.java'     ,    gamsAPI.'./apifiles/Java/interrupt   '.'ConsoleInterrupt.java'
gamsAPI.'./apifiles/Java/interrupt   '.'InterruptGUI.java'    ,    gamsAPI.'./apifiles/Java/specialvalues'.'SpecialValues.java'   ,    gamsAPI.'./apifiles/Java/transport   '.'Transport1.java'
gamsAPI.'./apifiles/Java/transport   '.'Transport7.java'      ,    gamsAPI.'./apifiles/Java/transport   '.'Transport13.java'     ,    gamsAPI.'./apifiles/Java/transport   '.'Transport11.java'
gamsAPI.'./apifiles/Java/transport   '.'Transport10.java'     ,    gamsAPI.'./apifiles/Java/transport   '.'Transport5.java'      ,    gamsAPI.'./apifiles/Java/transport   '.'Transport8.java'
gamsAPI.'./apifiles/Java/transport   '.'TransportModel.java'  ,    gamsAPI.'./apifiles/Java/transport   '.'Transport6.java'      ,    gamsAPI.'./apifiles/Java/transport   '.'Transport14.java'
gamsAPI.'./apifiles/Java/transport   '.'Transport3.java'      ,    gamsAPI.'./apifiles/Java/transport   '.'Transport4.java'      ,    gamsAPI.'./apifiles/Java/transport   '.'Transport12.java'
gamsAPI.'./apifiles/Java/transport   '.'Transport9.java'      ,    gamsAPI.'./apifiles/Java/transport   '.'Transport2.java'      ,    gamsAPI.'./apifiles/Java/transport   '.'TransportGUI.java'
gamsAPI.'./apifiles/Java/tsp         '.'Tsp.java'             ,    gamsAPI.'./apifiles/Java/warehouse   '.'Warehouse.java' )
                                AIX     .(
                                          CPLEX              . '.'           .('libcplex1271remote.a', 'libcplex1271tcpiptransport.a')
                                         )
                                DEG     .(
                                          (lindo,lindoglobal). '.'           . 'libmosek64.8.0.dylib'
                                          GAMS               . '.'           .('QtCore', 'libz.1.dylib')
                                          BARON              . '.'           .('libcplex1271.jnilib')
                                          CPLEXD             . '.'           .('libcplex1271remote.dylib', 'libcplex1271tcpiptransport.dylib')
                                         )
                                LEG     .(
                                          (lindo,lindoglobal). '.'           . 'libmosek64.so.8.0'
                                          CPLEXD             . '.'           .('libcplex1271.so', 'libcplex1271remote.so', 'libcplex1271tcpiptransport.so')
                                          gurobi             . '.'           . 'libgurobi.so.7.5.1'
                                          GAMS               . '.'           .('libQt5Core.so', 'libQt5Core.so.5')
                                          xpress             . '.'           .('libxprl-2.8.6-x8.3.so', 'libxprl.so.x8.3', 'libxprs.so.31.01.09', 'libxprs.so.31.01')
                                          LOCALSOLVER.'.'.'liblocalsolver.so'
                                          (antigone,scip). '.' .('libmkl_avx.so', 'libmkl_avx2.so', 'libmkl_avx512.so', 'libmkl_avx512_mic.so', 'libmkl_mc.so', 'libmkl_mc3.so')
                                         )
*                                SIG     .(
*                                         )
                                SOX     .(
                                          xpress             . '.'           .('libxprl-2.8.6-x8.3.so', 'libxprl.so.x8.3', 'libxprs.so.31.01.09', 'libxprs.so.31.01')
                                         )
                                VS8     .(
                                          GAMS               .('.'           .('Qt5Core.dll', 'Qt5Gui.dll', 'Qt5Widgets.dll', 'Qt5Sql.dll')
                                                               './sqldrivers'.('qsqlite.dll', 'qsqlited.dll', 'qsqlmysql.dll', 'qsqlmysqld.dll', 'qsqlodbc.dll', 'qsqlodbcd.dll', 'qsqlpsql.dll', 'qsqlpsqld.dll')
                                                               './platforms' . 'qwindows.dll')
                                          gamsCPP            . '.'           . 'gamscpp.dll'
                                          (lindo,lindoglobal). '.'           . 'mosek8_0.dll'
                                         )
                                WEI     .(
                                          GAMS               .('.'           .('Qt5Core.dll', 'Qt5Gui.dll', 'Qt5Widgets.dll', 'Qt5Sql.dll')
                                                               './sqldrivers'.('qsqlite.dll', 'qsqlited.dll', 'qsqlmysql.dll', 'qsqlmysqld.dll', 'qsqlodbc.dll', 'qsqlodbcd.dll', 'qsqlpsql.dll', 'qsqlpsqld.dll')
                                                               './platforms' . 'qwindows.dll')
                                          gamsCPP            . '.'           . 'gamscpp.dll'
                                          (lindo,lindoglobal). '.'           . 'mosek64_8_0.dll'
                                          (baron,cplex,cplexd,decisc). '.'   . 'cplex1271.dll'
                                          cplexd                     . '.'   . ('cplex1271remote.dll', 'cplex1271tcpiptransport.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'
                Documents                               'too many files and changing too often'
                /;
$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;