You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

111 lines
7.3 KiB

if "%APPVEYOR_BUILD_WORKER_IMAGE%" == "Visual Studio 2022" call "C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Auxiliary/Build/vcvarsall.bat" %PLATFORM% || exit /b
if "%APPVEYOR_BUILD_WORKER_IMAGE%" == "Visual Studio 2019" call "C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Auxiliary/Build/vcvarsall.bat" %PLATFORM% || exit /b
if "%APPVEYOR_BUILD_WORKER_IMAGE%" == "Visual Studio 2017" call "C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Auxiliary/Build/vcvarsall.bat" %PLATFORM% || exit /b
if "%APPVEYOR_BUILD_WORKER_IMAGE%" == "Visual Studio 2015" call "C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/vcvarsall.bat" %PLATFORM% || exit /b
set PATH=%APPVEYOR_BUILD_FOLDER%\deps\bin;%PATH%
rem OpenAL DLL is renamed & copied to magnum's bin dir automatically by the
rem buildsystem, no need to do that here anymore
rem - Need to explicitly specify a 64-bit target, otherwise CMake+Ninja can't
rem figure that out -- https://gitlab.kitware.com/cmake/cmake/issues/16259
rem - For TestSuite we need to enable exceptions explicitly with /EH as these
rem are currently disabled -- https://github.com/catchorg/Catch2/issues/1113
rem - The MSVC 2022 build has coverage enabled, for which the profile library
rem has to be explicitly linked -- https://bugs.llvm.org/show_bug.cgi?id=40877,
rem https://gitlab.kitware.com/cmake/cmake/-/issues/23437
if "%COMPILER%" == "msvc-clang" if "%APPVEYOR_BUILD_WORKER_IMAGE%" == "Visual Studio 2022" set COMPILER_EXTRA=-DCMAKE_CXX_COMPILER="C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/Llvm/bin/clang-cl.exe" -DCMAKE_LINKER="C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/Llvm/bin/lld-link.exe" -DCMAKE_CXX_FLAGS="-m64 /EHsc --coverage" -DCMAKE_EXE_LINKER_FLAGS="-libpath:\"C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/Llvm/x64/lib/clang/18/lib/windows\" \"C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/Llvm/x64/lib/clang/18/lib/windows/clang_rt.profile-x86_64.lib\"" -DCMAKE_SHARED_LINKER_FLAGS="-libpath:\"C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/Llvm/x64/lib/clang/18/lib/windows\" \"C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/Llvm/x64/lib/clang/18/lib/windows/clang_rt.profile-x86_64.lib\""
if "%COMPILER%" == "msvc-clang" if "%APPVEYOR_BUILD_WORKER_IMAGE%" == "Visual Studio 2019" set COMPILER_EXTRA=-DCMAKE_CXX_COMPILER="C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/Llvm/bin/clang-cl.exe" -DCMAKE_LINKER="C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/Llvm/bin/lld-link.exe" -DCMAKE_CXX_FLAGS="-m64 /EHsc"
rem Build Corrade
git clone --depth 1 https://github.com/mosra/corrade.git || exit /b
cd corrade || exit /b
mkdir build && cd build || exit /b
cmake .. ^
-DCMAKE_BUILD_TYPE=%CONFIGURATION% ^
-DCMAKE_INSTALL_PREFIX=%APPVEYOR_BUILD_FOLDER%/deps ^
-DCORRADE_WITH_INTERCONNECT=OFF ^
-DCORRADE_UTILITY_USE_ANSI_COLORS=ON ^
-DCORRADE_BUILD_STATIC=%BUILD_STATIC% ^
%COMPILER_EXTRA% -G Ninja || exit /b
cmake --build . || exit /b
cmake --build . --target install || exit /b
cd .. && cd ..
rem Build
mkdir build && cd build || exit /b
cmake .. ^
-DCMAKE_BUILD_TYPE=%CONFIGURATION% ^
-DCMAKE_INSTALL_PREFIX=%APPVEYOR_BUILD_FOLDER%/deps ^
-DCMAKE_PREFIX_PATH="%APPVEYOR_BUILD_FOLDER%/SDL;%APPVEYOR_BUILD_FOLDER%/openal" ^
-DMAGNUM_WITH_AUDIO=ON ^
-DMAGNUM_WITH_VK=%ENABLE_VULKAN% ^
-DMAGNUM_WITH_SDL2APPLICATION=ON ^
-DMAGNUM_WITH_GLFWAPPLICATION=ON ^
-DMAGNUM_WITH_WINDOWLESSWGLAPPLICATION=ON ^
-DMAGNUM_WITH_WGLCONTEXT=ON ^
-DMAGNUM_WITH_OPENGLTESTER=ON ^
-DMAGNUM_WITH_ANYAUDIOIMPORTER=ON ^
-DMAGNUM_WITH_ANYIMAGECONVERTER=ON ^
-DMAGNUM_WITH_ANYIMAGEIMPORTER=ON ^
-DMAGNUM_WITH_ANYSCENECONVERTER=ON ^
-DMAGNUM_WITH_ANYSCENEIMPORTER=ON ^
-DMAGNUM_WITH_ANYSHADERCONVERTER=ON ^
-DMAGNUM_WITH_MAGNUMFONT=ON ^
-DMAGNUM_WITH_MAGNUMFONTCONVERTER=ON ^
-DMAGNUM_WITH_OBJIMPORTER=ON ^
-DMAGNUM_WITH_TGAIMAGECONVERTER=ON ^
-DMAGNUM_WITH_TGAIMPORTER=ON ^
-DMAGNUM_WITH_WAVAUDIOIMPORTER=ON ^
-DMAGNUM_WITH_DISTANCEFIELDCONVERTER=ON ^
-DMAGNUM_WITH_FONTCONVERTER=ON ^
-DMAGNUM_WITH_IMAGECONVERTER=ON ^
-DMAGNUM_WITH_SCENECONVERTER=ON ^
-DMAGNUM_WITH_SHADERCONVERTER=ON ^
-DMAGNUM_WITH_GL_INFO=ON ^
-DMAGNUM_WITH_VK_INFO=%ENABLE_VULKAN% ^
-DMAGNUM_WITH_AL_INFO=ON ^
-DMAGNUM_BUILD_TESTS=ON ^
-DMAGNUM_BUILD_GL_TESTS=ON ^
-DMAGNUM_BUILD_VK_TESTS=%ENABLE_VULKAN% ^
-DMAGNUM_BUILD_STATIC=%BUILD_STATIC% ^
-DMAGNUM_BUILD_PLUGINS_STATIC=%BUILD_STATIC% ^
%COMPILER_EXTRA% -G Ninja || exit /b
cmake --build . || exit /b
rem Test
set CORRADE_TEST_COLOR=ON
rem On Windows, if an assertion or other issue happens, A DIALOG WINDOWS POPS
rem UP FROM THE CONSOLE. And then, for fucks sake, IT WAITS ENDLESSLY FOR YOU
rem TO CLOSE IT!! Such behavior is utterly stupid in a non-interactive setting
rem such as on this very CI, so I'm setting a timeout to 60 seconds to avoid
rem the CI job being stuck for an hour if an assertion happens. CTest's default
rem timeout is somehow 10M seconds, which is as useful as nothing at all.
ctest -V -E "GLTest|GLBenchmark|VkTest" --timeout 60 || exit /b
rem Test install, after running the tests as for them it shouldn't be needed
cmake --build . --target install || exit /b
cd %APPVEYOR_BUILD_FOLDER%
rem Gather and upload coverage on the clang-cl MSVC 2022 build. Keep in sync
rem with circleci.yml, appveyor-desktop-mingw.bat and PKBUILD-coverage, please.
rem
rem Additionally, Clang-cl often reports empty lines containing just } as
rem uncovered, possibly due to exception handling, similarly to MinGW. Exclude
rem them, and feel free to expand the regex to catch more cases if needed.
rem
rem Also, partially due to the above, where, if a code isn't run through at
rem all, a lot more uncovered lines is reported compared to Linux / Mac, the
rem whole GL and Vk libraries as well as any GL- or Vk-specific files are
rem ignored for code coverage here. They're still built and tested where
rem possible without an actual GL/Vk driver, but the false negatives far
rem outweigh the benefits of having Windows-specific coverage reported for
rem those -- there isn't any Windows-specific code for most of them, after all
rem -- that it's not worth including them.
if "%COMPILER%" == "msvc-clang" if "%APPVEYOR_BUILD_WORKER_IMAGE%" == "Visual Studio 2022" grcov build -t lcov --keep-only "*/src/Magnum*/*" --ignore "*/src/MagnumExternal/*" --ignore "*/Test/*" --ignore "*/build/src/*" --ignore "*/src/Magnum/GL/*" --ignore "*/src/Magnum/Vk/*" --ignore "*/src/Magnum/Platform/*" --ignore "*GL.cpp" --ignore "*GL.h" --ignore "*Vk.cpp" --ignore "*Vk.h" -o coverage.info --excl-line "(LCOV_EXCL_LINE|^\s*}$)" --excl-start LCOV_EXCL_START --excl-stop LCOV_EXCL_STOP || exit /b
rem Official docs say "not needed for public repos", in reality not using the
rem token is "extremely flakey". What's best is that if the upload fails, the
rem damn thing exits with a success error code, and nobody cares:
rem https://github.com/codecov/codecov-circleci-orb/issues/139
rem https://community.codecov.com/t/commit-sha-does-not-match-circle-build/4266
if "%COMPILER%" == "msvc-clang" if "%APPVEYOR_BUILD_WORKER_IMAGE%" == "Visual Studio 2022" codecov -f ./coverage.info -t 3b1a7cc0-8bfb-4cde-8d99-dc04572a43c3 -X gcov || exit /b