diff mbox

[v2] assimp: new package

Message ID 1449440276-6133-1-git-send-email-ps.report@gmx.net
State Changes Requested
Headers show

Commit Message

Peter Seiderer Dec. 6, 2015, 10:17 p.m. UTC
Signed-off-by: Peter Seiderer <ps.report@gmx.net>
----
Changes v1 -> v2:
  - use github helper (thanks to Jörg Krause)
---
 package/Config.in        |  1 +
 package/assimp/Config.in |  9 +++++++++
 package/assimp/assimp.mk | 15 +++++++++++++++
 3 files changed, 25 insertions(+)
 create mode 100644 package/assimp/Config.in
 create mode 100644 package/assimp/assimp.mk

Comments

Thomas Petazzoni Dec. 13, 2015, 1:07 p.m. UTC | #1
Peter,

On Sun,  6 Dec 2015 23:17:55 +0100, Peter Seiderer wrote:
> Signed-off-by: Peter Seiderer <ps.report@gmx.net>
> ----
> Changes v1 -> v2:
>   - use github helper (thanks to Jörg Krause)

It seems that it needs a C++ compiler, so you need to add this
dependency, otherwise the build fails with:

CMake Error at CMakeLists.txt:3 (PROJECT):
  The CMAKE_CXX_COMPILER:

    /home/thomas/projets/outputs/assimp-minimal/host/usr/bin/arm-linux-g++

  is not a full path to an existing compiler tool.

  Tell CMake where to find the compiler by setting either the environment
  variable "CXX" or the CMake cache entry CMAKE_CXX_COMPILER to the full path
  to the compiler, or to the compiler name if it is in the PATH.

Also, it fails to build with musl, with the following error:

In file included from /home/thomas/projets/outputs/assimp-musl/build/assimp-v3.2/contrib/irrXML/irrXML.cpp:10:0:
/home/thomas/projets/outputs/assimp-musl/build/assimp-v3.2/contrib/irrXML/irrString.h: In member function ‘irr::core::string<char_type> irr::io::CXMLReaderImpl<char_type, superclass>::replaceSpecialCharacters(irr::core::string<char_type>&) [with char_type = char; superclass = irr::io::IXMLBase]’:
/home/thomas/projets/outputs/assimp-musl/build/assimp-v3.2/contrib/irrXML/irrString.h:639:3: warning: assuming signed overflow does not occur when assuming that (X + c) < X is always false [-Wstrict-overflow]
   if (allocated < used)
   ^
[ 96%] Linking CXX shared library ../lib/libassimp.so
/home/thomas/projets/outputs/assimp-musl/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-musleabihf/4.9.3/../../../../arm-buildroot-linux-musleabihf/bin/ld: ../lib/libzlibstatic.a(compress.o): relocation R_ARM_MOVW_ABS_NC against `a local symbol' can not be used when making a shared object; recompile with -fPIC
../lib/libzlibstatic.a: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
code/CMakeFiles/assimp.dir/build.make:4307: recipe for target 'lib/libassimp.so.3.2.0' failed
make[4]: *** [lib/libassimp.so.3.2.0] Error 1
CMakeFiles/Makefile2:172: recipe for target 'code/CMakeFiles/assimp.dir/all' failed
make[3]: *** [code/CMakeFiles/assimp.dir/all] Error 2
Makefile:127: recipe for target 'all' failed
make[2]: *** [all] Error 2
package/pkg-generic.mk:196: recipe for target '/home/thomas/projets/outputs/assimp-musl/build/assimp-v3.2/.stamp_built' failed
make[1]: *** [/home/thomas/projets/outputs/assimp-musl/build/assimp-v3.2/.stamp_built] Error 2
Makefile:16: recipe for target '_all' failed
make: *** [_all] Error 2

Defconfig to reproduce:

BR2_arm=y
BR2_cortex_a9=y
BR2_ARM_EABIHF=y
BR2_TOOLCHAIN_EXTERNAL=y
BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y
BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-arm-cortex-a9-musl-2015.11-rc1-71-g90d1299.tar.bz2"
BR2_TOOLCHAIN_EXTERNAL_GCC_4_9=y
BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_3=y
BR2_TOOLCHAIN_EXTERNAL_CUSTOM_MUSL=y
BR2_TOOLCHAIN_EXTERNAL_CXX=y
BR2_INIT_NONE=y
BR2_SYSTEM_BIN_SH_NONE=y
# BR2_PACKAGE_BUSYBOX is not set
BR2_PACKAGE_ASSIMP=y
# BR2_TARGET_ROOTFS_TAR is not set

Can you look into these issues and send an updated version?

Thanks!

Thomas
Peter Seiderer Dec. 17, 2015, 10:17 p.m. UTC | #2
Hello Thomas,

On Sun, 13 Dec 2015 14:07:30 +0100, Thomas Petazzoni <thomas.petazzoni@free-electrons.com> wrote:

> Peter,
> 
> On Sun,  6 Dec 2015 23:17:55 +0100, Peter Seiderer wrote:
> > Signed-off-by: Peter Seiderer <ps.report@gmx.net>
> > ----
> > Changes v1 -> v2:
> >   - use github helper (thanks to Jörg Krause)
> 
> It seems that it needs a C++ compiler, so you need to add this
> dependency, otherwise the build fails with:
> 
> CMake Error at CMakeLists.txt:3 (PROJECT):
>   The CMAKE_CXX_COMPILER:
> 
>     /home/thomas/projets/outputs/assimp-minimal/host/usr/bin/arm-linux-g++
> 
>   is not a full path to an existing compiler tool.
> 
>   Tell CMake where to find the compiler by setting either the environment
>   variable "CXX" or the CMake cache entry CMAKE_CXX_COMPILER to the full path
>   to the compiler, or to the compiler name if it is in the PATH.
> 

Ups, missed this one, fixed in next patch version...

> Also, it fails to build with musl, with the following error:
> 
> In file included from /home/thomas/projets/outputs/assimp-musl/build/assimp-v3.2/contrib/irrXML/irrXML.cpp:10:0:
> /home/thomas/projets/outputs/assimp-musl/build/assimp-v3.2/contrib/irrXML/irrString.h: In member function ‘irr::core::string<char_type> irr::io::CXMLReaderImpl<char_type, superclass>::replaceSpecialCharacters(irr::core::string<char_type>&) [with char_type = char; superclass = irr::io::IXMLBase]’:
> /home/thomas/projets/outputs/assimp-musl/build/assimp-v3.2/contrib/irrXML/irrString.h:639:3: warning: assuming signed overflow does not occur when assuming that (X + c) < X is always false [-Wstrict-overflow]
>    if (allocated < used)
>    ^
> [ 96%] Linking CXX shared library ../lib/libassimp.so
> /home/thomas/projets/outputs/assimp-musl/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-musleabihf/4.9.3/../../../../arm-buildroot-linux-musleabihf/bin/ld: ../lib/libzlibstatic.a(compress.o): relocation R_ARM_MOVW_ABS_NC against `a local symbol' can not be used when making a shared object; recompile with -fPIC
> ../lib/libzlibstatic.a: error adding symbols: Bad value
> collect2: error: ld returned 1 exit status
> code/CMakeFiles/assimp.dir/build.make:4307: recipe for target 'lib/libassimp.so.3.2.0' failed
> make[4]: *** [lib/libassimp.so.3.2.0] Error 1
> CMakeFiles/Makefile2:172: recipe for target 'code/CMakeFiles/assimp.dir/all' failed
> make[3]: *** [code/CMakeFiles/assimp.dir/all] Error 2
> Makefile:127: recipe for target 'all' failed
> make[2]: *** [all] Error 2
> package/pkg-generic.mk:196: recipe for target '/home/thomas/projets/outputs/assimp-musl/build/assimp-v3.2/.stamp_built' failed
> make[1]: *** [/home/thomas/projets/outputs/assimp-musl/build/assimp-v3.2/.stamp_built] Error 2
> Makefile:16: recipe for target '_all' failed
> make: *** [_all] Error 2
> 

Seems to be a problem with the built-in zlib (built static without -fPIC) and
linking into libassimp.so (object files built with -fPIC), see e.g. [1],
simple workaround is to select buildroot zlib package...

Updated patch follows soon...

Regards,
Peter

[1] https://cmake.org/pipermail/cmake/2006-March/008482.html


> Defconfig to reproduce:
> 
> BR2_arm=y
> BR2_cortex_a9=y
> BR2_ARM_EABIHF=y
> BR2_TOOLCHAIN_EXTERNAL=y
> BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y
> BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
> BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-arm-cortex-a9-musl-2015.11-rc1-71-g90d1299.tar.bz2"
> BR2_TOOLCHAIN_EXTERNAL_GCC_4_9=y
> BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_3=y
> BR2_TOOLCHAIN_EXTERNAL_CUSTOM_MUSL=y
> BR2_TOOLCHAIN_EXTERNAL_CXX=y
> BR2_INIT_NONE=y
> BR2_SYSTEM_BIN_SH_NONE=y
> # BR2_PACKAGE_BUSYBOX is not set
> BR2_PACKAGE_ASSIMP=y
> # BR2_TARGET_ROOTFS_TAR is not set
> 
> Can you look into these issues and send an updated version?
> 
> Thanks!
> 
> Thomas
diff mbox

Patch

diff --git a/package/Config.in b/package/Config.in
index bdc3063..b8e13e0 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -796,6 +796,7 @@  menu "Filesystem"
 endmenu
 
 menu "Graphics"
+	source "package/assimp/Config.in"
 	source "package/atk/Config.in"
 	source "package/bullet/Config.in"
 	source "package/cairo/Config.in"
diff --git a/package/assimp/Config.in b/package/assimp/Config.in
new file mode 100644
index 0000000..183e73e
--- /dev/null
+++ b/package/assimp/Config.in
@@ -0,0 +1,9 @@ 
+config BR2_PACKAGE_ASSIMP
+	bool "assimp"
+	help
+	  Open Asset Import Library (assimp) is a portable Open Source
+	  library to import various well-known 3D model formats in a uniform
+	  manner. The most recent version also knows how to export 3d files
+	  and is therefore suitable as a general-purpose 3D model converter.
+
+	  http://www.assimp.org
diff --git a/package/assimp/assimp.mk b/package/assimp/assimp.mk
new file mode 100644
index 0000000..696ec43
--- /dev/null
+++ b/package/assimp/assimp.mk
@@ -0,0 +1,15 @@ 
+################################################################################
+#
+# assimp
+#
+################################################################################
+
+ASSIMP_VERSION = v3.2
+ASSIMP_SITE = $(call github,assimp,assimp,$(ASSIMP_VERSION))
+ASSIMP_LICENSE = BSD-3c
+ASSIMP_LICENSE_FILES = LICENSE
+ASSIMP_INSTALL_STAGING = YES
+
+ASSIMP_CONF_OPTS += -DASSIMP_BUILD_TESTS=OFF
+
+$(eval $(cmake-package))