kumquat-buildroot/package/libglib2/libglib2.mk

181 lines
5.6 KiB
Makefile
Raw Normal View History

################################################################################
2007-01-10 07:54:04 +01:00
#
# libglib2
#
################################################################################
LIBGLIB2_VERSION_MAJOR = 2.56
LIBGLIB2_VERSION = $(LIBGLIB2_VERSION_MAJOR).3
LIBGLIB2_SOURCE = glib-$(LIBGLIB2_VERSION).tar.xz
LIBGLIB2_SITE = http://ftp.gnome.org/pub/gnome/sources/glib/$(LIBGLIB2_VERSION_MAJOR)
LIBGLIB2_LICENSE = LGPL-2.1+
LIBGLIB2_LICENSE_FILES = COPYING
# 0002-disable-tests.patch
LIBGLIB2_AUTORECONF = YES
2008-03-06 19:15:25 +01:00
LIBGLIB2_INSTALL_STAGING = YES
LIBGLIB2_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) LDFLAGS=-L$(STAGING_DIR)/usr/lib install
2008-03-06 19:15:25 +01:00
LIBGLIB2_CONF_ENV = \
ac_cv_func_posix_getpwuid_r=yes \
glib_cv_stack_grows=no \
glib_cv_uscore=no \
ac_cv_func_strtod=yes \
ac_fsusage_space=yes \
fu_cv_sys_stat_statfs2_bsize=yes \
ac_cv_func_closedir_void=no \
ac_cv_func_getloadavg=no \
ac_cv_lib_util_getloadavg=no \
ac_cv_lib_getloadavg_getloadavg=no \
ac_cv_func_getgroups=yes \
ac_cv_func_getgroups_works=yes \
ac_cv_func_chown_works=yes \
ac_cv_have_decl_euidaccess=no \
ac_cv_func_euidaccess=no \
ac_cv_have_decl_strnlen=yes \
ac_cv_func_strnlen_working=yes \
ac_cv_func_lstat_dereferences_slashed_symlink=yes \
ac_cv_func_lstat_empty_string_bug=no \
ac_cv_func_stat_empty_string_bug=no \
vb_cv_func_rename_trailing_slash_bug=no \
ac_cv_have_decl_nanosleep=yes \
jm_cv_func_nanosleep_works=yes \
gl_cv_func_working_utimes=yes \
ac_cv_func_utime_null=yes \
jm_cv_func_svid_putenv=yes \
ac_cv_func_getcwd_null=yes \
ac_cv_func_getdelim=yes \
ac_cv_func_mkstemp=yes \
utils_cv_func_mkstemp_limitations=no \
utils_cv_func_mkdir_trailing_slash_bug=no \
jm_cv_func_gettimeofday_clobber=no \
gl_cv_func_working_readdir=yes \
jm_ac_cv_func_link_follows_symlink=no \
utils_cv_localtime_cache=no \
ac_cv_struct_st_mtim_nsec=no \
gl_cv_func_tzset_clobber=no \
gl_cv_func_getcwd_null=yes \
gl_cv_func_getcwd_path_max=yes \
ac_cv_func_fnmatch_gnu=yes \
am_getline_needs_run_time_check=no \
am_cv_func_working_getline=yes \
gl_cv_func_mkdir_trailing_slash_bug=no \
gl_cv_func_mkstemp_limitations=no \
ac_cv_func_working_mktime=yes \
jm_cv_func_working_re_compile_pattern=yes \
ac_use_included_regex=no \
gl_cv_c_restrict=no \
ac_cv_path_GLIB_GENMARSHAL=$(HOST_DIR)/bin/glib-genmarshal \
ac_cv_prog_F77=no \
ac_cv_func_posix_getgrgid_r=no \
glib_cv_long_long_format=ll \
ac_cv_func_printf_unix98=yes \
ac_cv_func_vsnprintf_c99=yes \
ac_cv_func_newlocale=no \
ac_cv_func_uselocale=no \
ac_cv_func_strtod_l=no \
ac_cv_func_strtoll_l=no \
ac_cv_func_strtoull_l=no \
gt_cv_c_wchar_t=$(if $(BR2_USE_WCHAR),yes,no)
2008-03-06 19:15:25 +01:00
# old uClibc versions don't provide qsort_r
ifeq ($(BR2_TOOLCHAIN_EXTERNAL_UCLIBC),y)
LIBGLIB2_CONF_ENV += glib_cv_have_qsort_r=no
else
LIBGLIB2_CONF_ENV += glib_cv_have_qsort_r=yes
endif
# glib/valgrind.h contains inline asm not compatible with thumb1
ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB),y)
LIBGLIB2_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -marm"
endif
HOST_LIBGLIB2_CONF_OPTS = \
--disable-coverage \
--disable-dtrace \
--disable-fam \
--disable-libelf \
--disable-selinux \
--disable-systemtap \
--disable-xattr \
--with-pcre=system
LIBGLIB2_DEPENDENCIES = \
host-pkgconf host-libglib2 \
libffi pcre util-linux zlib $(TARGET_NLS_DEPENDENCIES)
HOST_LIBGLIB2_DEPENDENCIES = \
host-gettext \
host-libffi \
host-pcre \
host-pkgconf \
host-util-linux \
host-zlib
package/libglib2: explicitly specify gio module path Since the switch to pkgconf 1.5.3 in commit 4e423669399ad8389edd81761ea5c9cc26bf312d, the glib-networking package has been failing to build with: glib-networking: installs files in /home/naourr/work/instance-0/output/host/i686-buildroot-linux-uclibc/sysroot//home/naourr/work/instance-0/output This error is due to glib-networking having installed its GIO GnuTLS module into an invalid location. This invalid location is $(DESTDIR)$(GIO_MODULE_DIR). GIO_MODULE_DIR is found by using: pkg-config --variable giomoduledir gio-2.0 Unfortunately, despite the pkgconf fix in commit 7125fc5c1a8a96ff8eee057789358702e1b55835 ("package/pkgconf: add patch to restore pre-1.5.3 behavior for sysroot prefixing"), the value returned by pkg-config for giomoduledir remains prefixed by the sysroot. This is due to the fact that giomoduledir is defined by default with the value ${libdir}/gio/modules. When running pkg-config --variable giomoduledir gio-2.0 with the new pkg-config version, what happens is that libdir is resolved first, and libdir is one of the variable for which we add the sysroot prefix. Then later, giomoduledir is resolved. For this variable, we don't prefix with the sysroot. However, when resolving the value of giomoduledir, it re-uses the value of libdir that was already resolved, and this value includes the sysroot prefix. There is no simple way to solve this problem within pkg-config. So for the time being, we take a simple route: make sure giomoduledir isn't defined in terms of ${libdir}. This is easily done by passing --with-gio-module-dir to libglib2 configure script. Fixes: http://autobuild.buildroot.net/results/4167159c4a03f5a72dbd7e286aedb3845164cc22/ Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com> Acked-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2018-12-27 11:33:51 +01:00
# We explicitly specify a giomodule-dir to avoid having a value
# containing ${libdir} in gio-2.0.pc. Indeed, a value depending on
# ${libdir} would be prefixed by the sysroot by pkg-config, causing a
# bogus installation path once combined with $(DESTDIR).
LIBGLIB2_CONF_OPTS = \
--with-pcre=system \
package/libglib2: explicitly specify gio module path Since the switch to pkgconf 1.5.3 in commit 4e423669399ad8389edd81761ea5c9cc26bf312d, the glib-networking package has been failing to build with: glib-networking: installs files in /home/naourr/work/instance-0/output/host/i686-buildroot-linux-uclibc/sysroot//home/naourr/work/instance-0/output This error is due to glib-networking having installed its GIO GnuTLS module into an invalid location. This invalid location is $(DESTDIR)$(GIO_MODULE_DIR). GIO_MODULE_DIR is found by using: pkg-config --variable giomoduledir gio-2.0 Unfortunately, despite the pkgconf fix in commit 7125fc5c1a8a96ff8eee057789358702e1b55835 ("package/pkgconf: add patch to restore pre-1.5.3 behavior for sysroot prefixing"), the value returned by pkg-config for giomoduledir remains prefixed by the sysroot. This is due to the fact that giomoduledir is defined by default with the value ${libdir}/gio/modules. When running pkg-config --variable giomoduledir gio-2.0 with the new pkg-config version, what happens is that libdir is resolved first, and libdir is one of the variable for which we add the sysroot prefix. Then later, giomoduledir is resolved. For this variable, we don't prefix with the sysroot. However, when resolving the value of giomoduledir, it re-uses the value of libdir that was already resolved, and this value includes the sysroot prefix. There is no simple way to solve this problem within pkg-config. So for the time being, we take a simple route: make sure giomoduledir isn't defined in terms of ${libdir}. This is easily done by passing --with-gio-module-dir to libglib2 configure script. Fixes: http://autobuild.buildroot.net/results/4167159c4a03f5a72dbd7e286aedb3845164cc22/ Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com> Acked-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2018-12-27 11:33:51 +01:00
--disable-compile-warnings \
--with-gio-module-dir=/usr/lib/gio/modules
ifneq ($(BR2_ENABLE_LOCALE),y)
LIBGLIB2_DEPENDENCIES += libiconv
endif
2008-03-06 19:15:25 +01:00
ifeq ($(BR2_PACKAGE_ELFUTILS),y)
LIBGLIB2_CONF_OPTS += --enable-libelf
LIBGLIB2_DEPENDENCIES += elfutils
else
LIBGLIB2_CONF_OPTS += --disable-libelf
endif
ifeq ($(BR2_PACKAGE_LIBICONV),y)
LIBGLIB2_CONF_OPTS += --with-libiconv=gnu
LIBGLIB2_DEPENDENCIES += libiconv
endif
# Purge gdb-related files
ifneq ($(BR2_PACKAGE_GDB),y)
define LIBGLIB2_REMOVE_GDB_FILES
rm -rf $(TARGET_DIR)/usr/share/glib-2.0/gdb
endef
endif
# Purge useless binaries from target
define LIBGLIB2_REMOVE_DEV_FILES
rm -rf $(TARGET_DIR)/usr/lib/glib-2.0
rm -rf $(addprefix $(TARGET_DIR)/usr/share/glib-2.0/,codegen gettext)
rm -f $(addprefix $(TARGET_DIR)/usr/bin/,gdbus-codegen glib-compile-schemas glib-compile-resources glib-genmarshal glib-gettextize glib-mkenums gobject-query gtester gtester-report)
$(LIBGLIB2_REMOVE_GDB_FILES)
endef
LIBGLIB2_POST_INSTALL_TARGET_HOOKS += LIBGLIB2_REMOVE_DEV_FILES
# Remove schema sources/DTDs, we use staging ones to compile them.
# Do so at target finalization since other packages install additional
# ones and we want to deal with it in a single place.
define LIBGLIB2_REMOVE_TARGET_SCHEMAS
rm -f $(TARGET_DIR)/usr/share/glib-2.0/schemas/*.xml \
$(TARGET_DIR)/usr/share/glib-2.0/schemas/*.dtd
endef
# Compile schemas at target finalization since other packages install
# them as well, and better do it in a central place.
# It's used at run time so it doesn't matter defering it.
define LIBGLIB2_COMPILE_SCHEMAS
$(HOST_DIR)/bin/glib-compile-schemas \
$(STAGING_DIR)/usr/share/glib-2.0/schemas \
--targetdir=$(TARGET_DIR)/usr/share/glib-2.0/schemas
endef
LIBGLIB2_TARGET_FINALIZE_HOOKS += LIBGLIB2_REMOVE_TARGET_SCHEMAS
LIBGLIB2_TARGET_FINALIZE_HOOKS += LIBGLIB2_COMPILE_SCHEMAS
$(eval $(autotools-package))
$(eval $(host-autotools-package))
LIBGLIB2_HOST_BINARY = $(HOST_DIR)/bin/glib-genmarshal