mirror of
https://github.com/cemu-project/Cemu.git
synced 2024-11-22 00:59:18 +01:00
Use vcpkg GTK3 with enabled wayland (#772)
This commit is contained in:
parent
ecb7b77326
commit
a6e9481b64
9
.github/workflows/build.yml
vendored
9
.github/workflows/build.yml
vendored
@ -53,7 +53,7 @@ jobs:
|
|||||||
- name: "Install system dependencies"
|
- name: "Install system dependencies"
|
||||||
run: |
|
run: |
|
||||||
sudo apt update -qq
|
sudo apt update -qq
|
||||||
sudo apt install -y clang-12 cmake freeglut3-dev libgcrypt20-dev libgtk-3-dev libpulse-dev libsecret-1-dev libsystemd-dev libudev-dev nasm ninja-build
|
sudo apt install -y clang-12 cmake freeglut3-dev libgcrypt20-dev libglm-dev libx11-dev libgles2-mesa-dev libgtk-3-dev libpulse-dev libsecret-1-dev libsystemd-dev libudev-dev nasm ninja-build
|
||||||
|
|
||||||
- name: "Bootstrap vcpkg"
|
- name: "Bootstrap vcpkg"
|
||||||
run: |
|
run: |
|
||||||
@ -107,10 +107,13 @@ jobs:
|
|||||||
- name: "Install system dependencies"
|
- name: "Install system dependencies"
|
||||||
run: |
|
run: |
|
||||||
sudo apt update -qq
|
sudo apt update -qq
|
||||||
sudo apt install -y clang-12 cmake freeglut3-dev libgcrypt20-dev libgtk-3-dev libpulse-dev libsecret-1-dev libsystemd-dev nasm ninja-build appstream
|
sudo apt install -y clang-12 cmake freeglut3-dev libgcrypt20-dev libglm-dev libx11-dev libgles2-mesa-dev libgtk-3-dev libpulse-dev libsecret-1-dev libsystemd-dev nasm ninja-build appstream
|
||||||
|
|
||||||
- name: "Build AppImage"
|
- name: "Build AppImage"
|
||||||
run: dist/linux/appimage.sh
|
run: |
|
||||||
|
export LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH"
|
||||||
|
export DEPLOY_GTK_VERSION=3
|
||||||
|
dist/linux/appimage.sh
|
||||||
|
|
||||||
- name: Upload artifact
|
- name: Upload artifact
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v3
|
||||||
|
6
BUILD.md
6
BUILD.md
@ -25,7 +25,7 @@ To compile Cemu, a recent enough compiler and STL with C++20 support is required
|
|||||||
### Installing dependencies
|
### Installing dependencies
|
||||||
|
|
||||||
#### For Ubuntu and derivatives:
|
#### For Ubuntu and derivatives:
|
||||||
`sudo apt install -y cmake curl freeglut3-dev git libgcrypt20-dev libgtk-3-dev libpulse-dev libsecret-1-dev libsystemd-dev nasm ninja-build`
|
`sudo apt install -y cmake curl freeglut3-dev git libgcrypt20-dev libglm-dev libgtk-3-dev libpulse-dev libsecret-1-dev libsystemd-dev nasm ninja-build`
|
||||||
|
|
||||||
*Additionally, for Ubuntu 22.04 only:*
|
*Additionally, for Ubuntu 22.04 only:*
|
||||||
- `sudo apt install -y clang-12`
|
- `sudo apt install -y clang-12`
|
||||||
@ -33,10 +33,10 @@ To compile Cemu, a recent enough compiler and STL with C++20 support is required
|
|||||||
`cmake -S . -B build -DCMAKE_BUILD_TYPE=release -DCMAKE_C_COMPILER=/usr/bin/clang-12 -DCMAKE_CXX_COMPILER=/usr/bin/clang++-12 -G Ninja -DCMAKE_MAKE_PROGRAM=/usr/bin/ninja`
|
`cmake -S . -B build -DCMAKE_BUILD_TYPE=release -DCMAKE_C_COMPILER=/usr/bin/clang-12 -DCMAKE_CXX_COMPILER=/usr/bin/clang++-12 -G Ninja -DCMAKE_MAKE_PROGRAM=/usr/bin/ninja`
|
||||||
|
|
||||||
#### For Arch and derivatives:
|
#### For Arch and derivatives:
|
||||||
`sudo pacman -S --needed base-devel clang cmake freeglut git gtk3 libgcrypt libpulse libsecret linux-headers llvm nasm ninja systemd unzip zip`
|
`sudo pacman -S --needed base-devel clang cmake freeglut git glm gtk3 libgcrypt libpulse libsecret linux-headers llvm nasm ninja systemd unzip zip`
|
||||||
|
|
||||||
#### For Fedora and derivatives:
|
#### For Fedora and derivatives:
|
||||||
`sudo dnf install clang cmake cubeb-devel freeglut-devel git gtk3-devel kernel-headers libgcrypt-devel libsecret-devel nasm ninja-build perl-core systemd-devel zlib-devel`
|
`sudo dnf install clang cmake cubeb-devel freeglut-devel git glm-devel gtk3-devel kernel-headers libgcrypt-devel libsecret-devel nasm ninja-build perl-core systemd-devel zlib-devel`
|
||||||
|
|
||||||
### Build Cemu using cmake and clang
|
### Build Cemu using cmake and clang
|
||||||
1. `git clone --recursive https://github.com/cemu-project/Cemu`
|
1. `git clone --recursive https://github.com/cemu-project/Cemu`
|
||||||
|
13
dependencies/vcpkg_overlay_ports_linux/gtk3/0001-build.patch
vendored
Normal file
13
dependencies/vcpkg_overlay_ports_linux/gtk3/0001-build.patch
vendored
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
diff --git a/meson.build b/meson.build
|
||||||
|
index c599843..0cafd79 100644
|
||||||
|
--- a/meson.build
|
||||||
|
+++ b/meson.build
|
||||||
|
@@ -1008,7 +1008,7 @@ subdir('docs/reference')
|
||||||
|
|
||||||
|
install_data('m4macros/gtk-3.0.m4', install_dir: join_paths(get_option('datadir'), 'aclocal'))
|
||||||
|
|
||||||
|
-if not meson.is_cross_build()
|
||||||
|
+if false
|
||||||
|
if meson.version().version_compare('>=0.57.0')
|
||||||
|
gnome.post_install(
|
||||||
|
glib_compile_schemas: true,
|
62
dependencies/vcpkg_overlay_ports_linux/gtk3/cairo-cpp-linkage.patch
vendored
Normal file
62
dependencies/vcpkg_overlay_ports_linux/gtk3/cairo-cpp-linkage.patch
vendored
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
diff --git a/gtk/meson.build b/gtk/meson.build
|
||||||
|
index 79f4f0d..33a7723 100644
|
||||||
|
--- a/gtk/meson.build
|
||||||
|
+++ b/gtk/meson.build
|
||||||
|
@@ -1074,6 +1074,7 @@ gtk_query_settings = executable(
|
||||||
|
'gtk-query-settings.c',
|
||||||
|
c_args: gtk_cargs,
|
||||||
|
dependencies: libgtk_dep,
|
||||||
|
+ link_language: 'cpp',
|
||||||
|
install: true
|
||||||
|
)
|
||||||
|
gtk_tools += gtk_query_settings
|
||||||
|
@@ -1083,6 +1084,7 @@ gtk_builder_tool = executable(
|
||||||
|
'gtk-builder-tool.c',
|
||||||
|
c_args: gtk_cargs,
|
||||||
|
dependencies: libgtk_dep,
|
||||||
|
+ link_language: 'cpp',
|
||||||
|
install: true
|
||||||
|
)
|
||||||
|
gtk_tools += gtk_builder_tool
|
||||||
|
@@ -1115,6 +1117,7 @@ gtk_update_icon_cache = executable(
|
||||||
|
extra_update_icon_cache_objs,
|
||||||
|
c_args: gtk_cargs,
|
||||||
|
dependencies: libgtk_dep,
|
||||||
|
+ link_language: 'cpp',
|
||||||
|
install: true
|
||||||
|
)
|
||||||
|
gtk_tools += gtk_update_icon_cache
|
||||||
|
@@ -1125,6 +1128,7 @@ gtk_query_immodules = executable(
|
||||||
|
'gtkutils.c',
|
||||||
|
c_args: gtk_cargs,
|
||||||
|
dependencies: libgtk_dep,
|
||||||
|
+ link_language: 'cpp',
|
||||||
|
install: true
|
||||||
|
)
|
||||||
|
gtk_tools += gtk_query_immodules
|
||||||
|
@@ -1134,6 +1138,7 @@ gtk_encode_symbolic_svg = executable(
|
||||||
|
'encodesymbolic.c',
|
||||||
|
c_args: gtk_cargs,
|
||||||
|
dependencies: libgtk_dep,
|
||||||
|
+ link_language: 'cpp',
|
||||||
|
install: true
|
||||||
|
)
|
||||||
|
gtk_tools += gtk_encode_symbolic_svg
|
||||||
|
@@ -1143,6 +1148,7 @@ gtk_launch = executable(
|
||||||
|
'gtk-launch.c',
|
||||||
|
c_args: gtk_cargs,
|
||||||
|
dependencies: libgtk_dep,
|
||||||
|
+ link_language: 'cpp',
|
||||||
|
install: true
|
||||||
|
)
|
||||||
|
gtk_tools += gtk_launch
|
||||||
|
diff --git a/meson.build b/meson.build
|
||||||
|
index 287f0cb..d35106f 100644
|
||||||
|
--- a/meson.build
|
||||||
|
+++ b/meson.build
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
-project('gtk+-3.0', 'c',
|
||||||
|
+project('gtk+-3.0', 'c', 'cpp',
|
||||||
|
version: '3.24.34',
|
||||||
|
default_options: [
|
||||||
|
'buildtype=debugoptimized',
|
@ -1 +1,98 @@
|
|||||||
set(VCPKG_POLICY_EMPTY_PACKAGE enabled)
|
set(warning_length 24)
|
||||||
|
string(LENGTH "${CURRENT_BUILDTREES_DIR}" buildtrees_path_length)
|
||||||
|
if(buildtrees_path_length GREATER warning_length AND CMAKE_HOST_WIN32)
|
||||||
|
message(WARNING "${PORT}'s buildsystem uses very long paths and may fail on your system.\n"
|
||||||
|
"We recommend moving vcpkg to a short path such as 'C:\\vcpkg' or using the subst command."
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
vcpkg_minimum_required(VERSION 2022-10-12) # for ${VERSION}
|
||||||
|
vcpkg_from_gitlab(
|
||||||
|
OUT_SOURCE_PATH SOURCE_PATH
|
||||||
|
GITLAB_URL https://gitlab.gnome.org
|
||||||
|
REPO GNOME/gtk
|
||||||
|
REF "${VERSION}"
|
||||||
|
SHA512 20a91e30a89070461af06b33829bc723b348806b4a785d0743af8bd4789b55dade24686e08bf1b2f0335240463aacc040134babb0605b809186b15de9cf261e4
|
||||||
|
PATCHES
|
||||||
|
0001-build.patch
|
||||||
|
cairo-cpp-linkage.patch
|
||||||
|
)
|
||||||
|
|
||||||
|
vcpkg_find_acquire_program(PKGCONFIG)
|
||||||
|
get_filename_component(PKGCONFIG_DIR "${PKGCONFIG}" DIRECTORY )
|
||||||
|
vcpkg_add_to_path("${PKGCONFIG_DIR}") # Post install script runs pkg-config so it needs to be on PATH
|
||||||
|
vcpkg_add_to_path("${CURRENT_HOST_INSTALLED_DIR}/tools/glib/")
|
||||||
|
vcpkg_add_to_path("${CURRENT_HOST_INSTALLED_DIR}/tools/gdk-pixbuf")
|
||||||
|
vcpkg_add_to_path("${CURRENT_HOST_INSTALLED_DIR}/tools/gettext/bin")
|
||||||
|
|
||||||
|
if("introspection" IN_LIST FEATURES)
|
||||||
|
if(VCPKG_TARGET_IS_WINDOWS AND VCPKG_LIBRARY_LINKAGE STREQUAL "static")
|
||||||
|
message(FATAL_ERROR "Feature introspection currently only supports dynamic build.")
|
||||||
|
endif()
|
||||||
|
list(APPEND OPTIONS_DEBUG -Dintrospection=false)
|
||||||
|
list(APPEND OPTIONS_RELEASE -Dintrospection=true)
|
||||||
|
else()
|
||||||
|
list(APPEND OPTIONS -Dintrospection=false)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(CMAKE_HOST_WIN32 AND VCPKG_TARGET_ARCHITECTURE STREQUAL "x86")
|
||||||
|
set(GIR_TOOL_DIR ${CURRENT_INSTALLED_DIR})
|
||||||
|
else()
|
||||||
|
set(GIR_TOOL_DIR ${CURRENT_HOST_INSTALLED_DIR})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
vcpkg_configure_meson(
|
||||||
|
SOURCE_PATH "${SOURCE_PATH}"
|
||||||
|
OPTIONS
|
||||||
|
${OPTIONS}
|
||||||
|
-Dwayland_backend=true
|
||||||
|
-Ddemos=false
|
||||||
|
-Dexamples=false
|
||||||
|
-Dtests=false
|
||||||
|
-Dgtk_doc=false
|
||||||
|
-Dman=false
|
||||||
|
-Dxinerama=no # Enable support for the X11 Xinerama extension
|
||||||
|
-Dcloudproviders=false # Enable the cloudproviders support
|
||||||
|
-Dprofiler=false # include tracing support for sysprof
|
||||||
|
-Dtracker3=false # Enable Tracker3 filechooser search
|
||||||
|
-Dcolord=no # Build colord support for the CUPS printing backend
|
||||||
|
OPTIONS_DEBUG
|
||||||
|
${OPTIONS_DEBUG}
|
||||||
|
OPTIONS_RELEASE
|
||||||
|
${OPTIONS_RELEASE}
|
||||||
|
ADDITIONAL_BINARIES
|
||||||
|
"glib-genmarshal='${CURRENT_HOST_INSTALLED_DIR}/tools/glib/glib-genmarshal'"
|
||||||
|
"glib-mkenums='${CURRENT_HOST_INSTALLED_DIR}/tools/glib/glib-mkenums'"
|
||||||
|
"glib-compile-resources='${CURRENT_HOST_INSTALLED_DIR}/tools/glib/glib-compile-resources${VCPKG_HOST_EXECUTABLE_SUFFIX}'"
|
||||||
|
"gdbus-codegen='${CURRENT_HOST_INSTALLED_DIR}/tools/glib/gdbus-codegen'"
|
||||||
|
"glib-compile-schemas='${CURRENT_HOST_INSTALLED_DIR}/tools/glib/glib-compile-schemas${VCPKG_HOST_EXECUTABLE_SUFFIX}'"
|
||||||
|
"g-ir-compiler='${CURRENT_HOST_INSTALLED_DIR}/tools/gobject-introspection/g-ir-compiler${VCPKG_HOST_EXECUTABLE_SUFFIX}'"
|
||||||
|
"g-ir-scanner='${GIR_TOOL_DIR}/tools/gobject-introspection/g-ir-scanner'"
|
||||||
|
)
|
||||||
|
|
||||||
|
# Reduce command line lengths, in particular for static windows builds.
|
||||||
|
foreach(dir IN ITEMS "${TARGET_TRIPLET}-dbg" "${TARGET_TRIPLET}-rel")
|
||||||
|
if(EXISTS "${CURRENT_BUILDTREES_DIR}/${dir}/build.ninja")
|
||||||
|
vcpkg_replace_string("${CURRENT_BUILDTREES_DIR}/${dir}/build.ninja" "/${dir}/../src/" "/src/")
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
vcpkg_install_meson(ADD_BIN_TO_PATH)
|
||||||
|
|
||||||
|
vcpkg_copy_pdbs()
|
||||||
|
|
||||||
|
vcpkg_fixup_pkgconfig()
|
||||||
|
|
||||||
|
set(GTK_TOOLS
|
||||||
|
gtk-builder-tool
|
||||||
|
gtk-encode-symbolic-svg
|
||||||
|
gtk-launch
|
||||||
|
gtk-query-immodules-3.0
|
||||||
|
gtk-query-settings
|
||||||
|
gtk-update-icon-cache
|
||||||
|
)
|
||||||
|
vcpkg_copy_tools(TOOL_NAMES ${GTK_TOOLS} AUTO_CLEAN)
|
||||||
|
|
||||||
|
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/etc")
|
||||||
|
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share")
|
||||||
|
|
||||||
|
file(INSTALL "${SOURCE_PATH}/COPYING" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright)
|
||||||
|
@ -1,8 +1,99 @@
|
|||||||
{
|
{
|
||||||
"name": "gtk3",
|
"name": "gtk3",
|
||||||
"version": "3.24.34",
|
"version": "3.24.34",
|
||||||
"port-version": 3,
|
"port-version": 4,
|
||||||
"description": "Portable library for creating graphical user interfaces.",
|
"description": "Portable library for creating graphical user interfaces.",
|
||||||
"homepage": "https://www.gtk.org/",
|
"homepage": "https://www.gtk.org/",
|
||||||
"license": null
|
"license": null,
|
||||||
|
"dependencies": [
|
||||||
|
{
|
||||||
|
"name": "at-spi2-atk",
|
||||||
|
"platform": "linux"
|
||||||
|
},
|
||||||
|
"atk",
|
||||||
|
{
|
||||||
|
"name": "cairo",
|
||||||
|
"default-features": false,
|
||||||
|
"features": [
|
||||||
|
"gobject"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "cairo",
|
||||||
|
"default-features": false,
|
||||||
|
"features": [
|
||||||
|
"x11"
|
||||||
|
],
|
||||||
|
"platform": "linux"
|
||||||
|
},
|
||||||
|
"gdk-pixbuf",
|
||||||
|
{
|
||||||
|
"name": "gdk-pixbuf",
|
||||||
|
"host": true
|
||||||
|
},
|
||||||
|
"gettext",
|
||||||
|
{
|
||||||
|
"name": "gettext",
|
||||||
|
"host": true,
|
||||||
|
"default-features": false,
|
||||||
|
"features": [
|
||||||
|
"tools"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"glib",
|
||||||
|
{
|
||||||
|
"name": "glib",
|
||||||
|
"host": true
|
||||||
|
},
|
||||||
|
"libepoxy",
|
||||||
|
"pango",
|
||||||
|
{
|
||||||
|
"name": "vcpkg-tool-meson",
|
||||||
|
"host": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"features": {
|
||||||
|
"introspection": {
|
||||||
|
"description": "build with introspection",
|
||||||
|
"dependencies": [
|
||||||
|
{
|
||||||
|
"name": "atk",
|
||||||
|
"default-features": false,
|
||||||
|
"features": [
|
||||||
|
"introspection"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "gdk-pixbuf",
|
||||||
|
"host": true,
|
||||||
|
"default-features": false,
|
||||||
|
"features": [
|
||||||
|
"introspection"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "gdk-pixbuf",
|
||||||
|
"default-features": false,
|
||||||
|
"features": [
|
||||||
|
"introspection"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "gobject-introspection",
|
||||||
|
"host": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "gobject-introspection",
|
||||||
|
"platform": "windows & x86"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "pango",
|
||||||
|
"default-features": false,
|
||||||
|
"features": [
|
||||||
|
"introspection"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
2
dist/linux/appimage.sh
vendored
2
dist/linux/appimage.sh
vendored
@ -46,7 +46,7 @@ fi
|
|||||||
echo "Cemu Version Cemu-${GITVERSION}"
|
echo "Cemu Version Cemu-${GITVERSION}"
|
||||||
|
|
||||||
rm AppDir/usr/lib/libwayland-client.so.0
|
rm AppDir/usr/lib/libwayland-client.so.0
|
||||||
echo "export LC_ALL=C" >> AppDir/apprun-hooks/linuxdeploy-plugin-gtk.sh
|
echo -e "export LC_ALL=C\nexport FONTCONFIG_PATH=/etc/fonts" >> AppDir/apprun-hooks/linuxdeploy-plugin-gtk.sh
|
||||||
VERSION="${GITVERSION}" ./mkappimage.AppImage --appimage-extract-and-run "${GITHUB_WORKSPACE}"/AppDir
|
VERSION="${GITVERSION}" ./mkappimage.AppImage --appimage-extract-and-run "${GITHUB_WORKSPACE}"/AppDir
|
||||||
|
|
||||||
mkdir -p "${GITHUB_WORKSPACE}"/artifacts/
|
mkdir -p "${GITHUB_WORKSPACE}"/artifacts/
|
||||||
|
Loading…
Reference in New Issue
Block a user