xref: /OK3568_Linux_fs/buildroot/package/libselinux/libselinux.mk (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1################################################################################
2#
3# libselinux
4#
5################################################################################
6
7LIBSELINUX_VERSION = 3.2
8LIBSELINUX_SITE = https://github.com/SELinuxProject/selinux/releases/download/$(LIBSELINUX_VERSION)
9LIBSELINUX_LICENSE = Public Domain
10LIBSELINUX_LICENSE_FILES = LICENSE
11LIBSELINUX_CPE_ID_VENDOR = selinuxproject
12
13LIBSELINUX_DEPENDENCIES = $(BR2_COREUTILS_HOST_DEPENDENCY) libsepol pcre
14
15LIBSELINUX_INSTALL_STAGING = YES
16
17# Set SHLIBDIR to /usr/lib so it has the same value than LIBDIR, as a result
18# we won't have to use a relative path in 0002-revert-ln-relative.patch
19LIBSELINUX_MAKE_OPTS = \
20	$(TARGET_CONFIGURE_OPTS) \
21	ARCH=$(NORMALIZED_ARCH) \
22	SHLIBDIR=/usr/lib
23
24LIBSELINUX_MAKE_INSTALL_TARGETS = install
25
26ifeq ($(BR2_TOOLCHAIN_USES_GLIBC),)
27LIBSELINUX_DEPENDENCIES += musl-fts
28LIBSELINUX_MAKE_OPTS += FTS_LDLIBS=-lfts
29endif
30
31ifeq ($(BR2_PACKAGE_PYTHON3),y)
32LIBSELINUX_DEPENDENCIES += python3 host-swig
33
34LIBSELINUX_MAKE_OPTS += \
35	$(PKG_PYTHON_DISTUTILS_ENV) \
36	PYTHON=python$(PYTHON3_VERSION_MAJOR)
37
38LIBSELINUX_MAKE_INSTALL_TARGETS += install-pywrap
39
40# dependencies are broken and result in file truncation errors at link
41# time if the Python bindings are built through the same make
42# invocation as the rest of the library.
43define LIBSELINUX_BUILD_PYTHON_BINDINGS
44	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \
45		$(LIBSELINUX_MAKE_OPTS) swigify pywrap
46endef
47endif # python3
48
49# Filter out D_FILE_OFFSET_BITS=64. This fixes errors caused by glibc 2.22. We
50# set CFLAGS, CPPFLAGS and LDFLAGS here because we want to win over the
51# CFLAGS/CPPFLAGS/LDFLAGS definitions passed by $(PKG_PYTHON_DISTUTILS_ENV)
52# when the python binding is enabled.
53LIBSELINUX_MAKE_OPTS += \
54	CFLAGS="$(filter-out -D_FILE_OFFSET_BITS=64,$(TARGET_CFLAGS))" \
55	CPPFLAGS="$(filter-out -D_FILE_OFFSET_BITS=64,$(TARGET_CPPFLAGS))" \
56	LDFLAGS="$(TARGET_LDFLAGS) -lpcre -lpthread"
57
58define LIBSELINUX_BUILD_CMDS
59	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \
60		$(LIBSELINUX_MAKE_OPTS) all
61	$(LIBSELINUX_BUILD_PYTHON_BINDINGS)
62endef
63
64define LIBSELINUX_INSTALL_STAGING_CMDS
65	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \
66		$(LIBSELINUX_MAKE_OPTS) DESTDIR=$(STAGING_DIR) \
67		$(LIBSELINUX_MAKE_INSTALL_TARGETS)
68endef
69
70define LIBSELINUX_INSTALL_TARGET_CMDS
71	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \
72		$(LIBSELINUX_MAKE_OPTS) DESTDIR=$(TARGET_DIR) \
73		$(LIBSELINUX_MAKE_INSTALL_TARGETS)
74	if ! grep -q "selinuxfs" $(TARGET_DIR)/etc/fstab; then \
75		echo "none /sys/fs/selinux selinuxfs noauto 0 0" >> $(TARGET_DIR)/etc/fstab ; fi
76endef
77
78HOST_LIBSELINUX_DEPENDENCIES = \
79	host-libsepol host-pcre host-swig host-python3
80
81HOST_LIBSELINUX_MAKE_OPTS = \
82	$(HOST_CONFIGURE_OPTS) \
83	PREFIX=$(HOST_DIR) \
84	SHLIBDIR=$(HOST_DIR)/lib \
85	LDFLAGS="$(HOST_LDFLAGS) -lpcre -lpthread" \
86	$(HOST_PKG_PYTHON_DISTUTILS_ENV) \
87	PYTHON=python$(PYTHON3_VERSION_MAJOR)
88
89define HOST_LIBSELINUX_BUILD_CMDS
90	$(HOST_MAKE_ENV) $(MAKE1) -C $(@D) \
91		$(HOST_LIBSELINUX_MAKE_OPTS) all
92	# Generate python interface wrapper
93	$(HOST_MAKE_ENV) $(MAKE1) -C $(@D) \
94		$(HOST_LIBSELINUX_MAKE_OPTS) swigify pywrap
95endef
96
97define HOST_LIBSELINUX_INSTALL_CMDS
98	$(HOST_MAKE_ENV) $(MAKE) -C $(@D) \
99		$(HOST_LIBSELINUX_MAKE_OPTS) install
100	# Install python interface wrapper
101	$(HOST_MAKE_ENV) $(MAKE) -C $(@D) \
102		$(HOST_LIBSELINUX_MAKE_OPTS) install-pywrap
103endef
104
105define LIBSELINUX_LINUX_CONFIG_FIXUPS
106	$(call KCONFIG_ENABLE_OPT,CONFIG_AUDIT)
107	$(call KCONFIG_ENABLE_OPT,CONFIG_DEFAULT_SECURITY_SELINUX)
108	$(call KCONFIG_ENABLE_OPT,CONFIG_INET)
109	$(call KCONFIG_ENABLE_OPT,CONFIG_NET)
110	$(call KCONFIG_ENABLE_OPT,CONFIG_SECURITY)
111	$(call KCONFIG_ENABLE_OPT,CONFIG_SECURITY_NETWORK)
112	$(call KCONFIG_ENABLE_OPT,CONFIG_SECURITY_SELINUX)
113	$(call KCONFIG_SET_OPT,CONFIG_LSM,"selinux")
114	$(if $(BR2_TARGET_ROOTFS_EROFS),
115		$(call KCONFIG_ENABLE_OPT,CONFIG_EROFS_FS_XATTR)
116		$(call KCONFIG_ENABLE_OPT,CONFIG_EROFS_FS_SECURITY))
117	$(if $(BR2_TARGET_ROOTFS_EXT2),
118		$(call KCONFIG_ENABLE_OPT,CONFIG_EXT2_FS_XATTR)
119		$(call KCONFIG_ENABLE_OPT,CONFIG_EXT2_FS_SECURITY))
120	$(if $(BR2_TARGET_ROOTFS_EXT2_3),
121		$(call KCONFIG_ENABLE_OPT,CONFIG_EXT3_FS_SECURITY))
122	$(if $(BR2_TARGET_ROOTFS_EXT2_4),
123		$(call KCONFIG_ENABLE_OPT,CONFIG_EXT4_FS_SECURITY))
124	$(if $(BR2_TARGET_ROOTFS_F2FS),
125		$(call KCONFIG_ENABLE_OPT,CONFIG_F2FS_FS_XATTR)
126		$(call KCONFIG_ENABLE_OPT,CONFIG_F2FS_FS_SECURITY))
127	$(if $(BR2_TARGET_ROOTFS_JFFS2),
128		$(call KCONFIG_ENABLE_OPT,CONFIG_JFS_SECURITY))
129	$(if $(BR2_TARGET_ROOTFS_SQUASHFS),
130		$(call KCONFIG_ENABLE_OPT,CONFIG_SQUASHFS_XATTR))
131	$(if $(BR2_TARGET_ROOTFS_UBIFS),
132		$(call KCONFIG_ENABLE_OPT,CONFIG_UBIFS_FS_XATTR)
133		$(call KCONFIG_ENABLE_OPT,CONFIG_UBIFS_FS_SECURITY))
134endef
135
136$(eval $(generic-package))
137$(eval $(host-generic-package))
138