uwp: remove angle, upload to S3. windows: don't build SDL

This commit is contained in:
flyinghead 2021-12-18 11:50:03 +01:00
parent 8e305bfd0f
commit b1e0bc90ba
7 changed files with 132 additions and 98 deletions

View File

@ -10,15 +10,19 @@ jobs:
strategy: strategy:
matrix: matrix:
config: config:
- {name: i686-pc-windows-msvc, os: windows-latest, cmakeArgs: -DCMAKE_SYSTEM_VERSION="10.0.18362.0" -G "Visual Studio 16 2019" -A Win32, buildType: Release} - {name: i686-pc-windows-msvc, os: windows-latest, cmakeArgs: -DCMAKE_SYSTEM_VERSION="10.0.18362.0" -G "Visual Studio 16 2019" -A Win32 -DCMAKE_TOOLCHAIN_FILE=$Env:VCPKG_ROOT\scripts\buildsystems\vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x86-windows-static, buildType: Release}
- {name: apple-darwin, os: macos-latest, cmakeArgs: -G "Xcode", destDir: osx, buildType: Release} - {name: apple-darwin, os: macos-latest, cmakeArgs: -G "Xcode", destDir: osx, buildType: Release}
- {name: apple-ios, os: macos-latest, cmakeArgs: -DCMAKE_SYSTEM_NAME=iOS -G "Xcode", destDir: ios, buildType: Release} - {name: apple-ios, os: macos-latest, cmakeArgs: -DCMAKE_SYSTEM_NAME=iOS -G "Xcode", destDir: ios, buildType: Release}
- {name: x86_64-pc-linux-gnu, os: ubuntu-latest, buildType: Release} - {name: x86_64-pc-linux-gnu, os: ubuntu-latest, buildType: Release}
- {name: x86_64-pc-windows-msvc, os: windows-latest, cmakeArgs: -DCMAKE_SYSTEM_VERSION="10.0.18362.0" -G "Visual Studio 16 2019" -A x64, buildType: Release} - {name: x86_64-pc-windows-msvc, os: windows-latest, cmakeArgs: -DCMAKE_SYSTEM_VERSION="10.0.18362.0" -G "Visual Studio 16 2019" -A x64 -DCMAKE_TOOLCHAIN_FILE=$Env:VCPKG_ROOT\scripts\buildsystems\vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows-static, buildType: Release}
- {name: x86_64-w64-mingw32, os: windows-latest, cmakeArgs: -G "MinGW Makefiles", destDir: win, buildType: RelWithDebInfo} - {name: x86_64-w64-mingw32, os: windows-latest, cmakeArgs: -G "MinGW Makefiles", destDir: win, buildType: RelWithDebInfo}
- {name: libretro-x86_64-pc-linux-gnu, os: ubuntu-latest, cmakeArgs: -DLIBRETRO=ON -DCMAKE_POSITION_INDEPENDENT_CODE=TRUE, buildType: Release} - {name: libretro-x86_64-pc-linux-gnu, os: ubuntu-latest, cmakeArgs: -DLIBRETRO=ON -DCMAKE_POSITION_INDEPENDENT_CODE=TRUE, buildType: Release}
- {name: libretro-x86_64-w64-mingw32, os: windows-latest, cmakeArgs: -DLIBRETRO=ON -G "MinGW Makefiles", buildType: Release} - {name: libretro-x86_64-w64-mingw32, os: windows-latest, cmakeArgs: -DLIBRETRO=ON -G "MinGW Makefiles", buildType: Release}
env:
VCPKG_ROOT: ${{ github.workspace }}/vcpkg
VCPKG_DEFAULT_BINARY_CACHE: ${{ github.workspace }}/vcpkg/bincache
steps: steps:
- name: Set up build environment (macos-latest) - name: Set up build environment (macos-latest)
run: | run: |
@ -44,6 +48,20 @@ jobs:
run: echo "DXSDK_DIR=${Env:HOMEDRIVE}${Env:HOMEPATH}\ccache\" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf-8 -Append run: echo "DXSDK_DIR=${Env:HOMEDRIVE}${Env:HOMEPATH}\ccache\" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf-8 -Append
if: matrix.config.os == 'windows-latest' && matrix.config.name != 'libretro-x86_64-w64-mingw32' if: matrix.config.os == 'windows-latest' && matrix.config.name != 'libretro-x86_64-w64-mingw32'
- name: bootstrap vcpkg
run: |
git clone https://github.com/microsoft/vcpkg
mkdir vcpkg\bincache
vcpkg\bootstrap-vcpkg.bat
if: endsWith(matrix.config.name, 'msvc')
- uses: actions/cache@v2
id: cache-vcpkg
with:
path: ${{ env.VCPKG_DEFAULT_BINARY_CACHE }}
key: vcpkg-${{ hashFiles( 'vcpkg.json' ) }}
if: endsWith(matrix.config.name, 'msvc')
- uses: actions/cache@v2 - uses: actions/cache@v2
with: with:
path: /tmp/ccache path: /tmp/ccache
@ -74,7 +92,7 @@ jobs:
uses: msys2/setup-msys2@v2 uses: msys2/setup-msys2@v2
with: with:
msystem: MINGW64 msystem: MINGW64
install: git base-devel mingw-w64-x86_64-toolchain mingw-w64-x86_64-cmake mingw-w64-x86_64-breakpad-git mingw-w64-x86_64-lua install: git base-devel mingw-w64-x86_64-toolchain mingw-w64-x86_64-cmake mingw-w64-x86_64-breakpad-git mingw-w64-x86_64-lua mingw-w64-x86_64-SDL2
if: endsWith(matrix.config.name, 'w64-mingw32') if: endsWith(matrix.config.name, 'w64-mingw32')
- name: Downgrade gcc to 10.3 - name: Downgrade gcc to 10.3

View File

@ -54,3 +54,17 @@ jobs:
with: with:
name: flycast-uwp name: flycast-uwp
path: build/artifact path: build/artifact
- name: Configure AWS Credentials
id: aws-credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: AKIAJOZQS4H2PHQWYFCA
aws-secret-access-key: ${{ secrets.S3_SECRET_KEY }}
aws-region: us-east-2
if: github.repository == 'flyinghead/flycast' && github.event_name == 'push'
- name: Upload to S3
run: aws s3 sync build/artifact s3://flycast-builds/xbox/${GITHUB_REF#refs/}-$GITHUB_SHA --acl public-read --follow-symlinks
shell: bash
if: ${{ steps.aws-credentials.outputs.aws-account-id != '' }}

View File

@ -17,6 +17,7 @@ option(USE_HOST_LIBZIP "Use host libzip" ON)
option(USE_OPENMP "Use OpenMP if available" ON) option(USE_OPENMP "Use OpenMP if available" ON)
option(USE_VULKAN "Build with Vulkan support" ON) option(USE_VULKAN "Build with Vulkan support" ON)
option(LIBRETRO "Build libretro core" OFF) option(LIBRETRO "Build libretro core" OFF)
option(USE_OPENGL "Use Open GL API" ON)
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/shell/cmake") set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/shell/cmake")
@ -134,6 +135,7 @@ else()
endif() endif()
if(WINDOWS_STORE) if(WINDOWS_STORE)
set(USE_OPENGL OFF)
target_compile_features(${PROJECT_NAME} PRIVATE c_std_11 cxx_std_17) target_compile_features(${PROJECT_NAME} PRIVATE c_std_11 cxx_std_17)
else() else()
target_compile_features(${PROJECT_NAME} PRIVATE c_std_11 cxx_std_11) target_compile_features(${PROJECT_NAME} PRIVATE c_std_11 cxx_std_11)
@ -241,30 +243,13 @@ if(NOT LIBRETRO)
target_link_libraries(${PROJECT_NAME} PRIVATE ${ALSA_LIBRARIES}) target_link_libraries(${PROJECT_NAME} PRIVATE ${ALSA_LIBRARIES})
endif() endif()
if(WIN32 AND NOT WINDOWS_STORE)
# Build SDL
file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/core/deps/SDL")
if(CMAKE_GENERATOR MATCHES "Visual Studio")
set(SDL_CMAKE_ARCH_ARG -A ${CMAKE_GENERATOR_PLATFORM})
endif()
execute_process(COMMAND ${CMAKE_COMMAND}
"-DCMAKE_INSTALL_PREFIX=${CMAKE_CURRENT_BINARY_DIR}/core/deps/SDL"
-DLIBC=ON
-DBUILD_SHARED_LIBS=OFF
-G "${CMAKE_GENERATOR}"
${SDL_CMAKE_ARCH_ARG}
"${CMAKE_CURRENT_SOURCE_DIR}/core/deps/SDL"
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/core/deps/SDL")
execute_process(COMMAND ${CMAKE_COMMAND} --build "${CMAKE_CURRENT_BINARY_DIR}/core/deps/SDL" --config Release --target install)
endif()
if(MINGW) if(MINGW)
target_link_libraries(${PROJECT_NAME} PRIVATE "-static-libgcc -static-libstdc++") target_link_libraries(${PROJECT_NAME} PRIVATE "-static-libgcc -static-libstdc++")
endif() endif()
if(WINDOWS_STORE) if(WIN32)
find_package(SDL2 CONFIG REQUIRED) find_package(SDL2 CONFIG REQUIRED)
elseif((APPLE AND NOT IOS) OR WIN32) elseif(APPLE AND NOT IOS)
find_package(SDL2 HINTS "${CMAKE_CURRENT_BINARY_DIR}/core/deps/SDL/cmake") find_package(SDL2 HINTS "${CMAKE_CURRENT_BINARY_DIR}/core/deps/SDL/cmake")
elseif(NOT ANDROID AND NOT IOS) elseif(NOT ANDROID AND NOT IOS)
find_package(SDL2) find_package(SDL2)
@ -383,7 +368,7 @@ if(UNIX AND NOT APPLE AND NOT ANDROID)
if(NOT SDL2_FOUND) if(NOT SDL2_FOUND)
target_link_libraries(${PROJECT_NAME} PRIVATE EGL) target_link_libraries(${PROJECT_NAME} PRIVATE EGL)
endif() endif()
else() elseif(USE_OPENGL)
set(OpenGL_GL_PREFERENCE LEGACY) set(OpenGL_GL_PREFERENCE LEGACY)
find_package(OpenGL REQUIRED) find_package(OpenGL REQUIRED)
target_link_libraries(${PROJECT_NAME} PRIVATE OpenGL::GL) target_link_libraries(${PROJECT_NAME} PRIVATE OpenGL::GL)
@ -412,12 +397,6 @@ if(UNIX AND NOT APPLE AND NOT ANDROID)
target_link_libraries(${PROJECT_NAME} PRIVATE ${CMAKE_DL_LIBS} rt) target_link_libraries(${PROJECT_NAME} PRIVATE ${CMAKE_DL_LIBS} rt)
endif() endif()
if(WINDOWS_STORE)
find_package(unofficial-angle CONFIG REQUIRED)
target_compile_definitions(${PROJECT_NAME} PRIVATE GLES GLES3)
target_link_libraries(${PROJECT_NAME} PRIVATE unofficial::angle::libEGL unofficial::angle::libGLESv2)
endif()
if(ASAN) if(ASAN)
target_compile_options(${PROJECT_NAME} PRIVATE -fsanitize=address -static-libasan) target_compile_options(${PROJECT_NAME} PRIVATE -fsanitize=address -static-libasan)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=address -static-libasan") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=address -static-libasan")
@ -893,29 +872,60 @@ target_sources(${PROJECT_NAME} PRIVATE
target_sources(${PROJECT_NAME} PRIVATE target_sources(${PROJECT_NAME} PRIVATE
core/wsi/context.h core/wsi/context.h
core/wsi/egl.cpp
core/wsi/egl.h
core/wsi/gl_context.cpp
core/wsi/gl_context.h
core/wsi/libretro.cpp core/wsi/libretro.cpp
core/wsi/libretro.h core/wsi/libretro.h
core/wsi/osx.cpp core/wsi/switcher.cpp)
core/wsi/osx.h
core/wsi/sdl.cpp
core/wsi/sdl.h
core/wsi/switcher.cpp
core/wsi/wgl.cpp
core/wsi/wgl.h
core/wsi/xgl.cpp
core/wsi/xgl.h)
if(NOT APPLE AND NOT LIBRETRO) if(USE_OPENGL)
target_sources(${PROJECT_NAME} PRIVATE target_compile_definitions(${PROJECT_NAME} PRIVATE USE_OPENGL)
core/wsi/gl32funcs.c target_sources(${PROJECT_NAME} PRIVATE
core/wsi/gl32funcs.h) core/wsi/egl.cpp
endif() core/wsi/egl.h
if(NOT (NINTENDO_SWITCH AND LIBRETRO)) core/wsi/gl_context.cpp
target_sources(${PROJECT_NAME} PRIVATE core/wsi/gl4funcs.cpp) core/wsi/gl_context.h
core/wsi/osx.cpp
core/wsi/osx.h
core/wsi/sdl.cpp
core/wsi/sdl.h
core/wsi/wgl.cpp
core/wsi/wgl.h
core/wsi/xgl.cpp
core/wsi/xgl.h)
if(NOT APPLE AND NOT LIBRETRO)
target_sources(${PROJECT_NAME} PRIVATE
core/wsi/gl32funcs.c
core/wsi/gl32funcs.h)
endif()
if(NOT (NINTENDO_SWITCH AND LIBRETRO))
target_sources(${PROJECT_NAME} PRIVATE core/wsi/gl4funcs.cpp)
endif()
target_sources(${PROJECT_NAME} PRIVATE
core/rend/gles/glcache.h
core/rend/gles/gldraw.cpp
core/rend/gles/gles.cpp
core/rend/gles/gles.h
core/rend/gles/gltex.cpp
core/rend/gles/quad.cpp
core/rend/gles/postprocess.cpp
core/rend/gles/postprocess.h)
if(NOT LIBRETRO)
target_sources(${PROJECT_NAME} PRIVATE
core/rend/gles/imgui_impl_opengl3.cpp
core/rend/gles/imgui_impl_opengl3.h
core/rend/gles/opengl_driver.cpp
core/rend/gles/opengl_driver.h)
endif()
if(NOT (APPLE OR ANDROID OR USE_GLES OR USE_GLES2))
target_sources(${PROJECT_NAME} PRIVATE
core/rend/gl4/abuffer.cpp
core/rend/gl4/gl4.h
core/rend/gl4/gldraw.cpp
core/rend/gl4/gles.cpp)
endif()
endif() endif()
target_sources(${PROJECT_NAME} PRIVATE target_sources(${PROJECT_NAME} PRIVATE
@ -932,14 +942,6 @@ target_sources(${PROJECT_NAME} PRIVATE
core/debug/gdb_server.h) core/debug/gdb_server.h)
target_sources(${PROJECT_NAME} PRIVATE target_sources(${PROJECT_NAME} PRIVATE
core/rend/gles/glcache.h
core/rend/gles/gldraw.cpp
core/rend/gles/gles.cpp
core/rend/gles/gles.h
core/rend/gles/gltex.cpp
core/rend/gles/quad.cpp
core/rend/gles/postprocess.cpp
core/rend/gles/postprocess.h
core/rend/CustomTexture.cpp core/rend/CustomTexture.cpp
core/rend/CustomTexture.h core/rend/CustomTexture.h
core/rend/osd.cpp core/rend/osd.cpp
@ -951,10 +953,6 @@ target_sources(${PROJECT_NAME} PRIVATE
core/rend/TexCache.h) core/rend/TexCache.h)
if(NOT LIBRETRO) if(NOT LIBRETRO)
target_sources(${PROJECT_NAME} PRIVATE target_sources(${PROJECT_NAME} PRIVATE
core/rend/gles/imgui_impl_opengl3.cpp
core/rend/gles/imgui_impl_opengl3.h
core/rend/gles/opengl_driver.cpp
core/rend/gles/opengl_driver.h
core/rend/game_scanner.h core/rend/game_scanner.h
core/rend/imgui_driver.h core/rend/imgui_driver.h
core/rend/gui.cpp core/rend/gui.cpp
@ -969,14 +967,6 @@ if(NOT LIBRETRO)
core/rend/mainui.h) core/rend/mainui.h)
endif() endif()
if(NOT (APPLE OR ANDROID OR USE_GLES OR USE_GLES2))
target_sources(${PROJECT_NAME} PRIVATE
core/rend/gl4/abuffer.cpp
core/rend/gl4/gl4.h
core/rend/gl4/gldraw.cpp
core/rend/gl4/gles.cpp)
endif()
if(USE_VULKAN) if(USE_VULKAN)
if(NOT LIBRETRO) if(NOT LIBRETRO)
if(ANDROID) if(ANDROID)

View File

@ -279,6 +279,7 @@ static void rend_create_renderer()
switch (config::RendererType) switch (config::RendererType)
{ {
default: default:
#ifdef USE_OPENGL
case RenderType::OpenGL: case RenderType::OpenGL:
renderer = rend_GLES2(); renderer = rend_GLES2();
break; break;
@ -287,6 +288,7 @@ static void rend_create_renderer()
renderer = rend_GL4(); renderer = rend_GL4();
break; break;
#endif #endif
#endif
#ifdef USE_VULKAN #ifdef USE_VULKAN
case RenderType::Vulkan: case RenderType::Vulkan:
renderer = rend_Vulkan(); renderer = rend_Vulkan();

View File

@ -1672,35 +1672,43 @@ static void gui_display_settings()
OptionCheckbox("Rotate Screen 90°", config::Rotate90, "Rotate the screen 90° counterclockwise"); OptionCheckbox("Rotate Screen 90°", config::Rotate90, "Rotate the screen 90° counterclockwise");
OptionCheckbox("Delay Frame Swapping", config::DelayFrameSwapping, OptionCheckbox("Delay Frame Swapping", config::DelayFrameSwapping,
"Useful to avoid flashing screen or glitchy videos. Not recommended on slow platforms"); "Useful to avoid flashing screen or glitchy videos. Not recommended on slow platforms");
#if defined(USE_VULKAN) || defined(USE_DX9) || defined(_WIN32) constexpr int apiCount = 0
ImGui::Text("Graphics API:"); #ifdef USE_VULKAN
u32 columns = 1; + 1
#endif
#ifdef USE_DX9
+ 1
#endif
#ifdef USE_OPENGL
+ 1
#endif
#ifdef _WIN32
+ 1
#endif
;
if (apiCount > 1)
{
ImGui::Text("Graphics API:");
ImGui::Columns(apiCount, "renderApi", false);
#ifdef USE_OPENGL
ImGui::RadioButton("Open GL", &renderApi, 0);
ImGui::NextColumn();
#endif
#ifdef USE_VULKAN #ifdef USE_VULKAN
columns++; ImGui::RadioButton("Vulkan", &renderApi, 1);
ImGui::NextColumn();
#endif
#ifdef USE_DX9
ImGui::RadioButton("DirectX 9", &renderApi, 2);
ImGui::NextColumn();
#endif #endif
#ifdef _WIN32 #ifdef _WIN32
columns++; ImGui::RadioButton("DirectX 11", &renderApi, 3);
#ifdef USE_DX9 ImGui::NextColumn();
columns++;
#endif
#endif
ImGui::Columns(columns, "renderApi", false);
ImGui::RadioButton("Open GL", &renderApi, 0);
ImGui::NextColumn();
#ifdef USE_VULKAN
ImGui::RadioButton("Vulkan", &renderApi, 1);
ImGui::NextColumn();
#endif
#ifdef _WIN32
#ifdef USE_DX9
ImGui::RadioButton("DirectX 9", &renderApi, 2);
ImGui::NextColumn();
#endif
ImGui::RadioButton("DirectX 11", &renderApi, 3);
ImGui::NextColumn();
#endif
ImGui::Columns(1, NULL, false);
#endif #endif
ImGui::Columns(1, nullptr, false);
}
const std::array<float, 9> scalings{ 0.5f, 1.f, 1.5f, 2.f, 2.5f, 3.f, 4.f, 4.5f, 5.f }; const std::array<float, 9> scalings{ 0.5f, 1.f, 1.5f, 2.f, 2.5f, 3.f, 4.f, 4.5f, 5.f };
const std::array<std::string, 9> scalingsText{ "Half", "Native", "x1.5", "x2", "x2.5", "x3", "x4", "x4.5", "x5" }; const std::array<std::string, 9> scalingsText{ "Half", "Native", "x1.5", "x2", "x2.5", "x3", "x4", "x4.5", "x5" };
@ -2015,7 +2023,7 @@ static void gui_display_settings()
strcpy(LuaFileName, config::LuaFileName.get().c_str()); strcpy(LuaFileName, config::LuaFileName.get().c_str());
ImGui::InputText("Lua Filename", LuaFileName, sizeof(LuaFileName), ImGuiInputTextFlags_CharsNoBlank, nullptr, nullptr); ImGui::InputText("Lua Filename", LuaFileName, sizeof(LuaFileName), ImGuiInputTextFlags_CharsNoBlank, nullptr, nullptr);
ImGui::SameLine(); ImGui::SameLine();
ShowHelpMarker("Specify lua filename to use. Should be located in Flycasts root directory. Defaults to flycast.lua when empty."); ShowHelpMarker("Specify lua filename to use. Should be located in Flycast config directory. Defaults to flycast.lua when empty.");
config::LuaFileName = LuaFileName; config::LuaFileName = LuaFileName;
} }

View File

@ -68,11 +68,14 @@ void initRenderApi(void *window, void *display)
config::RendererType = RenderType::OpenGL; config::RendererType = RenderType::OpenGL;
} }
#endif #endif
#ifdef USE_OPENGL
if (!isOpenGL(config::RendererType)) if (!isOpenGL(config::RendererType))
config::RendererType = RenderType::OpenGL; config::RendererType = RenderType::OpenGL;
theGLContext.setWindow(window, display); theGLContext.setWindow(window, display);
if (!theGLContext.init()) if (theGLContext.init())
exit(1); return;
#endif
die("Cannot initialize the graphics API");
} }
void termRenderApi() void termRenderApi()

View File

@ -2,7 +2,6 @@
"name": "flycast", "name": "flycast",
"version-string": "1.2.0-dev", "version-string": "1.2.0-dev",
"dependencies": [ "dependencies": [
"angle",
"sdl2", "sdl2",
"zlib" "zlib"
] ]