aboutsummaryrefslogtreecommitdiffstats
path: root/multimedia/kodi-devel/Makefile
blob: 0f81d93365f200442f11227bc05538ae7aefcf59 (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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
# $FreeBSD$

PORTNAME=   kodi
CATEGORIES= multimedia
DISTVERSION=    18.0.g201809092101
PKGNAMESUFFIX?= -devel

MAINTAINER= tobik@FreeBSD.org
COMMENT=    Award winning media center application

LICENSE=    GPLv2+

ONLY_FOR_ARCHS= amd64 armv6 armv7 i386

BUILD_DEPENDS=  flatbuffers>=0:devel/flatbuffers \
        rapidjson>=0:devel/rapidjson \
        swig3.0:devel/swig30
LIB_DEPENDS=    libass.so:multimedia/libass \
        libavcodec.so:multimedia/ffmpeg \
        libavfilter.so:multimedia/ffmpeg \
        libavformat.so:multimedia/ffmpeg \
        libavutil.so:multimedia/ffmpeg \
        libcdio.so:sysutils/libcdio \
        libcrossguid.so:devel/libcrossguid \
        libcurl.so:ftp/curl \
        libdvdnav.so:multimedia/libdvdnav \
        libdvdread.so:multimedia/libdvdread \
        libexpat.so:textproc/expat2 \
        libfmt.so:devel/libfmt \
        libfreetype.so:print/freetype2 \
        libfribidi.so:converters/fribidi \
        libfstrcmp.so:devel/fstrcmp \
        libgif.so:graphics/giflib \
        libgnutls.so:security/gnutls \
        liblcms2.so:graphics/lcms2 \
        liblzo2.so:archivers/lzo2 \
        libpcre.so:devel/pcre \
        libpcrecpp.so:devel/pcre \
        libpng.so:graphics/png \
        libpostproc.so:multimedia/ffmpeg \
        libswresample.so:multimedia/ffmpeg \
        libswscale.so:multimedia/ffmpeg \
        libtag.so:audio/taglib \
        libtinyxml.so:textproc/tinyxml \
        libudev.so:devel/libudev-devd \
        libuuid.so:misc/e2fsprogs-libuuid

# Building libcpluff.a requires autoreconf and gmake.  Using ninja
# leads to dependency problems where libcpluff.a is not yet finished
# building when it's required.
USES=       autoreconf:build cmake:outsource,noninja compiler:c++11-lib \
        gettext gmake gnome iconv:wchar_t jpeg libtool pkgconfig \
        python:2.7 ssl sqlite
USE_GITHUB= yes
GH_ACCOUNT= xbmc
GH_PROJECT= xbmc
GH_TAGNAME= 18.0b2-Leia
USE_GNOME=  libxslt libxml2
USE_JAVA=   yes
JAVA_BUILD= yes
USE_LDCONFIG=   yes

CONFLICTS_INSTALL=  kodi

CMAKE_ARGS= -DLIBDVD_INCLUDE_DIRS="${LOCALBASE}/include" \
        -DDVDREAD_LIBRARY="${LOCALBASE}/lib/libdvdread.so" \
        -DDVDNAV_LIBRARY="${LOCALBASE}/lib/libdvdnav.so"
CMAKE_OFF=  ENABLE_ALSA \
        ENABLE_DVDCSS \
        ENABLE_INTERNAL_FFMPEG \
        ENABLE_INTERNAL_CROSSGUID
CONFIGURE_ENV=  OPENSSL_LIBS="-L${OPENSSLLIB}" OPENSSL_CFLAGS="-I${OPENSSLINC}" \
        CPU_FEATURES=" Features=0xdeadbeef<${CPU_FEATURES:ts,}>"

KODIARCH_i386=  x86
KODIARCH_amd64= x86_64

PLIST_SUB=  ARCH=${KODIARCH_${ARCH}:U${ARCH}} OPSYS=${OPSYS:tl}

OPTIONS_DEFINE= AVAHI CEC DBUS LIBBLURAY MYSQL NFS SMB UPNP VAAPI VDPAU WEBSERVER
OPTIONS_DEFINE_amd64=   SSE
OPTIONS_DEFINE_i386=    SSE
OPTIONS_DEFAULT=    LIBBLURAY UPNP VAAPI VDPAU WEBSERVER X11
OPTIONS_DEFAULT_amd64=  SSE
OPTIONS_SINGLE= PLATFORM
OPTIONS_SINGLE_PLATFORM=    GBM RPI WAYLAND X11
OPTIONS_EXCLUDE_amd64=  RPI
OPTIONS_EXCLUDE_i386=   RPI
OPTIONS_SUB=    yes

OPTIONS_GROUP=      SOUND
OPTIONS_GROUP_SOUND=    PULSEAUDIO SNDIO

CEC_DESC=   CEC adapter support
GBM_DESC=   GBM support (requires a kernel with evdev support)
PLATFORM_DESC=  Platform
RPI_DESC=   Raspberry Pi support

AVAHI_LIB_DEPENDS=  libavahi-client.so:net/avahi-app
AVAHI_CMAKE_BOOL=   ENABLE_AVAHI

CEC_LIB_DEPENDS=    libcec.so:multimedia/libcec
CEC_CMAKE_BOOL=     ENABLE_CEC

DBUS_LIB_DEPENDS=   libdbus-1.so:devel/dbus
DBUS_CMAKE_BOOL=    ENABLE_DBUS

GBM_BUILD_DEPENDS=  v4l_compat>=0:multimedia/v4l_compat
GBM_CMAKE_ON=       -DCORE_PLATFORM_NAME:STRING="gbm" \
            -DGBM_RENDER_SYSTEM:STRING="gl"
GBM_LIB_DEPENDS=    libinput.so:x11/libinput \
            libxkbcommon.so:x11/libxkbcommon

LIBBLURAY_LIB_DEPENDS=  libbluray.so:multimedia/libbluray
LIBBLURAY_CMAKE_BOOL=   ENABLE_BLURAY

MYSQL_USES=     mysql
MYSQL_CMAKE_BOOL=   ENABLE_MYSQLCLIENT

NFS_LIB_DEPENDS=    libnfs.so:net/libnfs
NFS_CMAKE_BOOL=     ENABLE_NFS

PULSEAUDIO_LIB_DEPENDS= libpulse.so:audio/pulseaudio
PULSEAUDIO_CMAKE_BOOL=  ENABLE_PULSEAUDIO

# For RPI, disable VAAPI in multimedia/ffmpeg too, so that mesa-libs
# is *not* installed via libva in the build environment.  Both
# mesa-libs and raspberrypi-userland conflict with each other.
RPI_CMAKE_ON=       -DCORE_PLATFORM_NAME:STRING="rbpi"
RPI_LIB_DEPENDS=    libbrcmEGL.so:misc/raspberrypi-userland
RPI_LIB_DEPENDS_OFF=    libdrm.so:graphics/libdrm
RPI_PREVENTS=       VAAPI VDPAU
RPI_USE_OFF=        GL=egl,gl,glu

SMB_USES=       samba:lib
SMB_CMAKE_BOOL=     ENABLE_SMBCLIENT

SNDIO_LIB_DEPENDS=  libsndio.so:audio/sndio
SNDIO_CMAKE_BOOL=   ENABLE_SNDIO

SSE_CPU_FEATURES=   SSE SSE2 SSE3 SSSE3 SSE4.1 SSE4.2
SSE_CMAKE_BOOL=     ${SSE_CPU_FEATURES:S/./_/g:S/^/ENABLE_/}
SSE_VARS=       CPU_FEATURES+=${SSE_CPU_FEATURES:ts,}

UPNP_CMAKE_BOOL=    ENABLE_UPNP
# XXX: Upstream is https://github.com/plutinosoft/Neptune
UPNP_CXXFLAGS=      -DNPT_CONFIG_HAVE_ARPA_INET_H \
            -DNPT_CONFIG_HAVE_GETADDRINFO \
            -DNPT_CONFIG_HAVE_GETIFADDRS \
            -DNPT_CONFIG_HAVE_INET_NTOP \
            -DNPT_CONFIG_HAVE_INET_PTON \
            -DNPT_CONFIG_HAVE_NET_IF_DL_H \
            -DNPT_CONFIG_HAVE_SOCKADDR_DL \
            -DNPT_CONFIG_HAVE_SOCKADDR_IN_SIN_LEN

VAAPI_CMAKE_BOOL=   ENABLE_VAAPI
VAAPI_LIB_DEPENDS=  libva.so:multimedia/libva

VDPAU_CMAKE_BOOL=   ENABLE_VDPAU
VDPAU_LIB_DEPENDS=  libvdpau.so:multimedia/libvdpau

WAYLAND_BUILD_DEPENDS=  v4l_compat>=0:multimedia/v4l_compat \
            wayland-protocols>=0:graphics/wayland-protocols
WAYLAND_CMAKE_ON=   -DCORE_PLATFORM_NAME:STRING="wayland" \
            -DWAYLAND_RENDER_SYSTEM:STRING="gl"
WAYLAND_LIB_DEPENDS=    libinput.so:x11/libinput \
            libwayland-client++.so:graphics/waylandpp \
            libwayland-client.so:graphics/wayland \
            libxkbcommon.so:x11/libxkbcommon

WEBSERVER_LIB_DEPENDS=  libmicrohttpd.so:www/libmicrohttpd
WEBSERVER_CMAKE_BOOL=   ENABLE_MICROHTTPD

X11_CMAKE_ON=       -DCORE_PLATFORM_NAME:STRING="x11"
X11_USE=        XORG=x11,xext,xrandr

.include <bsd.port.options.mk>

.if ${SLAVE_PORT} == no
PORTDATA=   *
.endif

post-patch:
# Do not try to download dvdnav/dvdread during the build, instead
# we'll manually point the build to the system's libdvd{nav,read}.so
# (see CMAKE_ARGS).
    @${REINPLACE_CMD} 's@KODI_DEPENDSBUILD@true@' \
        ${WRKSRC}/cmake/modules/FindLibDvd.cmake
# Make sure freebsd.xml is in sync with linux.xml since the
# upstream devs do not sync them
    @${CP} ${WRKSRC}/system/settings/linux.xml \
        ${WRKSRC}/system/settings/freebsd.xml

.if ${SLAVE_PORT} == no
post-install:
    ${INSTALL_MAN} ${WRKSRC}/docs/manpages/kodi.bin.1 ${STAGEDIR}${MAN1PREFIX}/man/man1
    @cd ${STAGEDIR}${MAN1PREFIX}/man/man1 && ${LN} -sf kodi.bin.1.gz kodi.1.gz
    @${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/TexturePacker
    @${FIND} ${STAGEDIR}${PREFIX}/lib/kodi -name '*.so' | ${XARGS} ${STRIP_CMD}
# Nothing useful here...
    @${RM} -r ${STAGEDIR}${DOCSDIR}
# No firewalld on FreeBSD...
    @${RM} -r ${STAGEDIR}${PREFIX}/lib/firewalld
.endif

.include <bsd.port.mk>