hc
2023-02-13 e440ec23c5a540cdd3f7464e8779219be6fd3d95
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
################################################################################
#
# libglib2
#
################################################################################
 
LIBGLIB2_VERSION_MAJOR = 2.68
LIBGLIB2_VERSION = $(LIBGLIB2_VERSION_MAJOR).4
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
LIBGLIB2_CPE_ID_VENDOR = gnome
LIBGLIB2_CPE_ID_PRODUCT = glib
LIBGLIB2_INSTALL_STAGING = YES
 
LIBGLIB2_CFLAGS = $(TARGET_CFLAGS)
LIBGLIB2_LDFLAGS = $(TARGET_LDFLAGS) $(TARGET_NLS_LIBS)
 
# glib/valgrind.h contains inline asm not compatible with thumb1
ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB),y)
LIBGLIB2_CFLAGS += -marm
endif
 
HOST_LIBGLIB2_CONF_OPTS = \
   -Ddtrace=false \
   -Dfam=false \
   -Dglib_debug=disabled \
   -Dlibelf=disabled \
   -Dselinux=disabled \
   -Dsystemtap=false \
   -Dxattr=false \
   -Dinternal_pcre=false \
   -Dtests=false \
   -Doss_fuzz=disabled
 
LIBGLIB2_DEPENDENCIES = \
   host-pkgconf host-libglib2 \
   libffi pcre zlib $(TARGET_NLS_DEPENDENCIES)
 
HOST_LIBGLIB2_DEPENDENCIES = \
   host-gettext \
   host-libffi \
   host-pcre \
   host-pkgconf \
   host-util-linux \
   host-zlib
 
# 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 = \
   -Dglib_debug=disabled \
   -Dinternal_pcre=false \
   -Dlibelf=disabled \
   -Dgio_module_dir=/usr/lib/gio/modules \
   -Dtests=false \
   -Doss_fuzz=disabled
 
LIBGLIB2_MESON_EXTRA_PROPERTIES = \
   have_c99_vsnprintf=true \
   have_c99_snprintf=true \
   have_unix98_printf=true
 
ifneq ($(BR2_ENABLE_LOCALE),y)
LIBGLIB2_DEPENDENCIES += libiconv
endif
 
ifeq ($(BR2_PACKAGE_ELFUTILS),y)
LIBGLIB2_DEPENDENCIES += elfutils
endif
 
ifeq ($(BR2_PACKAGE_LIBICONV),y)
LIBGLIB2_CONF_OPTS += -Diconv=external
LIBGLIB2_DEPENDENCIES += libiconv
endif
 
ifeq ($(BR2_PACKAGE_LIBSELINUX),y)
LIBGLIB2_CONF_OPTS += -Dselinux=enabled -Dxattr=true
LIBGLIB2_DEPENDENCIES += libselinux
else
LIBGLIB2_CONF_OPTS += -Dselinux=disabled -Dxattr=false
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
 
ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBMOUNT),y)
LIBGLIB2_CONF_OPTS += -Dlibmount=enabled
ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBS),y)
LIBGLIB2_DEPENDENCIES += util-linux-libs
else
LIBGLIB2_DEPENDENCIES += util-linux
endif
else
LIBGLIB2_CONF_OPTS += -Dlibmount=disabled
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
 
# Newer versions of libglib2 prefix glib-genmarshal, gobject-query,
# glib-mkenums, glib_compile_schemas, glib_compile_resources and gdbus-codegen
# with ${bindir}. Unfortunately, this will resolve to the host systems /bin/
# directory, which will cause compilation issues if the host does not have these
# programs. By removing the ${bindir}/ prefix, these programs are resolved in
# PATH instead.
define LIBGLIB2_REMOVE_BINDIR_PREFIX_FROM_PC_FILE
   $(SED) 's%$${bindir}/%%g' $(addprefix $(STAGING_DIR)/usr/lib/pkgconfig/, glib-2.0.pc gio-2.0.pc)
endef
LIBGLIB2_POST_INSTALL_TARGET_HOOKS += LIBGLIB2_REMOVE_BINDIR_PREFIX_FROM_PC_FILE
 
# 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 $(meson-package))
$(eval $(host-meson-package))
 
LIBGLIB2_HOST_BINARY = $(HOST_DIR)/bin/glib-genmarshal