blob: 22619f30c37c46b7e811ce238d44f860ab724b2a (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
|
PORTNAME= rpcs3
DISTVERSIONPREFIX= v
DISTVERSION= 0.0.27-14823 # git rev-list --count HEAD
DISTVERSIONSUFFIX= -g7e6cc02e09
CATEGORIES= emulators wayland
MAINTAINER= jbeich@FreeBSD.org
COMMENT= PS3 emulator/debugger
WWW= https://rpcs3.net/
LICENSE= APACHE20 ISCL GPLv2 MIT ZLIB
LICENSE_COMB= multi
LICENSE_FILE_ISCL= ${WRKSRC_cubeb}/LICENSE
LICENSE_FILE_ZLIB= ${WRKSRC_asmjit}/LICENSE.md
FLAVORS= qt5 qt6
BUILD_DEPENDS= flatc:devel/flatbuffers
LIB_DEPENDS= libxxhash.so:devel/xxhash \
libcurl.so:ftp/curl \
libpng.so:graphics/png \
libavcodec.so:multimedia/ffmpeg \
libpugixml.so:textproc/pugixml
ONLY_FOR_ARCHS= aarch64 amd64
ONLY_FOR_ARCHS_REASON= requires int128 and SSE2
USE_GITHUB= yes
GH_ACCOUNT= RPCS3
GH_TUPLE= RPCS3:hidapi:hidapi-0.13.1-2-gecf1b62:hidapi/3rdparty/hidapi/hidapi \
RPCS3:llvm-mirror:9b52b6c39ae9:llvm/llvm \
RPCS3:soundtouch:2.3.1-16-g83cfba6:soundtouch/3rdparty/SoundTouch/soundtouch \
asmjit:asmjit:06d0bad:asmjit/3rdparty/asmjit/asmjit \
jbeder:yaml-cpp:yaml-cpp-0.7.0-1-g0b67821:yamlcpp/3rdparty/yaml-cpp/yaml-cpp \
KhronosGroup:SPIRV-Headers:1.5.4.raytracing.fixed-187-g85a1ed2:spirv_headers/3rdparty/SPIRV/SPIRV-Headers \
KhronosGroup:SPIRV-Tools:v2022.4:spirv_tools/3rdparty/SPIRV/SPIRV-Tools \
KhronosGroup:glslang:11.11.0-2-g10423ec6:glslang/3rdparty/glslang/glslang \
kinetiknz:cubeb:cubeb-0.2-1427-g70b4e3d:cubeb/3rdparty/cubeb/cubeb \
miniupnp:miniupnp:miniupnpd_2_3_2:miniupnp/3rdparty/miniupnp/miniupnp \
wolfSSL:wolfssl:v5.5.4-stable:wolfssl/3rdparty/wolfssl/wolfssl
USES= cmake elfctl gl iconv:wchar_t localbase:ldflags \
openal:soft pkgconfig python:3.4+,build qt:5 xorg
USE_GL= gl glew
USE_QT= qmake:build buildtools:build core concurrent dbus gui multimedia svg widgets
USE_XORG= x11
CMAKE_ON= CMAKE_SKIP_RPATH ${CURL FFMPEG FLATBUFFERS LIBPNG PUGIXML XXHASH:L:S/^/USE_SYSTEM_/}
CMAKE_ON+= BUNDLE_SPEEX # only used by cubeb tests
CMAKE_OFF= USE_NATIVE_INSTRUCTIONS USE_PRECOMPILED_HEADERS
LDFLAGS+= -Wl,--as-needed # GLU
ELF_FEATURES= +noaslr,wxneeded:bin/${PORTNAME}
.if ${FLAVOR:U} == qt6 || make(makesum) || make(fetch)
PATCH_SITES+= https://github.com/${GH_ACCOUNT}/${GH_PROJECT}/commit/:qt6
PATCHFILES+= 98a2f373fd59.patch:-p1:qt6 # https://github.com/RPCS3/rpcs3/pull/12471
PKGNAMESUFFIX= -${FLAVOR}
USES:= ${USES:S/qt:5/qt:6/}
USE_QT= base multimedia svg
CONFLICTS_INSTALL= ${PORTNAME}
post-patch: ${FLAVOR}-post-patch
${FLAVOR}-post-patch:
# patch(1) doesn't support renames unlike git-apply(1)
@${MV} ${WRKSRC}/rpcs3/rpcs3qt/qt_camera_video_surface.cpp \
${WRKSRC}/rpcs3/rpcs3qt/qt_camera_video_sink.cpp
@${MV} ${WRKSRC}/rpcs3/rpcs3qt/qt_camera_video_surface.h \
${WRKSRC}/rpcs3/rpcs3qt/qt_camera_video_sink.h
.else
CONFLICTS_INSTALL= ${PORTNAME}-qt6
.endif
OPTIONS_DEFINE= ALSA EVDEV FAUDIO PULSEAUDIO JACK SNDIO VULKAN
OPTIONS_DEFAULT=EVDEV FAUDIO PULSEAUDIO JACK SNDIO VULKAN
ALSA_BUILD_DEPENDS= alsa-lib>0:audio/alsa-lib
ALSA_CMAKE_BOOL= USE_ALSA
EVDEV_DESC= libevdev-based joystick support
EVDEV_CMAKE_BOOL= USE_LIBEVDEV
EVDEV_BUILD_DEPENDS= evdev-proto>0:devel/evdev-proto
EVDEV_LIB_DEPENDS= libevdev.so:devel/libevdev \
libudev.so:devel/libudev-devd
FAUDIO_DESC= FAudio audio support
FAUDIO_LIB_DEPENDS= libFAudio.so:audio/faudio
FAUDIO_CMAKE_BOOL= USE_FAUDIO USE_SYSTEM_FAUDIO
JACK_BUILD_DEPENDS= jackit>0:audio/jack
JACK_CMAKE_BOOL= USE_JACK
PULSEAUDIO_BUILD_DEPENDS=pulseaudio>0:audio/pulseaudio
PULSEAUDIO_CMAKE_BOOL= USE_PULSE
SNDIO_BUILD_DEPENDS= sndio>0:audio/sndio
SNDIO_CMAKE_BOOL= USE_SNDIO
VULKAN_DESC= Vulkan renderer
VULKAN_BUILD_DEPENDS= ${LOCALBASE}/include/vulkan/vulkan.h:graphics/vulkan-headers
VULKAN_LIB_DEPENDS= libvulkan.so:graphics/vulkan-loader
VULKAN_CMAKE_BOOL= USE_VULKAN
post-patch:
@${REINPLACE_CMD} -e '/GIT_BRANCH/s/local_build/master/' \
-e '/GIT_FULL_BRANCH/s/local_build/${GH_ACCOUNT}\/${GH_PROJECT}\/master/' \
-e '/GIT_VERSION/s/local_build/${GH_TAGNAME:C/[^-]*-//}/' \
${WRKSRC}/${PORTNAME}/git-version.cmake
.include <bsd.port.options.mk>
# XXX https://github.com/llvm/llvm-project/issues/58207
.if ${_OSRELEASE:M*-CURRENT}
# Ignore Clang assertions
USES+= llvm
CC= clang${LLVM_VERSION}
CXX= clang++${LLVM_VERSION}
CPP= clang-cpp${LLVM_VERSION}
.endif
# XXX Drop after FreeBSD 12.3 EOL around 2023-03-31 (don't forget distinfo)
.if !exists(/usr/include/c++/v1/concepts) || make(makesum) || make(fetch)
USES+= llvm:13,build
CC= clang${LLVM_VERSION}
CXX= clang++${LLVM_VERSION}
CPP= clang-cpp${LLVM_VERSION}
# XXX Move into separate port and standardize via USES
GH_TUPLE+= llvm:llvm-project:llvmorg-13.0.1:libcxx
CXXFLAGS+= -nostdinc++ -isystem${WRKDIR}/libcxx_prefix/include/c++/v1
LDFLAGS+= -nostdlib++ -L${WRKDIR}/libcxx_prefix/lib -l:libc++.a -lcxxrt
pre-configure: bundled-libcxx
bundled-libcxx:
@${SETENV} ${CONFIGURE_ENV} ${CMAKE_BIN} ${CMAKE_ARGS:M*Ninja*} \
-DCMAKE_INSTALL_PREFIX:PATH=${WRKDIR}/libcxx_prefix \
-B ${WRKDIR}/libcxx_build -S ${WRKSRC_libcxx}/libcxx
@${DO_MAKE_BUILD:NDESTDIR*} install -C ${WRKDIR}/libcxx_build
.endif
.include <bsd.port.mk>
|