summaryrefslogtreecommitdiffstats
path: root/pkgs/applications/video/kodi
diff options
context:
space:
mode:
authorMatthew Bauer <mjbauer95@gmail.com>2020-04-13 16:48:38 -0400
committerGitHub <noreply@github.com>2020-04-13 16:48:38 -0400
commite520d6af29158ff6d17c34ec16b1f2e79bccad45 (patch)
treeddf031dda697cba7549ed8357ca3454c30433fbd /pkgs/applications/video/kodi
parent940c35568bc2fa135eafe0817027c765d9840469 (diff)
parentc6ff360cc437d366c10f2f827edd5a7fb47e73c3 (diff)
Merge pull request #84415 from matthewbauer/mb-cross-fixes-april2020
Cross compilation fixes [april 2020]
Diffstat (limited to 'pkgs/applications/video/kodi')
-rw-r--r--pkgs/applications/video/kodi/default.nix74
1 files changed, 54 insertions, 20 deletions
diff --git a/pkgs/applications/video/kodi/default.nix b/pkgs/applications/video/kodi/default.nix
index d13dd3201a32..6d02bcefb084 100644
--- a/pkgs/applications/video/kodi/default.nix
+++ b/pkgs/applications/video/kodi/default.nix
@@ -4,22 +4,20 @@
, boost, avahi, lame, autoreconfHook
, gettext, pcre-cpp, yajl, fribidi, which
, openssl, gperf, tinyxml2, taglib, libssh, swig, jre
-, libX11, xorgproto, libxml2
-, libXt, libXmu, libXext
-, libXinerama, libXrandr
-, libXtst, libXfixes, systemd
+, libxml2, systemd
, alsaLib, libGLU, libGL, glew, fontconfig, freetype, ftgl
, libjpeg, libpng, libtiff
, libmpeg2, libsamplerate, libmad
, libogg, libvorbis, flac, libxslt
, lzo, libcdio, libmodplug, libass, libbluray
, sqlite, libmysqlclient, nasm, gnutls, libva, libdrm
-, curl, bzip2, zip, unzip, glxinfo, xdpyinfo
+, curl, bzip2, zip, unzip, glxinfo
, libcec, libcec_platform, dcadec, libuuid
, libcrossguid, libmicrohttpd
-, bluez, doxygen, giflib, glib, harfbuzz, lcms2, libidn, libpthreadstubs, libtasn1, libXdmcp
+, bluez, doxygen, giflib, glib, harfbuzz, lcms2, libidn, libpthreadstubs, libtasn1
, libplist, p11-kit, zlib, flatbuffers, fmt, fstrcmp, rapidjson
, lirc
+, x11Support ? true, libX11, xorgproto, libXt, libXmu, libXext, libXinerama, libXrandr, libXtst, libXfixes, xdpyinfo, libXdmcp
, dbusSupport ? true, dbus ? null
, joystickSupport ? true, cwiid ? null
, nfsSupport ? true, libnfs ? null
@@ -32,6 +30,7 @@
, useWayland ? false, wayland ? null, wayland-protocols ? null
, waylandpp ? null, libxkbcommon ? null
, useGbm ? false, mesa ? null, libinput ? null
+, buildPackages
}:
assert dbusSupport -> dbus != null;
@@ -94,10 +93,18 @@ let
sha256 = "1krsjlr949iy5l6ljxancza1yi6w1annxc5s6k283i9mb15qy8cy";
preConfigure = ''
cp ${kodi_src}/tools/depends/target/ffmpeg/{CMakeLists.txt,*.cmake} .
+ sed -i 's/ --cpu=''${CPU}//' CMakeLists.txt
+ sed -i 's/--strip=''${CMAKE_STRIP}/--strip=''${CMAKE_STRIP} --ranlib=''${CMAKE_RANLIB}/' CMakeLists.txt
'';
- buildInputs = [ gnutls libidn libtasn1 p11-kit zlib libva ]
+ cmakeFlags = lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
+ "-DCROSSCOMPILING=ON"
+ "-DCPU=${stdenv.hostPlatform.parsed.cpu.name}"
+ "-DOS=${stdenv.hostPlatform.parsed.kernel.name}"
+ "-DPKG_CONFIG_EXECUTABLE=pkgconfig"
+ ];
+ buildInputs = [ libidn libtasn1 p11-kit zlib libva ]
++ lib.optional vdpauSupport libvdpau;
- nativeBuildInputs = [ cmake nasm pkgconfig ];
+ nativeBuildInputs = [ cmake nasm pkgconfig gnutls ];
};
# We can build these externally but FindLibDvd.cmake forces us to build it
@@ -152,29 +159,31 @@ in stdenv.mkDerivation {
buildInputs = [
gnutls libidn libtasn1 nasm p11-kit
- libxml2 yasm python2Packages.python
+ libxml2 python2Packages.python
boost libmicrohttpd
gettext pcre-cpp yajl fribidi libva libdrm
- openssl gperf tinyxml2 taglib libssh swig jre
- libX11 xorgproto libXt libXmu libXext
- libXinerama libXrandr libXtst libXfixes
- alsaLib libGL libGLU glew fontconfig freetype ftgl
+ openssl gperf tinyxml2 taglib libssh
+ alsaLib libGL libGLU fontconfig freetype ftgl
libjpeg libpng libtiff
libmpeg2 libsamplerate libmad
libogg libvorbis flac libxslt systemd
lzo libcdio libmodplug libass libbluray
sqlite libmysqlclient avahi lame
- curl bzip2 zip unzip glxinfo xdpyinfo
+ curl bzip2 zip unzip glxinfo
libcec libcec_platform dcadec libuuid
libgcrypt libgpgerror libunistring
- libcrossguid cwiid libplist
- bluez giflib glib harfbuzz lcms2 libpthreadstubs libXdmcp
+ libcrossguid libplist
+ bluez giflib glib harfbuzz lcms2 libpthreadstubs
ffmpeg flatbuffers fmt fstrcmp rapidjson
lirc
# libdvdcss libdvdnav libdvdread
]
+ ++ lib.optional x11Support [
+ libX11 xorgproto libXt libXmu libXext libXdmcp
+ libXinerama libXrandr libXtst libXfixes
+ ]
++ lib.optional dbusSupport dbus
- ++ lib.optionals joystickSupport [ cwiid ]
+ ++ lib.optional joystickSupport cwiid
++ lib.optional nfsSupport libnfs
++ lib.optional pulseSupport libpulseaudio
++ lib.optional rtmpSupport rtmpdump
@@ -183,7 +192,7 @@ in stdenv.mkDerivation {
++ lib.optional usbSupport libusb
++ lib.optional vdpauSupport libvdpau
++ lib.optionals useWayland [
- wayland waylandpp
+ wayland waylandpp wayland-protocols
# Not sure why ".dev" is needed here, but CMake doesn't find libxkbcommon otherwise
libxkbcommon.dev
]
@@ -200,8 +209,16 @@ in stdenv.mkDerivation {
which
pkgconfig gnumake
autoconf automake libtool # still needed for some components. Check if that is the case with 19.0
+ jre yasm gettext python2Packages.python flatbuffers
+
+ # for TexturePacker
+ giflib zlib libpng libjpeg lzo
] ++ lib.optionals useWayland [ wayland-protocols ];
+ depsBuildBuild = [
+ buildPackages.stdenv.cc
+ ];
+
cmakeFlags = [
"-Dlibdvdcss_URL=${libdvdcss.src}"
"-Dlibdvdnav_URL=${libdvdnav.src}"
@@ -210,9 +227,14 @@ in stdenv.mkDerivation {
"-DENABLE_EVENTCLIENTS=ON"
"-DENABLE_INTERNAL_CROSSGUID=OFF"
"-DENABLE_OPTICAL=ON"
+ "-DLIRC_DEVICE=/run/lirc/lircd"
+ "-DSWIG_EXECUTABLE=${buildPackages.swig}/bin/swig"
+ "-DFLATBUFFERS_FLATC_EXECUTABLE=${buildPackages.flatbuffers}/bin/flatc"
+ "-DPYTHON_EXECUTABLE=${buildPackages.python2Packages.python}/bin/python"
] ++ lib.optional useWayland [
"-DCORE_PLATFORM_NAME=wayland"
"-DWAYLAND_RENDER_SYSTEM=gl"
+ "-DWAYLANDPP_SCANNER=${buildPackages.waylandpp}/bin/wayland-scanner++"
] ++ lib.optional useGbm [
"-DCORE_PLATFORM_NAME=gbm"
"-DGBM_RENDER_SYSTEM=gles"
@@ -224,6 +246,16 @@ in stdenv.mkDerivation {
# I'm guessing there is a thing waiting to time out
doCheck = false;
+ # Need these tools on the build system when cross compiling,
+ # hacky, but have found no other way.
+ preConfigure = lib.optionalString (stdenv.hostPlatform != stdenv.buildPlatform) ''
+ CXX=c++ LD=ld make -C tools/depends/native/JsonSchemaBuilder
+ cmakeFlags+=" -DWITH_JSONSCHEMABUILDER=$PWD/tools/depends/native/JsonSchemaBuilder/bin"
+
+ CXX=c++ LD=ld make EXTRA_CONFIGURE= -C tools/depends/native/TexturePacker
+ cmakeFlags+=" -DWITH_TEXTUREPACKER=$PWD/tools/depends/native/TexturePacker/bin"
+ '';
+
postPatch = ''
substituteInPlace xbmc/platform/linux/LinuxTimezone.cpp \
--replace 'usr/share/zoneinfo' 'etc/zoneinfo'
@@ -232,9 +264,11 @@ in stdenv.mkDerivation {
postInstall = ''
for p in $(ls $out/bin/) ; do
wrapProgram $out/bin/$p \
- --prefix PATH ":" "${lib.makeBinPath [ python2Packages.python glxinfo xdpyinfo ]}" \
+ --prefix PATH ":" "${lib.makeBinPath ([ python2Packages.python glxinfo ] ++ lib.optional x11Support xdpyinfo)}" \
--prefix LD_LIBRARY_PATH ":" "${lib.makeLibraryPath
- ([ curl systemd libmad libvdpau libcec libcec_platform rtmpdump libass ] ++ lib.optional nfsSupport libnfs)}"
+ ([ curl systemd libmad libvdpau libcec libcec_platform libass ]
+ ++ lib.optional nfsSupport libnfs
+ ++ lib.optional rtmpSupport rtmpdump)}"
done
substituteInPlace $out/share/xsessions/kodi.desktop \