2 CFLAGS := $(CPPFLAGS) -g -Wall -Werror
5 SPECFILE := keyutils.spec
11 SHAREDIR := /usr/share/keyutils
12 MAN1 := /usr/share/man/man1
13 MAN3 := /usr/share/man/man3
14 MAN5 := /usr/share/man/man5
15 MAN8 := /usr/share/man/man8
16 INCLUDEDIR := /usr/include
19 ###############################################################################
21 # Determine the current package version from the specfile
23 ###############################################################################
24 vermajor := $(shell grep "%define vermajor" $(SPECFILE))
25 verminor := $(shell grep "%define verminor" $(SPECFILE))
26 MAJOR := $(word 3,$(vermajor))
27 MINOR := $(word 3,$(verminor))
28 VERSION := $(MAJOR).$(MINOR)
30 ###############################################################################
32 # Determine the current library version from the version script
34 ###############################################################################
35 libversion := $(filter KEYUTILS_%,$(shell grep ^KEYUTILS_ version.lds))
36 libversion := $(lastword $(libversion))
37 libversion := $(lastword $(libversion))
38 APIVERSION := $(subst KEYUTILS_,,$(libversion))
39 vernumbers := $(subst ., ,$(APIVERSION))
40 APIMAJOR := $(firstword $(vernumbers))
42 ARLIB := libkeyutils.a
43 DEVELLIB := libkeyutils.so
44 SONAME := libkeyutils.so.$(APIMAJOR)
45 LIBNAME := libkeyutils.so.$(APIVERSION)
47 ###############################################################################
49 # Guess at the appropriate lib directory and word size
51 ###############################################################################
52 LIBDIR := $(shell ldd /usr/bin/make | grep '\(/libc\)' | sed -e 's!.*\(/.*\)/libc[.].*!\1!')
53 USRLIBDIR := $(patsubst /lib/%,/usr/lib/%,$(LIBDIR))
54 BUILDFOR := $(shell file /usr/bin/make | sed -e 's!.*ELF \(32\|64\)-bit.*!\1!')-bit
58 ifeq ($(BUILDFOR),32-bit)
63 ifeq ($(BUILDFOR),64-bit)
66 USRLIBDIR := /usr/lib64
70 ###############################################################################
72 # This is necessary if glibc doesn't know about the key management error codes
74 ###############################################################################
75 ifeq ($(NO_GLIBC_KEYERR),1)
76 CFLAGS += -DNO_GLIBC_KEYERR
82 ###############################################################################
86 ###############################################################################
87 all: $(DEVELLIB) keyctl request-key key.dns_resolver
89 ###############################################################################
93 ###############################################################################
94 #RPATH = -Wl,-rpath,$(LIBDIR)
102 keyutils.o: keyutils.c keyutils.h Makefile
103 $(CC) $(CPPFLAGS) $(CFLAGS) -UNO_GLIBC_KEYERR -o $@ -c $<
106 $(DEVELLIB): $(SONAME)
109 $(SONAME): $(LIBNAME)
112 LIBVERS := -shared -Wl,-soname,$(SONAME) -Wl,--version-script,version.lds
114 $(LIBNAME): keyutils.os version.lds Makefile
115 $(CC) $(CFLAGS) -fPIC $(LDFLAGS) $(LIBVERS) -o $@ keyutils.os $(LIBLIBS)
117 keyutils.os: keyutils.c keyutils.h Makefile
118 $(CC) $(CFLAGS) -fPIC -o $@ -c $<
120 ###############################################################################
124 ###############################################################################
125 %.o: %.c keyutils.h Makefile
126 $(CC) $(CPPFLAGS) $(CFLAGS) -o $@ -c $<
128 keyctl: keyctl.o $(DEVELLIB)
129 $(CC) -L. $(CFLAGS) $(LDFLAGS) $(RPATH) -o $@ $< -lkeyutils
131 request-key: request-key.o $(DEVELLIB)
132 $(CC) -L. $(CFLAGS) $(LDFLAGS) $(RPATH) -o $@ $< -lkeyutils
134 key.dns_resolver: key.dns_resolver.o $(DEVELLIB)
135 $(CC) -L. $(CFLAGS) $(LDFLAGS) $(RPATH) -o $@ $< -lkeyutils -lresolv
137 ###############################################################################
141 ###############################################################################
144 $(INSTALL) -D -m 0644 $(ARLIB) $(DESTDIR)$(USRLIBDIR)/$(ARLIB)
146 $(INSTALL) -D $(LIBNAME) $(DESTDIR)$(LIBDIR)/$(LIBNAME)
147 $(LNS) $(LIBNAME) $(DESTDIR)$(LIBDIR)/$(SONAME)
148 mkdir -p $(DESTDIR)$(USRLIBDIR)
149 $(LNS) $(LIBDIR)/$(SONAME) $(DESTDIR)$(USRLIBDIR)/$(DEVELLIB)
150 $(INSTALL) -D keyctl $(DESTDIR)$(BINDIR)/keyctl
151 $(INSTALL) -D request-key $(DESTDIR)$(SBINDIR)/request-key
152 $(INSTALL) -D request-key-debug.sh $(DESTDIR)$(SHAREDIR)/request-key-debug.sh
153 $(INSTALL) -D key.dns_resolver $(DESTDIR)$(SBINDIR)/key.dns_resolver
154 $(INSTALL) -D -m 0644 request-key.conf $(DESTDIR)$(ETCDIR)/request-key.conf
155 $(INSTALL) -D -m 0644 keyctl.1 $(DESTDIR)$(MAN1)/keyctl.1
156 $(INSTALL) -D -m 0644 keyctl_chown.3 $(DESTDIR)$(MAN3)/keyctl_chown.3
157 $(INSTALL) -D -m 0644 keyctl_clear.3 $(DESTDIR)$(MAN3)/keyctl_clear.3
158 $(INSTALL) -D -m 0644 keyctl_describe.3 $(DESTDIR)$(MAN3)/keyctl_describe.3
159 $(LNS) keyctl_describe.3 $(DESTDIR)$(MAN3)/keyctl_describe_alloc.3
160 $(INSTALL) -D -m 0644 keyctl_get_keyring_ID.3 $(DESTDIR)$(MAN3)/keyctl_get_keyring_ID.3
161 $(INSTALL) -D -m 0644 keyctl_get_security.3 $(DESTDIR)$(MAN3)/keyctl_get_security.3
162 $(LNS) keyctl_get_security.3 $(DESTDIR)$(MAN3)/keyctl_get_security_alloc.3
163 $(INSTALL) -D -m 0644 keyctl_instantiate.3 $(DESTDIR)$(MAN3)/keyctl_instantiate.3
164 $(LNS) keyctl_instantiate.3 $(DESTDIR)$(MAN3)/keyctl_instantiate_iov.3
165 $(LNS) keyctl_instantiate.3 $(DESTDIR)$(MAN3)/keyctl_reject.3
166 $(LNS) keyctl_instantiate.3 $(DESTDIR)$(MAN3)/keyctl_negate.3
167 $(LNS) keyctl_instantiate.3 $(DESTDIR)$(MAN3)/keyctl_assume_authority.3
168 $(INSTALL) -D -m 0644 keyctl_join_session_keyring.3 $(DESTDIR)$(MAN3)/keyctl_join_session_keyring.3
169 $(INSTALL) -D -m 0644 keyctl_link.3 $(DESTDIR)$(MAN3)/keyctl_link.3
170 $(LNS) keyctl_link.3 $(DESTDIR)$(MAN3)/keyctl_unlink.3
171 $(INSTALL) -D -m 0644 keyctl_read.3 $(DESTDIR)$(MAN3)/keyctl_read.3
172 $(LNS) keyctl_read.3 $(DESTDIR)$(MAN3)/keyctl_read_alloc.3
173 $(INSTALL) -D -m 0644 keyctl_revoke.3 $(DESTDIR)$(MAN3)/keyctl_revoke.3
174 $(INSTALL) -D -m 0644 keyctl_search.3 $(DESTDIR)$(MAN3)/keyctl_search.3
175 $(INSTALL) -D -m 0644 keyctl_setperm.3 $(DESTDIR)$(MAN3)/keyctl_setperm.3
176 $(INSTALL) -D -m 0644 keyctl_set_reqkey_keyring.3 $(DESTDIR)$(MAN3)/keyctl_set_reqkey_keyring.3
177 $(INSTALL) -D -m 0644 keyctl_set_timeout.3 $(DESTDIR)$(MAN3)/keyctl_set_timeout.3
178 $(INSTALL) -D -m 0644 keyctl_update.3 $(DESTDIR)$(MAN3)/keyctl_update.3
179 $(INSTALL) -D -m 0644 recursive_key_scan.3 $(DESTDIR)$(MAN3)/recursive_key_scan.3
180 $(LNS) recursive_key_scan.3 $(DESTDIR)$(MAN3)/recursive_session_key_scan.3
181 $(INSTALL) -D -m 0644 request-key.conf.5 $(DESTDIR)$(MAN5)/request-key.conf.5
182 $(INSTALL) -D -m 0644 request-key.8 $(DESTDIR)$(MAN8)/request-key.8
183 $(INSTALL) -D -m 0644 key.dns_resolver.8 $(DESTDIR)$(MAN8)/key.dns_resolver.8
184 $(INSTALL) -D -m 0644 keyutils.h $(DESTDIR)$(INCLUDEDIR)/keyutils.h
186 ###############################################################################
190 ###############################################################################
193 $(RM) keyctl request-key key.dns_resolver
195 $(RM) debugfiles.list debugsources.list
200 ###############################################################################
204 ###############################################################################
205 TARBALL := keyutils-$(VERSION).tar.bz2
206 SRCBALL := rpmbuild/SOURCES/$(TARBALL)
208 dist := $(word 2,$(shell grep "%dist" /etc/rpm/macros.dist))
209 release := $(word 2,$(shell grep ^Release: $(SPECFILE)))
210 release := $(subst %{?dist},$(dist),$(release))
211 rpmver := $(VERSION)-$(release)
212 SRPM := rpmbuild/SRPMS/keyutils-$(rpmver).src.rpm
215 --define "_srcrpmdir $(PWD)/rpmbuild/SRPMS" \
216 --define "_rpmdir $(PWD)/rpmbuild/RPMS" \
217 --define "_sourcedir $(PWD)/rpmbuild/SOURCES" \
218 --define "_specdir $(PWD)/rpmbuild/SPECS" \
219 --define "_builddir $(PWD)/rpmbuild/BUILD" \
220 --define "_buildrootdir $(PWD)/rpmbuild/BUILDROOT"
223 mkdir -p rpmbuild/{SPECS,SOURCES,BUILD,BUILDROOT,RPMS,SRPMS}
224 git archive --prefix=keyutils-$(VERSION)/ --format tar -o $(SRCBALL) HEAD
225 rpmbuild -ts $(SRCBALL) --define "_srcrpmdir rpmbuild/SRPMS"
226 rpmbuild --rebuild $(SRPM) $(RPMBUILDDIRS)
228 ###############################################################################
232 ###############################################################################
234 @echo VERSION=$(VERSION)
235 @echo APIVERSION=$(APIVERSION)
236 @echo LIBDIR=$(LIBDIR)
237 @echo USRLIBDIR=$(USRLIBDIR)
238 @echo BUILDFOR=$(BUILDFOR)
239 @echo SONAME=$(SONAME)
240 @echo LIBNAME=$(LIBNAME)