From aecc34ee64d9409b65d7ee3c6cd5ea18e73d3cc7 Mon Sep 17 00:00:00 2001 From: Jonathan Naylor Date: Mon, 22 Apr 2024 13:15:25 +0100 Subject: [PATCH] Allow YSFClients to compile under Windows. --- DGIdGateway/DGIdGateway.vcxproj | 12 +++++++++++ DGIdGateway/UDPSocket.h | 3 ++- DGIdGateway/prebuild.cmd | 38 +++++++++++++++++++++++++++++++++ YSFGateway/UDPSocket.h | 3 ++- YSFGateway/YSFGateway.cpp | 4 ++-- YSFGateway/YSFGateway.vcxproj | 12 +++++++++++ YSFGateway/prebuild.cmd | 38 +++++++++++++++++++++++++++++++++ YSFParrot/UDPSocket.h | 3 ++- YSFParrot/YSFParrot.vcxproj | 12 +++++++++++ YSFParrot/prebuild.cmd | 38 +++++++++++++++++++++++++++++++++ 10 files changed, 158 insertions(+), 5 deletions(-) create mode 100644 DGIdGateway/prebuild.cmd create mode 100644 YSFGateway/prebuild.cmd create mode 100644 YSFParrot/prebuild.cmd diff --git a/DGIdGateway/DGIdGateway.vcxproj b/DGIdGateway/DGIdGateway.vcxproj index 1864ae7..60e2897 100644 --- a/DGIdGateway/DGIdGateway.vcxproj +++ b/DGIdGateway/DGIdGateway.vcxproj @@ -94,6 +94,9 @@ true ws2_32.lib;%(AdditionalDependencies) + + prebuild.cmd + @@ -111,6 +114,9 @@ true ws2_32.lib;%(AdditionalDependencies) + + prebuild.cmd + @@ -124,6 +130,9 @@ true ws2_32.lib;%(AdditionalDependencies) + + prebuild.cmd + @@ -141,6 +150,9 @@ true ws2_32.lib;%(AdditionalDependencies) + + prebuild.cmd + diff --git a/DGIdGateway/UDPSocket.h b/DGIdGateway/UDPSocket.h index 28e350c..75228a3 100644 --- a/DGIdGateway/UDPSocket.h +++ b/DGIdGateway/UDPSocket.h @@ -69,10 +69,11 @@ private: unsigned short m_localPort; #if defined(_WIN32) || defined(_WIN64) SOCKET m_fd; + int m_af; #else int m_fd; -#endif sa_family_t m_af; +#endif }; #endif diff --git a/DGIdGateway/prebuild.cmd b/DGIdGateway/prebuild.cmd new file mode 100644 index 0000000..697fde9 --- /dev/null +++ b/DGIdGateway/prebuild.cmd @@ -0,0 +1,38 @@ +@echo off +REM This pre-build file is for MSVS VC++. It parses the git master hash and +REM converts it into GitVersion.h for compiling into builds. [George M1GEO] + +cd %1 +setlocal enabledelayedexpansion +set HEADFILE=..\.git\HEAD +set HASHFILE=0 +if exist %HEADFILE% ( + for /F "tokens=4 delims=/:" %%a in ('type %HEADFILE%') do set HEADBRANCH=%%a + set HASHFILE=.git\refs\heads\!HEADBRANCH! + echo Found Git HEAD file: %HEADFILE% + echo Git HEAD branch: !HEADBRANCH! + echo Git HASH file: !HASHFILE! + call :USEHASH +) else ( + echo No head file :( + call :USENULL +) + +goto :EOF + +:USENULL +set GITHASH=0000000000000000000000000000000000000000 +goto :WRITEGITVERSIONHEADER + +:USEHASH +for /f %%i in ('type !HASHFILE!') do set GITHASH=%%i +goto :WRITEGITVERSIONHEADER + +:WRITEGITVERSIONHEADER +echo // File contains Git commit ID SHA1 present at buildtime (prebuild.cmd) > GitVersion.h +echo const char *gitversion = "%GITHASH%"; >> GitVersion.h +echo Current Git HASH: %GITHASH% +goto :FINISHED + +:FINISHED +echo GitVersion.h written... diff --git a/YSFGateway/UDPSocket.h b/YSFGateway/UDPSocket.h index 28e350c..75228a3 100644 --- a/YSFGateway/UDPSocket.h +++ b/YSFGateway/UDPSocket.h @@ -69,10 +69,11 @@ private: unsigned short m_localPort; #if defined(_WIN32) || defined(_WIN64) SOCKET m_fd; + int m_af; #else int m_fd; -#endif sa_family_t m_af; +#endif }; #endif diff --git a/YSFGateway/YSFGateway.cpp b/YSFGateway/YSFGateway.cpp index bc6e948..26859eb 100644 --- a/YSFGateway/YSFGateway.cpp +++ b/YSFGateway/YSFGateway.cpp @@ -886,7 +886,7 @@ void CYSFGateway::processRemoteCommands() if ((::memcmp(buffer + 0U, "LinkYSF", 7U) == 0) && (strlen((char*)buffer + 0U) > 8)) { std::string id = std::string((char*)(buffer + 8U)); // Left trim - id.erase(id.begin(), std::find_if(id.begin(), id.end(), std::not1(std::ptr_fun(std::isspace)))); + id.erase(id.begin(), std::find_if(id.begin(), id.end(), [](unsigned char ch) { return !std::isspace(ch); })); CYSFReflector* reflector = m_reflectors->findById(id); if (reflector == NULL) reflector = m_reflectors->findByName(id); @@ -917,7 +917,7 @@ void CYSFGateway::processRemoteCommands() } else if ((::memcmp(buffer + 0U, "LinkFCS", 7U) == 0) && (strlen((char*)buffer + 0U) > 8)) { std::string raw = std::string((char*)(buffer + 8U)); // Left trim - raw.erase(raw.begin(), std::find_if(raw.begin(), raw.end(), std::not1(std::ptr_fun(std::isspace)))); + raw.erase(raw.begin(), std::find_if(raw.begin(), raw.end(), [](unsigned char ch) { return !std::isspace(ch); })); std::string id = "FCS00"; std::string idShort = "FCS"; if (raw.length() == 3U) { diff --git a/YSFGateway/YSFGateway.vcxproj b/YSFGateway/YSFGateway.vcxproj index fb0407c..956acdb 100644 --- a/YSFGateway/YSFGateway.vcxproj +++ b/YSFGateway/YSFGateway.vcxproj @@ -94,6 +94,9 @@ true ws2_32.lib;%(AdditionalDependencies) + + prebuild.cmd + @@ -108,6 +111,9 @@ true ws2_32.lib;%(AdditionalDependencies) + + prebuild.cmd + @@ -126,6 +132,9 @@ true ws2_32.lib;%(AdditionalDependencies) + + prebuild.cmd + @@ -144,6 +153,9 @@ true ws2_32.lib;%(AdditionalDependencies) + + prebuild.cmd + diff --git a/YSFGateway/prebuild.cmd b/YSFGateway/prebuild.cmd new file mode 100644 index 0000000..697fde9 --- /dev/null +++ b/YSFGateway/prebuild.cmd @@ -0,0 +1,38 @@ +@echo off +REM This pre-build file is for MSVS VC++. It parses the git master hash and +REM converts it into GitVersion.h for compiling into builds. [George M1GEO] + +cd %1 +setlocal enabledelayedexpansion +set HEADFILE=..\.git\HEAD +set HASHFILE=0 +if exist %HEADFILE% ( + for /F "tokens=4 delims=/:" %%a in ('type %HEADFILE%') do set HEADBRANCH=%%a + set HASHFILE=.git\refs\heads\!HEADBRANCH! + echo Found Git HEAD file: %HEADFILE% + echo Git HEAD branch: !HEADBRANCH! + echo Git HASH file: !HASHFILE! + call :USEHASH +) else ( + echo No head file :( + call :USENULL +) + +goto :EOF + +:USENULL +set GITHASH=0000000000000000000000000000000000000000 +goto :WRITEGITVERSIONHEADER + +:USEHASH +for /f %%i in ('type !HASHFILE!') do set GITHASH=%%i +goto :WRITEGITVERSIONHEADER + +:WRITEGITVERSIONHEADER +echo // File contains Git commit ID SHA1 present at buildtime (prebuild.cmd) > GitVersion.h +echo const char *gitversion = "%GITHASH%"; >> GitVersion.h +echo Current Git HASH: %GITHASH% +goto :FINISHED + +:FINISHED +echo GitVersion.h written... diff --git a/YSFParrot/UDPSocket.h b/YSFParrot/UDPSocket.h index 28e350c..75228a3 100644 --- a/YSFParrot/UDPSocket.h +++ b/YSFParrot/UDPSocket.h @@ -69,10 +69,11 @@ private: unsigned short m_localPort; #if defined(_WIN32) || defined(_WIN64) SOCKET m_fd; + int m_af; #else int m_fd; -#endif sa_family_t m_af; +#endif }; #endif diff --git a/YSFParrot/YSFParrot.vcxproj b/YSFParrot/YSFParrot.vcxproj index 7bf6265..30e5844 100644 --- a/YSFParrot/YSFParrot.vcxproj +++ b/YSFParrot/YSFParrot.vcxproj @@ -94,6 +94,9 @@ true ws2_32.lib;%(AdditionalDependencies) + + prebuild.cmd + @@ -108,6 +111,9 @@ true ws2_32.lib;%(AdditionalDependencies) + + prebuild.cmd + @@ -126,6 +132,9 @@ true ws2_32.lib;%(AdditionalDependencies) + + prebuild.cmd + @@ -144,6 +153,9 @@ true ws2_32.lib;%(AdditionalDependencies) + + prebuild.cmd + diff --git a/YSFParrot/prebuild.cmd b/YSFParrot/prebuild.cmd new file mode 100644 index 0000000..697fde9 --- /dev/null +++ b/YSFParrot/prebuild.cmd @@ -0,0 +1,38 @@ +@echo off +REM This pre-build file is for MSVS VC++. It parses the git master hash and +REM converts it into GitVersion.h for compiling into builds. [George M1GEO] + +cd %1 +setlocal enabledelayedexpansion +set HEADFILE=..\.git\HEAD +set HASHFILE=0 +if exist %HEADFILE% ( + for /F "tokens=4 delims=/:" %%a in ('type %HEADFILE%') do set HEADBRANCH=%%a + set HASHFILE=.git\refs\heads\!HEADBRANCH! + echo Found Git HEAD file: %HEADFILE% + echo Git HEAD branch: !HEADBRANCH! + echo Git HASH file: !HASHFILE! + call :USEHASH +) else ( + echo No head file :( + call :USENULL +) + +goto :EOF + +:USENULL +set GITHASH=0000000000000000000000000000000000000000 +goto :WRITEGITVERSIONHEADER + +:USEHASH +for /f %%i in ('type !HASHFILE!') do set GITHASH=%%i +goto :WRITEGITVERSIONHEADER + +:WRITEGITVERSIONHEADER +echo // File contains Git commit ID SHA1 present at buildtime (prebuild.cmd) > GitVersion.h +echo const char *gitversion = "%GITHASH%"; >> GitVersion.h +echo Current Git HASH: %GITHASH% +goto :FINISHED + +:FINISHED +echo GitVersion.h written...