diff --git a/.github/workflows/autobuild.yml b/.github/workflows/autobuild.yml index fe4ea71f..044b0b75 100644 --- a/.github/workflows/autobuild.yml +++ b/.github/workflows/autobuild.yml @@ -99,6 +99,12 @@ jobs: run: | sudo apt update sudo apt install git wget build-essential cmake meson autoconf automake libtool pkg-config ruby bison xxd zlib1g-dev libbz2-dev xorg-dev libgl1-mesa-dev libasound2-dev libpulse-dev -y + # https://github.com/libsdl-org/SDL/blob/release-2.28.1/docs/README-linux.md#build-dependencies + sudo apt install build-essential git make autoconf automake libtool pkg-config cmake ninja-build gnome-desktop-testing libasound2-dev libpulse-dev libaudio-dev libjack-dev libsndio-dev libsamplerate0-dev libx11-dev libxext-dev libxrandr-dev libxcursor-dev libxfixes-dev libxi-dev libxss-dev libwayland-dev libxkbcommon-dev libdrm-dev libgbm-dev libgl1-mesa-dev libgles2-mesa-dev libegl1-mesa-dev libdbus-1-dev libibus-1.0-dev libudev-dev fcitx-libs-dev -y + sudo apt install libpipewire-0.3-dev libdecor-0-dev -y + # https://github.com/libsdl-org/SDL/blob/release-3.2.16/docs/README-linux.md#build-dependencies + sudo apt install build-essential git make pkg-config cmake ninja-build gnome-desktop-testing libasound2-dev libpulse-dev libaudio-dev libjack-dev libsndio-dev libx11-dev libxext-dev libxrandr-dev libxcursor-dev libxfixes-dev libxi-dev libxss-dev libxkbcommon-dev libdrm-dev libgbm-dev libgl1-mesa-dev libgles2-mesa-dev libegl1-mesa-dev libdbus-1-dev libibus-1.0-dev libudev-dev -y + sudo apt install libpipewire-0.3-dev libwayland-dev libdecor-0-dev liburing-dev -y - name: Build everything else run: | @@ -200,6 +206,12 @@ jobs: sudo apt install git wget build-essential cmake meson autoconf automake libtool pkg-config ruby bison xxd -y sudo apt install libfontenc-dev:${{matrix.arch_debian}} libfs-dev:${{matrix.arch_debian}} libice-dev:${{matrix.arch_debian}} libsm-dev:${{matrix.arch_debian}} libx11-dev:${{matrix.arch_debian}} libxau-dev:${{matrix.arch_debian}} libxaw7-dev:${{matrix.arch_debian}} libxcomposite-dev:${{matrix.arch_debian}} libxcursor-dev:${{matrix.arch_debian}} libxdamage-dev:${{matrix.arch_debian}} libxdmcp-dev:${{matrix.arch_debian}} libxext-dev:${{matrix.arch_debian}} libxfixes-dev:${{matrix.arch_debian}} libxfont-dev:${{matrix.arch_debian}} libxft-dev:${{matrix.arch_debian}} libxi-dev:${{matrix.arch_debian}} libxinerama-dev:${{matrix.arch_debian}} libxkbfile-dev:${{matrix.arch_debian}} libxmu-dev:${{matrix.arch_debian}} libxmuu-dev:${{matrix.arch_debian}} libxpm-dev:${{matrix.arch_debian}} libxrandr-dev:${{matrix.arch_debian}} libxrender-dev:${{matrix.arch_debian}} libxres-dev:${{matrix.arch_debian}} libxss-dev:${{matrix.arch_debian}} libxt-dev:${{matrix.arch_debian}} libxtst-dev:${{matrix.arch_debian}} libxv-dev:${{matrix.arch_debian}} libxvmc-dev:${{matrix.arch_debian}} libxxf86dga-dev:${{matrix.arch_debian}} libxxf86vm-dev:${{matrix.arch_debian}} x11proto-dev:${{matrix.arch_debian}} xserver-xorg-dev:${{matrix.arch_debian}} xtrans-dev:${{matrix.arch_debian}} -y sudo apt install gcc-${{matrix.arch_gcc}} g++-${{matrix.arch_gcc}} zlib1g-dev:${{matrix.arch_debian}} libbz2-dev:${{matrix.arch_debian}} libgl1-mesa-dev:${{matrix.arch_debian}} libasound2-dev:${{matrix.arch_debian}} libpulse-dev:${{matrix.arch_debian}} -y + # https://github.com/libsdl-org/SDL/blob/release-2.28.1/docs/README-linux.md#build-dependencies + sudo apt install build-essential git make autoconf automake libtool pkg-config cmake ninja-build gnome-desktop-testing:${{matrix.arch_debian}} libasound2-dev:${{matrix.arch_debian}} libpulse-dev:${{matrix.arch_debian}} libaudio-dev:${{matrix.arch_debian}} libjack-dev:${{matrix.arch_debian}} libsndio-dev:${{matrix.arch_debian}} libsamplerate0-dev:${{matrix.arch_debian}} libx11-dev:${{matrix.arch_debian}} libxext-dev:${{matrix.arch_debian}} libxrandr-dev:${{matrix.arch_debian}} libxcursor-dev:${{matrix.arch_debian}} libxfixes-dev:${{matrix.arch_debian}} libxi-dev:${{matrix.arch_debian}} libxss-dev:${{matrix.arch_debian}} libwayland-dev:${{matrix.arch_debian}} libxkbcommon-dev:${{matrix.arch_debian}} libdrm-dev:${{matrix.arch_debian}} libgbm-dev:${{matrix.arch_debian}} libgl1-mesa-dev:${{matrix.arch_debian}} libgles2-mesa-dev:${{matrix.arch_debian}} libegl1-mesa-dev:${{matrix.arch_debian}} libdbus-1-dev:${{matrix.arch_debian}} libibus-1.0-dev:${{matrix.arch_debian}} libudev-dev:${{matrix.arch_debian}} fcitx-libs-dev:${{matrix.arch_debian}} -y + sudo apt install libpipewire-0.3-dev:${{matrix.arch_debian}} libdecor-0-dev:${{matrix.arch_debian}} -y + # https://github.com/libsdl-org/SDL/blob/release-3.2.16/docs/README-linux.md#build-dependencies + sudo apt install build-essential git make pkg-config cmake ninja-build gnome-desktop-testing:${{matrix.arch_debian}} libasound2-dev:${{matrix.arch_debian}} libpulse-dev:${{matrix.arch_debian}} libaudio-dev:${{matrix.arch_debian}} libjack-dev:${{matrix.arch_debian}} libsndio-dev:${{matrix.arch_debian}} libx11-dev:${{matrix.arch_debian}} libxext-dev:${{matrix.arch_debian}} libxrandr-dev:${{matrix.arch_debian}} libxcursor-dev:${{matrix.arch_debian}} libxfixes-dev:${{matrix.arch_debian}} libxi-dev:${{matrix.arch_debian}} libxss-dev:${{matrix.arch_debian}} libxkbcommon-dev:${{matrix.arch_debian}} libdrm-dev:${{matrix.arch_debian}} libgbm-dev:${{matrix.arch_debian}} libgl1-mesa-dev:${{matrix.arch_debian}} libgles2-mesa-dev:${{matrix.arch_debian}} libegl1-mesa-dev:${{matrix.arch_debian}} libdbus-1-dev:${{matrix.arch_debian}} libibus-1.0-dev:${{matrix.arch_debian}} libudev-dev:${{matrix.arch_debian}} -y + sudo apt install libpipewire-0.3-dev:${{matrix.arch_debian}} libwayland-dev:${{matrix.arch_debian}} libdecor-0-dev:${{matrix.arch_debian}} liburing-dev:${{matrix.arch_debian}} -y - name: Build everything else run: | @@ -259,6 +271,12 @@ jobs: run: | apt update apt install git wget build-essential cmake meson autoconf automake libtool pkg-config ruby bison xxd zlib1g-dev libbz2-dev xorg-dev libgl1-mesa-dev libasound2-dev libpulse-dev -y + # https://github.com/libsdl-org/SDL/blob/release-2.28.1/docs/README-linux.md#build-dependencies + apt install build-essential git make autoconf automake libtool pkg-config cmake ninja-build gnome-desktop-testing libasound2-dev libpulse-dev libaudio-dev libjack-dev libsndio-dev libsamplerate0-dev libx11-dev libxext-dev libxrandr-dev libxcursor-dev libxfixes-dev libxi-dev libxss-dev libwayland-dev libxkbcommon-dev libdrm-dev libgbm-dev libgl1-mesa-dev libgles2-mesa-dev libegl1-mesa-dev libdbus-1-dev libibus-1.0-dev libudev-dev fcitx-libs-dev -y + apt install libpipewire-0.3-dev libdecor-0-dev -y + # https://github.com/libsdl-org/SDL/blob/release-3.2.16/docs/README-linux.md#build-dependencies + apt install build-essential git make pkg-config cmake ninja-build gnome-desktop-testing libasound2-dev libpulse-dev libaudio-dev libjack-dev libsndio-dev libx11-dev libxext-dev libxrandr-dev libxcursor-dev libxfixes-dev libxi-dev libxss-dev libxkbcommon-dev libdrm-dev libgbm-dev libgl1-mesa-dev libgles2-mesa-dev libegl1-mesa-dev libdbus-1-dev libibus-1.0-dev libudev-dev -y + apt install libpipewire-0.3-dev libwayland-dev libdecor-0-dev liburing-dev -y - name: Build everything else run: | @@ -356,6 +374,12 @@ jobs: apt install git wget build-essential cmake meson autoconf automake libtool pkg-config ruby bison xxd -y apt install libfontenc-dev:${{matrix.arch_debian}} libfs-dev:${{matrix.arch_debian}} libice-dev:${{matrix.arch_debian}} libsm-dev:${{matrix.arch_debian}} libx11-dev:${{matrix.arch_debian}} libxau-dev:${{matrix.arch_debian}} libxaw7-dev:${{matrix.arch_debian}} libxcomposite-dev:${{matrix.arch_debian}} libxcursor-dev:${{matrix.arch_debian}} libxdamage-dev:${{matrix.arch_debian}} libxdmcp-dev:${{matrix.arch_debian}} libxext-dev:${{matrix.arch_debian}} libxfixes-dev:${{matrix.arch_debian}} libxfont-dev:${{matrix.arch_debian}} libxft-dev:${{matrix.arch_debian}} libxi-dev:${{matrix.arch_debian}} libxinerama-dev:${{matrix.arch_debian}} libxkbfile-dev:${{matrix.arch_debian}} libxmu-dev:${{matrix.arch_debian}} libxmuu-dev:${{matrix.arch_debian}} libxpm-dev:${{matrix.arch_debian}} libxrandr-dev:${{matrix.arch_debian}} libxrender-dev:${{matrix.arch_debian}} libxres-dev:${{matrix.arch_debian}} libxss-dev:${{matrix.arch_debian}} libxt-dev:${{matrix.arch_debian}} libxtst-dev:${{matrix.arch_debian}} libxv-dev:${{matrix.arch_debian}} libxvmc-dev:${{matrix.arch_debian}} libxxf86dga-dev:${{matrix.arch_debian}} libxxf86vm-dev:${{matrix.arch_debian}} x11proto-dev:${{matrix.arch_debian}} xserver-xorg-dev:${{matrix.arch_debian}} xtrans-dev:${{matrix.arch_debian}} -y apt install gcc-${{matrix.arch_gcc}} g++-${{matrix.arch_gcc}} zlib1g-dev:${{matrix.arch_debian}} libbz2-dev:${{matrix.arch_debian}} libgl1-mesa-dev:${{matrix.arch_debian}} libasound2-dev:${{matrix.arch_debian}} libpulse-dev:${{matrix.arch_debian}} -y + # https://github.com/libsdl-org/SDL/blob/release-2.28.1/docs/README-linux.md#build-dependencies + apt install build-essential git make autoconf automake libtool pkg-config cmake ninja-build gnome-desktop-testing:${{matrix.arch_debian}} libasound2-dev:${{matrix.arch_debian}} libpulse-dev:${{matrix.arch_debian}} libaudio-dev:${{matrix.arch_debian}} libjack-dev:${{matrix.arch_debian}} libsndio-dev:${{matrix.arch_debian}} libsamplerate0-dev:${{matrix.arch_debian}} libx11-dev:${{matrix.arch_debian}} libxext-dev:${{matrix.arch_debian}} libxrandr-dev:${{matrix.arch_debian}} libxcursor-dev:${{matrix.arch_debian}} libxfixes-dev:${{matrix.arch_debian}} libxi-dev:${{matrix.arch_debian}} libxss-dev:${{matrix.arch_debian}} libwayland-dev:${{matrix.arch_debian}} libxkbcommon-dev:${{matrix.arch_debian}} libdrm-dev:${{matrix.arch_debian}} libgbm-dev:${{matrix.arch_debian}} libgl1-mesa-dev:${{matrix.arch_debian}} libgles2-mesa-dev:${{matrix.arch_debian}} libegl1-mesa-dev:${{matrix.arch_debian}} libdbus-1-dev:${{matrix.arch_debian}} libibus-1.0-dev:${{matrix.arch_debian}} libudev-dev:${{matrix.arch_debian}} fcitx-libs-dev:${{matrix.arch_debian}} -y + apt install libpipewire-0.3-dev:${{matrix.arch_debian}} libdecor-0-dev:${{matrix.arch_debian}} -y + # https://github.com/libsdl-org/SDL/blob/release-3.2.16/docs/README-linux.md#build-dependencies + apt install build-essential git make pkg-config cmake ninja-build gnome-desktop-testing:${{matrix.arch_debian}} libasound2-dev:${{matrix.arch_debian}} libpulse-dev:${{matrix.arch_debian}} libaudio-dev:${{matrix.arch_debian}} libjack-dev:${{matrix.arch_debian}} libsndio-dev:${{matrix.arch_debian}} libx11-dev:${{matrix.arch_debian}} libxext-dev:${{matrix.arch_debian}} libxrandr-dev:${{matrix.arch_debian}} libxcursor-dev:${{matrix.arch_debian}} libxfixes-dev:${{matrix.arch_debian}} libxi-dev:${{matrix.arch_debian}} libxss-dev:${{matrix.arch_debian}} libxkbcommon-dev:${{matrix.arch_debian}} libdrm-dev:${{matrix.arch_debian}} libgbm-dev:${{matrix.arch_debian}} libgl1-mesa-dev:${{matrix.arch_debian}} libgles2-mesa-dev:${{matrix.arch_debian}} libegl1-mesa-dev:${{matrix.arch_debian}} libdbus-1-dev:${{matrix.arch_debian}} libibus-1.0-dev:${{matrix.arch_debian}} libudev-dev:${{matrix.arch_debian}} -y + apt install libpipewire-0.3-dev:${{matrix.arch_debian}} libwayland-dev:${{matrix.arch_debian}} libdecor-0-dev:${{matrix.arch_debian}} liburing-dev:${{matrix.arch_debian}} -y - name: Build everything else run: | diff --git a/linux/Makefile b/linux/Makefile index 140ea50e..092fb9f3 100644 --- a/linux/Makefile +++ b/linux/Makefile @@ -23,11 +23,21 @@ GIT := git CLONE := $(GIT) clone -q GITHUB := https://github.com -CONFIGURE_ENV := \ +# SDL needs system libraries at build time to enable some of its features (e.g. +# Wayland support), so we don't pass PKG_CONFIG_LIBDIR; this is OK because the +# resulting binaries don't dynamically link against those libraries. +# See: https://github.com/libsdl-org/SDL/blob/release-2.28.1/docs/README-linux.md +CONFIGURE_ENV_SDL := \ CMAKE_POLICY_VERSION_MINIMUM=3.10 \ - PKG_CONFIG_LIBDIR=$(PKG_CONFIG_LIBDIR) \ CC="$(CC)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" +# For all other dependencies, we pass PKG_CONFIG_LIBDIR so that the resulting +# binaries don't try to dynamically link against system libraries from the +# build machine. +CONFIGURE_ENV := \ + $(CONFIGURE_ENV_SDL) \ + PKG_CONFIG_LIBDIR=$(PKG_CONFIG_LIBDIR) + CONFIGURE_ARGS := --prefix="$(BUILD_PREFIX)" --host="$(ARCH_CONFIGURE)" ifdef ARCH_CMAKE_TOOLCHAIN @@ -53,6 +63,7 @@ RUBY_CONFIGURE_ARGS := \ CONFIGURE := $(CONFIGURE_ENV) ./configure $(CONFIGURE_ARGS) AUTOGEN := $(CONFIGURE_ENV) ./autogen.sh $(CONFIGURE_ARGS) CMAKE := $(CONFIGURE_ENV) cmake .. $(CMAKE_ARGS) +CMAKE_SDL := $(CONFIGURE_ENV_SDL) cmake .. $(CMAKE_ARGS) default: everything @@ -197,7 +208,7 @@ $(LIBDIR)/libSDL2.a: $(DOWNLOADS)/sdl2/cmakebuild/Makefile $(DOWNLOADS)/sdl2/cmakebuild/Makefile: $(DOWNLOADS)/sdl2/CMakeLists.txt cd $(DOWNLOADS)/sdl2; \ mkdir cmakebuild; cd cmakebuild; \ - $(CMAKE) -DBUILD_SHARED_LIBS=no + $(CMAKE_SDL) -DBUILD_SHARED_LIBS=no $(DOWNLOADS)/sdl2/CMakeLists.txt: $(CLONE) $(GITHUB)/mkxp-z/SDL $(DOWNLOADS)/sdl2 -b mkxp-z-2.28.1