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