Files
filament/build/windows/build-github.bat

157 lines
4.2 KiB
Batchfile

@echo off
setlocal
systeminfo
echo Disk info before building:
call :ShowDiskInfo
if "%GITHUB_WORKFLOW%" == "" (set RUNNING_LOCALLY=1)
if "%TARGET%" == "" (
if "%1" == "" (
set TARGET=release
) else (
set TARGET=%1
)
)
set BUILD_DEBUG=
set BUILD_RELEASE=
set INSTALL=
set BUILD_RELEASE_VARIANTS=
if "%TARGET%" == "presubmit" (
set BUILD_RELEASE=1
)
if "%TARGET%" == "continuous" (
set BUILD_DEBUG=1
set BUILD_RELEASE=1
set INSTALL=--target install
set CREATE_ARCHIVE=1
)
if "%TARGET%" == "release" (
set BUILD_DEBUG=1
set BUILD_RELEASE=1
set INSTALL=--target install
set BUILD_RELEASE_VARIANTS=1
set CREATE_ARCHIVE=1
)
set VISUAL_STUDIO_VERSION="Enterprise"
if "%RUNNING_LOCALLY%" == "1" (
set VISUAL_STUDIO_VERSION="Community"
set "PATH=%PATH%;C:\Program Files\7-Zip"
)
:: Outdated windows-2019 pattern
:: call "C:\Program Files (x86)\Microsoft Visual Studio\2019\%VISUAL_STUDIO_VERSION%\VC\Auxiliary\Build\vcvars64.bat"
call "C:\Program Files\Microsoft Visual Studio\2022\%VISUAL_STUDIO_VERSION%\VC\Auxiliary\Build\vcvars64.bat"
echo Passed vcvars64.bat
if errorlevel 1 exit /b %errorlevel%
msbuild /version
cmake --version
:: Important: build debug builds first, when disk space is plentiful. Debug builds require
:: significantly more temporary space.
if "%BUILD_DEBUG%" == "1" (
:: MTd
call :BuildVariant mtd "-DUSE_STATIC_CRT=ON" Debug || exit /b
if "%BUILD_RELEASE_VARIANTS%" == "1" (
:: MDd
call :BuildVariant mdd "-DUSE_STATIC_CRT=OFF" Debug || exit /b
)
)
if "%BUILD_RELEASE%" == "1" (
:: /MT
call :BuildVariant mt "-DUSE_STATIC_CRT=ON" Release || exit /b
if "%BUILD_RELEASE_VARIANTS%" == "1" (
:: /MD
call :BuildVariant md "-DUSE_STATIC_CRT=OFF" Release || exit /b
)
)
if "%CREATE_ARCHIVE%" == "1" (
:: Use the /MT version as the "base" install.
move out\mt out\install
mkdir out\install\lib\x86_64\mt\
move out\install\lib\x86_64\*.lib out\install\lib\x86_64\mt\
xcopy out\md\lib\x86_64\*.lib out\install\lib\x86_64\md\
xcopy out\mtd\lib\x86_64\*.lib out\install\lib\x86_64\mtd\
xcopy out\mdd\lib\x86_64\*.lib out\install\lib\x86_64\mdd\
)
:: Create an archive.
if "%CREATE_ARCHIVE%" == "1" (
cd out\install
7z a -ttar -so ..\..\filament-release.tar * | 7z a -si ..\filament-windows.tgz
)
exit /b 0
:BuildVariant
set variant=%~1
set flag=%~2
set config=%~3
echo Disk info before building variant: %variant%
call :ShowDiskInfo
mkdir out\cmake-%variant%
cd out\cmake-%variant%
if errorlevel 1 exit /b %errorlevel%
cmake ..\.. ^
-G "Visual Studio 17 2022" ^
-A x64 ^
%flag% ^
-DCMAKE_INSTALL_PREFIX=..\%variant% ^
-DFILAMENT_WINDOWS_CI_BUILD:BOOL=ON ^
-DFILAMENT_SUPPORTS_VULKAN=ON ^
|| exit /b
set build_flags=-j %NUMBER_OF_PROCESSORS%
@echo on
:: we've upgraded the windows machines, so the following are no longer accurate as of 09/19/24, but
:: keeping around the comment for record.
:: Attempt to fix "error C1060: compiler is out of heap space" seen on CI.
:: Some resource libraries require significant heap space to compile, so first compile them serially.
:: cmake --build . --target filagui --config %config% %build_flags% || exit /b
:: cmake --build . --target uberarchive --config %config% %build_flags% || exit /b
:: cmake --build . --target gltf-demo-resources --config %config% %build_flags% || exit /b
:: cmake --build . --target filamentapp-resources --config %config% %build_flags% || exit /b
:: cmake --build . --target sample-resources --config %config% %build_flags% || exit /b
:: cmake --build . --target suzanne-resources --config %config% %build_flags% || exit /b
cmake --build . %INSTALL% --config %config% %build_flags% -- /m || exit /b
@echo off
echo Disk info after building variant: %variant%
call :ShowDiskInfo
cd ..\..
:: Delete the cmake build folder, otherwise we run out of disk space on CI when
:: building multiple variants.
rd /s /q out\cmake-%variant%
exit /b 0
:: Helps debugging GitHub builds that run out of space
:ShowDiskInfo
echo =======================================================
wmic logicaldisk get size,freespace,caption
echo =======================================================
exit /b 0