buildroot/package/irrlicht/irrlicht.mk
Romain Naour bf5f4f417a package/irrlicht: disable bundled libpng NEON support
Irrlicht fail to detect properly the NEON support on aarch64 or ARM with NEON FPU support.
While linking an application with libIrrlicht.so, we get an undefined reference to
png_init_filter_functions_neon.
Some files are missing in the libpng bundled in Irrlicht, in particular arm/arm_init.c [1],
so disable NEON support completely.

This can be reproduced by building minetest using this defconfig for aarch64:
BR2_aarch64=y
BR2_TOOLCHAIN_EXTERNAL=y
BR2_PACKAGE_MINETEST=y
BR2_PACKAGE_MINETEST_CLIENT=y
BR2_PACKAGE_MINETEST_SERVER=y
BR2_PACKAGE_MESA3D=y
BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SWRAST=y
BR2_PACKAGE_MESA3D_OPENGL_GLX=y
BR2_PACKAGE_XORG7=y

Or for ARM with NEON FPU support:
BR2_arm=y
BR2_cortex_a15=y
BR2_ARM_FPU_NEON=y
BR2_TOOLCHAIN_EXTERNAL=y
BR2_PACKAGE_MINETEST=y
BR2_PACKAGE_MINETEST_CLIENT=y
BR2_PACKAGE_MINETEST_SERVER=y
BR2_PACKAGE_MESA3D=y
BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SWRAST=y
BR2_PACKAGE_MESA3D_OPENGL_GLX=y
BR2_PACKAGE_XORG7=y

[1] https://github.com/glennrp/libpng/tree/v1.6.37/arm

Signed-off-by: Romain Naour <romain.naour@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2020-05-09 22:23:18 +02:00

66 lines
2.2 KiB
Makefile

################################################################################
#
# irrlicht
#
################################################################################
IRRLICHT_VERSION_MAJOR = 1.8
IRRLICHT_VERSION = $(IRRLICHT_VERSION_MAJOR).4
IRRLICHT_SOURCE = irrlicht-$(IRRLICHT_VERSION).zip
IRRLICHT_SITE = https://downloads.sourceforge.net/project/irrlicht/Irrlicht%20SDK/$(IRRLICHT_VERSION_MAJOR)/$(IRRLICHT_VERSION)
IRRLICHT_INSTALL_STAGING = YES
# Bundled libraries: bzip2, libaesGladman, libpng, lzma, zlib,
# The handcrafted Makefile can only use bundled libraries.
IRRLICHT_LICENSE = Zlib (irrlicht), BSD-3-Clause (libaesGladman), bzip2-1.0.5 (bzip2), IJG (libjpeg), Libpng (libpng)
IRRLICHT_LICENSE_FILES = \
doc/aesGladman.txt \
doc/bzip2-license.txt \
doc/irrlicht-license.txt \
doc/jpglib-license.txt \
doc/libpng-license.txt
IRRLICHT_SUBDIR = source/Irrlicht
IRRLICHT_DEPENDENCIES = libgl xlib_libXxf86vm
define IRRLICHT_EXTRACT_CMDS
$(UNZIP) -d $(@D) $(IRRLICHT_DL_DIR)/$(IRRLICHT_SOURCE)
mv $(@D)/irrlicht-$(IRRLICHT_VERSION)/* $(@D)
$(RM) -r $(@D)/irrlicht-$(IRRLICHT_VERSION)
endef
IRRLICHT_CONF_OPTS = $(TARGET_CONFIGURE_OPTS)
# Build a static library OR a shared library, otherwise we need to compile with -fPIC
# "relocation R_X86_64_32S can not be used when making a shared object; recompile with -fPIC"
ifeq ($(BR2_STATIC_LIBS),)
IRRLICHT_CONF_OPTS += sharedlib
endif
# Irrlicht fail to detect properly the NEON support on aarch64 or ARM with NEON FPU support.
# While linking an application with libIrrlicht.so, we get an undefined reference to
# png_init_filter_functions_neon.
# Some files are missing in the libpng bundled in Irrlicht, in particular arm/arm_init.c,
# so disable NEON support completely.
IRRLICHT_CONF_OPTS += CPPFLAGS="$(TARGET_CPPFLAGS) -DPNG_ARM_NEON_OPT=0"
define IRRLICHT_BUILD_CMDS
$(TARGET_MAKE_ENV)
$(MAKE) -C $(@D)/$(IRRLICHT_SUBDIR) $(IRRLICHT_CONF_OPTS)
endef
define IRRLICHT_INSTALL_STAGING_CMDS
$(TARGET_MAKE_ENV) $(MAKE) \
INSTALL_DIR=$(STAGING_DIR)/usr/lib \
-C $(@D)/$(IRRLICHT_SUBDIR) install
endef
define IRRLICHT_INSTALL_TARGET_CMDS
$(TARGET_MAKE_ENV) $(MAKE) \
INSTALL_DIR=$(TARGET_DIR)/usr/lib \
-C $(@D)/$(IRRLICHT_SUBDIR) install
endef
$(eval $(generic-package))