Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:ahmedmoselhi2:branches:Emulators
xemu
xemu.spec
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File xemu.spec of Package xemu
%global use_clang 0 %global use_lld 0 %ifarch %ix86 %arm %global use_lto 0 %else %global use_lto 1 %endif %define __builder ninja Name: xemu Version: 0.7.118+0~git20231218.03f40b1d8e Release: 0 Summary: Xbox EMUlator License: GPL-2.0-or-later Group: System/Emulators/Other URL: https://xemu.app/ Source0: %{name}-%{version}.tar.xz Patch: xemu_uring-by-default.patch BuildRequires: cmake BuildRequires: ninja BuildRequires: fdupes BuildRequires: meson BuildRequires: hicolor-icon-theme BuildRequires: update-desktop-files %if 0%{?use_clang} BuildRequires: clang-devel BuildRequires: llvm-gold #BuildRequires: npth-devel %if 0%{?use_lld} BuildRequires: lld %else BuildRequires: binutils-gold %endif %else BuildRequires: binutils-gold BuildRequires: gcc-PIE BuildRequires: gcc-c++ %endif BuildRequires: libaio-devel BuildRequires: lzfse-devel BuildRequires: glibc-devel BuildRequires: gettext-tools BuildRequires: kernel-headers BuildRequires: python3-PyYAML BuildRequires: renderdoc-devel BuildRequires: pkgconfig BuildRequires: pkgconfig(libgcrypt) #BuildRequires: pkgconfig(nettle) #BuildRequires: pkgconfig(libbpf) BuildRequires: pkgconfig(jemalloc) #BuildRequires: pkgconfig(libtcmalloc) BuildRequires: pkgconfig(capstone) BuildRequires: pkgconfig(glu) BuildRequires: pkgconfig(gio-2.0) BuildRequires: pkgconfig(gnutls) BuildRequires: pkgconfig(gtk+-3.0) BuildRequires: pkgconfig(epoxy) BuildRequires: pkgconfig(jack) BuildRequires: pkgconfig(lzo2) BuildRequires: pkgconfig(libattr) BuildRequires: pkgconfig(libcap-ng) BuildRequires: pkgconfig(libcurl) BuildRequires: pkgconfig(libdrm) BuildRequires: pkgconfig(libkeyutils) BuildRequires: pkgconfig(libpcap) BuildRequires: pkgconfig(libpulse) BuildRequires: pkgconfig(libpmem) BuildRequires: pkgconfig(libseccomp) BuildRequires: pkgconfig(libtasn1) BuildRequires: pkgconfig(libudev) BuildRequires: pkgconfig(liburing) BuildRequires: pkgconfig(libusb-1.0) BuildRequires: pkgconfig(libusbredirhost) BuildRequires: pkgconfig(libxml-2.0) BuildRequires: pkgconfig(libzip) BuildRequires: pkgconfig(libzstd) BuildRequires: pkgconfig(ncurses) BuildRequires: pkgconfig(openssl) BuildRequires: pkgconfig(pam) BuildRequires: pkgconfig(pixman-1) BuildRequires: pkgconfig(samplerate) BuildRequires: pkgconfig(sdl2) BuildRequires: pkgconfig(SDL2_image) BuildRequires: pkgconfig(slirp) BuildRequires: pkgconfig(snappy) BuildRequires: pkgconfig(xkbcommon) BuildRequires: pkgconfig(virglrenderer) #BuildRequires: pkgconfig(spice-client-gtk-3.0) #BuildRequires: pkgconfig(spice-protocol) #BuildRequires: pkgconfig(spice-server) BuildRequires: qemu-x86 BuildRequires: qemu-microvm # does it even need any of it? #Requires: qemu-x86 #Requires: qemu-microvm #Requires: qemu-hw-display-virtio-vga #Requires: qemu-hw-display-virtio-gpu #Requires: qemu-hw-display-qxl %description Xbox Emulator based on QEMU %prep %autosetup -p1 %build # this macro needs 'BuildRequires: memory-constraints' #limit_build -m 2000 ulimit -Sn 4000 # see build.sh from sources export UCFLAGS="${UCFLAGS} -w -fPIC -O3" %ifarch x86_64 export UCFLAGS="${UCFLAGS} -march=x86-64 -mtune=generic -mssse3 -msse4 -msse4.1 -msse4.2 -mavx -maes -mpclmul" %endif export ULDFLAGS="-fPIC -Wl,--gc-sections -Wl,--sort-common -Wl,-O1" %if 0%{?use_clang} export CC=clang export CXX=clang++ export CPP='clang -E' AR=llvm-ar AS=llvm-as NM=llvm-nm OBJCOPY=llvm-objcopy OBJDUMP=llvm-objdump OBJSIZE=llvm-size STRIP=llvm-strip RANLIB=llvm-ranlib export UCFLAGS="${UCFLAGS} -v" %ifarch x86_64 #export UCFLAGS="${UCFLAGS} -fglobal-isel" %endif export UCFLAGS="${UCFLAGS} -fexceptions -fbracket-depth=1024 -fconstexpr-depth=1024 -D_GNU_SOURCE" #export UCFLAGS="${UCFLAGS} -faligned-allocation" export UCXXFLAGS="${UCFLAGS} -fpermissive" export UCXXFLAGS="${UCFLAGS} -fcxx-exceptions" %if 0%{?use_lld} export ULDFLAGS="${ULDFLAGS} -fuse-ld=lld" %ifarch %ix86 %arm export ULDFLAGS="${ULDFLAGS} -Wl,-z,notext" %endif export LD="lld" alias ld=ld.lld %else export ULDFLAGS="${ULDFLAGS} -fuse-ld=gold" export LD=ld.gold alias ld=gold %endif export HOST="$(${CC} -print-target-triple)" %else export CC=gcc export CXX=g++ export UCFLAGS="${UCFLAGS} -ftree-parallelize-loops=8 -ftree-vectorize -fpredictive-commoning" export UCXXFLAGS="${UCFLAGS} -fpermissive" export ULDFLAGS="${ULDFLAGS} -fuse-ld=gold -Wl,--icf=safe" export LD=ld.gold alias ld=gold export HOST="%{_target_platform}" %endif %if !0%{?use_lto} %global _lto_cflags %{nil} %global _lto_ldlags %{nil} %else %if 0%{?use_clang} %if 0%{?use_lld} %global _lto_cflags -flto=thin %global _lto_ldlags -flto=thin -Wl,--plugin-opt=O3 %{?jobs:-Wl,--threads=%{jobs}} %else %global _lto_cflags -flto=thin %global _lto_ldlags -flto=thin %endif %else %global _lto_cflags -fuse-linker-plugin %{_lto_cflags} -ffat-lto-objects -flto-odr-type-merging %global _lto_ldlags -fuse-linker-plugin -flto=%{?jobs:%{jobs}} %endif %endif export TARGET="${HOST}" export UCFLAGS="${UCFLAGS} %{_lto_cflags}" export UCXXFLAGS="${UCXXFLAGS} %{_lto_cflags}" export ULDFLAGS="${ULDFLAGS} %{_lto_cflags} %{_lto_ldlags}" # override OBS defaults ? export CFLAGS="${UCFLAGS}" export CXXFLAGS="${UCXXFLAGS}" export LDFLAGS="${ULDFLAGS}" # malloc=system+malloc-trim/tcmalloc/jemalloc # enable-gcrypt/nettle # gtk doesn't seem to be used, so these may be useless: --enable-gtk --enable-gio --enable-gettext # --enable-virglrenderer may allow using '-vga virtio' # fails with `undefined symbol` likely due to lack of proper linking definitions but it should enable '-vga qxl`' # --enable-spice \ # this should allow using '-drive aio=io_uring' as alternative to legacy aio=threads (simple default) / native (posix variant enabled by enable-linux-aio) # may cause segfault with `../block/aio_task.c:64: void aio_task_pool_wait_one(AioTaskPool *): Assertion `qemu_coroutine_self() == pool->main_co' failed.` # is assertion triggered only with clang ? # --enable-linux-io-uring \ # fails with `../util/fdmon-io_uring.c:182:36: error: incompatible pointer to integer conversion passing 'AioHandler *'` # --enable-linux-aio \ # fails with `undefined symbol` and `../ebpf/ebpf_rss.c:52:5: error: call to undeclared function 'bpf_program__set_socket_filter'` # --enable-bpf \ # could --enable-seccomp security feature cause emulation failures ? ./configure \ --prefix="%{_prefix}" \ --extra-cflags="-DXBOX=1 -Wno-error=redundant-decls -Wno-error=int-conversion -Wno-error=implicit-function-declaration ${CFLAGS}" \ --extra-ldflags="${LDFLAGS}" \ --target-list=i386-softmmu \ %if 0%{?use_lto} --enable-lto \ %endif --audio-drv-list=pa,jack \ --enable-pa \ --enable-jack \ --enable-sdl \ --enable-sdl-image \ --enable-multiprocess \ --enable-virglrenderer \ --enable-opengl \ --enable-libudev \ --enable-libusb \ --enable-usb-redir \ --enable-bzip2 \ --enable-lzfse \ --enable-lzo \ --enable-snappy \ --enable-zstd \ --enable-cap-ng \ --enable-xkbcommon \ --enable-renderdoc \ --enable-libpmem \ --enable-jemalloc \ --enable-pie \ --enable-fortify-source \ --enable-stack-protector \ %if 0%{?use_clang} --enable-safe-stack \ %endif --enable-membarrier \ --enable-curses \ --enable-curl \ --enable-iconv \ --enable-attr \ --enable-linux-aio \ --enable-linux-io-uring \ --enable-auth-pam \ --enable-kvm \ --enable-keyring \ --enable-gcrypt \ --enable-gnutls \ --disable-strip \ --disable-werror %make_build # try meson-based build later ? might be not supported by xemu's forked codebase #meson #meson_build %install #meson_install # based on https://build.opensuse.org/package/show/home%3AAzkali%3AApps/xemu install -m 755 -D build/qemu-system-i386 %{buildroot}%{_bindir}/xemu install -m 644 -D ui/icons/xemu.svg %{buildroot}%{_datadir}/icons/hicolor/scalable/apps/xemu.svg install -m 644 -D ui/icons/xemu_128x128.png %{buildroot}%{_datadir}/icons/hicolor/128x128/apps/xemu.png #128 install -m 644 -D ui/icons/xemu_16x16.png %{buildroot}%{_datadir}/icons/hicolor/16x16/apps/xemu.png #16 install -m 644 -D ui/icons/xemu_24x24.png %{buildroot}%{_datadir}/icons/hicolor/24x24/apps/xemu.png #24 install -m 644 -D ui/icons/xemu_256x256.png %{buildroot}%{_datadir}/icons/hicolor/256x256/apps/xemu.png #256 install -m 644 -D ui/icons/xemu_32x32.png %{buildroot}%{_datadir}/icons/hicolor/32x32/apps/xemu.png #32 install -m 644 -D ui/icons/xemu_48x48.png %{buildroot}%{_datadir}/icons/hicolor/48x48/apps/xemu.png #48 install -m 644 -D ui/icons/xemu_512x512.png %{buildroot}%{_datadir}/icons/hicolor/512x512/apps/xemu.png #512 install -m 644 -D ui/icons/xemu_64x64.png %{buildroot}%{_datadir}/icons/hicolor/64x64/apps/xemu.png #64 install -m 644 -D ui/xemu.desktop %{buildroot}%{_datadir}/applications/xemu.desktop %fdupes -s %{buildroot} %suse_update_desktop_file %{name} %post %desktop_database_post %icon_theme_cache_post %postun %desktop_database_postun %icon_theme_cache_postun %files %defattr(-,root,root) %license COPYING %caps(cap_net_raw=ep) %{_bindir}/%{name} %{_datadir}/applications/*.desktop %{_datadir}/icons/hicolor/*/apps/*.* %changelog
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor