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