diff --git a/.github/workflows/build-win.yml b/.github/workflows/build-win.yml new file mode 100644 index 00000000..7c14f832 --- /dev/null +++ b/.github/workflows/build-win.yml @@ -0,0 +1,205 @@ + +######################################################################################## +# overview for supported targets: +# 12.0 https://learn.microsoft.com/en-us/visualstudio/releases/2013/vs2013-compatibility-vs +# 14.0 https://learn.microsoft.com/en-us/visualstudio/releases/2015/vs2015-compatibility-vs +# 15.0 https://learn.microsoft.com/en-us/visualstudio/releases/2017/vs2017-compatibility-vs +# 16.0 https://learn.microsoft.com/en-us/visualstudio/releases/2019/compatibility +# 17.0 https://learn.microsoft.com/en-us/visualstudio/releases/2022/compatibility +# -> take 16.0 for now /TR +######################################################################################## + +name: Build Windows binaries +on: [push, pull_request] + +# runs-on: windows-latest -> VS 17.0 + +jobs: + build: + runs-on: windows-2019 + + strategy: + matrix: + arch: [ amd64, amd64_x86, amd64_arm, amd64_arm64 ] + include: + - arch: amd64_x86 + subsys: "5.01" + platform: "x86" + - arch: amd64 + subsys: "5.02" + platform: "x64" + - arch: amd64_arm + subsys: "6.02" + platform: "arm" + - arch: amd64_arm64 + subsys: "6.02" + platform: "arm64" + steps: + - uses: actions/checkout@v3 + + - name: Add msbuild to PATH + uses: microsoft/setup-msbuild@v1.3 + with: + vs-version: 16.11 + + - name: Enable Developer Command Prompt + uses: ilammy/msvc-dev-cmd@v1 + with: + arch: ${{ matrix.arch }} + + - name: Compile ${{ matrix.arch }} + shell: cmd + run: | + set APPVEYOR_BUILD_FOLDER=%cd% + set CLOUD=TRUE + set VC=17.0 + set PLATFORM=${{matrix.platform}} + set SUBSYS=${{matrix.subsys}} + set DEBUG=${{ matrix.debug }} + echo "********" + echo "APPVEYOR_BUILD_FOLDER: %APPVEYOR_BUILD_FOLDER%" + echo "Platform: %PLATFORM%" + echo "SUBSYS: %SUBSYS%" + echo "Build: %DEBUG%" + echo "GithubAction: %CLOUD%" + cd cpp + @echo off + + set ROOT=%cd%\7zip + set OUTDIR=%APPVEYOR_BUILD_FOLDER%\build\bin-%VC%-%PLATFORM% + set ERRFILE=%APPVEYOR_BUILD_FOLDER%\build\bin-%VC%-%PLATFORM%.log + set LFLAGS=/SUBSYSTEM:WINDOWS,%SUBSYS% + + set > %APPVEYOR_BUILD_FOLDER%\build\env-%VC%-%PLATFORM%.txt + mkdir %OUTDIR% + + cd %ROOT%\Bundles\Format7zExtract + nmake %OPTS% + IF %errorlevel% NEQ 0 echo "Error @ 7zxa.dll" >> %ERRFILE% + copy %PLATFORM%\7zxa.dll %OUTDIR%\7zxa.dll + + cd %ROOT%\Bundles\Format7z + nmake %OPTS% + IF %errorlevel% NEQ 0 ( + echo "Error @ 7za.dll" >> %ERRFILE% + exit -1 ) + copy %PLATFORM%\7za.dll %OUTDIR%\7za.dll + + cd %ROOT%\Bundles\Format7zF + nmake %OPTS% + IF %errorlevel% NEQ 0 ( + echo "Error @ 7z.dll" >> %ERRFILE% + exit -1 ) + copy %PLATFORM%\7z.dll %OUTDIR%\7z.dll + + cd %ROOT%\UI\FileManager + nmake %OPTS% + IF %errorlevel% NEQ 0 ( + echo "Error @ 7zFM.exe" >> %ERRFILE% + exit -1 ) + copy %PLATFORM%\7zFM.exe %OUTDIR%\7zFM.exe + + cd %ROOT%\UI\GUI + nmake %OPTS% + IF %errorlevel% NEQ 0 ( + echo "Error @ 7zG.exe" >> %ERRFILE% + exit -1 ) + copy %PLATFORM%\7zG.exe %OUTDIR%\7zG.exe + + cd %ROOT%\UI\Explorer + nmake %OPTS% + IF %errorlevel% NEQ 0 ( + echo "Error @ 7-zip.dll" >> %ERRFILE% + exit -1 ) + copy %PLATFORM%\7-zip.dll %OUTDIR%\7-zip.dll + + cd %ROOT%\Bundles\SFXWin + nmake %OPTS% + IF %errorlevel% NEQ 0 ( + echo "Error @ 7z.sfx" >> %ERRFILE% + exit -1 ) + copy %PLATFORM%\7z.sfx %OUTDIR%\7z.sfx + + cd %ROOT%\Bundles\Codec_brotli + nmake %OPTS% + IF %errorlevel% NEQ 0 ( + echo "Error @ brotli.dll" >> %ERRFILE% + exit -1 ) + copy %PLATFORM%\brotli.dll %OUTDIR%\brotli.dll + + cd %ROOT%\Bundles\Codec_lizard + nmake %OPTS% + IF %errorlevel% NEQ 0 ( + echo "Error @ lizard.dll" >> %ERRFILE% + exit -1 ) + copy %PLATFORM%\lizard.dll %OUTDIR%\lizard.dll + + cd %ROOT%\Bundles\Codec_lz4 + nmake %OPTS% + IF %errorlevel% NEQ 0 ( + echo "Error @ lz4.dll" >> %ERRFILE% + exit -1 ) + copy %PLATFORM%\lz4.dll %OUTDIR%\lz4.dll + + cd %ROOT%\Bundles\Codec_lz5 + nmake %OPTS% + IF %errorlevel% NEQ 0 ( + echo "Error @ lz5.dll" >> %ERRFILE% + exit -1 ) + copy %PLATFORM%\lz5.dll %OUTDIR%\lz5.dll + + cd %ROOT%\Bundles\Codec_zstd + nmake %OPTS% + IF %errorlevel% NEQ 0 ( + echo "Error @ zstd.dll" >> %ERRFILE% + exit -1 ) + copy %PLATFORM%\zstd.dll %OUTDIR%\zstd.dll + + cd %ROOT%\Bundles\Codec_flzma2 + nmake %OPTS% + IF %errorlevel% NEQ 0 ( + echo "Error @ flzma2.dll" >> %ERRFILE% + exit -1 ) + copy %PLATFORM%\flzma2.dll %OUTDIR%\flzma2.dll + + cd %ROOT%\..\..\C\Util\7zipInstall + nmake %OPTS% + IF %errorlevel% NEQ 0 ( + echo "Error @ Install.exe" >> %ERRFILE% + exit -1 ) + copy %PLATFORM%\7zipInstall.exe %OUTDIR%\Install.exe + + cd %ROOT%\..\..\C\Util\7zipUninstall + nmake %OPTS% + IF %errorlevel% NEQ 0 ( + echo "Error @ Uninstall.exe" >> %ERRFILE% + exit -1 ) + copy %PLATFORM%\7zipUninstall.exe %OUTDIR%\Uninstall.exe + + set LFLAGS=/SUBSYSTEM:CONSOLE,%SUBSYS% + cd %ROOT%\UI\Console + nmake %OPTS% + IF %errorlevel% NEQ 0 ( + echo "Error @ 7z.exe" >> %ERRFILE% + exit -1 ) + copy %PLATFORM%\7z.exe %OUTDIR%\7z.exe + + cd %ROOT%\Bundles\SFXCon + nmake %OPTS% + IF %errorlevel% NEQ 0 ( + echo "Error @ 7zCon.sfx" >> %ERRFILE% + exit -1 ) + copy %PLATFORM%\7zCon.sfx %OUTDIR%\7zCon.sfx + + cd %ROOT%\Bundles\Alone + nmake %OPTS% + IF %errorlevel% NEQ 0 ( + echo "Error @ 7za.exe" >> %ERRFILE% + exit -1 ) + copy %PLATFORM%\7za.exe %OUTDIR%\7za.exe + + - name: Upload a Build Artifact + uses: actions/upload-artifact@v3 + with: + # A file, directory or wildcard pattern that describes what to upload + path: ${{ github.workspace }}/build/**/* diff --git a/CPP/Build.mak b/CPP/Build.mak index 9125ec8f..81b796db 100644 --- a/CPP/Build.mak +++ b/CPP/Build.mak @@ -19,9 +19,10 @@ O=o !IF "$(PLATFORM)" == "x64" MY_ML = ml64 -WX -#-Dx64 !ELSEIF "$(PLATFORM)" == "arm" MY_ML = armasm -WX +!ELSEIF "$(PLATFORM)" == "arm64" +MY_ML = armasm !ELSE MY_ML = ml -WX # -DABI_CDECL @@ -116,11 +117,7 @@ CFLAGS = $(CFLAGS) -D_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE !ENDIF !ENDIF -!IF "$(PLATFORM)" == "x64" CFLAGS_O1 = $(CFLAGS) -O1 -!ELSE -CFLAGS_O1 = $(CFLAGS) -O1 -!ENDIF CFLAGS_O2 = $(CFLAGS) -O2 /Ob3 LFLAGS = $(LFLAGS) -nologo -OPT:REF -OPT:ICF