Skip to content

Commit

Permalink
uwp: remove angle, upload to S3. windows: don't build SDL
Browse files Browse the repository at this point in the history
  • Loading branch information
flyinghead committed Dec 18, 2021
1 parent 8e305bf commit b1e0bc9
Show file tree
Hide file tree
Showing 7 changed files with 131 additions and 97 deletions.
24 changes: 21 additions & 3 deletions .github/workflows/c-cpp.yml
Expand Up @@ -10,15 +10,19 @@ jobs:
strategy:
matrix:
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-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-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: 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}

env:
VCPKG_ROOT: ${{ github.workspace }}/vcpkg
VCPKG_DEFAULT_BINARY_CACHE: ${{ github.workspace }}/vcpkg/bincache

steps:
- name: Set up build environment (macos-latest)
run: |
Expand All @@ -44,6 +48,20 @@ jobs:
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'

- 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
with:
path: /tmp/ccache
Expand Down Expand Up @@ -74,7 +92,7 @@ jobs:
uses: msys2/setup-msys2@v2
with:
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')

- name: Downgrade gcc to 10.3
Expand Down
14 changes: 14 additions & 0 deletions .github/workflows/uwp.yml
Expand Up @@ -54,3 +54,17 @@ jobs:
with:
name: flycast-uwp
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 != '' }}
124 changes: 57 additions & 67 deletions CMakeLists.txt
Expand Up @@ -17,6 +17,7 @@ option(USE_HOST_LIBZIP "Use host libzip" ON)
option(USE_OPENMP "Use OpenMP if available" ON)
option(USE_VULKAN "Build with Vulkan support" ON)
option(LIBRETRO "Build libretro core" OFF)
option(USE_OPENGL "Use Open GL API" ON)

set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/shell/cmake")

Expand Down Expand Up @@ -134,6 +135,7 @@ else()
endif()

if(WINDOWS_STORE)
set(USE_OPENGL OFF)
target_compile_features(${PROJECT_NAME} PRIVATE c_std_11 cxx_std_17)
else()
target_compile_features(${PROJECT_NAME} PRIVATE c_std_11 cxx_std_11)
Expand Down Expand Up @@ -241,30 +243,13 @@ if(NOT LIBRETRO)
target_link_libraries(${PROJECT_NAME} PRIVATE ${ALSA_LIBRARIES})
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)
target_link_libraries(${PROJECT_NAME} PRIVATE "-static-libgcc -static-libstdc++")
endif()

if(WINDOWS_STORE)
if(WIN32)
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")
elseif(NOT ANDROID AND NOT IOS)
find_package(SDL2)
Expand Down Expand Up @@ -383,7 +368,7 @@ if(UNIX AND NOT APPLE AND NOT ANDROID)
if(NOT SDL2_FOUND)
target_link_libraries(${PROJECT_NAME} PRIVATE EGL)
endif()
else()
elseif(USE_OPENGL)
set(OpenGL_GL_PREFERENCE LEGACY)
find_package(OpenGL REQUIRED)
target_link_libraries(${PROJECT_NAME} PRIVATE OpenGL::GL)
Expand Down Expand Up @@ -412,12 +397,6 @@ if(UNIX AND NOT APPLE AND NOT ANDROID)
target_link_libraries(${PROJECT_NAME} PRIVATE ${CMAKE_DL_LIBS} rt)
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)
target_compile_options(${PROJECT_NAME} PRIVATE -fsanitize=address -static-libasan)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=address -static-libasan")
Expand Down Expand Up @@ -893,29 +872,60 @@ target_sources(${PROJECT_NAME} PRIVATE

target_sources(${PROJECT_NAME} PRIVATE
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.h
core/wsi/osx.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)
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)
core/wsi/switcher.cpp)

if(USE_OPENGL)
target_compile_definitions(${PROJECT_NAME} PRIVATE USE_OPENGL)
target_sources(${PROJECT_NAME} PRIVATE
core/wsi/egl.cpp
core/wsi/egl.h
core/wsi/gl_context.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()

target_sources(${PROJECT_NAME} PRIVATE
Expand All @@ -932,14 +942,6 @@ target_sources(${PROJECT_NAME} PRIVATE
core/debug/gdb_server.h)

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.h
core/rend/osd.cpp
Expand All @@ -951,10 +953,6 @@ target_sources(${PROJECT_NAME} PRIVATE
core/rend/TexCache.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
core/rend/game_scanner.h
core/rend/imgui_driver.h
core/rend/gui.cpp
Expand All @@ -969,14 +967,6 @@ if(NOT LIBRETRO)
core/rend/mainui.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()

if(USE_VULKAN)
if(NOT LIBRETRO)
if(ANDROID)
Expand Down
2 changes: 2 additions & 0 deletions core/hw/pvr/Renderer_if.cpp
Expand Up @@ -279,6 +279,7 @@ static void rend_create_renderer()
switch (config::RendererType)
{
default:
#ifdef USE_OPENGL
case RenderType::OpenGL:
renderer = rend_GLES2();
break;
Expand All @@ -287,6 +288,7 @@ static void rend_create_renderer()
renderer = rend_GL4();
break;
#endif
#endif
#ifdef USE_VULKAN
case RenderType::Vulkan:
renderer = rend_Vulkan();
Expand Down
56 changes: 32 additions & 24 deletions core/rend/gui.cpp
Expand Up @@ -1672,35 +1672,43 @@ static void gui_display_settings()
OptionCheckbox("Rotate Screen 90°", config::Rotate90, "Rotate the screen 90° counterclockwise");
OptionCheckbox("Delay Frame Swapping", config::DelayFrameSwapping,
"Useful to avoid flashing screen or glitchy videos. Not recommended on slow platforms");
#if defined(USE_VULKAN) || defined(USE_DX9) || defined(_WIN32)
ImGui::Text("Graphics API:");
u32 columns = 1;
#ifdef USE_VULKAN
columns++;
#endif
#ifdef _WIN32
columns++;
#ifdef USE_DX9
columns++;
#endif
constexpr int apiCount = 0
#ifdef USE_VULKAN
+ 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
ImGui::Columns(columns, "renderApi", false);
ImGui::RadioButton("Open GL", &renderApi, 0);
ImGui::NextColumn();
#ifdef USE_VULKAN
ImGui::RadioButton("Vulkan", &renderApi, 1);
ImGui::NextColumn();
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();
ImGui::RadioButton("DirectX 9", &renderApi, 2);
ImGui::NextColumn();
#endif
ImGui::Columns(1, NULL, false);
#ifdef _WIN32
ImGui::RadioButton("DirectX 11", &renderApi, 3);
ImGui::NextColumn();
#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<std::string, 9> scalingsText{ "Half", "Native", "x1.5", "x2", "x2.5", "x3", "x4", "x4.5", "x5" };
Expand Down Expand Up @@ -2015,7 +2023,7 @@ static void gui_display_settings()
strcpy(LuaFileName, config::LuaFileName.get().c_str());
ImGui::InputText("Lua Filename", LuaFileName, sizeof(LuaFileName), ImGuiInputTextFlags_CharsNoBlank, nullptr, nullptr);
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;

}
Expand Down
7 changes: 5 additions & 2 deletions core/wsi/switcher.cpp
Expand Up @@ -68,11 +68,14 @@ void initRenderApi(void *window, void *display)
config::RendererType = RenderType::OpenGL;
}
#endif
#ifdef USE_OPENGL
if (!isOpenGL(config::RendererType))
config::RendererType = RenderType::OpenGL;
theGLContext.setWindow(window, display);
if (!theGLContext.init())
exit(1);
if (theGLContext.init())
return;
#endif
die("Cannot initialize the graphics API");
}

void termRenderApi()
Expand Down
1 change: 0 additions & 1 deletion vcpkg.json
Expand Up @@ -2,7 +2,6 @@
"name": "flycast",
"version-string": "1.2.0-dev",
"dependencies": [
"angle",
"sdl2",
"zlib"
]
Expand Down

0 comments on commit b1e0bc9

Please sign in to comment.