1SHELL = /bin/sh 2 3BASENAME = oslogin 4NAME = google-compute-engine-$(BASENAME) 5MAJOR = 1 6MINOR = 5 7REVISION = 3 8 9LIBNSS_CACHE_OSLOGIN = libnss_cache_$(BASENAME) 10LIBNSS_CACHE_OSLOGIN_NAME = libnss_cache_$(NAME)-$(MAJOR).$(MINOR).$(REVISION).so 11LIBNSS_CACHE_OSLOGIN_SONAME = $(LIBNSS_CACHE_OSLOGIN).so.2 12NSS_LIBRARY_NAME = libnss_$(NAME)-$(MAJOR).$(MINOR).$(REVISION).so 13NSS_LIBRARY_SONAME = libnss_$(BASENAME).so.2 14NSS_INSTALL_PATH = /lib 15PAM_INSTALL_PATH = /lib/security 16AUTHKEYS_INSTALL_PATH = /usr/bin 17 18JSON_INCLUDE_PATH = /usr/include/json-c 19INCLUDE_FLAGS = -I$(JSON_INCLUDE_PATH) 20 21CXX ?= g++ 22CXXFLAGS += -fPIC# -Wall 23CC ?= gcc 24PAMFLAGS = $(LDFLAGS) $(INCLUDE_FLAGS) -shared 25NSSFLAGS = $(LDFLAGS) $(INCLUDE_FLAGS) -shared -Wl,-soname,$(NSS_LIBRARY_SONAME) 26LIBNSSFLAGS = $(LDFLAGS) -Wall -Wstrict-prototypes -fPIC -g 27LIBNSS_SO_FLAGS = $(LIBNSSFLAGS) -shared -Wl,-soname,$(LIBNSS_CACHE_OSLOGIN_SONAME) 28 29# UTILS 30UTILS_DIR = utils 31UTILS_SRC = $(UTILS_DIR)/$(BASENAME)_utils.cc 32UTILS = $(UTILS_DIR)/$(BASENAME)_utils.o 33 34# AUTHORIZED KEYS 35AUTHKEYS_DIR = authorized_keys 36AUTHKEYS_SRC = $(AUTHKEYS_DIR)/authorized_keys.cc 37AUTHKEYS_BIN = google_authorized_keys 38 39# NSS 40NSS = nss_$(BASENAME) 41NSS_DIR = nss_module 42NSS_SRC = $(NSS_DIR)/$(NSS).cc 43 44# NSS CACHE 45NSS_CACHE = nss_cache 46NSS_CACHE_DIR = nss_cache 47NSS_CACHE_BIN = google_$(BASENAME)_nss_cache 48NSS_CACHE_SRC = $(NSS_CACHE_DIR)/$(NSS_CACHE).cc 49 50# LIBNSS OSLOGIN CACHE 51LIBNSS_CACHE_OSLOGIN_DIR = $(LIBNSS_CACHE_OSLOGIN) 52LIBNSS_CACHE = nss_cache_$(BASENAME) 53LIBNSS_CACHE_SRC = $(LIBNSS_CACHE_OSLOGIN_DIR)/$(LIBNSS_CACHE).c 54LIBNSS_CACHE_OBJ = $(LIBNSS_CACHE_OSLOGIN_DIR)/$(LIBNSS_CACHE).o 55LIBNSS_COMPAT = compat/getpwent_r 56LIBNSS_COMPAT_SRC = $(LIBNSS_CACHE_OSLOGIN_DIR)/$(LIBNSS_COMPAT).c 57LIBNSS_COMPAT_OBJ = $(LIBNSS_CACHE_OSLOGIN_DIR)/$(LIBNSS_COMPAT).o 58 59# PAM 60PAM = pam_$(BASENAME) 61PAM_DIR = pam_module 62PAM_ADMIN = $(PAM)_admin 63PAM_ADMIN_SRC = $(PAM_DIR)/$(PAM_ADMIN).cc 64PAM_ADMIN_OBJ = $(PAM_DIR)/$(PAM_ADMIN).o 65PAM_ADMIN_MOD = $(PAM_ADMIN).so 66PAM_LOGIN = $(PAM)_login 67PAM_LOGIN_SRC = $(PAM_DIR)/$(PAM_LOGIN).cc 68PAM_LOGIN_OBJ = $(PAM_DIR)/$(PAM_LOGIN).o 69PAM_LOGIN_MOD = $(PAM_LOGIN).so 70 71# HELPER SCRIPTS 72BIN_DIR = bin 73OSLOGIN_HELPER = $(BIN_DIR)/google_oslogin_control 74BIN_INSTALL_PATH = /usr/bin 75 76# SELINUX POLICY 77INSTALL_SELINUX = 78POLICY_DIR = policy 79SELINUX_INSTALL_NAME = oslogin.pp 80SELINUX_MODULE = $(POLICY_DIR)/$(SELINUX_INSTALL_NAME) 81SELINUX_INSTALL_PATH = /usr/share/selinux/packages 82 83LIBS = -lcurl -ljson-c 84PAM_LIBS = -lpam $(LIBS) 85 86ifdef INSTALL_SELINUX 87all: $(NSS) $(NSS_CACHE_BIN) $(LIBNSS_CACHE_OSLOGIN_NAME) $(PAM) $(AUTHKEYS_BIN) 88else 89all: $(NSS) $(NSS_CACHE_BIN) $(LIBNSS_CACHE_OSLOGIN_NAME) $(PAM) $(AUTHKEYS_BIN) 90endif 91 92$(NSS): $(NSS_LIBRARY_SOURCE) $(UTILS) 93 $(CXX) $(CXXFLAGS) $(NSSFLAGS) -o $(NSS_LIBRARY_NAME) \ 94 $(NSS_SRC) $(UTILS) $(LIBS) 95 96$(NSS_CACHE_BIN): $(NSS_CACHE_SRC) $(UTILS_SRC) 97 $(CXX) $(CXXFLAGS) $(LDFLAGS) $(INCLUDE_FLAGS) -o $(NSS_CACHE_BIN) $(NSS_CACHE_SRC) $(UTILS_SRC) $(LIBS) 98 99$(LIBNSS_CACHE_OSLOGIN_NAME): $(LIBNSS_CACHE_OBJ) $(LIBNSS_COMPAT_OBJ) 100 $(CXX) $(LIBNSS_SO_FLAGS) -o $(LIBNSS_CACHE_OSLOGIN_NAME) $(LIBNSS_CACHE_OBJ) $(LIBNSS_COMPAT_OBJ) 101 102$(LIBNSS_CACHE_OBJ): $(LIBNSS_CACHE_SRC) 103 $(CC) $(LIBNSSFLAGS) -c -o $(LIBNSS_CACHE_OBJ) $(LIBNSS_CACHE_SRC) 104 105$(LIBNSS_COMPAT_OBJ): $(LIBNSS_COMPAT_SRC) 106 $(CC) $(LIBNSSFLAGS) -c -o $(LIBNSS_COMPAT_OBJ) $(LIBNSS_COMPAT_SRC) 107 108$(PAM): $(PAM_ADMIN_MOD) $(PAM_LOGIN_MOD) 109 110$(PAM_LOGIN_MOD): $(PAM_LOGIN_OBJ) $(UTILS) 111 $(CXX) $(PAMFLAGS) -o $(PAM_LOGIN_MOD) $(PAM_LOGIN_OBJ) $(UTILS) $(PAM_LIBS) 112 113$(PAM_ADMIN_MOD): $(PAM_ADMIN_OBJ) $(UTILS) 114 $(CXX) $(PAMFLAGS) -o $(PAM_ADMIN_MOD) $(PAM_ADMIN_OBJ) $(UTILS) $(PAM_LIBS) 115 116$(PAM_LOGIN_OBJ): $(PAM_LOGIN_SRC) 117 $(CXX) $(CXXFLAGS) -c $(PAM_LOGIN_SRC) -o $(PAM_LOGIN_OBJ) 118 119$(PAM_ADMIN_OBJ): $(PAM_ADMIN_SRC) 120 $(CXX) $(CXXFLAGS) -c $(PAM_ADMIN_SRC) -o $(PAM_ADMIN_OBJ) 121 122$(AUTHKEYS_BIN): $(AUTHKEYS_SRC) $(UTILS_SRC) 123 $(CXX) $(CXXFLAGS) $(LDFLAGS) $(INCLUDE_FLAGS) -o $(AUTHKEYS_BIN) $(AUTHKEYS_SRC) $(UTILS_SRC) $(LIBS) 124 125$(UTILS): $(UTILS_SRC) 126 $(CXX) $(CXXFLAGS) $(INCLUDE_FLAGS) -c $(UTILS_SRC) -o $(UTILS) 127 128install: $(NSS_LIBRARY_NAME) $(LIBNSS_OSLOGIN_CACHE_NAME) $(PAM_ADMIN_MOD) $(PAM_LOGIN_MOD) $(AUTHKEYS_BIN) $(NSS_CACHE_BIN) 129 mkdir -p $(DESTDIR)$(PREFIX)/$(NSS_INSTALL_PATH) 130 mkdir -p $(DESTDIR)$(PREFIX)/$(PAM_INSTALL_PATH) 131 mkdir -p $(DESTDIR)$(PREFIX)/$(AUTHKEYS_INSTALL_PATH) 132 mkdir -p $(DESTDIR)$(PREFIX)/$(BIN_INSTALL_PATH) 133 install -m 0644 $(LIBNSS_CACHE_OSLOGIN_NAME) $(DESTDIR)$(PREFIX)/$(NSS_INSTALL_PATH) 134 install -m 0644 $(NSS_LIBRARY_NAME) $(DESTDIR)$(PREFIX)/$(NSS_INSTALL_PATH) 135 install -m 0644 $(PAM_ADMIN_MOD) $(PAM_LOGIN_MOD) $(DESTDIR)$(PREFIX)/$(PAM_INSTALL_PATH) 136 install -m 0755 $(AUTHKEYS_BIN) $(DESTDIR)$(PREFIX)/$(AUTHKEYS_INSTALL_PATH) 137 install -m 0755 $(OSLOGIN_HELPER) $(DESTDIR)$(PREFIX)/$(BIN_INSTALL_PATH) 138 install -m 0755 $(NSS_CACHE_BIN) $(DESTDIR)$(PREFIX)/$(BIN_INSTALL_PATH) 139ifdef MAKE_LINKS 140 ln -sf $(LIBNSS_CACHE_OSLOGIN_NAME) $(DESTDIR)$(PREFIX)/$(NSS_INSTALL_PATH)/$(LIBNSS_CACHE_OSLOGIN_SONAME) 141 ln -sf $(NSS_LIBRARY_NAME) $(DESTDIR)$(PREFIX)/$(NSS_INSTALL_PATH)/$(NSS_LIBRARY_SONAME) 142endif 143ifdef INSTALL_SELINUX 144 mkdir -p $(DESTDIR)$(PREFIX)/$(SELINUX_INSTALL_PATH) 145 install -T -m 0644 $(SELINUX_MODULE) $(DESTDIR)$(PREFIX)/$(SELINUX_INSTALL_PATH)/$(SELINUX_INSTALL_NAME) 146endif 147 148uninstall: 149 rm -f $(DESTDIR)$(PREFIX)/$(NSS_INSTALL_PATH)/$(LIBNSS_CACHE_OSLOGIN_NAME) 150 rm -f $(DESTDIR)$(PREFIX)/$(NSS_INSTALL_PATH)/$(NSS_LIBRARY_NAME) 151 rm -f $(DESTDIR)$(PREFIX)/$(PAM_INSTALL_PATH)/$(PAM_ADMIN_MOD) 152 rm -f $(DESTDIR)$(PREFIX)/$(PAM_INSTALL_PATH)/$(PAM_LOGIN_MOD) 153 rm -f $(DESTDIR)$(PREFIX)/$(AUTHKEYS_INSTALL_PATH)/$(AUTHKEYS_BIN) 154 rm -f $(DESTDIR)$(PREFIX)/$(BIN_INSTALL_PATH)/$(OSLOGIN_HELPER) 155 rm -f $(DESTDIR)$(PREFIX)/$(BIN_INSTALL_PATH)/$(NSS_CACHE_BIN) 156clean: 157 rm -f $(UTILS) $(NSS_LIBRARY_NAME) $(LIBNSS_CACHE_OSLOGIN_NAME) $(LIBNSS_CACHE_OBJ) $(LIBNSS_COMPAT_OBJ) $(PAM_ADMIN_OBJ) $(PAM_ADMIN_MOD) $(PAM_LOGIN_OBJ) $(PAM_LOGIN_MOD) $(AUTHKEYS_BIN) $(NSS_CACHE_BIN) 158 159