1*4882a593Smuzhiyun################################################################################ 2*4882a593Smuzhiyun# 3*4882a593Smuzhiyun# libglib2 4*4882a593Smuzhiyun# 5*4882a593Smuzhiyun################################################################################ 6*4882a593Smuzhiyun 7*4882a593SmuzhiyunLIBGLIB2_VERSION_MAJOR = 2.68 8*4882a593SmuzhiyunLIBGLIB2_VERSION = $(LIBGLIB2_VERSION_MAJOR).4 9*4882a593SmuzhiyunLIBGLIB2_SOURCE = glib-$(LIBGLIB2_VERSION).tar.xz 10*4882a593SmuzhiyunLIBGLIB2_SITE = http://ftp.gnome.org/pub/gnome/sources/glib/$(LIBGLIB2_VERSION_MAJOR) 11*4882a593SmuzhiyunLIBGLIB2_LICENSE = LGPL-2.1+ 12*4882a593SmuzhiyunLIBGLIB2_LICENSE_FILES = COPYING 13*4882a593SmuzhiyunLIBGLIB2_CPE_ID_VENDOR = gnome 14*4882a593SmuzhiyunLIBGLIB2_CPE_ID_PRODUCT = glib 15*4882a593SmuzhiyunLIBGLIB2_INSTALL_STAGING = YES 16*4882a593Smuzhiyun 17*4882a593SmuzhiyunLIBGLIB2_CFLAGS = $(TARGET_CFLAGS) 18*4882a593SmuzhiyunLIBGLIB2_LDFLAGS = $(TARGET_LDFLAGS) $(TARGET_NLS_LIBS) 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun# glib/valgrind.h contains inline asm not compatible with thumb1 21*4882a593Smuzhiyunifeq ($(BR2_ARM_INSTRUCTIONS_THUMB),y) 22*4882a593SmuzhiyunLIBGLIB2_CFLAGS += -marm 23*4882a593Smuzhiyunendif 24*4882a593Smuzhiyun 25*4882a593SmuzhiyunHOST_LIBGLIB2_CONF_OPTS = \ 26*4882a593Smuzhiyun -Ddtrace=false \ 27*4882a593Smuzhiyun -Dfam=false \ 28*4882a593Smuzhiyun -Dglib_debug=disabled \ 29*4882a593Smuzhiyun -Dlibelf=disabled \ 30*4882a593Smuzhiyun -Dselinux=disabled \ 31*4882a593Smuzhiyun -Dsystemtap=false \ 32*4882a593Smuzhiyun -Dxattr=false \ 33*4882a593Smuzhiyun -Dinternal_pcre=false \ 34*4882a593Smuzhiyun -Dtests=false \ 35*4882a593Smuzhiyun -Doss_fuzz=disabled 36*4882a593Smuzhiyun 37*4882a593SmuzhiyunLIBGLIB2_DEPENDENCIES = \ 38*4882a593Smuzhiyun host-pkgconf host-libglib2 \ 39*4882a593Smuzhiyun libffi pcre zlib $(TARGET_NLS_DEPENDENCIES) 40*4882a593Smuzhiyun 41*4882a593SmuzhiyunHOST_LIBGLIB2_DEPENDENCIES = \ 42*4882a593Smuzhiyun host-gettext \ 43*4882a593Smuzhiyun host-libffi \ 44*4882a593Smuzhiyun host-pcre \ 45*4882a593Smuzhiyun host-pkgconf \ 46*4882a593Smuzhiyun host-util-linux \ 47*4882a593Smuzhiyun host-zlib 48*4882a593Smuzhiyun 49*4882a593Smuzhiyun# We explicitly specify a giomodule-dir to avoid having a value 50*4882a593Smuzhiyun# containing ${libdir} in gio-2.0.pc. Indeed, a value depending on 51*4882a593Smuzhiyun# ${libdir} would be prefixed by the sysroot by pkg-config, causing a 52*4882a593Smuzhiyun# bogus installation path once combined with $(DESTDIR). 53*4882a593SmuzhiyunLIBGLIB2_CONF_OPTS = \ 54*4882a593Smuzhiyun -Dglib_debug=disabled \ 55*4882a593Smuzhiyun -Dinternal_pcre=false \ 56*4882a593Smuzhiyun -Dlibelf=disabled \ 57*4882a593Smuzhiyun -Dgio_module_dir=/usr/lib/gio/modules \ 58*4882a593Smuzhiyun -Dtests=false \ 59*4882a593Smuzhiyun -Doss_fuzz=disabled 60*4882a593Smuzhiyun 61*4882a593SmuzhiyunLIBGLIB2_MESON_EXTRA_PROPERTIES = \ 62*4882a593Smuzhiyun have_c99_vsnprintf=true \ 63*4882a593Smuzhiyun have_c99_snprintf=true \ 64*4882a593Smuzhiyun have_unix98_printf=true 65*4882a593Smuzhiyun 66*4882a593Smuzhiyunifneq ($(BR2_ENABLE_LOCALE),y) 67*4882a593SmuzhiyunLIBGLIB2_DEPENDENCIES += libiconv 68*4882a593Smuzhiyunendif 69*4882a593Smuzhiyun 70*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_ELFUTILS),y) 71*4882a593SmuzhiyunLIBGLIB2_DEPENDENCIES += elfutils 72*4882a593Smuzhiyunendif 73*4882a593Smuzhiyun 74*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_LIBICONV),y) 75*4882a593SmuzhiyunLIBGLIB2_CONF_OPTS += -Diconv=external 76*4882a593SmuzhiyunLIBGLIB2_DEPENDENCIES += libiconv 77*4882a593Smuzhiyunendif 78*4882a593Smuzhiyun 79*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_LIBSELINUX),y) 80*4882a593SmuzhiyunLIBGLIB2_CONF_OPTS += -Dselinux=enabled -Dxattr=true 81*4882a593SmuzhiyunLIBGLIB2_DEPENDENCIES += libselinux 82*4882a593Smuzhiyunelse 83*4882a593SmuzhiyunLIBGLIB2_CONF_OPTS += -Dselinux=disabled -Dxattr=false 84*4882a593Smuzhiyunendif 85*4882a593Smuzhiyun 86*4882a593Smuzhiyun# Purge gdb-related files 87*4882a593Smuzhiyunifneq ($(BR2_PACKAGE_GDB),y) 88*4882a593Smuzhiyundefine LIBGLIB2_REMOVE_GDB_FILES 89*4882a593Smuzhiyun rm -rf $(TARGET_DIR)/usr/share/glib-2.0/gdb 90*4882a593Smuzhiyunendef 91*4882a593Smuzhiyunendif 92*4882a593Smuzhiyun 93*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBMOUNT),y) 94*4882a593SmuzhiyunLIBGLIB2_CONF_OPTS += -Dlibmount=enabled 95*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBS),y) 96*4882a593SmuzhiyunLIBGLIB2_DEPENDENCIES += util-linux-libs 97*4882a593Smuzhiyunelse 98*4882a593SmuzhiyunLIBGLIB2_DEPENDENCIES += util-linux 99*4882a593Smuzhiyunendif 100*4882a593Smuzhiyunelse 101*4882a593SmuzhiyunLIBGLIB2_CONF_OPTS += -Dlibmount=disabled 102*4882a593Smuzhiyunendif 103*4882a593Smuzhiyun 104*4882a593Smuzhiyun# Purge useless binaries from target 105*4882a593Smuzhiyundefine LIBGLIB2_REMOVE_DEV_FILES 106*4882a593Smuzhiyun rm -rf $(TARGET_DIR)/usr/lib/glib-2.0 107*4882a593Smuzhiyun rm -rf $(addprefix $(TARGET_DIR)/usr/share/glib-2.0/,codegen gettext) 108*4882a593Smuzhiyun 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) 109*4882a593Smuzhiyun $(LIBGLIB2_REMOVE_GDB_FILES) 110*4882a593Smuzhiyunendef 111*4882a593Smuzhiyun 112*4882a593SmuzhiyunLIBGLIB2_POST_INSTALL_TARGET_HOOKS += LIBGLIB2_REMOVE_DEV_FILES 113*4882a593Smuzhiyun 114*4882a593Smuzhiyun# Newer versions of libglib2 prefix glib-genmarshal, gobject-query, 115*4882a593Smuzhiyun# glib-mkenums, glib_compile_schemas, glib_compile_resources and gdbus-codegen 116*4882a593Smuzhiyun# with ${bindir}. Unfortunately, this will resolve to the host systems /bin/ 117*4882a593Smuzhiyun# directory, which will cause compilation issues if the host does not have these 118*4882a593Smuzhiyun# programs. By removing the ${bindir}/ prefix, these programs are resolved in 119*4882a593Smuzhiyun# PATH instead. 120*4882a593Smuzhiyundefine LIBGLIB2_REMOVE_BINDIR_PREFIX_FROM_PC_FILE 121*4882a593Smuzhiyun $(SED) 's%$${bindir}/%%g' $(addprefix $(STAGING_DIR)/usr/lib/pkgconfig/, glib-2.0.pc gio-2.0.pc) 122*4882a593Smuzhiyunendef 123*4882a593SmuzhiyunLIBGLIB2_POST_INSTALL_TARGET_HOOKS += LIBGLIB2_REMOVE_BINDIR_PREFIX_FROM_PC_FILE 124*4882a593Smuzhiyun 125*4882a593Smuzhiyun# Remove schema sources/DTDs, we use staging ones to compile them. 126*4882a593Smuzhiyun# Do so at target finalization since other packages install additional 127*4882a593Smuzhiyun# ones and we want to deal with it in a single place. 128*4882a593Smuzhiyundefine LIBGLIB2_REMOVE_TARGET_SCHEMAS 129*4882a593Smuzhiyun rm -f $(TARGET_DIR)/usr/share/glib-2.0/schemas/*.xml \ 130*4882a593Smuzhiyun $(TARGET_DIR)/usr/share/glib-2.0/schemas/*.dtd 131*4882a593Smuzhiyunendef 132*4882a593Smuzhiyun 133*4882a593Smuzhiyun# Compile schemas at target finalization since other packages install 134*4882a593Smuzhiyun# them as well, and better do it in a central place. 135*4882a593Smuzhiyun# It's used at run time so it doesn't matter defering it. 136*4882a593Smuzhiyundefine LIBGLIB2_COMPILE_SCHEMAS 137*4882a593Smuzhiyun $(HOST_DIR)/bin/glib-compile-schemas \ 138*4882a593Smuzhiyun $(STAGING_DIR)/usr/share/glib-2.0/schemas \ 139*4882a593Smuzhiyun --targetdir=$(TARGET_DIR)/usr/share/glib-2.0/schemas 140*4882a593Smuzhiyunendef 141*4882a593Smuzhiyun 142*4882a593SmuzhiyunLIBGLIB2_TARGET_FINALIZE_HOOKS += LIBGLIB2_REMOVE_TARGET_SCHEMAS 143*4882a593SmuzhiyunLIBGLIB2_TARGET_FINALIZE_HOOKS += LIBGLIB2_COMPILE_SCHEMAS 144*4882a593Smuzhiyun 145*4882a593Smuzhiyun$(eval $(meson-package)) 146*4882a593Smuzhiyun$(eval $(host-meson-package)) 147*4882a593Smuzhiyun 148*4882a593SmuzhiyunLIBGLIB2_HOST_BINARY = $(HOST_DIR)/bin/glib-genmarshal 149