[Buildroot] [PATCH v7 31/31] package/kodi: Add support for more archs

Bernd Kuhls bernd.kuhls at t-online.de
Sat Apr 29 08:37:51 UTC 2017


For the autoconf-based build system it was necessary to allow each
supported architecture separatly:
https://github.com/xbmc/xbmc/blob/Krypton/m4/xbmc_arch.m4

For the CMake build system this is not necessary anymore so we only
blacklist archs in Config.in known to be broken.

Tested with testpkg using this defconfig:

BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
BR2_PACKAGE_KODI=y
BR2_PACKAGE_KODI_ALSA_LIB=y
BR2_PACKAGE_KODI_EVENTCLIENTS=y
BR2_PACKAGE_KODI_LIBBLURAY=y
BR2_PACKAGE_KODI_LIBCEC=y
BR2_PACKAGE_KODI_INPUTSTREAM_ADAPTIVE=y
BR2_PACKAGE_KODI_INPUTSTREAM_RTMP=y
BR2_PACKAGE_KODI_PVR_HTS=y
BR2_PACKAGE_KODI_SCREENSAVER_RSXS=y
BR2_PACKAGE_KODI_VISUALISATION_GOOM=y
BR2_PACKAGE_MESA3D=y
BR2_PACKAGE_MESA3D_DRI_DRIVER_SWRAST=y
BR2_PACKAGE_MESA3D_OPENGL_EGL=y
BR2_PACKAGE_MESA3D_OPENGL_ES=y
BR2_PACKAGE_XORG7=y
BR2_PACKAGE_PYTHON=y
BR2_PACKAGE_PYTHON_PY_ONLY=y

with this result:

                armv5-ctng-linux-gnueabi [ 1/49]: OK
              armv7-ctng-linux-gnueabihf [ 2/49]: OK
                        br-aarch64-glibc [ 3/49]: OK
                           br-arcle-hs38 [ 4/49]: OK
                            br-arm-basic [ 5/49]: SKIPPED
                  br-arm-cortex-a9-glibc [ 6/49]: OK
                   br-arm-cortex-a9-musl [ 7/49]: SKIPPED
                   br-arm-cortex-m4-full [ 8/49]: SKIPPED
                             br-arm-full [ 9/49]: OK
                    br-arm-full-nothread [10/49]: SKIPPED
                      br-arm-full-static [11/49]: SKIPPED
                            br-bfin-full [12/49]: SKIPPED
                   br-i386-pentium4-full [13/49]: OK
                br-i386-pentium-mmx-musl [14/49]: SKIPPED
                       br-m68k-5208-full [15/49]: SKIPPED
                      br-m68k-68040-full [16/49]: SKIPPED
                    br-microblazeel-full [17/49]: SKIPPED
                 br-mips32r6-el-hf-glibc [18/49]: OK
                      br-mips64-n64-full [19/49]: OK
                 br-mips64r6-el-hf-glibc [20/49]: OK
                      br-mipsel-o32-full [21/49]: OK
                          br-nios2-glibc [22/49]: SKIPPED
                      br-openrisc-uclibc [23/49]: SKIPPED
               br-powerpc-603e-basic-cpp [24/49]: SKIPPED
             br-powerpc64le-power8-glibc [25/49]: OK
               br-powerpc64-power7-glibc [26/49]: OK
                  br-powerpc-e500mc-full [27/49]: OK
                             br-sh4-full [28/49]: OK
                        br-sparc64-glibc [29/49]: OK
                         br-sparc-uclibc [30/49]: SKIPPED
                    br-x86-64-core2-full [31/49]: OK
                          br-x86-64-musl [32/49]: SKIPPED
                          br-xtensa-full [33/49]: OK
                     i686-ctng-linux-gnu [34/49]: SKIPPED
                          linaro-aarch64 [35/49]: OK
                              linaro-arm [36/49]: OK
             mips64el-ctng_n32-linux-gnu [37/49]: OK
             mips64el-ctng_n64-linux-gnu [38/49]: OK
        powerpc-ctng_e500v2-linux-gnuspe [39/49]: SKIPPED
                     sourcery-arm-armv4t [40/49]: OK
                            sourcery-arm [41/49]: OK
                     sourcery-arm-thumb2 [42/49]: OK
                         sourcery-mips64 [43/49]: OK
                           sourcery-mips [44/49]: OK
                          sourcery-nios2 [45/49]: SKIPPED
                             sourcery-sh [46/49]: SKIPPED
                         sourcery-x86-64 [47/49]: OK
                            sourcery-x86 [48/49]: SKIPPED
           x86_64-ctng_locales-linux-gnu [49/49]: OK
49 builds, 20 skipped, 0 build failed, 0 legal-info failed

Signed-off-by: Bernd Kuhls <bernd.kuhls at t-online.de>
---
 package/kodi-pvr-mediaportal-tvserver/Config.in |   2 +
 package/kodi/0003-Add-support-for-sh4.patch     | 108 ++++++++++++++++++++++++
 package/kodi/0004-Add-support-for-sparc.patch   |  91 ++++++++++++++++++++
 package/kodi/0005-Add-support-for-arc.patch     |  91 ++++++++++++++++++++
 package/kodi/0006-Add-support-for-xtensa.patch  |  91 ++++++++++++++++++++
 package/kodi/Config.in                          |   6 +-
 package/kodi/kodi.mk                            |  51 ++++++++---
 7 files changed, 424 insertions(+), 16 deletions(-)
 create mode 100644 package/kodi/0003-Add-support-for-sh4.patch
 create mode 100644 package/kodi/0004-Add-support-for-sparc.patch
 create mode 100644 package/kodi/0005-Add-support-for-arc.patch
 create mode 100644 package/kodi/0006-Add-support-for-xtensa.patch

diff --git a/package/kodi-pvr-mediaportal-tvserver/Config.in b/package/kodi-pvr-mediaportal-tvserver/Config.in
index 733ca8859e..ff93c249b1 100644
--- a/package/kodi-pvr-mediaportal-tvserver/Config.in
+++ b/package/kodi-pvr-mediaportal-tvserver/Config.in
@@ -1,5 +1,7 @@
 config BR2_PACKAGE_KODI_PVR_MEDIAPORTAL_TVSERVER
 	bool "kodi-pvr-mediaportal-tvserver"
+	# ARC toolchain lacks xlocale.h
+	depends on !BR2_TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC
 	select BR2_PACKAGE_KODI_PLATFORM
 	help
 	  MediaPortal TVServer PVR client addon for Kodi
diff --git a/package/kodi/0003-Add-support-for-sh4.patch b/package/kodi/0003-Add-support-for-sh4.patch
new file mode 100644
index 0000000000..8e0d2e2af0
--- /dev/null
+++ b/package/kodi/0003-Add-support-for-sh4.patch
@@ -0,0 +1,108 @@
+From 61c13c85d4dad978f793d0e3b75e99d95bc226c3 Mon Sep 17 00:00:00 2001
+From: Bernd Kuhls <bernd.kuhls at t-online.de>
+Date: Wed, 26 Apr 2017 22:34:40 +0200
+Subject: [PATCH] Add support for sh4
+
+This commit fixes Kodi build with a buildroot toolchain for sh4, also
+rewrap code to prepare for more platforms.
+
+Patch sent upstream as PR 12015.
+
+Signed-off-by: Bernd Kuhls <bernd.kuhls at t-online.de>
+---
+ xbmc/cores/DllLoader/DllLoader.h                        | 7 ++++++-
+ xbmc/cores/DllLoader/ldt_keeper.c                       | 7 ++++++-
+ xbmc/cores/VideoPlayer/VideoRenderers/LinuxRendererGL.h | 8 +++++++-
+ xbmc/threads/Atomics.cpp                                | 6 +++++-
+ xbmc/utils/MathUtils.h                                  | 3 ++-
+ 5 files changed, 26 insertions(+), 5 deletions(-)
+
+diff --git a/xbmc/cores/DllLoader/DllLoader.h b/xbmc/cores/DllLoader/DllLoader.h
+index eb3c54c96b..f05c195b89 100644
+--- a/xbmc/cores/DllLoader/DllLoader.h
++++ b/xbmc/cores/DllLoader/DllLoader.h
+@@ -23,7 +23,12 @@
+ #include "coffldr.h"
+ #include "LibraryLoader.h"
+ 
+-#if defined(__linux__) && !defined(__powerpc__) && !defined(__arm__) && !defined(__aarch64__) && !defined(__mips__)
++#if defined(__linux__) && \
++    !defined(__powerpc__) && \
++    !defined(__arm__) && \
++    !defined(__aarch64__) && \
++    !defined(__mips__) && \
++    !defined(__SH4__)
+ #define USE_LDT_KEEPER
+ #include "ldt_keeper.h"
+ #endif
+diff --git a/xbmc/cores/DllLoader/ldt_keeper.c b/xbmc/cores/DllLoader/ldt_keeper.c
+index 3fe68541e6..ff230d8469 100644
+--- a/xbmc/cores/DllLoader/ldt_keeper.c
++++ b/xbmc/cores/DllLoader/ldt_keeper.c
+@@ -19,7 +19,12 @@
+  */
+ 
+ //#ifndef __powerpc__
+-#if !defined(__powerpc__) && !defined(__ppc__) && !defined(__arm__) && !defined(__aarch64__) && !defined(__mips__)
++#if !defined(__powerpc__) && \
++    !defined(__ppc__) && \
++    !defined(__arm__) && \
++    !defined(__aarch64__) && \
++    !defined(__mips__) && \
++    !defined(__SH4__)
+ 
+ #include "ldt_keeper.h"
+ 
+diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/LinuxRendererGL.h b/xbmc/cores/VideoPlayer/VideoRenderers/LinuxRendererGL.h
+index ce3afe985b..731341ef3d 100644
+--- a/xbmc/cores/VideoPlayer/VideoRenderers/LinuxRendererGL.h
++++ b/xbmc/cores/VideoPlayer/VideoRenderers/LinuxRendererGL.h
+@@ -293,7 +293,13 @@ protected:
+ 
+ 
+ inline int NP2( unsigned x ) {
+-#if defined(TARGET_POSIX) && !defined(__POWERPC__) && !defined(__PPC__) && !defined(__arm__) && !defined(__aarch64__) && !defined(__mips__)
++#if defined(TARGET_POSIX) && \
++    !defined(__POWERPC__) && \
++    !defined(__PPC__) && \
++    !defined(__arm__) && \
++    !defined(__aarch64__) && \
++    !defined(__mips__) && \
++    !defined(__SH4__)
+   // If there are any issues compiling this, just append a ' && 0'
+   // to the above to make it '#if defined(TARGET_POSIX) && 0'
+ 
+diff --git a/xbmc/threads/Atomics.cpp b/xbmc/threads/Atomics.cpp
+index ecba3f1081..7aaea1f2ba 100644
+--- a/xbmc/threads/Atomics.cpp
++++ b/xbmc/threads/Atomics.cpp
+@@ -106,7 +106,11 @@ long cas(volatile long *pAddr, long expectedVal, long swapVal)
+ ///////////////////////////////////////////////////////////////////////////
+ long long cas2(volatile long long* pAddr, long long expectedVal, long long swapVal)
+ {
+-#if defined(__ppc__) || defined(__powerpc__) || defined(__arm__) || defined(__aarch64__)// PowerPC and ARM
++#if defined(__ppc__) || \
++    defined(__powerpc__) || \
++    defined(__arm__) || \
++    defined(__aarch64__) || \
++    defined(__SH4__)
+ // Not available/required
+ // Hack to allow compilation
+   throw "cas2 is not implemented";
+diff --git a/xbmc/utils/MathUtils.h b/xbmc/utils/MathUtils.h
+index 9ec1edba87..0be12d9abf 100644
+--- a/xbmc/utils/MathUtils.h
++++ b/xbmc/utils/MathUtils.h
+@@ -36,7 +36,8 @@
+     defined(__powerpc__) || \
+     defined(__mips__) || \
+     defined(__arm__) || \
+-    defined(__aarch64__)
++    defined(__aarch64__) || \
++    defined(__SH4__)
+   #define DISABLE_MATHUTILS_ASM_ROUND_INT
+ #endif
+ 
+-- 
+2.11.0
+
diff --git a/package/kodi/0004-Add-support-for-sparc.patch b/package/kodi/0004-Add-support-for-sparc.patch
new file mode 100644
index 0000000000..301d11de73
--- /dev/null
+++ b/package/kodi/0004-Add-support-for-sparc.patch
@@ -0,0 +1,91 @@
+From 72ccf12d7760da4e77e70ae4cfed5caab986e8a9 Mon Sep 17 00:00:00 2001
+From: Bernd Kuhls <bernd.kuhls at t-online.de>
+Date: Thu, 27 Apr 2017 09:02:11 +0200
+Subject: [PATCH] Add support for sparc
+
+This commit fixes Kodi build with a buildroot toolchain for sparc.
+
+Patch sent upstream as PR 12015.
+
+Signed-off-by: Bernd Kuhls <bernd.kuhls at t-online.de>
+---
+ xbmc/cores/DllLoader/DllLoader.h                        | 3 ++-
+ xbmc/cores/DllLoader/ldt_keeper.c                       | 3 ++-
+ xbmc/cores/VideoPlayer/VideoRenderers/LinuxRendererGL.h | 3 ++-
+ xbmc/threads/Atomics.cpp                                | 3 ++-
+ xbmc/utils/MathUtils.h                                  | 3 ++-
+ 5 files changed, 10 insertions(+), 5 deletions(-)
+
+diff --git a/xbmc/cores/DllLoader/DllLoader.h b/xbmc/cores/DllLoader/DllLoader.h
+index f05c195b89..1e51014f1a 100644
+--- a/xbmc/cores/DllLoader/DllLoader.h
++++ b/xbmc/cores/DllLoader/DllLoader.h
+@@ -28,7 +28,8 @@
+     !defined(__arm__) && \
+     !defined(__aarch64__) && \
+     !defined(__mips__) && \
+-    !defined(__SH4__)
++    !defined(__SH4__) && \
++    !defined(__sparc__)
+ #define USE_LDT_KEEPER
+ #include "ldt_keeper.h"
+ #endif
+diff --git a/xbmc/cores/DllLoader/ldt_keeper.c b/xbmc/cores/DllLoader/ldt_keeper.c
+index ff230d8469..6aec5f8e67 100644
+--- a/xbmc/cores/DllLoader/ldt_keeper.c
++++ b/xbmc/cores/DllLoader/ldt_keeper.c
+@@ -24,7 +24,8 @@
+     !defined(__arm__) && \
+     !defined(__aarch64__) && \
+     !defined(__mips__) && \
+-    !defined(__SH4__)
++    !defined(__SH4__) && \
++    !defined(__sparc__)
+ 
+ #include "ldt_keeper.h"
+ 
+diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/LinuxRendererGL.h b/xbmc/cores/VideoPlayer/VideoRenderers/LinuxRendererGL.h
+index 731341ef3d..67da6068b6 100644
+--- a/xbmc/cores/VideoPlayer/VideoRenderers/LinuxRendererGL.h
++++ b/xbmc/cores/VideoPlayer/VideoRenderers/LinuxRendererGL.h
+@@ -299,7 +299,8 @@ inline int NP2( unsigned x ) {
+     !defined(__arm__) && \
+     !defined(__aarch64__) && \
+     !defined(__mips__) && \
+-    !defined(__SH4__)
++    !defined(__SH4__) && \
++    !defined(__sparc__)
+   // If there are any issues compiling this, just append a ' && 0'
+   // to the above to make it '#if defined(TARGET_POSIX) && 0'
+ 
+diff --git a/xbmc/threads/Atomics.cpp b/xbmc/threads/Atomics.cpp
+index 7aaea1f2ba..90aabf947b 100644
+--- a/xbmc/threads/Atomics.cpp
++++ b/xbmc/threads/Atomics.cpp
+@@ -110,7 +110,8 @@ long long cas2(volatile long long* pAddr, long long expectedVal, long long swapV
+     defined(__powerpc__) || \
+     defined(__arm__) || \
+     defined(__aarch64__) || \
+-    defined(__SH4__)
++    defined(__SH4__) || \
++    defined(__sparc__)
+ // Not available/required
+ // Hack to allow compilation
+   throw "cas2 is not implemented";
+diff --git a/xbmc/utils/MathUtils.h b/xbmc/utils/MathUtils.h
+index 0be12d9abf..873fbb8b0f 100644
+--- a/xbmc/utils/MathUtils.h
++++ b/xbmc/utils/MathUtils.h
+@@ -37,7 +37,8 @@
+     defined(__mips__) || \
+     defined(__arm__) || \
+     defined(__aarch64__) || \
+-    defined(__SH4__)
++    defined(__SH4__) || \
++    defined(__sparc__)
+   #define DISABLE_MATHUTILS_ASM_ROUND_INT
+ #endif
+ 
+-- 
+2.11.0
+
diff --git a/package/kodi/0005-Add-support-for-arc.patch b/package/kodi/0005-Add-support-for-arc.patch
new file mode 100644
index 0000000000..faa8e7d8c0
--- /dev/null
+++ b/package/kodi/0005-Add-support-for-arc.patch
@@ -0,0 +1,91 @@
+From 4e2d40e592b11380db10ff72970f2ed89206766a Mon Sep 17 00:00:00 2001
+From: Bernd Kuhls <bernd.kuhls at t-online.de>
+Date: Thu, 27 Apr 2017 13:01:25 +0200
+Subject: [PATCH] Add support for arc
+
+This commit fixes Kodi build with a buildroot toolchain for arc.
+
+Patch sent upstream as PR 12015.
+
+Signed-off-by: Bernd Kuhls <bernd.kuhls at t-online.de>
+---
+ xbmc/cores/DllLoader/DllLoader.h                        | 3 ++-
+ xbmc/cores/DllLoader/ldt_keeper.c                       | 3 ++-
+ xbmc/cores/VideoPlayer/VideoRenderers/LinuxRendererGL.h | 3 ++-
+ xbmc/threads/Atomics.cpp                                | 3 ++-
+ xbmc/utils/MathUtils.h                                  | 3 ++-
+ 5 files changed, 10 insertions(+), 5 deletions(-)
+
+diff --git a/xbmc/cores/DllLoader/DllLoader.h b/xbmc/cores/DllLoader/DllLoader.h
+index 1e51014f1a..5618445d51 100644
+--- a/xbmc/cores/DllLoader/DllLoader.h
++++ b/xbmc/cores/DllLoader/DllLoader.h
+@@ -29,7 +29,8 @@
+     !defined(__aarch64__) && \
+     !defined(__mips__) && \
+     !defined(__SH4__) && \
+-    !defined(__sparc__)
++    !defined(__sparc__) && \
++    !defined(__arc__)
+ #define USE_LDT_KEEPER
+ #include "ldt_keeper.h"
+ #endif
+diff --git a/xbmc/cores/DllLoader/ldt_keeper.c b/xbmc/cores/DllLoader/ldt_keeper.c
+index 6aec5f8e67..a10acdb967 100644
+--- a/xbmc/cores/DllLoader/ldt_keeper.c
++++ b/xbmc/cores/DllLoader/ldt_keeper.c
+@@ -25,7 +25,8 @@
+     !defined(__aarch64__) && \
+     !defined(__mips__) && \
+     !defined(__SH4__) && \
+-    !defined(__sparc__)
++    !defined(__sparc__) && \
++    !defined(__arc__)
+ 
+ #include "ldt_keeper.h"
+ 
+diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/LinuxRendererGL.h b/xbmc/cores/VideoPlayer/VideoRenderers/LinuxRendererGL.h
+index 67da6068b6..b0cd76da45 100644
+--- a/xbmc/cores/VideoPlayer/VideoRenderers/LinuxRendererGL.h
++++ b/xbmc/cores/VideoPlayer/VideoRenderers/LinuxRendererGL.h
+@@ -300,7 +300,8 @@ inline int NP2( unsigned x ) {
+     !defined(__aarch64__) && \
+     !defined(__mips__) && \
+     !defined(__SH4__) && \
+-    !defined(__sparc__)
++    !defined(__sparc__) && \
++    !defined(__arc__)
+   // If there are any issues compiling this, just append a ' && 0'
+   // to the above to make it '#if defined(TARGET_POSIX) && 0'
+ 
+diff --git a/xbmc/threads/Atomics.cpp b/xbmc/threads/Atomics.cpp
+index 90aabf947b..0c5b13ae73 100644
+--- a/xbmc/threads/Atomics.cpp
++++ b/xbmc/threads/Atomics.cpp
+@@ -111,7 +111,8 @@ long long cas2(volatile long long* pAddr, long long expectedVal, long long swapV
+     defined(__arm__) || \
+     defined(__aarch64__) || \
+     defined(__SH4__) || \
+-    defined(__sparc__)
++    defined(__sparc__) || \
++    defined(__arc__)
+ // Not available/required
+ // Hack to allow compilation
+   throw "cas2 is not implemented";
+diff --git a/xbmc/utils/MathUtils.h b/xbmc/utils/MathUtils.h
+index 873fbb8b0f..b79be9e3d6 100644
+--- a/xbmc/utils/MathUtils.h
++++ b/xbmc/utils/MathUtils.h
+@@ -38,7 +38,8 @@
+     defined(__arm__) || \
+     defined(__aarch64__) || \
+     defined(__SH4__) || \
+-    defined(__sparc__)
++    defined(__sparc__) || \
++    defined(__arc__)
+   #define DISABLE_MATHUTILS_ASM_ROUND_INT
+ #endif
+ 
+-- 
+2.11.0
+
diff --git a/package/kodi/0006-Add-support-for-xtensa.patch b/package/kodi/0006-Add-support-for-xtensa.patch
new file mode 100644
index 0000000000..10a006b6fd
--- /dev/null
+++ b/package/kodi/0006-Add-support-for-xtensa.patch
@@ -0,0 +1,91 @@
+From 1de2a0afc083888686be6f169d1477e25ab80848 Mon Sep 17 00:00:00 2001
+From: Bernd Kuhls <bernd.kuhls at t-online.de>
+Date: Thu, 27 Apr 2017 16:51:36 +0200
+Subject: [PATCH] Add support for xtensa
+
+This commit fixes Kodi build with a buildroot toolchain for xtensa.
+
+Patch sent upstream as PR 12015.
+
+Signed-off-by: Bernd Kuhls <bernd.kuhls at t-online.de>
+---
+ xbmc/cores/DllLoader/DllLoader.h                        | 3 ++-
+ xbmc/cores/DllLoader/ldt_keeper.c                       | 3 ++-
+ xbmc/cores/VideoPlayer/VideoRenderers/LinuxRendererGL.h | 3 ++-
+ xbmc/threads/Atomics.cpp                                | 3 ++-
+ xbmc/utils/MathUtils.h                                  | 3 ++-
+ 5 files changed, 10 insertions(+), 5 deletions(-)
+
+diff --git a/xbmc/cores/DllLoader/DllLoader.h b/xbmc/cores/DllLoader/DllLoader.h
+index 5618445d51..26b41e258b 100644
+--- a/xbmc/cores/DllLoader/DllLoader.h
++++ b/xbmc/cores/DllLoader/DllLoader.h
+@@ -30,7 +30,8 @@
+     !defined(__mips__) && \
+     !defined(__SH4__) && \
+     !defined(__sparc__) && \
+-    !defined(__arc__)
++    !defined(__arc__) && \
++    !defined(__xtensa__)
+ #define USE_LDT_KEEPER
+ #include "ldt_keeper.h"
+ #endif
+diff --git a/xbmc/cores/DllLoader/ldt_keeper.c b/xbmc/cores/DllLoader/ldt_keeper.c
+index a10acdb967..83fd023196 100644
+--- a/xbmc/cores/DllLoader/ldt_keeper.c
++++ b/xbmc/cores/DllLoader/ldt_keeper.c
+@@ -26,7 +26,8 @@
+     !defined(__mips__) && \
+     !defined(__SH4__) && \
+     !defined(__sparc__) && \
+-    !defined(__arc__)
++    !defined(__arc__) && \
++    !defined(__xtensa__)
+ 
+ #include "ldt_keeper.h"
+ 
+diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/LinuxRendererGL.h b/xbmc/cores/VideoPlayer/VideoRenderers/LinuxRendererGL.h
+index b0cd76da45..32f8bc45c9 100644
+--- a/xbmc/cores/VideoPlayer/VideoRenderers/LinuxRendererGL.h
++++ b/xbmc/cores/VideoPlayer/VideoRenderers/LinuxRendererGL.h
+@@ -301,7 +301,8 @@ inline int NP2( unsigned x ) {
+     !defined(__mips__) && \
+     !defined(__SH4__) && \
+     !defined(__sparc__) && \
+-    !defined(__arc__)
++    !defined(__arc__) && \
++    !defined(__xtensa__)
+   // If there are any issues compiling this, just append a ' && 0'
+   // to the above to make it '#if defined(TARGET_POSIX) && 0'
+ 
+diff --git a/xbmc/threads/Atomics.cpp b/xbmc/threads/Atomics.cpp
+index 0c5b13ae73..7085a13882 100644
+--- a/xbmc/threads/Atomics.cpp
++++ b/xbmc/threads/Atomics.cpp
+@@ -112,7 +112,8 @@ long long cas2(volatile long long* pAddr, long long expectedVal, long long swapV
+     defined(__aarch64__) || \
+     defined(__SH4__) || \
+     defined(__sparc__) || \
+-    defined(__arc__)
++    defined(__arc__) || \
++    defined(__xtensa__)
+ // Not available/required
+ // Hack to allow compilation
+   throw "cas2 is not implemented";
+diff --git a/xbmc/utils/MathUtils.h b/xbmc/utils/MathUtils.h
+index b79be9e3d6..556787ef82 100644
+--- a/xbmc/utils/MathUtils.h
++++ b/xbmc/utils/MathUtils.h
+@@ -39,7 +39,8 @@
+     defined(__aarch64__) || \
+     defined(__SH4__) || \
+     defined(__sparc__) || \
+-    defined(__arc__)
++    defined(__arc__) || \
++    defined(__xtensa__)
+   #define DISABLE_MATHUTILS_ASM_ROUND_INT
+ #endif
+ 
+-- 
+2.11.0
+
diff --git a/package/kodi/Config.in b/package/kodi/Config.in
index f274019e99..bd2b226826 100644
--- a/package/kodi/Config.in
+++ b/package/kodi/Config.in
@@ -1,9 +1,9 @@
 config BR2_PACKAGE_KODI_ARCH_SUPPORTS
 	bool
 	depends on BR2_USE_MMU # libcdio, and others
-	default y if (BR2_arm || (BR2_mipsel && BR2_TOOLCHAIN_USES_GLIBC) || BR2_i386 || BR2_x86_64) \
-		&& BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS \
-		&& BR2_TOOLCHAIN_HAS_SYNC_8
+# i386: needs sse (see upstream PR 10351)
+	default y if BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS \
+		&& !(BR2_i386 && !BR2_X86_CPU_HAS_SSE)
 
 comment "kodi needs python w/ .py modules, a uClibc or glibc toolchain w/ C++, locale, threads, wchar, dynamic library, gcc >= 4.8, host gcc >= 4.6"
 	depends on BR2_PACKAGE_KODI_ARCH_SUPPORTS
diff --git a/package/kodi/kodi.mk b/package/kodi/kodi.mk
index dea4d4c97a..c2c6f45d68 100644
--- a/package/kodi/kodi.mk
+++ b/package/kodi/kodi.mk
@@ -70,17 +70,40 @@ KODI_CONF_OPTS += \
 	-DENABLE_OPENSSL=ON \
 	-DNATIVEPREFIX=$(HOST_DIR)/usr \
 	-DDEPENDS_PATH=$(@D) \
-	-DWITH_TEXTUREPACKER=$(HOST_DIR)/usr/bin/TexturePacker
+	-DWITH_TEXTUREPACKER=$(HOST_DIR)/usr/bin/TexturePacker \
+	-DCMAKE_CXX_FLAGS="$(TARGET_CXXFLAGS) $(KODI_CXX_FLAGS)"
 
-ifeq ($(BR2_arm),y)
+ifeq ($(BR2_PACKAGE_RPI_USERLAND),y)
+KODI_CONF_OPTS += -DCORE_SYSTEM_NAME=rbpi
+KODI_DEPENDENCIES += rpi-userland
+ifeq ($(BR2_arm1176jzf_s)$(BR2_cortex_a7)$(BR2_cortex_a53),y)
+KODI_CONF_OPTS += -DWITH_CPU=$(BR2_GCC_TARGET_CPU)
+endif
+else  # BR2_PACKAGE_RPI_USERLAND
+ifeq ($(BR2_arceb)$(BR2_arcle),y)
+KODI_CONF_OPTS += -DWITH_ARCH=arc -DWITH_CPU=arc
+else ifeq ($(BR2_armeb),y)
 KODI_CONF_OPTS += -DWITH_ARCH=arm -DWITH_CPU=arm
-else ifeq ($(BR2_mips),y)
-KODI_CONF_OPTS += -DWITH_ARCH=mips -DWITH_CPU=mips
-else ifeq ($(BR2_i386),y)
-KODI_CONF_OPTS += -DWITH_ARCH=i486-linux -DWITH_CPU=$(BR2_GCC_TARGET_ARCH)
-else ifeq ($(BR2_x86_64),y)
-KODI_CONF_OPTS += -DWITH_ARCH=x86_64-linux -DWITH_CPU=x86_64
+else ifeq ($(BR2_mips)$(BR2_mipsel)$(BR2_mips64)$(BR2_mips64el),y)
+KODI_CONF_OPTS += \
+	-DWITH_ARCH=mips$(if $(BR2_ARCH_IS_64),64) \
+	-DWITH_CPU=mips$(if $(BR2_ARCH_IS_64),64)
+else ifeq ($(BR2_powerpc)$(BR2_powerpc64le),y)
+KODI_CONF_OPTS += \
+	-DWITH_ARCH=powerpc$(if $(BR2_ARCH_IS_64),64) \
+	-DWITH_CPU=powerpc$(if $(BR2_ARCH_IS_64),64)
+else ifeq ($(BR2_powerpc64)$(BR2_sparc64),y)
+KODI_CONF_OPTS += -DWITH_ARCH=$(BR2_ARCH) -DWITH_CPU=$(BR2_ARCH)
+else ifeq ($(BR2_sh4),y)
+KODI_CONF_OPTS += -DWITH_ARCH=$(BR2_ARCH) -DWITH_CPU=$(BR2_ARCH)
+else ifeq ($(BR2_xtensa),y)
+KODI_CONF_OPTS += -DWITH_ARCH=$(BR2_ARCH) -DWITH_CPU=$(BR2_ARCH)
+else
+# Kodi auto-detects ARCH, tested: arm, aarch64, i386, x86_64
+# see project/cmake/scripts/linux/ArchSetup.cmake
+KODI_CONF_OPTS += -DWITH_CPU=$(BR2_ARCH)
 endif
+endif # !BR2_PACKAGE_RPI_USERLAND
 
 ifeq ($(BR2_X86_CPU_HAS_SSE),y)
 KODI_CONF_OPTS += -D_SSE_OK=ON -D_SSE_TRUE=ON
@@ -130,6 +153,11 @@ else
 KODI_CONF_OPTS += -D_AVX2_OK=OFF -D_AVX2_TRUE=OFF
 endif
 
+# mips: uses __atomic_load_8
+ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)
+KODI_CXX_FLAGS += -latomic
+endif
+
 ifeq ($(BR2_PACKAGE_KODI_MYSQL),y)
 KODI_CONF_OPTS += -DENABLE_MYSQLCLIENT=ON
 KODI_DEPENDENCIES += mysql
@@ -145,11 +173,8 @@ else
 KODI_CONF_OPTS += -DENABLE_NONFREE=OFF
 endif
 
-ifeq ($(BR2_PACKAGE_RPI_USERLAND),y)
-KODI_CONF_OPTS += -DCORE_SYSTEM_NAME=rbpi
-KODI_DEPENDENCIES += rpi-userland
-else
 # these options only exist on non-rbpi systems
+ifeq ($(BR2_PACKAGE_RPI_USERLAND),)
 KODI_CONF_OPTS += -DENABLE_LDGOLD=OFF
 ifeq ($(BR2_PACKAGE_LIBAMCODEC),y)
 KODI_CONF_OPTS += -DENABLE_AML=ON
@@ -225,7 +250,7 @@ else
 KODI_CONF_OPTS += -DENABLE_OPENGL=OFF -DENABLE_X11=OFF
 ifeq ($(BR2_PACKAGE_KODI_EGL_GLES),y)
 KODI_DEPENDENCIES += libegl libgles
-KODI_CONF_OPTS += -DCMAKE_CXX_FLAGS="$(TARGET_CXXFLAGS) `$(PKG_CONFIG_HOST_BINARY) --cflags --libs egl`"
+KODI_CXX_FLAGS += "`$(PKG_CONFIG_HOST_BINARY) --cflags --libs egl`"
 KODI_CONF_OPTS += -DCMAKE_C_FLAGS="$(TARGET_CFLAGS) `$(PKG_CONFIG_HOST_BINARY) --cflags --libs egl`"
 KODI_CONF_OPTS += -DENABLE_OPENGLES=ON
 else
-- 
2.11.0



More information about the buildroot mailing list