2
CFLAGS := -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
TARBALL := keyutils-$(VERSION).tar.bz2
32
###############################################################################
34
# Determine the current library version from the version script
36
###############################################################################
37
libversion := $(filter KEYUTILS_%,$(shell grep ^KEYUTILS_ version.lds))
38
libversion := $(lastword $(libversion))
39
libversion := $(lastword $(libversion))
40
APIVERSION := $(subst KEYUTILS_,,$(libversion))
41
vernumbers := $(subst ., ,$(APIVERSION))
42
APIMAJOR := $(firstword $(vernumbers))
44
ARLIB := libkeyutils.a
45
DEVELLIB := libkeyutils.so
46
SONAME := libkeyutils.so.$(APIMAJOR)
47
LIBNAME := libkeyutils.so.$(APIVERSION)
49
###############################################################################
51
# Guess at the appropriate lib directory and word size
53
###############################################################################
54
LIBDIR := $(shell ldd /usr/bin/make | grep '\(/libc\)' | sed -e 's!.*\(/.*\)/libc[.].*!\1!')
55
USRLIBDIR := $(patsubst /lib/%,/usr/lib/%,$(LIBDIR))
56
BUILDFOR := $(shell file /usr/bin/make | sed -e 's!.*ELF \(32\|64\)-bit.*!\1!')-bit
60
ifeq ($(BUILDFOR),32-bit)
64
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
VCPPFLAGS := -DPKGBUILD="\"$(shell date -u +%F)\""
103
VCPPFLAGS += -DPKGVERSION="\"keyutils-$(VERSION)\""
104
VCPPFLAGS += -DAPIVERSION="\"libkeyutils-$(APIVERSION)\""
106
keyutils.o: keyutils.c keyutils.h Makefile
107
$(CC) $(CPPFLAGS) $(VCPPFLAGS) $(CFLAGS) -UNO_GLIBC_KEYERR -o $@ -c $<
110
$(DEVELLIB): $(SONAME)
113
$(SONAME): $(LIBNAME)
116
LIBVERS := -shared -Wl,-soname,$(SONAME) -Wl,--version-script,version.lds
118
$(LIBNAME): keyutils.os version.lds Makefile
119
$(CC) $(CFLAGS) -fPIC $(LDFLAGS) $(LIBVERS) -o $@ keyutils.os $(LIBLIBS)
121
keyutils.os: keyutils.c keyutils.h Makefile
122
$(CC) $(CPPFLAGS) $(VCPPFLAGS) $(CFLAGS) -fPIC -o $@ -c $<
124
###############################################################################
128
###############################################################################
129
%.o: %.c keyutils.h Makefile
130
$(CC) $(CPPFLAGS) $(CFLAGS) -o $@ -c $<
132
keyctl: keyctl.o $(DEVELLIB)
133
$(CC) -L. $(CFLAGS) $(LDFLAGS) $(RPATH) -o $@ $< -lkeyutils
135
request-key: request-key.o $(DEVELLIB)
136
$(CC) -L. $(CFLAGS) $(LDFLAGS) $(RPATH) -o $@ $< -lkeyutils
138
key.dns_resolver: key.dns_resolver.o $(DEVELLIB)
139
$(CC) -L. $(CFLAGS) $(LDFLAGS) $(RPATH) -o $@ $< -lkeyutils -lresolv
141
###############################################################################
145
###############################################################################
148
$(INSTALL) -D -m 0644 $(ARLIB) $(DESTDIR)$(USRLIBDIR)/$(ARLIB)
150
$(INSTALL) -D $(LIBNAME) $(DESTDIR)$(LIBDIR)/$(LIBNAME)
151
$(LNS) $(LIBNAME) $(DESTDIR)$(LIBDIR)/$(SONAME)
152
mkdir -p $(DESTDIR)$(USRLIBDIR)
153
$(LNS) $(LIBDIR)/$(SONAME) $(DESTDIR)$(USRLIBDIR)/$(DEVELLIB)
154
$(INSTALL) -D keyctl $(DESTDIR)$(BINDIR)/keyctl
155
$(INSTALL) -D request-key $(DESTDIR)$(SBINDIR)/request-key
156
$(INSTALL) -D request-key-debug.sh $(DESTDIR)$(SHAREDIR)/request-key-debug.sh
157
$(INSTALL) -D key.dns_resolver $(DESTDIR)$(SBINDIR)/key.dns_resolver
158
$(INSTALL) -D -m 0644 request-key.conf $(DESTDIR)$(ETCDIR)/request-key.conf
159
mkdir -p $(DESTDIR)$(ETCDIR)/request-key.d
160
$(INSTALL) -D -m 0644 keyctl.1 $(DESTDIR)$(MAN1)/keyctl.1
161
$(INSTALL) -D -m 0644 keyctl_chown.3 $(DESTDIR)$(MAN3)/keyctl_chown.3
162
$(INSTALL) -D -m 0644 keyctl_clear.3 $(DESTDIR)$(MAN3)/keyctl_clear.3
163
$(INSTALL) -D -m 0644 keyctl_describe.3 $(DESTDIR)$(MAN3)/keyctl_describe.3
164
$(LNS) keyctl_describe.3 $(DESTDIR)$(MAN3)/keyctl_describe_alloc.3
165
$(INSTALL) -D -m 0644 keyctl_get_keyring_ID.3 $(DESTDIR)$(MAN3)/keyctl_get_keyring_ID.3
166
$(INSTALL) -D -m 0644 keyctl_get_security.3 $(DESTDIR)$(MAN3)/keyctl_get_security.3
167
$(LNS) keyctl_get_security.3 $(DESTDIR)$(MAN3)/keyctl_get_security_alloc.3
168
$(INSTALL) -D -m 0644 keyctl_instantiate.3 $(DESTDIR)$(MAN3)/keyctl_instantiate.3
169
$(LNS) keyctl_instantiate.3 $(DESTDIR)$(MAN3)/keyctl_instantiate_iov.3
170
$(LNS) keyctl_instantiate.3 $(DESTDIR)$(MAN3)/keyctl_reject.3
171
$(LNS) keyctl_instantiate.3 $(DESTDIR)$(MAN3)/keyctl_negate.3
172
$(LNS) keyctl_instantiate.3 $(DESTDIR)$(MAN3)/keyctl_assume_authority.3
173
$(INSTALL) -D -m 0644 keyctl_join_session_keyring.3 $(DESTDIR)$(MAN3)/keyctl_join_session_keyring.3
174
$(INSTALL) -D -m 0644 keyctl_link.3 $(DESTDIR)$(MAN3)/keyctl_link.3
175
$(LNS) keyctl_link.3 $(DESTDIR)$(MAN3)/keyctl_unlink.3
176
$(INSTALL) -D -m 0644 keyctl_read.3 $(DESTDIR)$(MAN3)/keyctl_read.3
177
$(LNS) keyctl_read.3 $(DESTDIR)$(MAN3)/keyctl_read_alloc.3
178
$(INSTALL) -D -m 0644 keyctl_revoke.3 $(DESTDIR)$(MAN3)/keyctl_revoke.3
179
$(INSTALL) -D -m 0644 keyctl_search.3 $(DESTDIR)$(MAN3)/keyctl_search.3
180
$(INSTALL) -D -m 0644 keyctl_setperm.3 $(DESTDIR)$(MAN3)/keyctl_setperm.3
181
$(INSTALL) -D -m 0644 keyctl_set_reqkey_keyring.3 $(DESTDIR)$(MAN3)/keyctl_set_reqkey_keyring.3
182
$(INSTALL) -D -m 0644 keyctl_set_timeout.3 $(DESTDIR)$(MAN3)/keyctl_set_timeout.3
183
$(INSTALL) -D -m 0644 keyctl_update.3 $(DESTDIR)$(MAN3)/keyctl_update.3
184
$(INSTALL) -D -m 0644 recursive_key_scan.3 $(DESTDIR)$(MAN3)/recursive_key_scan.3
185
$(LNS) recursive_key_scan.3 $(DESTDIR)$(MAN3)/recursive_session_key_scan.3
186
$(INSTALL) -D -m 0644 request-key.conf.5 $(DESTDIR)$(MAN5)/request-key.conf.5
187
$(INSTALL) -D -m 0644 request-key.8 $(DESTDIR)$(MAN8)/request-key.8
188
$(INSTALL) -D -m 0644 key.dns_resolver.8 $(DESTDIR)$(MAN8)/key.dns_resolver.8
189
$(INSTALL) -D -m 0644 keyutils.h $(DESTDIR)$(INCLUDEDIR)/keyutils.h
191
###############################################################################
195
###############################################################################
199
###############################################################################
203
###############################################################################
205
$(MAKE) -C tests clean
207
$(RM) keyctl request-key key.dns_resolver
209
$(RM) debugfiles.list debugsources.list
214
###############################################################################
218
###############################################################################
220
git archive --prefix=keyutils-$(VERSION)/ --format tar -o $(TARBALL) HEAD
224
###############################################################################
228
###############################################################################
229
SRCBALL := rpmbuild/SOURCES/$(TARBALL)
232
dist := $(word 2,$(shell grep "%dist" /etc/rpm/macros.dist))
233
release := $(word 2,$(shell grep ^Release: $(SPECFILE)))
234
release := $(subst %{?dist},$(dist),$(release))
235
release := $(subst %{?buildid},$(BUILDID),$(release))
236
rpmver := $(VERSION)-$(release)
237
SRPM := rpmbuild/SRPMS/keyutils-$(rpmver).src.rpm
240
--define "_srcrpmdir $(CURDIR)/rpmbuild/SRPMS" \
241
--define "_rpmdir $(CURDIR)/rpmbuild/RPMS" \
242
--define "_sourcedir $(CURDIR)/rpmbuild/SOURCES" \
243
--define "_specdir $(CURDIR)/rpmbuild/SPECS" \
244
--define "_builddir $(CURDIR)/rpmbuild/BUILD" \
245
--define "_buildrootdir $(CURDIR)/rpmbuild/BUILDROOT"
248
--define "buildid $(BUILDID)"
253
mkdir -p rpmbuild/{SPECS,SOURCES,BUILD,BUILDROOT,RPMS,SRPMS}
254
git archive --prefix=keyutils-$(VERSION)/ --format tar -o $(SRCBALL) HEAD
255
rpmbuild -ts $(SRCBALL) --define "_srcrpmdir rpmbuild/SRPMS" $(RPMFLAGS)
256
rpmbuild --rebuild $(SRPM) $(RPMBUILDDIRS) $(RPMFLAGS)
259
rpmlint $(SRPM) $(CURDIR)/rpmbuild/RPMS/*/keyutils-{,libs-,libs-devel-,debuginfo-}$(rpmver).*.rpm
261
###############################################################################
265
###############################################################################
267
@echo VERSION=$(VERSION)
268
@echo APIVERSION=$(APIVERSION)
269
@echo LIBDIR=$(LIBDIR)
270
@echo USRLIBDIR=$(USRLIBDIR)
271
@echo BUILDFOR=$(BUILDFOR)
272
@echo SONAME=$(SONAME)
273
@echo LIBNAME=$(LIBNAME)