db2221d7e31e0344463d5024bbb324713d4b52a6
[openwrt/staging/hauke.git] / package / libs / libselinux / Makefile
1 #
2 # This is free software, licensed under the GNU General Public License v2.
3 # See /LICENSE for more information.
4 #
5
6 include $(TOPDIR)/rules.mk
7
8 PKG_NAME:=libselinux
9 PKG_VERSION:=3.5
10 PKG_RELEASE:=1
11
12 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
13 PKG_SOURCE_URL:=https://github.com/SELinuxProject/selinux/releases/download/$(PKG_VERSION)
14 PKG_HASH:=9a3a3705ac13a2ccca2de6d652b6356fead10f36fb33115c185c5ccdf29eec19
15
16 PKG_LICENSE:=libselinux-1.0
17 PKG_LICENSE_FILES:=LICENSE
18 PKG_MAINTAINER:=Thomas Petazzoni <thomas.petazzoni@bootlin.com>
19 PKG_CPE_ID:=cpe:/a:selinuxproject:libselinux
20
21 HOST_BUILD_DEPENDS:=libsepol/host musl-fts/host pcre2/host
22
23 include $(INCLUDE_DIR)/package.mk
24 include $(INCLUDE_DIR)/host-build.mk
25
26 LIBSELINUX_UTILS := \
27 avcstat \
28 compute_av \
29 compute_create \
30 compute_member \
31 compute_relabel \
32 getconlist \
33 getdefaultcon \
34 getenforce \
35 getfilecon \
36 getpidcon \
37 getsebool \
38 getseuser \
39 matchpathcon \
40 policyvers \
41 sefcontext_compile \
42 selabel_digest \
43 selabel_get_digests_all_partial_matches \
44 selabel_lookup \
45 selabel_lookup_best_match \
46 selabel_partial_match \
47 selinux_check_access \
48 selinux_check_securetty_context \
49 selinuxenabled \
50 selinuxexeccon \
51 setenforce \
52 setfilecon \
53 togglesebool \
54 validatetrans
55
56 LIBSELINUX_ALTS := \
57 getenforce \
58 getsebool \
59 matchpathcon \
60 selinuxenabled \
61 setenforce
62
63 $(eval $(foreach a,$(LIBSELINUX_ALTS),ALTS_$(a):=300:/usr/sbin/$(a):/usr/sbin/libselinux-$(a)$(newline)))
64
65 define Package/libselinux/Default
66 TITLE:=Runtime SELinux library
67 URL:=http://selinuxproject.org/page/Main_Page
68 endef
69
70 define Package/libselinux
71 $(call Package/libselinux/Default)
72 SECTION:=libs
73 CATEGORY:=Libraries
74 DEPENDS:=+libsepol +libpcre2 +USE_MUSL:musl-fts
75 endef
76
77 define Package/libselinux/description
78 libselinux is the runtime SELinux library that provides
79 interfaces (e.g. library functions for the SELinux kernel
80 APIs like getcon(), other support functions like
81 getseuserbyname()) to SELinux-aware applications. libselinux
82 may use the shared libsepol to manipulate the binary policy
83 if necessary (e.g. to downgrade the policy format to an
84 older version supported by the kernel) when loading policy.
85 endef
86
87 define GenUtilPkg
88 define Package/$(1)
89 $(call Package/libselinux/Default)
90 TITLE+= $(2) utility
91 SECTION:=utils
92 DEPENDS:=+libselinux
93 CATEGORY:=Utilities
94 SUBMENU:=libselinux tools
95 ALTERNATIVES:=$(ALTS_$(2))
96 endef
97
98 define Package/$(1)/description
99 libselinux version of the $(2) utility.
100 endef
101 endef
102
103 $(foreach a,$(LIBSELINUX_UTILS),$(eval $(call GenUtilPkg,libselinux-$(a),$(a))))
104
105 # Needed to link libselinux utilities, which link against
106 # libselinux.so, which indirectly depends on libpcre.so, installed in
107 # $(STAGING_DIR_HOSTPKG).
108 HOST_LDFLAGS += -Wl,-rpath="$(STAGING_DIR_HOSTPKG)/lib"
109
110 HOST_MAKE_FLAGS += \
111 PREFIX=$(STAGING_DIR_HOSTPKG) \
112 SHLIBDIR=$(STAGING_DIR_HOSTPKG)/lib \
113 FTS_LDLIBS=-lfts
114
115 ifeq ($(CONFIG_USE_MUSL),y)
116 MAKE_FLAGS += FTS_LDLIBS=-lfts
117 TARGET_CFLAGS += -D_LARGEFILE64_SOURCE
118 endif
119
120 MAKE_FLAGS += \
121 SHLIBDIR=/usr/lib \
122 OS=Linux
123
124 define Build/Compile
125 $(call Build/Compile/Default,all)
126 endef
127
128 define Build/Install
129 $(call Build/Install/Default,install)
130 endef
131
132 define Build/InstallDev
133 $(INSTALL_DIR) $(1)/usr/include
134 $(CP) $(PKG_INSTALL_DIR)/usr/include/* $(1)/usr/include/
135 $(INSTALL_DIR) $(1)/usr/lib
136 $(CP) $(PKG_INSTALL_DIR)/usr/lib/* $(1)/usr/lib/
137 $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
138 $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libselinux.pc $(1)/usr/lib/pkgconfig/
139 $(SED) 's,/usr/include,$$$${prefix}/include,g' $(1)/usr/lib/pkgconfig/libselinux.pc
140 $(SED) 's,/usr/lib,$$$${exec_prefix}/lib,g' $(1)/usr/lib/pkgconfig/libselinux.pc
141 endef
142
143 define Package/libselinux/install
144 $(INSTALL_DIR) $(1)/usr/lib
145 $(CP) $(PKG_INSTALL_DIR)/usr/lib/libselinux.so.* $(1)/usr/lib/
146 endef
147
148 define BuildUtil
149 define Package/$(1)/install
150 $(INSTALL_DIR) $$(1)/usr/sbin
151 $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/$(2) $$(1)/usr/sbin/$(if $(ALTS_$(2)),libselinux-$(2),$(2))
152 endef
153
154 $$(eval $$(call BuildPackage,$(1)))
155 endef
156
157 $(eval $(call HostBuild))
158 $(eval $(call BuildPackage,libselinux))
159 $(foreach a,$(LIBSELINUX_UTILS),$(eval $(call BuildUtil,libselinux-$(a),$(a))))