6 CATEGORIES= multimedia java
8 MAINTAINER= ports@FreeBSD.org
9 COMMENT= Award winning media center application
13 ONLY_FOR_ARCHS= amd64 armv6 armv7 i386
15 BUILD_DEPENDS= enca:converters/enca \
22 LIB_DEPENDS= libass.so:multimedia/libass \
23 libFLAC.so:audio/flac \
24 libcdio.so:sysutils/libcdio \
25 libcrossguid.so:devel/libcrossguid \
27 libdbus-1.so:devel/dbus \
28 libdcadec.so:multimedia/libdcadec \
29 libenca.so:converters/enca \
30 libexpat.so:textproc/expat2\
31 libfontconfig.so:x11-fonts/fontconfig \
32 libfreetype.so:print/freetype2 \
33 libfribidi.so:converters/fribidi \
34 libgcrypt.so:security/libgcrypt \
36 libgpg-error.so:security/libgpg-error \
37 libgnutls.so:security/gnutls \
38 libidn.so:dns/libidn \
39 libinotify.so:devel/libinotify \
40 libjasper.so:graphics/jasper \
41 libltdl.so:devel/libltdl \
42 liblzo2.so:archivers/lzo2 \
43 libmodplug.so:audio/libmodplug \
44 libmpeg2.so:multimedia/libmpeg2 \
45 libnettle.so:security/nettle \
46 libogg.so:audio/libogg \
47 libp11-kit.so:security/p11-kit \
48 libpcre.so:devel/pcre \
49 libpng.so:graphics/png \
50 libsamplerate.so:audio/libsamplerate \
51 libsqlite3.so:databases/sqlite3 \
52 libtag.so:audio/taglib \
53 libtasn1.so:security/libtasn1 \
54 libtiff.so:graphics/tiff \
55 libtinyxml.so:textproc/tinyxml \
56 libtspi.so:security/trousers \
57 libunistring.so:devel/libunistring \
58 libuuid.so:misc/e2fsprogs-libuuid \
59 libvorbis.so:audio/libvorbis \
60 libxslt.so:textproc/libxslt \
62 RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}sqlite3>0:databases/py-sqlite3@${PY_FLAVOR}
64 USES= autoreconf:build compiler:c++11-lib gettext gmake gnome iconv \
65 jpeg libtool pkgconfig python:2.7 ssl
68 KODI_ARCH_x86_64=x86_64
77 NOPRECIOUSMAKEVARS= yes
78 CONFIGURE_ENV= OPENSSL_LIBS="-L${OPENSSLLIB}" \
79 OPENSSL_CFLAGS="-I${OPENSSLINC}"
81 KODI_CODENAME= Krypton
83 LIBDVDCSS_TAGNAME= 2f12236
84 LIBDVDNAV_TAGNAME= 981488f
85 LIBDVDREAD_TAGNAME= 17d99db
88 GH_TUPLE= xbmc:xbmc:${PORTVERSION}-${KODI_CODENAME} \
89 xbmc:FFmpeg:${FFMPEG_VERS}-${KODI_CODENAME}-17.5:ffmpeg/tools/depends/target/ffmpeg \
90 xbmc:libdvdcss:${LIBDVDCSS_TAGNAME}:libdvdcss/tools/depends/target/libdvdcss/native \
91 xbmc:libdvdnav:${LIBDVDNAV_TAGNAME}:libdvdnav/tools/depends/target/libdvdnav/native \
92 xbmc:libdvdread:${LIBDVDREAD_TAGNAME}:libdvdread/tools/depends/target/libdvdread/native
94 PLIST_SUB= ARCH=${KODI_ARCH_${ARCH}}
97 OPTIONS_DEFINE= AIRPLAY AIRTUNES AVAHI CEC DOCS \
98 LCMS2 LIBBLURAY LIRC MYSQL NFS NONFREE PULSEAUDIO RTMP \
99 SFTP SNDIO SMB VAAPI VDPAU WEBSERVER
101 OPTIONS_SINGLE_RPI= RPI1 RPI2
103 OPTIONS_EXCLUDE_armv6= LIRC VAAPI VDPAU
104 OPTIONS_EXCLUDE_armv7= LIRC VAAPI VDPAU
105 OPTIONS_EXCLUDE_x86_64= RPI1 RPI2
106 OPTIONS_EXCLUDE_i386= RPI1 RPI2
108 AIRPLAY_DESC= AirPlay support via libplist
109 AIRTUNES_DESC= AirTunes support via libshairplay
110 CEC_DESC= CEC adapter support
111 NONFREE_DESC= Enable non-free components (rar, ccx, ffmpeg)
112 SFTP_DESC= SSH SFTP support via libssh
113 RPI1_DESC= build for RPI1-B (cpu=arm1176jzf-s)
114 RPI2_DESC= build for RPI2 (cpu=cortex-a7, neon enabled)
116 OPTIONS_DEFAULT= AIRPLAY AIRTUNES AVAHI CEC LIRC \
117 MYSQL NFS RTMP SFTP SMB VAAPI VDPAU WEBSERVER
118 OPTIONS_DEFAULT_armv6= RPI1
119 OPTIONS_DEFAULT_armv7= RPI1
121 AIRPLAY_LIB_DEPENDS= libplist.so:devel/libplist
122 AIRPLAY_CONFIGURE_ENABLE= airplay
124 AIRTUNES_LIB_DEPENDS= libshairplay.so:audio/shairplay
125 AIRTUNES_CONFIGURE_ENABLE= airtunes
127 AVAHI_LIB_DEPENDS= libavahi-client.so:net/avahi-app
128 AVAHI_CONFIGURE_ENABLE= avahi
130 CEC_BUILD_DEPENDS= libcec>=3.1.0:multimedia/libcec
131 CEC_LIB_DEPENDS= libcec.so:multimedia/libcec
132 CEC_CONFIGURE_ENABLE= libcec
134 LCMS2_LIB_DEPENDS= liblcms2.so.2:graphics/lcms2
135 LCMS2_CONFIGURE_ENABLE= lcms2
137 LIBBLURAY_LIB_DEPENDS= libbluray.so:multimedia/libbluray
138 LIBBLURAY_CONFIGURE_ENABLE= libbluray
140 LIRC_RUN_DEPENDS= lircd:comms/lirc
143 MYSQL_CONFIGURE_ENABLE= mysql
145 NFS_LIB_DEPENDS= libnfs.so:net/libnfs
146 NFS_CONFIGURE_ENABLE= nfs
148 NONFREE_CONFIGURE_ENABLE= non-free
149 NONFREE_VARS= NO_CDROM="Restricted binary distribution" \
150 NO_PACKAGE="Restricted binary distribution"
152 PULSEAUDIO_LIB_DEPENDS= libpulse.so:audio/pulseaudio
153 PULSEAUDIO_CONFIGURE_ENABLE= pulse
155 RPI1_CONFIGURE_ON= --with-platform=raspberry-pi
156 RPI2_CONFIGURE_ON= --with-platform=raspberry-pi2
158 RTMP_LIB_DEPENDS= librtmp.so:multimedia/librtmp
159 RTMP_CONFIGURE_ENABLE= rtmp
161 SNDIO_LIB_DEPENDS= libsndio.so:audio/sndio
162 SNDIO_CONFIGURE_ENABLE= sndio
163 SNDIO_EXTRA_PATCHES= ${PATCHDIR}/extra-patch-sndio
166 SMB_CONFIGURE_ENABLE= samba
168 VAAPI_LIB_DEPENDS= libva.so:multimedia/libva
169 VAAPI_CONFIGURE_ENABLE= vaapi
171 VDPAU_LIB_DEPENDS= libvdpau.so:multimedia/libvdpau
172 VDPAU_CONFIGURE_ENABLE= vdpau
174 WEBSERVER_LIB_DEPENDS= libmicrohttpd.so:www/libmicrohttpd
175 WEBSERVER_CONFIGURE_ENABLE= webserver
177 SFTP_BUILD_DEPENDS= ${LOCALBASE}/lib/libssh.so:security/libssh
178 SFTP_RUN_DEPENDS= ${LOCALBASE}/lib/libssh.so:security/libssh
179 SFTP_CONFIGURE_ENABLE= ssh
181 CONFIGURE_ARGS+= --disable-debug --enable-gl --disable-gles \
182 --disable-openmax --disable-tegra \
183 --disable-profiling --enable-x11 --disable-alsa \
184 --enable-dbus --enable-upnp --disable-mid \
185 --disable-mdnsembedded --enable-libxslt \
186 --disable-texturepacker --disable-libusb \
187 --disable-libbluetooth --disable-libcap \
188 --disable-gtest --disable-libav-compat
190 .include <bsd.port.options.mk>
192 .if ${ARCH} != armv6 && ${ARCH} != armv7
193 BUILD_DEPENDS+= gtk-update-icon-cache:x11-toolkits/gtk20
194 LIB_DEPENDS+= libdrm.so:graphics/libdrm
195 RUN_DEPENDS+= glxinfo:graphics/mesa-demos \
196 xdpyinfo:x11/xdpyinfo
198 USE_XORG= x11 xcb xext xmu xrandr xt xtst
199 USE_GL= egl gl glu glew
202 PLIST_SUB+= ARM="@comment "
205 # armv6 || armv7 (rpi1 and rpi2 only)
206 EXTRA_PATCHES+= ${FILESDIR}/extra-armv6_hal
207 CONFIGURE_ARGS+= --enable-player=omxplayer
208 LIB_DEPENDS+= libEGL.so:misc/raspberrypi-userland \
209 libhal.so:sysutils/hal \
210 libtiff.so:graphics/tiff
212 PLIST_SUB+= X86="@comment "
213 SUB_FILES= pkg-message
217 ${REINPLACE_CMD} 's;make;gmake;' \
218 ${WRKSRC}/bootstrap \
219 ${WRKSRC}/codegenerator.mk \
220 ${WRKSRC}/xbmc/Makefile.in
221 ${REINPLACE_CMD} 's;which swig;&3.0;' ${WRKSRC}/codegenerator.mk
222 ${RM} ${WRKSRC}/system/settings/rbp2.xml.orig
225 cd ${WRKSRC} && ${SH} ./bootstrap
228 ${INSTALL_MAN} ${WRKSRC}/docs/manpages/kodi.bin.1 ${STAGEDIR}${MAN1PREFIX}/man/man1
229 (cd ${STAGEDIR}${MAN1PREFIX}/man/man1 && ${LN} -sf kodi.bin.1.gz kodi.1.gz)
230 ${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/kodi/kodi.bin
231 ${FIND} ${STAGEDIR}${PREFIX}/lib/kodi -name '*.so' -or -name '*.xbs' -or -name '*.vis' \
232 | ${XARGS} ${STRIP_CMD}
233 .if ${ARCH} != armv6 && ${ARCH} != armv7
234 ${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/kodi/kodi-xrandr
237 .include <bsd.port.mk>