summaryrefslogtreecommitdiff
path: root/packages/google-compute-engine-oslogin/Makefile
blob: 67400cde4c6c87b499574c389035914fdb61f036 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
SHELL = /bin/sh

VERSION = 1.5.3

CPPFLAGS = -I/usr/include/json-c
CXXFLAGS = -fPIC -Wall -g
CFLAGS = $(CXXFLAGS) -Wstrict-prototypes

LDFLAGS = -shared -Wl,-soname,$(SONAME)
LDLIBS = -lcurl -ljson-c
PAMLIBS = -lpam $(LDLIBS)

# Paths which should be overrideable.

PREFIX = /usr
LIBDIR = $(PREFIX)/lib
BINDIR = $(PREFIX)/bin
PAMDIR = $(LIBDIR)/security
MANDIR = /usr/share/man

NSS_OSLOGIN_SONAME       = libnss_oslogin.so.2
NSS_CACHE_OSLOGIN_SONAME = libnss_cache_oslogin.so.2

NSS_OSLOGIN              = nss_module/libnss_oslogin-$(VERSION).so
NSS_CACHE_OSLOGIN        = nss_module/libnss_cache_oslogin-$(VERSION).so

PAM_LOGIN                = pam_module/pam_oslogin_login.so
PAM_ADMIN                = pam_module/pam_oslogin_admin.so

BINARIES = google_oslogin_nss_cache google_authorized_keys bin/google_oslogin_control

all : $(NSS_OSLOGIN) $(NSS_CACHE_OSLOGIN) $(PAM_LOGIN) $(PAM_ADMIN) $(BINARIES)

clean :
	rm -f */*.o */*.so google_oslogin_nss_cache google_authorized_keys

.PHONY : all clean install

# NSS modules.

$(NSS_OSLOGIN) : SONAME = $(NSS_OSLOGIN_SONAME)
$(NSS_OSLOGIN) : nss_module/nss_oslogin.o utils/oslogin_utils.o
	$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) $^ -o $@ $(LDLIBS)

$(NSS_CACHE_OSLOGIN) : SONAME = $(NSS_CACHE_OSLOGIN_SONAME)
$(NSS_CACHE_OSLOGIN) : nss_module/nss_cache_oslogin.o nss_module/compat/getpwent_r.o utils/oslogin_utils.o
	$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) $^ -o $@ $(LDLIBS)

# PAM modules

$(PAM_LOGIN) : pam_module/pam_oslogin_login.o utils/oslogin_utils.o
	$(CXX) $(CXXFLAGS) $(CPPFLAGS) -shared $^ -o $@ $(PAMLIBS)

$(PAM_ADMIN) : pam_module/pam_oslogin_admin.o utils/oslogin_utils.o
	$(CXX) $(CXXFLAGS) $(CPPFLAGS) -shared $^ -o $@ $(PAMLIBS)

# Utilities.

google_authorized_keys : authorized_keys/authorized_keys.o utils/oslogin_utils.o
	$(CXX) $(CXXFLAGS) $(CPPFLAGS) $^ -o $@ $(LDLIBS)

google_oslogin_nss_cache: nss_cache/nss_cache.o utils/oslogin_utils.o
	$(CXX) $(CXXFLAGS) $(CPPFLAGS) $^ -o $@ $(LDLIBS)

# Define these to add dependency on header files.

utils/oslogin_utils.o : utils/oslogin_utils.cc utils/oslogin_utils.h

nss_module/nss_cache_oslogin.o : nss_module/nss_cache_oslogin.c nss_module/nss_cache_oslogin.h

install: all
	install -d $(DESTDIR)$(LIBDIR)
	install -d $(DESTDIR)$(PAMDIR)
	install -d $(DESTDIR)$(BINDIR)
	install -d $(DESTDIR)$(MANDIR)/man8
	install -m 0644 -t $(DESTDIR)$(LIBDIR) $(NSS_OSLOGIN) $(NSS_CACHE_OSLOGIN)
	install -m 0644 -t $(DESTDIR)$(PAMDIR) $(PAM_ADMIN) $(PAM_LOGIN)
	install -m 0755 -t $(DESTDIR)$(BINDIR) $(BINARIES)
	install -m 0644 -t $(DESTDIR)$(MANDIR)/man8 nss_module/nss-oslogin.8 nss_module/nss-cache-oslogin.8
	gzip -9 $(DESTDIR)$(MANDIR)/man8/nss-oslogin.8
	gzip -9 $(DESTDIR)$(MANDIR)/man8/nss-cache-oslogin.8
	ln -sf nss-oslogin.8.gz               $(DESTDIR)$(MANDIR)/man8/$(NSS_OSLOGIN_SONAME).8.gz
	ln -sf nss-cache-oslogin.8.gz         $(DESTDIR)$(MANDIR)/man8/$(NSS_CACHE_OSLOGIN_SONAME).8.gz
	ln -sf $(notdir $(NSS_OSLOGIN))       $(DESTDIR)$(LIBDIR)/$(NSS_OSLOGIN_SONAME)
	ln -sf $(notdir $(NSS_CACHE_OSLOGIN)) $(DESTDIR)$(LIBDIR)/$(NSS_CACHE_OSLOGIN_SONAME)
ifdef INSTALL_SELINUX
	install -d $(DESTDIR)/usr/share/selinux/packages
	install -m 0644 -t $(DESTDIR)/usr/share/selinux/packages policy/oslogin.pp
endif