diff --git a/.github/workflows/build-watcom.yml b/.github/workflows/build-watcom.yml new file mode 100644 index 0000000..04e0111 --- /dev/null +++ b/.github/workflows/build-watcom.yml @@ -0,0 +1,71 @@ +name: Build Win32 3proxy-lite with Watcom + +on: + push: + branches: [ "test-ci" ] + paths: [ 'RELEASE', '.github/workflows/build-watcom.yml' ] + +jobs: + ci: + name: "${{ matrix.target }}" + strategy: + matrix: + target: + - windows-2022 + runs-on: ${{ matrix.target }} + steps: + - uses: actions/checkout@v4 +# - name: configure +# run: ./configure + - name: Setup Open Watcom + uses: open-watcom/setup-watcom@v0 + - name: set date + run: | + $NOW = Get-Date -Format "yyMMddHHmmss" + echo "now: $NOW" + $RELEASE = Get-Content -Path "RELEASE" -Raw + echo "release: $RELEASE" + echo "NOW=$NOW" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append + echo "RELEASE=$RELEASE" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append + echo "VERSION=VERSION=`"$RELEASE`"" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append + echo "BUILDDATE=BUILDDATE=`"$NOW`"" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append + - name: make Watcom + shell: cmd + run: | + echo "volatile char VerSion[]=^"3APA3A-3proxy-Internal-Build: 3proxy-%RELEASE%%-%NOW%\r\nCode certificate: https://3proxy.org/3proxy.cer\r\n^";" >>src/3proxy.c + nmake /F Makefile.watcom + - name: make dist dir + shell: cmd + run: | + mkdir dist + mkdir dist\3proxy + mkdir dist\3proxy\bin + mkdir dist\3proxy\cfg + mkdir dist\3proxy\cfg\sql + mkdir dist\3proxy\doc + mkdir dist\3proxy\doc\ru + mkdir dist\3proxy\doc\html + mkdir dist\3proxy\doc\html\plugins + mkdir dist\3proxy\doc\html\man3 + mkdir dist\3proxy\doc\html\man8 + mkdir dist\3proxy\doc\devel + copy bin\3proxy.exe dist\3proxy\bin\ + copy bin\*.dll dist\3proxy\bin\ + copy bin\mycrypt.exe dist\3proxy\bin\ + copy cfg\*.* dist\3proxy\cfg\ + copy cfg\sql\*.* dist\3proxy\cfg\sql\ + copy doc\ru\*.* dist\3proxy\doc\ru\ + copy doc\html\*.* dist\3proxy\doc\html\ + copy doc\html\plugins\*.* dist\3proxy\doc\html\plugins\ + copy doc\html\man8\*.* dist\3proxy\doc\html\man8\ + copy doc\html\man3\*.* dist\3proxy\doc\html\man3\ + copy doc\devel\*.rtf dist\3proxy\doc\devel\ + copy copying dist\3proxy\ + copy authors dist\3proxy\ + copy README dist\3proxy\ + copy rus.3ps dist\3proxy\ + - name: Get artifact + uses: actions/upload-artifact@v4 + with: + name: "3proxy-${{ env.RELEASE }}-lite" + path: dist/ diff --git a/.github/workflows/build-win32.yml b/.github/workflows/build-win32.yml new file mode 100644 index 0000000..f321178 --- /dev/null +++ b/.github/workflows/build-win32.yml @@ -0,0 +1,79 @@ +name: Build Win32 3proxy with MSVC + +on: + push: + branches: [ "test-ci" ] + paths: [ 'RELEASE', '.github/workflows/build-win32.yml' ] + +jobs: + ci: + name: "${{ matrix.target }}" + strategy: + matrix: + target: + - windows-2022 + runs-on: ${{ matrix.target }} + steps: + - uses: actions/checkout@v4 +# - name: configure +# run: ./configure + - name: set date + run: | + $NOW = Get-Date -Format "yyMMddHHmmss" + echo "now: $NOW" + $RELEASE = Get-Content -Path "RELEASE" -Raw + echo "release: $RELEASE" + echo "NOW=$NOW" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append + echo "RELEASE=$RELEASE" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append + echo "VERSION=VERSION=`"$RELEASE`"" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append + echo "BUILDDATE=BUILDDATE=`"$NOW`"" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append + - name: install packages + run: vcpkg install pcre2:x86-windows-static openssl:x86-windows-static + - name: Add msbuild to PATH + uses: microsoft/setup-msbuild@v3 + - name: make Windows MSVC + if: ${{ startsWith(matrix.target, 'windows') }} + shell: cmd + run: | + call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars32.bat" + D: + cd "D:/a/3proxy/3proxy" + set "LIB=%LIB%;c:/vcpkg/installed/x86-windows-static/lib" + set "INCLUDE=%INCLUDE%;c:/vcpkg/installed/x86-windows-static/include" + echo "volatile char VerSion[]=^"3APA3A-3proxy-Internal-Build: 3proxy-%RELEASE%%-%NOW%\r\nCode certificate: https://3proxy.org/3proxy.cer\r\n^";" >>src/3proxy.c + nmake /F Makefile.msvc + - name: make dist dir + shell: cmd + run: | + mkdir dist + mkdir dist\3proxy + mkdir dist\3proxy\bin + mkdir dist\3proxy\cfg + mkdir dist\3proxy\cfg\sql + mkdir dist\3proxy\doc + mkdir dist\3proxy\doc\ru + mkdir dist\3proxy\doc\html + mkdir dist\3proxy\doc\html\plugins + mkdir dist\3proxy\doc\html\man3 + mkdir dist\3proxy\doc\html\man8 + mkdir dist\3proxy\doc\devel + copy bin\3proxy.exe dist\3proxy\bin\ + copy bin\*.dll dist\3proxy\bin\ + copy bin\mycrypt.exe dist\3proxy\bin\ + copy cfg\*.* dist\3proxy\cfg\ + copy cfg\sql\*.* dist\3proxy\cfg\sql\ + copy doc\ru\*.* dist\3proxy\doc\ru\ + copy doc\html\*.* dist\3proxy\doc\html\ + copy doc\html\plugins\*.* dist\3proxy\doc\html\plugins\ + copy doc\html\man8\*.* dist\3proxy\doc\html\man8\ + copy doc\html\man3\*.* dist\3proxy\doc\html\man3\ + copy doc\devel\*.rtf dist\3proxy\doc\devel\ + copy copying dist\3proxy\ + copy authors dist\3proxy\ + copy README dist\3proxy\ + copy rus.3ps dist\3proxy\ + - name: Get artifact + uses: actions/upload-artifact@v4 + with: + name: "3proxy-${{ env.RELEASE }}" + path: dist/ diff --git a/.github/workflows/build-win64.yml b/.github/workflows/build-win64.yml new file mode 100644 index 0000000..1ab1002 --- /dev/null +++ b/.github/workflows/build-win64.yml @@ -0,0 +1,79 @@ +name: Build Win64 3proxy with MSVC + +on: + push: + branches: [ "test-ci" ] + paths: [ 'RELEASE', '.github/workflows/build-win64.yml' ] + +jobs: + ci: + name: "${{ matrix.target }}" + strategy: + matrix: + target: + - windows-2022 + runs-on: ${{ matrix.target }} + steps: + - uses: actions/checkout@v4 +# - name: configure +# run: ./configure + - name: set date + run: | + $NOW = Get-Date -Format "yyMMddHHmmss" + echo "now: $NOW" + $RELEASE = Get-Content -Path "RELEASE" -Raw + echo "release: $RELEASE" + echo "NOW=$NOW" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append + echo "RELEASE=$RELEASE" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append + echo "VERSION=VERSION=`"$RELEASE`"" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append + echo "BUILDDATE=BUILDDATE=`"$NOW`"" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append + - name: install packages + run: vcpkg install pcre2:x64-windows-static openssl:x64-windows-static + - name: Add msbuild to PATH + uses: microsoft/setup-msbuild@v3 + - name: make Windows MSVC + if: ${{ startsWith(matrix.target, 'windows') }} + shell: cmd + run: | + call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" + D: + cd "D:/a/3proxy/3proxy" + set "LIB=%LIB%;c:/vcpkg/installed/x64-windows-static/lib" + set "INCLUDE=%INCLUDE%;c:/vcpkg/installed/x64-windows-static/include" + echo "volatile char VerSion[]=^"3APA3A-3proxy-Internal-Build: 3proxy-%RELEASE%%-%NOW%\r\nCode certificate: https://3proxy.org/3proxy.cer\r\n^";" >>src/3proxy.c + nmake /F Makefile.msvc + - name: make dist dir + shell: cmd + run: | + mkdir dist + mkdir dist\3proxy + mkdir dist\3proxy\bin64 + mkdir dist\3proxy\cfg + mkdir dist\3proxy\cfg\sql + mkdir dist\3proxy\doc + mkdir dist\3proxy\doc\ru + mkdir dist\3proxy\doc\html + mkdir dist\3proxy\doc\html\plugins + mkdir dist\3proxy\doc\html\man3 + mkdir dist\3proxy\doc\html\man8 + mkdir dist\3proxy\doc\devel + copy bin\3proxy.exe dist\3proxy\bin64\ + copy bin\*.dll dist\3proxy\bin64\ + copy bin\mycrypt.exe dist\3proxy\bin64\ + copy cfg\*.* dist\3proxy\cfg\ + copy cfg\sql\*.* dist\3proxy\cfg\sql\ + copy doc\ru\*.* dist\3proxy\doc\ru\ + copy doc\html\*.* dist\3proxy\doc\html\ + copy doc\html\plugins\*.* dist\3proxy\doc\html\plugins\ + copy doc\html\man8\*.* dist\3proxy\doc\html\man8\ + copy doc\html\man3\*.* dist\3proxy\doc\html\man3\ + copy doc\devel\*.rtf dist\3proxy\doc\devel\ + copy copying dist\3proxy\ + copy authors dist\3proxy\ + copy README dist\3proxy\ + copy rus.3ps dist\3proxy\ + - name: Get artifact + uses: actions/upload-artifact@v4 + with: + name: "3proxy-${{ env.RELEASE }}-x64" + path: dist/ diff --git a/.github/workflows/build-winarm64.yml b/.github/workflows/build-winarm64.yml new file mode 100644 index 0000000..e0fd9de --- /dev/null +++ b/.github/workflows/build-winarm64.yml @@ -0,0 +1,79 @@ +name: Build Win-arm64 3proxy with MSVC + +on: + push: + branches: [ "test-ci" ] + paths: [ 'RELEASE', '.github/workflows/build-win32.yml' ] + +jobs: + ci: + name: "${{ matrix.target }}" + strategy: + matrix: + target: + - windows-2022 + runs-on: ${{ matrix.target }} + steps: + - uses: actions/checkout@v4 +# - name: configure +# run: ./configure + - name: set date + run: | + $NOW = Get-Date -Format "yyMMddHHmmss" + echo "now: $NOW" + $RELEASE = Get-Content -Path "RELEASE" -Raw + echo "release: $RELEASE" + echo "NOW=$NOW" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append + echo "RELEASE=$RELEASE" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append + echo "VERSION=VERSION=`"$RELEASE`"" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append + echo "BUILDDATE=BUILDDATE=`"$NOW`"" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append + - name: install packages + run: vcpkg install pcre2:arm64-windows-static openssl:arm64-windows-static + - name: Add msbuild to PATH + uses: microsoft/setup-msbuild@v3 + - name: make Windows MSVC + if: ${{ startsWith(matrix.target, 'windows') }} + shell: cmd + run: | + call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsx86_arm64.bat" + D: + cd "D:/a/3proxy/3proxy" + set "LIB=%LIB%;c:/vcpkg/installed/arm64-windows-static/lib" + set "INCLUDE=%INCLUDE%;c:/vcpkg/installed/arm64-windows-static/include" + echo "volatile char VerSion[]=^"3APA3A-3proxy-Internal-Build: 3proxy-%RELEASE%%-%NOW%\r\nCode certificate: https://3proxy.org/3proxy.cer\r\n^";" >>src/3proxy.c + nmake /F Makefile.msvc + - name: make dist dir + shell: cmd + run: | + mkdir dist + mkdir dist\3proxy + mkdir dist\3proxy\bin64 + mkdir dist\3proxy\cfg + mkdir dist\3proxy\cfg\sql + mkdir dist\3proxy\doc + mkdir dist\3proxy\doc\ru + mkdir dist\3proxy\doc\html + mkdir dist\3proxy\doc\html\plugins + mkdir dist\3proxy\doc\html\man3 + mkdir dist\3proxy\doc\html\man8 + mkdir dist\3proxy\doc\devel + copy bin\3proxy.exe dist\3proxy\bin64\ + copy bin\*.dll dist\3proxy\bin64\ + copy bin\mycrypt.exe dist\3proxy\bin64\ + copy cfg\*.* dist\3proxy\cfg\ + copy cfg\sql\*.* dist\3proxy\cfg\sql\ + copy doc\ru\*.* dist\3proxy\doc\ru\ + copy doc\html\*.* dist\3proxy\doc\html\ + copy doc\html\plugins\*.* dist\3proxy\doc\html\plugins\ + copy doc\html\man8\*.* dist\3proxy\doc\html\man8\ + copy doc\html\man3\*.* dist\3proxy\doc\html\man3\ + copy doc\devel\*.rtf dist\3proxy\doc\devel\ + copy copying dist\3proxy\ + copy authors dist\3proxy\ + copy README dist\3proxy\ + copy rus.3ps dist\3proxy\ + - name: Get artifact + uses: actions/upload-artifact@v4 + with: + name: "3proxy-${{ env.RELEASE }}-arm64" + path: dist/ diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml index 69471f2..e9f94d3 100644 --- a/.github/workflows/c-cpp.yml +++ b/.github/workflows/c-cpp.yml @@ -72,11 +72,10 @@ jobs: call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" D: cd "D:/a/3proxy/3proxy" - mkdir bin64 set "LIB=%LIB%;c:/program files/openssl/lib/VC/x64/MT;c:/vcpkg/installed/x64-windows/lib" set "INCLUDE=%INCLUDE%;c:/program files/openssl/include;c:/vcpkg/installed/x64-windows/include" - nmake /F Makefile.msvc64 - nmake /F Makefile.msvc64 clean + nmake /F Makefile.msvc + nmake /F Makefile.msvc clean - name: make with CMake POSIX if: ${{ ! startsWith(matrix.target, 'windows') }} run: mkdir build && cd build && cmake .. && cmake --build . diff --git a/Makefile.msvc b/Makefile.msvc index 49cc45f..142d78f 100644 --- a/Makefile.msvc +++ b/Makefile.msvc @@ -6,14 +6,19 @@ BUILDDIR = ../bin/ CC = cl -CFLAGS = /nologo /MT /W3 /Ox /GS /EHs- /GA /GF /D "MSVC" /D "WITH_WSAPOLL" /D "NDEBUG" /D "WIN32" /D "WITH_SSL" /D "_CONSOLE" /D "_MBCS" /D "_WIN32" /D "PRINTF_INT64_MODIFIER=\"I64\"" /Fp"proxy.pch" /FD /c $(VERSION) $(BUILDDATE) +CFLAGS = /nologo /MT /W3 /Ox /GS /EHs- /GA /GF /D "MSVC" /D "WITH_WSAPOLL" /D "NDEBUG" /D "WIN32" /D "WITH_SSL" /D "_CONSOLE" /D "_MBCS" /D "_WIN32" /D "PRINTF_INT64_MODIFIER=\"I64\"" /Fp"proxy.pch" /FD /c +!IFDEF RELEASE +VERSION=/D VERSION=\"3proxy-$(RELEASE)\" +!ENDIF +!IFDEF NOW +BUILDDATE=/D BUILDDATE=\"$(NOW)\" +!ENDIF COUT = /Fo LN = link -LDFLAGS = /nologo /subsystem:console /incremental:no /machine:I386 +LDFLAGS = /nologo /subsystem:console /incremental:no DLFLAGS = /DLL DLSUFFICS = .dll LIBS = ws2_32.lib advapi32.lib odbc32.lib user32.lib kernel32.lib Gdi32.lib Crypt32.lib libcrypto.lib libssl.lib -LIBSOLD = libeay32MT.lib ssleay32MT.lib LIBSPREFIX = LIBSSUFFIX = .lib LIBEXT = .lib diff --git a/Makefile.msvc64 b/Makefile.msvc64 deleted file mode 100644 index 1df0048..0000000 --- a/Makefile.msvc64 +++ /dev/null @@ -1,46 +0,0 @@ -# -# 3 proxy Makefile for Microsoft Visual C compiler (for both make and nmake) -# -# -# Add /DSAFESQL to CFLAGS if you are using poorely written/tested ODBC driver - -MAKEFILE = Makefile.msvc64 - -BUILDDIR = ../bin64/ -CC = cl -CFLAGS = /nologo /MT /W3 /Ox /EHs- /GS /GA /GF /D "MSVC" /D "WITH_SSL" /D "WITH_WSAPOLL" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "_WIN32" /D "PRINTF_INT64_MODIFIER=\"I64\"" /Fp"proxy.pch" /FD /c $(VERSION) $(BUILDDATE) $(CFLAGS) -COUT = /Fo -LN = link -LDFLAGS = /nologo /subsystem:console /incremental:no /machine:x64 -DLFLAGS = /DLL -DLSUFFICS = .dll -LIBS = ws2_32.lib advapi32.lib odbc32.lib user32.lib kernel32.lib Gdi32.lib Crypt32.lib libcrypto.lib libssl.lib $(LIBS) -LIBSOLD = libeay32.lib ssleay32.lib -LIBSPREFIX = -LIBSSUFFIX = .lib -LIBEXT = .lib -LNOUT = /out: -EXESUFFICS = .exe -OBJSUFFICS = .obj -DEFINEOPTION = /D -COMPFILES = *.pch *.idb -REMOVECOMMAND = del 2>NUL >NUL -TYPECOMMAND = type -COMPATLIBS = -VERFILE = 3proxy.res $(VERFILE) -VERSIONDEP = 3proxy.res $(VERSIONDEP) -PLUGINS = utf8tocp1251 WindowsAuthentication TrafficPlugin StringsPlugin FilePlugin SSLPlugin PCREPlugin -AFTERCLEAN = del src\*.res - -include Makefile.inc - -3proxy.res: - rc 3proxy.rc - -3proxyres.obj: ../3proxy.res - cvtres /out:3proxyres.obj /machine:x64 ../3proxy.res - - -allplugins: - for /D %%i in ($(PLUGINS)) do (copy Makefile plugins\%%i && copy Makefile.var plugins\%%i && cd plugins\%%i && nmake && del *.obj *.idb &&cd ..\..) - diff --git a/Makefile.msvcARM64 b/Makefile.msvcARM64 deleted file mode 100644 index 383212e..0000000 --- a/Makefile.msvcARM64 +++ /dev/null @@ -1,46 +0,0 @@ -# -# 3 proxy Makefile for Microsoft Visual C compiler (for both make and nmake) -# -# -# Add /DSAFESQL to CFLAGS if you are using poorely written/tested ODBC driver - -BUILDDIR = ../bin64/ -CC = cl -CFLAGS = /nologo /MT /W3 /Ox /EHs- /GS /GA /GF /D "MSVC" /D "WITH_WSAPOLL" /D "WITH_SSL" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "_WIN32" /D "PRINTF_INT64_MODIFIER=\"I64\"" /Fp"proxy.pch" /FD /c $(VERSION) $(BUILDDATE) -COUT = /Fo -LN = link -LDFLAGS = /nologo /subsystem:console /incremental:no /machine:arm64 -DLFLAGS = /DLL -DLSUFFICS = .dll -LIBS = ws2_32.lib advapi32.lib odbc32.lib user32.lib kernel32.lib Gdi32.lib libcrypto.lib libssl.lib -LIBSOLD = -LIBSPREFIX = -LIBSSUFFIX = .lib -LIBEXT = .lib -LNOUT = /out: -EXESUFFICS = .exe -OBJSUFFICS = .obj -DEFINEOPTION = /D -COMPFILES = *.pch *.idb -REMOVECOMMAND = del 2>NUL >NUL -TYPECOMMAND = type -COMPATLIBS = -MAKEFILE = Makefile.msvcARM64 -PLUGINS = utf8tocp1251 WindowsAuthentication TrafficPlugin StringsPlugin FilePlugin SSLPlugin PCREPlugin -VERFILE = 3proxy.res $(VERFILE) -VERSIONDEP = 3proxy.res $(VERSIONDEP) -AFTERCLEAN = del src\*.res - - -include Makefile.inc - -3proxy.res: - rc 3proxy.rc - -3proxyres.obj: ../3proxy.res - cvtres /out:3proxyres.obj /machine:x64 ../3proxy.res - - -allplugins: - for /D %%i in ($(PLUGINS)) do (copy Makefile plugins\%%i && copy Makefile.var plugins\%%i && cd plugins\%%i && nmake && del *.obj *.idb &&cd ..\..) - diff --git a/Makefile.msvcCE b/Makefile.msvcCE deleted file mode 100644 index dbc855c..0000000 --- a/Makefile.msvcCE +++ /dev/null @@ -1,33 +0,0 @@ -# -# 3 proxy Makefile for Microsoft Visual C compiler (for both make and nmake) -# -# -# Add /DSAFESQL to CFLAGS if you are using poorely written/tested ODBC driver - -BUILDDIR = ../bin/ -CC = cl -CFLAGS = /DARM /D "NOODBC" /nologo /MT /W3 /Wp64 /Ox /GS /EHs- /GA /GF /D "MSVC" /D "_WINCE" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "_WIN32" /D "PRINTF_INT64_MODIFIER=\"I64\"" /Fp"proxy.pch" /FD /c -COUT = /Fo -LN = link -LDFLAGS = /nologo /subsystem:console /incremental:no -DLFLAGS = /DLL -DLSUFFICS = .dll -LIBS = ws2_32.lib advapi32.lib odbc32.lib user32.lib -LIBEXT = .lib -LNOUT = /out: -EXESUFFICS = .exe -OBJSUFFICS = .obj -DEFINEOPTION = /D -COMPFILES = *.pch *.idb -REMOVECOMMAND = del 2>NUL >NUL -TYPECOMMAND = type -COMPATLIBS = -MAKEFILE = Makefile.msvc -PLUGINS = WindowsAuthentication TrafficPlugin StringsPlugin - - -include Makefile.inc - -allplugins: - for /D %%i in ($(PLUGINS)) do (copy Makefile plugins\%%i && copy Makefile.var plugins\%%i && cd plugins\%%i && nmake && del *.obj *.idb &&cd ..\..) - \ No newline at end of file