epics-extensions / ca-gateway

Channel Access PV Gateway
http://www.aps.anl.gov/epics/extensions/gateway/
Other
18 stars 17 forks source link

Add Windows API version check for Mingw #40

Closed mfurseman closed 1 year ago

mfurseman commented 2 years ago

Without the version specified the Windows includes do not resolve some of the used constants when building with Mingw:

../gateServer.cc:51:49: error: 'ALL_PROCESSOR_GROUPS' was not declared in this scope
     #define NO_OF_CPUS GetMaximumProcessorCount(ALL_PROCESSOR_GROUPS)
                                                 ^
../gateServer.cc:2202:31: note: in expansion of macro 'NO_OF_CPUS'
       (delTime*CLOCKS_PER_SEC*NO_OF_CPUS):0.0;
                               ^
../gateServer.cc:51:49: note: suggested alternative: '_PROCESSOR_GROUP_INFO'
     #define NO_OF_CPUS GetMaximumProcessorCount(ALL_PROCESSOR_GROUPS)
                                                 ^
../gateServer.cc:2202:31: note: in expansion of macro 'NO_OF_CPUS'
       (delTime*CLOCKS_PER_SEC*NO_OF_CPUS):0.0;
                               ^
../gateServer.cc:51:24: error: 'GetMaximumProcessorCount' was not declared in this scope
     #define NO_OF_CPUS GetMaximumProcessorCount(ALL_PROCESSOR_GROUPS)
                        ^
../gateServer.cc:2202:31: note: in expansion of macro 'NO_OF_CPUS'
       (delTime*CLOCKS_PER_SEC*NO_OF_CPUS):0.0;
                               ^
../gateServer.cc:51:24: note: suggested alternative: 'GetNumaProcessorNode'
     #define NO_OF_CPUS GetMaximumProcessorCount(ALL_PROCESSOR_GROUPS)
                        ^
../gateServer.cc:2202:31: note: in expansion of macro 'NO_OF_CPUS'
       (delTime*CLOCKS_PER_SEC*NO_OF_CPUS):0.0;
                               ^
make[2]: *** [/mnt/build/prefix/configure/RULES_BUILD:262: gateServer.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: Leaving directory '/mnt/build/support/ca-gateway/src/O.windows-x64-mingw'
make[1]: *** [/mnt/build/prefix/configure/RULES_ARCHS:62: windows-x64-mingw] Error 2
make[1]: Leaving directory '/mnt/build/support/ca-gateway/src'
make: *** [/mnt/build/prefix/configure/RULES_DIRS:85: src.windows-x64-mingw] Error 2
ralphlange commented 2 years ago

Hm...

My MinGW64 build works without the added snippet:

19:01:50: Running steps for project QtC-CAGateway...
19:01:50: Starting: "C:\Users\langer\msys64\mingw64\bin\mingw32-make.exe" -j8 all
C:/Users/langer/msys64/mingw64/bin/mingw32-make.exe -C ./configure install
mingw32-make[1]: Entering directory 'C:/Users/langer/WORKFO~1/Work/EPICS/CAGateway/configure'
perl -CSD C:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/bin/windows-x64-mingw/makeMakefile.pl O.windows-x64-mingw ../..
perl -CSD -MExtUtils::Command -e mkpath O.Common
C:/Users/langer/msys64/mingw64/bin/mingw32-make.exe -C O.windows-x64-mingw -f ../Makefile TOP=../.. \
    T_A=windows-x64-mingw install
mingw32-make[2]: Entering directory 'C:/Users/langer/WORKFO~1/Work/EPICS/CAGateway/configure/O.windows-x64-mingw'
perl -CSD C:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/bin/windows-x64-mingw/convertRelease.pl checkRelease
mingw32-make[2]: Leaving directory 'C:/Users/langer/WORKFO~1/Work/EPICS/CAGateway/configure/O.windows-x64-mingw'
mingw32-make[1]: Leaving directory 'C:/Users/langer/WORKFO~1/Work/EPICS/CAGateway/configure'
C:/Users/langer/msys64/mingw64/bin/mingw32-make.exe -C ./src install
mingw32-make[1]: Entering directory 'C:/Users/langer/WORKFO~1/Work/EPICS/CAGateway/src'
perl -CSD C:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/bin/windows-x64-mingw/makeMakefile.pl O.windows-x64-mingw ../..
perl -CSD -MExtUtils::Command -e mkpath O.Common
C:/Users/langer/msys64/mingw64/bin/mingw32-make.exe -C O.windows-x64-mingw -f ../Makefile TOP=../.. \
    T_A=windows-x64-mingw install
mingw32-make[2]: Entering directory 'C:/Users/langer/WORKFO~1/Work/EPICS/CAGateway/src/O.windows-x64-mingw'
g++             -D_MINGW -D__USE_MINGW_ANSI_STDIO      -O3   -Wall    -DSTAT_PVS -DRATE_STATS -DCONTROL_PVS -DCAS_DIAGNOSTICS -DHANDLE_EXCEPTIONS -DUSE_DENYFROM -DUSE_PCRE  -m64    -DEPICS_BUILD_DLL -DEPICS_CALL_DLL   -I. -I../O.Common -I. -I. -I.. -I../../include/compiler/gcc -I../../include/os/WIN32 -I../../include -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include/compiler/gcc -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include/os/WIN32 -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include   -IC:/Users/langer/WORKFO~1/Work/EPICS/pcas/include    -IC:/Users/langer/msys64/usr/include -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/src/cas/generic -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/src/ca/legacy/pcas/generic     -MM -MF gateDbFld.d -MT gateDbFld.obj ../gateDbFld.cc
g++             -D_MINGW -D__USE_MINGW_ANSI_STDIO      -O3   -Wall    -DSTAT_PVS -DRATE_STATS -DCONTROL_PVS -DCAS_DIAGNOSTICS -DHANDLE_EXCEPTIONS -DUSE_DENYFROM -DUSE_PCRE  -m64    -DEPICS_BUILD_DLL -DEPICS_CALL_DLL   -I. -I../O.Common -I. -I. -I.. -I../../include/compiler/gcc -I../../include/os/WIN32 -I../../include -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include/compiler/gcc -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include/os/WIN32 -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include   -IC:/Users/langer/WORKFO~1/Work/EPICS/pcas/include    -IC:/Users/langer/msys64/usr/include -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/src/cas/generic -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/src/ca/legacy/pcas/generic     -MM -MF gateStat.d -MT gateStat.obj ../gateStat.cc
g++             -D_MINGW -D__USE_MINGW_ANSI_STDIO      -O3   -Wall    -DSTAT_PVS -DRATE_STATS -DCONTROL_PVS -DCAS_DIAGNOSTICS -DHANDLE_EXCEPTIONS -DUSE_DENYFROM -DUSE_PCRE  -m64    -DEPICS_BUILD_DLL -DEPICS_CALL_DLL   -I. -I../O.Common -I. -I. -I.. -I../../include/compiler/gcc -I../../include/os/WIN32 -I../../include -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include/compiler/gcc -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include/os/WIN32 -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include   -IC:/Users/langer/WORKFO~1/Work/EPICS/pcas/include    -IC:/Users/langer/msys64/usr/include -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/src/cas/generic -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/src/ca/legacy/pcas/generic     -MM -MF gateAsCa.d -MT gateAsCa.obj ../gateAsCa.cc
g++             -D_MINGW -D__USE_MINGW_ANSI_STDIO      -O3   -Wall    -DSTAT_PVS -DRATE_STATS -DCONTROL_PVS -DCAS_DIAGNOSTICS -DHANDLE_EXCEPTIONS -DUSE_DENYFROM -DUSE_PCRE  -m64    -DEPICS_BUILD_DLL -DEPICS_CALL_DLL   -I. -I../O.Common -I. -I. -I.. -I../../include/compiler/gcc -I../../include/os/WIN32 -I../../include -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include/compiler/gcc -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include/os/WIN32 -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include   -IC:/Users/langer/WORKFO~1/Work/EPICS/pcas/include    -IC:/Users/langer/msys64/usr/include -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/src/cas/generic -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/src/ca/legacy/pcas/generic     -MM -MF gateVc.d -MT gateVc.obj ../gateVc.cc
g++             -D_MINGW -D__USE_MINGW_ANSI_STDIO      -O3   -Wall    -DSTAT_PVS -DRATE_STATS -DCONTROL_PVS -DCAS_DIAGNOSTICS -DHANDLE_EXCEPTIONS -DUSE_DENYFROM -DUSE_PCRE  -m64    -DEPICS_BUILD_DLL -DEPICS_CALL_DLL   -I. -I../O.Common -I. -I. -I.. -I../../include/compiler/gcc -I../../include/os/WIN32 -I../../include -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include/compiler/gcc -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include/os/WIN32 -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include   -IC:/Users/langer/WORKFO~1/Work/EPICS/pcas/include    -IC:/Users/langer/msys64/usr/include -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/src/cas/generic -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/src/ca/legacy/pcas/generic     -MM -MF gateAsyncIO.d -MT gateAsyncIO.obj ../gateAsyncIO.cc
g++             -D_MINGW -D__USE_MINGW_ANSI_STDIO      -O3   -Wall    -DSTAT_PVS -DRATE_STATS -DCONTROL_PVS -DCAS_DIAGNOSTICS -DHANDLE_EXCEPTIONS -DUSE_DENYFROM -DUSE_PCRE  -m64    -DEPICS_BUILD_DLL -DEPICS_CALL_DLL   -I. -I../O.Common -I. -I. -I.. -I../../include/compiler/gcc -I../../include/os/WIN32 -I../../include -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include/compiler/gcc -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include/os/WIN32 -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include   -IC:/Users/langer/WORKFO~1/Work/EPICS/pcas/include    -IC:/Users/langer/msys64/usr/include -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/src/cas/generic -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/src/ca/legacy/pcas/generic     -MM -MF gateResources.d -MT gateResources.obj ../gateResources.cc
g++             -D_MINGW -D__USE_MINGW_ANSI_STDIO      -O3   -Wall    -DSTAT_PVS -DRATE_STATS -DCONTROL_PVS -DCAS_DIAGNOSTICS -DHANDLE_EXCEPTIONS -DUSE_DENYFROM -DUSE_PCRE  -m64    -DEPICS_BUILD_DLL -DEPICS_CALL_DLL   -I. -I../O.Common -I. -I. -I.. -I../../include/compiler/gcc -I../../include/os/WIN32 -I../../include -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include/compiler/gcc -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include/os/WIN32 -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include   -IC:/Users/langer/WORKFO~1/Work/EPICS/pcas/include    -IC:/Users/langer/msys64/usr/include -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/src/cas/generic -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/src/ca/legacy/pcas/generic     -MM -MF gateAs.d -MT gateAs.obj ../gateAs.cc
g++             -D_MINGW -D__USE_MINGW_ANSI_STDIO      -O3   -Wall    -DSTAT_PVS -DRATE_STATS -DCONTROL_PVS -DCAS_DIAGNOSTICS -DHANDLE_EXCEPTIONS -DUSE_DENYFROM -DUSE_PCRE  -m64    -DEPICS_BUILD_DLL -DEPICS_CALL_DLL   -I. -I../O.Common -I. -I. -I.. -I../../include/compiler/gcc -I../../include/os/WIN32 -I../../include -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include/compiler/gcc -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include/os/WIN32 -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include   -IC:/Users/langer/WORKFO~1/Work/EPICS/pcas/include    -IC:/Users/langer/msys64/usr/include -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/src/cas/generic -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/src/ca/legacy/pcas/generic     -MM -MF gateServer.d -MT gateServer.obj ../gateServer.cc
g++             -D_MINGW -D__USE_MINGW_ANSI_STDIO      -O3   -Wall    -DSTAT_PVS -DRATE_STATS -DCONTROL_PVS -DCAS_DIAGNOSTICS -DHANDLE_EXCEPTIONS -DUSE_DENYFROM -DUSE_PCRE  -m64    -DEPICS_BUILD_DLL -DEPICS_CALL_DLL   -I. -I../O.Common -I. -I. -I.. -I../../include/compiler/gcc -I../../include/os/WIN32 -I../../include -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include/compiler/gcc -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include/os/WIN32 -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include   -IC:/Users/langer/WORKFO~1/Work/EPICS/pcas/include    -IC:/Users/langer/msys64/usr/include -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/src/cas/generic -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/src/ca/legacy/pcas/generic     -MM -MF gatePv.d -MT gatePv.obj ../gatePv.cc
g++             -D_MINGW -D__USE_MINGW_ANSI_STDIO      -O3   -Wall    -DSTAT_PVS -DRATE_STATS -DCONTROL_PVS -DCAS_DIAGNOSTICS -DHANDLE_EXCEPTIONS -DUSE_DENYFROM -DUSE_PCRE  -m64    -DEPICS_BUILD_DLL -DEPICS_CALL_DLL   -I. -I../O.Common -I. -I. -I.. -I../../include/compiler/gcc -I../../include/os/WIN32 -I../../include -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include/compiler/gcc -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include/os/WIN32 -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include   -IC:/Users/langer/WORKFO~1/Work/EPICS/pcas/include    -IC:/Users/langer/msys64/usr/include -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/src/cas/generic -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/src/ca/legacy/pcas/generic     -MM -MF gateway.d -MT gateway.obj ../gateway.cc
g++             -D_MINGW -D__USE_MINGW_ANSI_STDIO      -O3   -Wall    -DSTAT_PVS -DRATE_STATS -DCONTROL_PVS -DCAS_DIAGNOSTICS -DHANDLE_EXCEPTIONS -DUSE_DENYFROM -DUSE_PCRE  -m64    -DEPICS_BUILD_DLL -DEPICS_CALL_DLL   -I. -I../O.Common -I. -I. -I.. -I../../include/compiler/gcc -I../../include/os/WIN32 -I../../include -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include/compiler/gcc -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include/os/WIN32 -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include   -IC:/Users/langer/WORKFO~1/Work/EPICS/pcas/include    -IC:/Users/langer/msys64/usr/include -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/src/cas/generic -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/src/ca/legacy/pcas/generic    -o gateway.obj -c ../gateway.cc
g++             -D_MINGW -D__USE_MINGW_ANSI_STDIO      -O3   -Wall    -DSTAT_PVS -DRATE_STATS -DCONTROL_PVS -DCAS_DIAGNOSTICS -DHANDLE_EXCEPTIONS -DUSE_DENYFROM -DUSE_PCRE  -m64    -DEPICS_BUILD_DLL -DEPICS_CALL_DLL   -I. -I../O.Common -I. -I. -I.. -I../../include/compiler/gcc -I../../include/os/WIN32 -I../../include -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include/compiler/gcc -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include/os/WIN32 -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include   -IC:/Users/langer/WORKFO~1/Work/EPICS/pcas/include    -IC:/Users/langer/msys64/usr/include -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/src/cas/generic -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/src/ca/legacy/pcas/generic    -o gatePv.obj -c ../gatePv.cc
g++             -D_MINGW -D__USE_MINGW_ANSI_STDIO      -O3   -Wall    -DSTAT_PVS -DRATE_STATS -DCONTROL_PVS -DCAS_DIAGNOSTICS -DHANDLE_EXCEPTIONS -DUSE_DENYFROM -DUSE_PCRE  -m64    -DEPICS_BUILD_DLL -DEPICS_CALL_DLL   -I. -I../O.Common -I. -I. -I.. -I../../include/compiler/gcc -I../../include/os/WIN32 -I../../include -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include/compiler/gcc -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include/os/WIN32 -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include   -IC:/Users/langer/WORKFO~1/Work/EPICS/pcas/include    -IC:/Users/langer/msys64/usr/include -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/src/cas/generic -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/src/ca/legacy/pcas/generic    -o gateResources.obj -c ../gateResources.cc
g++             -D_MINGW -D__USE_MINGW_ANSI_STDIO      -O3   -Wall    -DSTAT_PVS -DRATE_STATS -DCONTROL_PVS -DCAS_DIAGNOSTICS -DHANDLE_EXCEPTIONS -DUSE_DENYFROM -DUSE_PCRE  -m64    -DEPICS_BUILD_DLL -DEPICS_CALL_DLL   -I. -I../O.Common -I. -I. -I.. -I../../include/compiler/gcc -I../../include/os/WIN32 -I../../include -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include/compiler/gcc -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include/os/WIN32 -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include   -IC:/Users/langer/WORKFO~1/Work/EPICS/pcas/include    -IC:/Users/langer/msys64/usr/include -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/src/cas/generic -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/src/ca/legacy/pcas/generic    -o gateServer.obj -c ../gateServer.cc
g++             -D_MINGW -D__USE_MINGW_ANSI_STDIO      -O3   -Wall    -DSTAT_PVS -DRATE_STATS -DCONTROL_PVS -DCAS_DIAGNOSTICS -DHANDLE_EXCEPTIONS -DUSE_DENYFROM -DUSE_PCRE  -m64    -DEPICS_BUILD_DLL -DEPICS_CALL_DLL   -I. -I../O.Common -I. -I. -I.. -I../../include/compiler/gcc -I../../include/os/WIN32 -I../../include -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include/compiler/gcc -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include/os/WIN32 -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include   -IC:/Users/langer/WORKFO~1/Work/EPICS/pcas/include    -IC:/Users/langer/msys64/usr/include -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/src/cas/generic -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/src/ca/legacy/pcas/generic    -o gateAs.obj -c ../gateAs.cc
g++             -D_MINGW -D__USE_MINGW_ANSI_STDIO      -O3   -Wall    -DSTAT_PVS -DRATE_STATS -DCONTROL_PVS -DCAS_DIAGNOSTICS -DHANDLE_EXCEPTIONS -DUSE_DENYFROM -DUSE_PCRE  -m64    -DEPICS_BUILD_DLL -DEPICS_CALL_DLL   -I. -I../O.Common -I. -I. -I.. -I../../include/compiler/gcc -I../../include/os/WIN32 -I../../include -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include/compiler/gcc -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include/os/WIN32 -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include   -IC:/Users/langer/WORKFO~1/Work/EPICS/pcas/include    -IC:/Users/langer/msys64/usr/include -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/src/cas/generic -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/src/ca/legacy/pcas/generic    -o gateVc.obj -c ../gateVc.cc
g++             -D_MINGW -D__USE_MINGW_ANSI_STDIO      -O3   -Wall    -DSTAT_PVS -DRATE_STATS -DCONTROL_PVS -DCAS_DIAGNOSTICS -DHANDLE_EXCEPTIONS -DUSE_DENYFROM -DUSE_PCRE  -m64    -DEPICS_BUILD_DLL -DEPICS_CALL_DLL   -I. -I../O.Common -I. -I. -I.. -I../../include/compiler/gcc -I../../include/os/WIN32 -I../../include -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include/compiler/gcc -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include/os/WIN32 -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include   -IC:/Users/langer/WORKFO~1/Work/EPICS/pcas/include    -IC:/Users/langer/msys64/usr/include -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/src/cas/generic -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/src/ca/legacy/pcas/generic    -o gateAsyncIO.obj -c ../gateAsyncIO.cc
g++             -D_MINGW -D__USE_MINGW_ANSI_STDIO      -O3   -Wall    -DSTAT_PVS -DRATE_STATS -DCONTROL_PVS -DCAS_DIAGNOSTICS -DHANDLE_EXCEPTIONS -DUSE_DENYFROM -DUSE_PCRE  -m64    -DEPICS_BUILD_DLL -DEPICS_CALL_DLL   -I. -I../O.Common -I. -I. -I.. -I../../include/compiler/gcc -I../../include/os/WIN32 -I../../include -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include/compiler/gcc -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include/os/WIN32 -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include   -IC:/Users/langer/WORKFO~1/Work/EPICS/pcas/include    -IC:/Users/langer/msys64/usr/include -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/src/cas/generic -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/src/ca/legacy/pcas/generic    -o gateAsCa.obj -c ../gateAsCa.cc
../gateResources.cc:27: warning: "F_OK" redefined
   27 | # define F_OK 00
      | 
In file included from C:/Users/langer/msys64/mingw64/include/sys/stat.h:14,
                 from ../gateResources.cc:22:
C:/Users/langer/msys64/mingw64/include/io.h:182: note: this is the location of the previous definition
  182 | #define F_OK    0       /* Check for file existence */
      | 
../gateResources.cc:28: warning: "W_OK" redefined
   28 | # define W_OK 02
      | 
C:/Users/langer/msys64/mingw64/include/io.h:184: note: this is the location of the previous definition
  184 | #define W_OK    2       /* Check for write permission */
      | 
../gateResources.cc:29: warning: "R_OK" redefined
   29 | # define R_OK 04
      | 
C:/Users/langer/msys64/mingw64/include/io.h:185: note: this is the location of the previous definition
  185 | #define R_OK    4       /* Check for read permission */
      | 
In file included from C:/Users/langer/WORKFO~1/Work/EPICS/pcas/include/gdd.h:511,
                 from ../gateway.cc:56:
C:/Users/langer/WORKFO~1/Work/EPICS/pcas/include/gddI.h: In member function 'gdd& gdd::operator=(const gdd&)':
C:/Users/langer/WORKFO~1/Work/EPICS/pcas/include/gddI.h:117:17: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'class gdd' with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess]
  117 |         { memcpy(this,&v,sizeof(gdd)); return *this; }
      |           ~~~~~~^~~~~~~~~~~~~~~~~~~~~
C:/Users/langer/WORKFO~1/Work/EPICS/pcas/include/gdd.h:96:23: note: 'class gdd' declared here
   96 | class epicsShareClass gdd
      |                       ^~~
In file included from C:/Users/langer/WORKFO~1/Work/EPICS/pcas/include/gdd.h:511,
                 from ../gateServer.cc:98:
C:/Users/langer/WORKFO~1/Work/EPICS/pcas/include/gddI.h: In member function 'gdd& gdd::operator=(const gdd&)':
C:/Users/langer/WORKFO~1/Work/EPICS/pcas/include/gddI.h:117:17: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'class gdd' with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess]
  117 |         { memcpy(this,&v,sizeof(gdd)); return *this; }
      |           ~~~~~~^~~~~~~~~~~~~~~~~~~~~
C:/Users/langer/WORKFO~1/Work/EPICS/pcas/include/gdd.h:96:23: note: 'class gdd' declared here
   96 | class epicsShareClass gdd
      |                       ^~~
In file included from C:/Users/langer/WORKFO~1/Work/EPICS/pcas/include/gdd.h:511,
                 from ../gatePv.cc:61:
C:/Users/langer/WORKFO~1/Work/EPICS/pcas/include/gddI.h: In member function 'gdd& gdd::operator=(const gdd&)':
C:/Users/langer/WORKFO~1/Work/EPICS/pcas/include/gddI.h:117:17: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'class gdd' with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess]
  117 |         { memcpy(this,&v,sizeof(gdd)); return *this; }
      |           ~~~~~~^~~~~~~~~~~~~~~~~~~~~
C:/Users/langer/WORKFO~1/Work/EPICS/pcas/include/gdd.h:96:23: note: 'class gdd' declared here
   96 | class epicsShareClass gdd
      |                       ^~~
In file included from C:/Users/langer/WORKFO~1/Work/EPICS/pcas/include/gdd.h:511,
                 from ../gateVc.cc:51:
C:/Users/langer/WORKFO~1/Work/EPICS/pcas/include/gddI.h: In member function 'gdd& gdd::operator=(const gdd&)':
C:/Users/langer/WORKFO~1/Work/EPICS/pcas/include/gddI.h:117:17: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'class gdd' with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess]
  117 |         { memcpy(this,&v,sizeof(gdd)); return *this; }
      |           ~~~~~~^~~~~~~~~~~~~~~~~~~~~
C:/Users/langer/WORKFO~1/Work/EPICS/pcas/include/gdd.h:96:23: note: 'class gdd' declared here
   96 | class epicsShareClass gdd
      |                       ^~~
In file included from C:/Users/langer/WORKFO~1/Work/EPICS/pcas/include/gdd.h:511,
                 from ../gateResources.h:49,
                 from ../gateResources.cc:40:
C:/Users/langer/WORKFO~1/Work/EPICS/pcas/include/gddI.h: In member function 'gdd& gdd::operator=(const gdd&)':
C:/Users/langer/WORKFO~1/Work/EPICS/pcas/include/gddI.h:117:17: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'class gdd' with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess]
  117 |         { memcpy(this,&v,sizeof(gdd)); return *this; }
      |           ~~~~~~^~~~~~~~~~~~~~~~~~~~~
C:/Users/langer/WORKFO~1/Work/EPICS/pcas/include/gdd.h:96:23: note: 'class gdd' declared here
   96 | class epicsShareClass gdd
      |                       ^~~
In file included from C:/Users/langer/WORKFO~1/Work/EPICS/pcas/include/gdd.h:511,
                 from ../gateResources.h:49,
                 from ../gateAs.cc:48:
C:/Users/langer/WORKFO~1/Work/EPICS/pcas/include/gddI.h: In member function 'gdd& gdd::operator=(const gdd&)':
C:/Users/langer/WORKFO~1/Work/EPICS/pcas/include/gddI.h:117:17: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'class gdd' with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess]
  117 |         { memcpy(this,&v,sizeof(gdd)); return *this; }
      |           ~~~~~~^~~~~~~~~~~~~~~~~~~~~
C:/Users/langer/WORKFO~1/Work/EPICS/pcas/include/gdd.h:96:23: note: 'class gdd' declared here
   96 | class epicsShareClass gdd
      |                       ^~~
In file included from C:/Users/langer/WORKFO~1/Work/EPICS/pcas/include/gdd.h:511,
                 from ../gateResources.h:49,
                 from ../gateAsCa.cc:17:
C:/Users/langer/WORKFO~1/Work/EPICS/pcas/include/gddI.h: In member function 'gdd& gdd::operator=(const gdd&)':
C:/Users/langer/WORKFO~1/Work/EPICS/pcas/include/gddI.h:117:17: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'class gdd' with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess]
  117 |         { memcpy(this,&v,sizeof(gdd)); return *this; }
      |           ~~~~~~^~~~~~~~~~~~~~~~~~~~~
C:/Users/langer/WORKFO~1/Work/EPICS/pcas/include/gdd.h:96:23: note: 'class gdd' declared here
   96 | class epicsShareClass gdd
      |                       ^~~
In file included from C:/Users/langer/WORKFO~1/Work/EPICS/pcas/include/gdd.h:511,
                 from ../gateResources.h:49,
                 from ../gateAsyncIO.cc:24:
C:/Users/langer/WORKFO~1/Work/EPICS/pcas/include/gddI.h: In member function 'gdd& gdd::operator=(const gdd&)':
C:/Users/langer/WORKFO~1/Work/EPICS/pcas/include/gddI.h:117:17: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'class gdd' with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess]
  117 |         { memcpy(this,&v,sizeof(gdd)); return *this; }
      |           ~~~~~~^~~~~~~~~~~~~~~~~~~~~
C:/Users/langer/WORKFO~1/Work/EPICS/pcas/include/gdd.h:96:23: note: 'class gdd' declared here
   96 | class epicsShareClass gdd
      |                       ^~~
../gateway.cc: In function 'int main(int, char**)':
../gateway.cc:1106:42: warning: format '%ld' expects argument of type 'long int', but argument 3 has type 'time_t' {aka 'long long int'} [-Wformat=]
 1106 |                 fprintf(stderr,"\tdead=%ld\n",gr->deadTimeout());
      |                                        ~~^    ~~~~~~~~~~~~~~~~~
      |                                          |                   |
      |                                          long int            time_t {aka long long int}
      |                                        %lld
../gateway.cc:1107:45: warning: format '%ld' expects argument of type 'long int', but argument 3 has type 'time_t' {aka 'long long int'} [-Wformat=]
 1107 |                 fprintf(stderr,"\tconnect=%ld\n",gr->connectTimeout());
      |                                           ~~^    ~~~~~~~~~~~~~~~~~~~~
      |                                             |                      |
      |                                             long int               time_t {aka long long int}
      |                                           %lld
../gateway.cc:1108:48: warning: format '%ld' expects argument of type 'long int', but argument 3 has type 'time_t' {aka 'long long int'} [-Wformat=]
 1108 |                 fprintf(stderr,"\tdisconnect=%ld\n",gr->disconnectTimeout());
      |                                              ~~^    ~~~~~~~~~~~~~~~~~~~~~~~
      |                                                |                         |
      |                                                long int                  time_t {aka long long int}
      |                                              %lld
../gateway.cc:1109:47: warning: format '%ld' expects argument of type 'long int', but argument 3 has type 'time_t' {aka 'long long int'} [-Wformat=]
 1109 |                 fprintf(stderr,"\treconnect=%ld\n",gr->reconnectInhibit());
      |                                             ~~^    ~~~~~~~~~~~~~~~~~~~~~~
      |                                               |                        |
      |                                               long int                 time_t {aka long long int}
      |                                             %lld
../gateway.cc:1110:46: warning: format '%ld' expects argument of type 'long int', but argument 3 has type 'time_t' {aka 'long long int'} [-Wformat=]
 1110 |                 fprintf(stderr,"\tinactive=%ld\n",gr->inactiveTimeout());
      |                                            ~~^    ~~~~~~~~~~~~~~~~~~~~~
      |                                              |                       |
      |                                              long int                time_t {aka long long int}
      |                                            %lld
../gateway.cc:1314:54: warning: format '%ld' expects argument of type 'long int', but argument 3 has type 'time_t' {aka 'long long int'} [-Wformat=]
 1314 |                 fprintf(stderr," connect timeout = %ld\n",gr->connectTimeout());
      |                                                    ~~^    ~~~~~~~~~~~~~~~~~~~~
      |                                                      |                      |
      |                                                      long int               time_t {aka long long int}
      |                                                    %lld
../gateway.cc:1315:57: warning: format '%ld' expects argument of type 'long int', but argument 3 has type 'time_t' {aka 'long long int'} [-Wformat=]
 1315 |                 fprintf(stderr," disconnect timeout = %ld\n",gr->disconnectTimeout());
      |                                                       ~~^    ~~~~~~~~~~~~~~~~~~~~~~~
      |                                                         |                         |
      |                                                         long int                  time_t {aka long long int}
      |                                                       %lld
../gateway.cc:1316:61: warning: format '%ld' expects argument of type 'long int', but argument 3 has type 'time_t' {aka 'long long int'} [-Wformat=]
 1316 |                 fprintf(stderr," reconnect inhibit time = %ld\n",gr->reconnectInhibit());
      |                                                           ~~^    ~~~~~~~~~~~~~~~~~~~~~~
      |                                                             |                        |
      |                                                             long int                 time_t {aka long long int}
      |                                                           %lld
../gateway.cc:1317:55: warning: format '%ld' expects argument of type 'long int', but argument 3 has type 'time_t' {aka 'long long int'} [-Wformat=]
 1317 |                 fprintf(stderr," inactive timeout = %ld\n",gr->inactiveTimeout());
      |                                                     ~~^    ~~~~~~~~~~~~~~~~~~~~~
      |                                                       |                       |
      |                                                       long int                time_t {aka long long int}
      |                                                     %lld
../gateway.cc:1318:51: warning: format '%ld' expects argument of type 'long int', but argument 3 has type 'time_t' {aka 'long long int'} [-Wformat=]
 1318 |                 fprintf(stderr," dead timeout = %ld\n",gr->deadTimeout());
      |                                                 ~~^    ~~~~~~~~~~~~~~~~~
      |                                                   |                   |
      |                                                   long int            time_t {aka long long int}
      |                                                 %lld
../gateway.cc: In function 'int setEnv(const char*, int, char**)':
../gateway.cc:1609:27: warning: comparing the result of pointer addition '(pVal + 1)' and NULL [-Waddress]
 1609 |         if(!pVal || !(pVal+1)) {
      |                      ~~~~~^~~
../gatePv.cc: In member function 'int gatePvData::get(readType)':
../gatePv.cc:965:69: warning: format '%lu' expects argument of type 'long unsigned int', but argument 5 has type 'long long unsigned int' [-Wformat=]
  965 |                         "Set EPICS_CA_MAX_ARRAY_BYTES to at least %lu\n",
      |                                                                   ~~^
      |                                                                     |
      |                                                                     long unsigned int
      |                                                                   %llu
  966 |                         timeStamp(),name()?name():"Unknown",
  967 |                               (unsigned long) bytes*totalElements() + sizeof(caHdr) + 2*sizeof(ca_uint32_t));
      |                               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                                                                     |
      |                                                                                     long long unsigned int
../gatePv.cc:990:69: warning: format '%lu' expects argument of type 'long unsigned int', but argument 5 has type 'long long unsigned int' [-Wformat=]
  990 |                         "Set EPICS_CA_MAX_ARRAY_BYTES to at least %lu\n",
      |                                                                   ~~^
      |                                                                     |
      |                                                                     long unsigned int
      |                                                                   %llu
  991 |                         timeStamp(),name()?name():"Unknown",
  992 |                               (unsigned long) bytes*totalElements() + sizeof(caHdr) + 2*sizeof(ca_uint32_t));
      |                               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                                                                     |
      |                                                                                     long long unsigned int
../gateAs.cc: In member function 'int gateAs::readPvList(const char*)':
../gateAs.cc:458:24: warning: 'char* strncpy(char*, const char*, size_t)' output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
  458 |                 strncpy(tempInbuf,inbuf,strlen(inbuf));
      |                 ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../gateAs.cc:519:32: warning: 'char* strncpy(char*, const char*, size_t)' output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
  519 |                         strncpy(inbufWithIPs,tempInbuf,strlen(tempInbuf));
      |                         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../gateAs.cc:498:56: warning: 'char* strncpy(char*, const char*, size_t)' output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
  498 |                                                 strncpy(pIPInput,hostname,strlen(hostname));
      |                                                 ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../gateAs.cc:513:40: warning: 'char* strncpy(char*, const char*, size_t)' output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
  513 |                                 strncpy(inbufWithIPs,tempInbuf,strlen(tempInbuf));
      |                                 ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
g++             -D_MINGW -D__USE_MINGW_ANSI_STDIO      -O3   -Wall    -DSTAT_PVS -DRATE_STATS -DCONTROL_PVS -DCAS_DIAGNOSTICS -DHANDLE_EXCEPTIONS -DUSE_DENYFROM -DUSE_PCRE  -m64    -DEPICS_BUILD_DLL -DEPICS_CALL_DLL   -I. -I../O.Common -I. -I. -I.. -I../../include/compiler/gcc -I../../include/os/WIN32 -I../../include -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include/compiler/gcc -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include/os/WIN32 -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include   -IC:/Users/langer/WORKFO~1/Work/EPICS/pcas/include    -IC:/Users/langer/msys64/usr/include -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/src/cas/generic -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/src/ca/legacy/pcas/generic    -o gateStat.obj -c ../gateStat.cc
g++             -D_MINGW -D__USE_MINGW_ANSI_STDIO      -O3   -Wall    -DSTAT_PVS -DRATE_STATS -DCONTROL_PVS -DCAS_DIAGNOSTICS -DHANDLE_EXCEPTIONS -DUSE_DENYFROM -DUSE_PCRE  -m64    -DEPICS_BUILD_DLL -DEPICS_CALL_DLL   -I. -I../O.Common -I. -I. -I.. -I../../include/compiler/gcc -I../../include/os/WIN32 -I../../include -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include/compiler/gcc -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include/os/WIN32 -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/include   -IC:/Users/langer/WORKFO~1/Work/EPICS/pcas/include    -IC:/Users/langer/msys64/usr/include -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/src/cas/generic -IC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/src/ca/legacy/pcas/generic    -o gateDbFld.obj -c ../gateDbFld.cc
../gateway.cc: At global scope:
../gateway.cc:67:12: warning: 'int manage_gateway()' declared 'static' but never defined [-Wunused-function]
   67 | static int manage_gateway(void);
      |            ^~~~~~~~~~~~~~
../gateway.cc:254:17: warning: 'save_chld' defined but not used [-Wunused-variable]
  254 | static SIG_FUNC save_chld = NULL;
      |                 ^~~~~~~~~
../gateway.cc:251:17: warning: 'save_bus' defined but not used [-Wunused-variable]
  251 | static SIG_FUNC save_bus = NULL;
      |                 ^~~~~~~~
../gateway.cc:248:17: warning: 'save_hup' defined but not used [-Wunused-variable]
  248 | static SIG_FUNC save_hup = NULL;
      |                 ^~~~~~~~
../gateway.cc:78:15: warning: 'startTime' defined but not used [-Wunused-variable]
   78 | static time_t startTime[NRESTARTS];
      |               ^~~~~~~~~
../gateway.cc:77:12: warning: 'nStart' defined but not used [-Wunused-variable]
   77 | static int nStart=0;
      |            ^~~~~~
../gateway.cc:76:12: warning: 'death_flag' defined but not used [-Wunused-variable]
   76 | static int death_flag=0;
      |            ^~~~~~~~~~
In file included from C:/Users/langer/WORKFO~1/Work/EPICS/pcas/include/gdd.h:511,
                 from ../gateStat.cc:33:
C:/Users/langer/WORKFO~1/Work/EPICS/pcas/include/gddI.h: In member function 'gdd& gdd::operator=(const gdd&)':
C:/Users/langer/WORKFO~1/Work/EPICS/pcas/include/gddI.h:117:17: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'class gdd' with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess]
  117 |         { memcpy(this,&v,sizeof(gdd)); return *this; }
      |           ~~~~~~^~~~~~~~~~~~~~~~~~~~~
C:/Users/langer/WORKFO~1/Work/EPICS/pcas/include/gdd.h:96:23: note: 'class gdd' declared here
   96 | class epicsShareClass gdd
      |                       ^~~
g++ -o gateway.exe  -LC:/Users/langer/WORKFO~1/Work/EPICS/CAGateway/lib/windows-x64-mingw -LC:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/lib/windows-x64-mingw -LC:/Users/langer/WORKFO~1/Work/EPICS/pcas/lib/windows-x64-mingw -LC:/Users/langer/msys64/usr/lib       -m64           gateway.obj gatePv.obj gateResources.obj gateServer.obj gateAs.obj gateVc.obj gateAsyncIO.obj gateAsCa.obj gateStat.obj gateDbFld.obj      -lpcre -lcas -lgdd -lca -lCom  -lnetapi32 
"Installing created executable ../../bin/windows-x64-mingw/gateway.exe"
mkdir ../../bin
mkdir ../../bin/windows-x64-mingw
mingw32-make[2]: Leaving directory 'C:/Users/langer/WORKFO~1/Work/EPICS/CAGateway/src/O.windows-x64-mingw'
mingw32-make[1]: Leaving directory 'C:/Users/langer/WORKFO~1/Work/EPICS/CAGateway/src'
C:/Users/langer/msys64/mingw64/bin/mingw32-make.exe -C ./testTop install
mingw32-make[1]: Entering directory 'C:/Users/langer/WORKFO~1/Work/EPICS/CAGateway/testTop'
C:/Users/langer/msys64/mingw64/bin/mingw32-make.exe -C ./configure install
mingw32-make[2]: Entering directory 'C:/Users/langer/WORKFO~1/Work/EPICS/CAGateway/testTop/configure'
perl -CSD C:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/bin/windows-x64-mingw/makeMakefile.pl O.windows-x64-mingw ../..
perl -CSD -MExtUtils::Command -e mkpath O.Common
C:/Users/langer/msys64/mingw64/bin/mingw32-make.exe -C O.windows-x64-mingw -f ../Makefile TOP=../.. \
    T_A=windows-x64-mingw install
mingw32-make[3]: Entering directory 'C:/Users/langer/WORKFO~1/Work/EPICS/CAGateway/testTop/configure/O.windows-x64-mingw'
perl -CSD C:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/bin/windows-x64-mingw/convertRelease.pl checkRelease
mingw32-make[3]: Leaving directory 'C:/Users/langer/WORKFO~1/Work/EPICS/CAGateway/testTop/configure/O.windows-x64-mingw'
mingw32-make[2]: Leaving directory 'C:/Users/langer/WORKFO~1/Work/EPICS/CAGateway/testTop/configure'
C:/Users/langer/msys64/mingw64/bin/mingw32-make.exe -C ./pyTestsApp install
mingw32-make[2]: Entering directory 'C:/Users/langer/WORKFO~1/Work/EPICS/CAGateway/testTop/pyTestsApp'
perl -CSD C:/Users/langer/WORKFO~1/Work/EPICS/base/7.0/bin/windows-x64-mingw/makeMakefile.pl O.windows-x64-mingw ../..
perl -CSD -MExtUtils::Command -e mkpath O.Common
C:/Users/langer/msys64/mingw64/bin/mingw32-make.exe -C O.windows-x64-mingw -f ../Makefile TOP=../.. \
    T_A=windows-x64-mingw install
mingw32-make[3]: Entering directory 'C:/Users/langer/WORKFO~1/Work/EPICS/CAGateway/testTop/pyTestsApp/O.windows-x64-mingw'
"Copying test files test.db access.txt"
"Copying ../pvlist_pcre.txt to pvlist.txt (USE_PCRE: YES)"
mingw32-make[3]: Leaving directory 'C:/Users/langer/WORKFO~1/Work/EPICS/CAGateway/testTop/pyTestsApp/O.windows-x64-mingw'
mingw32-make[2]: Leaving directory 'C:/Users/langer/WORKFO~1/Work/EPICS/CAGateway/testTop/pyTestsApp'
mingw32-make[1]: Leaving directory 'C:/Users/langer/WORKFO~1/Work/EPICS/CAGateway/testTop'
19:02:02: The process "C:\Users\langer\msys64\mingw64\bin\mingw32-make.exe" exited normally.
19:02:02: Elapsed time: 00:12.

Compiling against master branches of EPICS Base 7.0 and PCAS. Setup: MSYS2/MinGW64, up-to-date. Regex support: MSYS2 package of PCRE (pcre-devel), needs a bit of tuning in the src/Makefile.

$ g++ -v
Using built-in specs.
COLLECT_GCC=C:\Users\langer\msys64\mingw64\bin\g++.exe
COLLECT_LTO_WRAPPER=C:/Users/langer/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.1.0/lto-wrapper.exe
Target: x86_64-w64-mingw32
Configured with: ../gcc-12.1.0/configure --prefix=/mingw64 --with-local-prefix=/mingw64/local --build=x86_64-w64-mingw32 --host=x86_64-w64-mingw32 --target=x86_64-w64-mingw32 --with-native-system-header-dir=/mingw64/include --libexecdir=/mingw64/lib --enable-bootstrap --enable-checking=release --with-arch=x86-64 --with-tune=generic --enable-languages=c,lto,c++,fortran,ada,objc,obj-c++,jit --enable-shared --enable-static --enable-libatomic --enable-threads=posix --enable-graphite --enable-fully-dynamic-string --enable-libstdcxx-filesystem-ts --enable-libstdcxx-time --disable-libstdcxx-pch --enable-lto --enable-libgomp --disable-multilib --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --with-libiconv --with-system-zlib --with-gmp=/mingw64 --with-mpfr=/mingw64 --with-mpc=/mingw64 --with-isl=/mingw64 --with-pkgversion='Rev1, Built by MSYS2 project' --with-bugurl=https://github.com/msys2/MINGW-packages/issues --with-gnu-as --with-gnu-ld --disable-libstdcxx-debug --with-boot-ldflags=-static-libstdc++ --with-stage1-ldflags=-static-libstdc++
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 12.1.0 (Rev1, Built by MSYS2 project)

What is different in your build?

mdavidsaver commented 2 years ago

Since I've been learning about _WIN32_WINNT recently for https://github.com/epics-base/epics-base/pull/240

mingw-w64 defaults _WIN32_WINNT to _WIN32_WINNT_WS03 aka. 0x0502, and has for a least a decade. At least when included through through windows.h as I understand the control flow.

https://github.com/mirror/mingw-w64/blob/833f0399ba29355e8db1595abe6bd1a39f2afd45/mingw-w64-headers/include/sdkddkver.h#L167

Also, if _WIN32_WINNT is set, then it is unnecessary (and perhaps undesirable) to set WINVER as well.

https://github.com/mirror/mingw-w64/blob/833f0399ba29355e8db1595abe6bd1a39f2afd45/mingw-w64-headers/include/sdkddkver.h#L180-L186

And finally, there are some users/sites who set _WIN32_WINNT externally. So some #ifndef _WIN32_WINNT seems appropriate to avoid some (more) compiler warnings.

@FreddieAkeroyd fyi.

mdavidsaver commented 2 years ago

Taking ALL_PROCESSOR_GROUPS as an example. There are two definitions circa mingw-w64 8.0.0.

$ grep -R ALL_PROCESSOR_GROUPS /usr/x86_64-w64-mingw32/include
/usr/x86_64-w64-mingw32/include/ntdef.h:#define ALL_PROCESSOR_GROUPS 0xffff
/usr/x86_64-w64-mingw32/include/winnt.h:#define ALL_PROCESSOR_GROUPS 0xffff

One definition in winnt.h is gated to _WIN32_WINNT >= 0x0601 (aka. _WIN32_WINNT_WIN7). The other in ntdef.h is not gated, but perhaps this is implied.

FreddieAkeroyd commented 2 years ago

GetMaximumProcessorCount / GetActiveProcessorCount were added in WIN7 so shouldn't be available before then, ALL_PROCESSOR_GROUPS is probably the same. With the default _WIN32_WINNT on mingw i would have expected the gateway to fail to compile. @ralphlange what is your _WIN32_WINNT getting set to on MinGW?

FreddieAkeroyd commented 2 years ago

GetMaximumProcessorCount / GetActiveProcessorCount are protected for >= win7 https://github.com/mirror/mingw-w64/blob/2d9c070c72043f2b1138de653befdf3fce49f230/mingw-w64-headers/include/winbase.h#L2917

FreddieAkeroyd commented 2 years ago

I would be cautious about setting WINVER and _WIN32_WINNT to different things. As @mdavidsaver suggests just defining _WIN32_WINNT and protecting that define is best. The gateway doesn't look to explicitly include windows.h so it must be coming in indirectly via one of the epics includes

mfurseman commented 2 years ago

Thanks for all the comments, it's nice to see how mingw is handling these things!

it sounds like the conclusion is that ca-gateway should conditionally define _WIN32_WINNT to _WIN32_WINNT_WIN7 at some point before the indirect inclusion of windows.h? Or do you think it would be better to set this externally?

FreddieAkeroyd commented 2 years ago

This depends on what the gateway plans its minimum supported windows version to be. If it plans to support XP or higher, then it shouldn't redefine _WIN32_WINNT itself as windows7 and it would need to check _WIN32_WINNT to see if it needs to add an alternative function. In this case there would need to be a mechanism for the user to specify they were targetting windows 7 or above to get access to the additional functionality, either by adding/changing a -D compiler flag or editing something like a targetver.h header. Rather than checking _WIN32_WINNT the gateway code could instead use run time dynamic linking to see if the new function exists and then adjust accordingly https://docs.microsoft.com/en-us/windows/win32/dlls/using-run-time-dynamic-linking

ralphlange commented 2 years ago

With Windows not being a main target platform for the Gateway and - more importantly - production Gateway instances running on server-type machines rather than workstations, I would have no issue targeting Win7 and up. If that makes things easier.

FreddieAkeroyd commented 2 years ago

So maybe

#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0601
#endif
#if _WIN32_WINNT < 0x0601
#error Only windows 7 and above supported
#endif

... include files that bring in windows.h etc. 
ralphlange commented 2 years ago

@mfurseman: Would that change (instead of your original proposal) work for you?

mfurseman commented 2 years ago

@ralphlange I think so, it sounds like the 'proper' way to do what I had hacked together!

ralphlange commented 2 years ago

@mfurseman: Can you check https://github.com/ralphlange/ca-gateway/tree/windows-fixes to see if that works for you?