package/assimp: fix musl zlib/zip related compile failure
authorPeter Seiderer <ps.report@gmx.net>
Fri, 10 Apr 2020 16:32:37 +0000 (18:32 +0200)
committerThomas Petazzoni <thomas.petazzoni@bootlin.com>
Fri, 10 Apr 2020 20:45:24 +0000 (22:45 +0200)
As assimp fails to use system provided zlib/zip (and is picky
about the provided versions) use assimp contributed one
and backport one part of upstream patch to fix musl compile.

Fixes:

  http://autobuild.buildroot.net/results/4b373ae7d8fd40efe3e2592f94f2d769d6a77669

  In file included from .../assimp-5.0.1/code/3MF/D3MFExporter.cpp:61:
  .../assimp-5.0.1/contrib/zip/src/zip.h:30:15: error: conflicting declaration 'typedef long int ssize_t'
   typedef long  ssize_t;  /* byte count or error */
                 ^~~~~~~

Signed-off-by: Peter Seiderer <ps.report@gmx.net>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
package/assimp/0002-contrib-zip-fix-ssize_t-typedef-mismatch-for-musl-co.patch [new file with mode: 0644]
package/assimp/Config.in
package/assimp/assimp.mk

diff --git a/package/assimp/0002-contrib-zip-fix-ssize_t-typedef-mismatch-for-musl-co.patch b/package/assimp/0002-contrib-zip-fix-ssize_t-typedef-mismatch-for-musl-co.patch
new file mode 100644 (file)
index 0000000..a9a30c4
--- /dev/null
@@ -0,0 +1,50 @@
+From 3fef857a570d1ef2c96401358fe8e239625b48c9 Mon Sep 17 00:00:00 2001
+From: Peter Seiderer <ps.report@gmx.net>
+Date: Fri, 10 Apr 2020 18:11:50 +0200
+Subject: [PATCH] contrib/zip: fix ssize_t typedef mismatch for musl compile
+
+Musl uses defines __DEFINED_ssize_t to indicate ssize_t
+availability. So backport this part of upstream commit [1]
+to fixl musl compile.
+
+https://github.com/assimp/assimp/commit/f78446b14aff46db2ef27d062a275b6a01fd68b1
+
+Signed-off-by: Peter Seiderer <ps.report@gmx.net>
+---
+ contrib/zip/src/zip.h | 13 +++++++++++--
+ 1 file changed, 11 insertions(+), 2 deletions(-)
+
+diff --git a/contrib/zip/src/zip.h b/contrib/zip/src/zip.h
+index 5f39df50..4672eb3e 100644
+--- a/contrib/zip/src/zip.h
++++ b/contrib/zip/src/zip.h
+@@ -20,8 +20,9 @@ extern "C" {
+ #endif
+ #if !defined(_SSIZE_T_DEFINED) && !defined(_SSIZE_T_DEFINED_) &&               \
+-    !defined(_SSIZE_T) && !defined(_SSIZE_T_) && !defined(__ssize_t_defined)
+-#define _SSIZE_T
++    !defined(__DEFINED_ssize_t) && !defined(__ssize_t_defined) &&              \
++    !defined(_SSIZE_T) && !defined(_SSIZE_T_)
++
+ // 64-bit Windows is the only mainstream platform
+ // where sizeof(long) != sizeof(void*)
+ #ifdef _WIN64
+@@ -29,6 +30,14 @@ typedef long long  ssize_t;  /* byte count or error */
+ #else
+ typedef long  ssize_t;  /* byte count or error */
+ #endif
++
++#define _SSIZE_T_DEFINED
++#define _SSIZE_T_DEFINED_
++#define __DEFINED_ssize_t
++#define __ssize_t_defined
++#define _SSIZE_T
++#define _SSIZE_T_
++
+ #endif
+ #ifndef MAX_PATH
+-- 
+2.26.0
+
index 42bfee945d82ea3fc4621c95ffb5d69f178fd23f..9bdc054909caeccf54b8e6347e00b43bc66989ca 100644 (file)
@@ -2,7 +2,6 @@ config BR2_PACKAGE_ASSIMP
        bool "assimp"
        depends on BR2_INSTALL_LIBSTDCPP
        depends on BR2_USE_WCHAR
-       select BR2_PACKAGE_ZLIB
        help
          Open Asset Import Library (assimp) is a portable Open Source
          library to import various well-known 3D model formats in a
index 5e8e8253754e8a7dd3da8890b530f6823475c800..4aeb2963a971c8d85911f02cbd9c4ee960a22605 100644 (file)
@@ -8,7 +8,6 @@ ASSIMP_VERSION = 5.0.1
 ASSIMP_SITE = $(call github,assimp,assimp,v$(ASSIMP_VERSION))
 ASSIMP_LICENSE = BSD-3-Clause
 ASSIMP_LICENSE_FILES = LICENSE
-ASSIMP_DEPENDENCIES = zlib
 ASSIMP_INSTALL_STAGING = YES
 
 # relocation truncated to fit: R_68K_GOT16O
@@ -28,7 +27,7 @@ ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y)
 ASSIMP_CXXFLAGS += -O0
 endif
 
-ASSIMP_CONF_OPTS += -DASSIMP_BUILD_TESTS=OFF \
+ASSIMP_CONF_OPTS += -DASSIMP_BUILD_ZLIB=ON -DASSIMP_BUILD_TESTS=OFF \
        -DCMAKE_CXX_FLAGS="$(TARGET_CXXFLAGS) $(ASSIMP_CXXFLAGS)"
 
 $(eval $(cmake-package))