SHELL = /bin/sh BASENAME = oslogin NAME = google-compute-engine-$(BASENAME) MAJOR = 1 MINOR = 5 REVISION = 3 LIBNSS_CACHE_OSLOGIN = libnss_cache_$(BASENAME) LIBNSS_CACHE_OSLOGIN_NAME = libnss_cache_$(NAME)-$(MAJOR).$(MINOR).$(REVISION).so LIBNSS_CACHE_OSLOGIN_SONAME = $(LIBNSS_CACHE_OSLOGIN).so.2 NSS_LIBRARY_NAME = libnss_$(NAME)-$(MAJOR).$(MINOR).$(REVISION).so NSS_LIBRARY_SONAME = libnss_$(BASENAME).so.2 NSS_INSTALL_PATH = /lib PAM_INSTALL_PATH = /lib/security AUTHKEYS_INSTALL_PATH = /usr/bin JSON_INCLUDE_PATH = /usr/include/json-c INCLUDE_FLAGS = -I$(JSON_INCLUDE_PATH) CXX ?= g++ CXXFLAGS += -fPIC# -Wall CC ?= gcc PAMFLAGS = $(LDFLAGS) $(INCLUDE_FLAGS) -shared NSSFLAGS = $(LDFLAGS) $(INCLUDE_FLAGS) -shared -Wl,-soname,$(NSS_LIBRARY_SONAME) LIBNSSFLAGS = $(LDFLAGS) -Wall -Wstrict-prototypes -fPIC -g LIBNSS_SO_FLAGS = $(LIBNSSFLAGS) -shared -Wl,-soname,$(LIBNSS_CACHE_OSLOGIN_SONAME) # UTILS UTILS_DIR = utils UTILS_SRC = $(UTILS_DIR)/$(BASENAME)_utils.cc UTILS = $(UTILS_DIR)/$(BASENAME)_utils.o # AUTHORIZED KEYS AUTHKEYS_DIR = authorized_keys AUTHKEYS_SRC = $(AUTHKEYS_DIR)/authorized_keys.cc AUTHKEYS_BIN = google_authorized_keys # NSS NSS = nss_$(BASENAME) NSS_DIR = nss_module NSS_SRC = $(NSS_DIR)/$(NSS).cc # NSS CACHE NSS_CACHE = nss_cache NSS_CACHE_DIR = nss_cache NSS_CACHE_BIN = google_$(BASENAME)_nss_cache NSS_CACHE_SRC = $(NSS_CACHE_DIR)/$(NSS_CACHE).cc # LIBNSS OSLOGIN CACHE LIBNSS_CACHE_OSLOGIN_DIR = $(LIBNSS_CACHE_OSLOGIN) LIBNSS_CACHE = nss_cache_$(BASENAME) LIBNSS_CACHE_SRC = $(LIBNSS_CACHE_OSLOGIN_DIR)/$(LIBNSS_CACHE).c LIBNSS_CACHE_OBJ = $(LIBNSS_CACHE_OSLOGIN_DIR)/$(LIBNSS_CACHE).o LIBNSS_COMPAT = compat/getpwent_r LIBNSS_COMPAT_SRC = $(LIBNSS_CACHE_OSLOGIN_DIR)/$(LIBNSS_COMPAT).c LIBNSS_COMPAT_OBJ = $(LIBNSS_CACHE_OSLOGIN_DIR)/$(LIBNSS_COMPAT).o # PAM PAM = pam_$(BASENAME) PAM_DIR = pam_module PAM_ADMIN = $(PAM)_admin PAM_ADMIN_SRC = $(PAM_DIR)/$(PAM_ADMIN).cc PAM_ADMIN_OBJ = $(PAM_DIR)/$(PAM_ADMIN).o PAM_ADMIN_MOD = $(PAM_ADMIN).so PAM_LOGIN = $(PAM)_login PAM_LOGIN_SRC = $(PAM_DIR)/$(PAM_LOGIN).cc PAM_LOGIN_OBJ = $(PAM_DIR)/$(PAM_LOGIN).o PAM_LOGIN_MOD = $(PAM_LOGIN).so # HELPER SCRIPTS BIN_DIR = bin OSLOGIN_HELPER = $(BIN_DIR)/google_oslogin_control BIN_INSTALL_PATH = /usr/bin # SELINUX POLICY INSTALL_SELINUX = POLICY_DIR = policy SELINUX_INSTALL_NAME = oslogin.pp SELINUX_MODULE = $(POLICY_DIR)/$(SELINUX_INSTALL_NAME) SELINUX_INSTALL_PATH = /usr/share/selinux/packages LIBS = -lcurl -ljson-c PAM_LIBS = -lpam $(LIBS) ifdef INSTALL_SELINUX all: $(NSS) $(NSS_CACHE_BIN) $(LIBNSS_CACHE_OSLOGIN_NAME) $(PAM) $(AUTHKEYS_BIN) else all: $(NSS) $(NSS_CACHE_BIN) $(LIBNSS_CACHE_OSLOGIN_NAME) $(PAM) $(AUTHKEYS_BIN) endif $(NSS): $(NSS_LIBRARY_SOURCE) $(UTILS) $(CXX) $(CXXFLAGS) $(NSSFLAGS) -o $(NSS_LIBRARY_NAME) \ $(NSS_SRC) $(UTILS) $(LIBS) $(NSS_CACHE_BIN): $(NSS_CACHE_SRC) $(UTILS_SRC) $(CXX) $(CXXFLAGS) $(LDFLAGS) $(INCLUDE_FLAGS) -o $(NSS_CACHE_BIN) $(NSS_CACHE_SRC) $(UTILS_SRC) $(LIBS) $(LIBNSS_CACHE_OSLOGIN_NAME): $(LIBNSS_CACHE_OBJ) $(LIBNSS_COMPAT_OBJ) $(CXX) $(LIBNSS_SO_FLAGS) -o $(LIBNSS_CACHE_OSLOGIN_NAME) $(LIBNSS_CACHE_OBJ) $(LIBNSS_COMPAT_OBJ) $(LIBNSS_CACHE_OBJ): $(LIBNSS_CACHE_SRC) $(CC) $(LIBNSSFLAGS) -c -o $(LIBNSS_CACHE_OBJ) $(LIBNSS_CACHE_SRC) $(LIBNSS_COMPAT_OBJ): $(LIBNSS_COMPAT_SRC) $(CC) $(LIBNSSFLAGS) -c -o $(LIBNSS_COMPAT_OBJ) $(LIBNSS_COMPAT_SRC) $(PAM): $(PAM_ADMIN_MOD) $(PAM_LOGIN_MOD) $(PAM_LOGIN_MOD): $(PAM_LOGIN_OBJ) $(UTILS) $(CXX) $(PAMFLAGS) -o $(PAM_LOGIN_MOD) $(PAM_LOGIN_OBJ) $(UTILS) $(PAM_LIBS) $(PAM_ADMIN_MOD): $(PAM_ADMIN_OBJ) $(UTILS) $(CXX) $(PAMFLAGS) -o $(PAM_ADMIN_MOD) $(PAM_ADMIN_OBJ) $(UTILS) $(PAM_LIBS) $(PAM_LOGIN_OBJ): $(PAM_LOGIN_SRC) $(CXX) $(CXXFLAGS) -c $(PAM_LOGIN_SRC) -o $(PAM_LOGIN_OBJ) $(PAM_ADMIN_OBJ): $(PAM_ADMIN_SRC) $(CXX) $(CXXFLAGS) -c $(PAM_ADMIN_SRC) -o $(PAM_ADMIN_OBJ) $(AUTHKEYS_BIN): $(AUTHKEYS_SRC) $(UTILS_SRC) $(CXX) $(CXXFLAGS) $(LDFLAGS) $(INCLUDE_FLAGS) -o $(AUTHKEYS_BIN) $(AUTHKEYS_SRC) $(UTILS_SRC) $(LIBS) $(UTILS): $(UTILS_SRC) $(CXX) $(CXXFLAGS) $(INCLUDE_FLAGS) -c $(UTILS_SRC) -o $(UTILS) install: $(NSS_LIBRARY_NAME) $(LIBNSS_OSLOGIN_CACHE_NAME) $(PAM_ADMIN_MOD) $(PAM_LOGIN_MOD) $(AUTHKEYS_BIN) $(NSS_CACHE_BIN) mkdir -p $(DESTDIR)$(PREFIX)/$(NSS_INSTALL_PATH) mkdir -p $(DESTDIR)$(PREFIX)/$(PAM_INSTALL_PATH) mkdir -p $(DESTDIR)$(PREFIX)/$(AUTHKEYS_INSTALL_PATH) mkdir -p $(DESTDIR)$(PREFIX)/$(BIN_INSTALL_PATH) install -m 0644 $(LIBNSS_CACHE_OSLOGIN_NAME) $(DESTDIR)$(PREFIX)/$(NSS_INSTALL_PATH) install -m 0644 $(NSS_LIBRARY_NAME) $(DESTDIR)$(PREFIX)/$(NSS_INSTALL_PATH) install -m 0644 $(PAM_ADMIN_MOD) $(PAM_LOGIN_MOD) $(DESTDIR)$(PREFIX)/$(PAM_INSTALL_PATH) install -m 0755 $(AUTHKEYS_BIN) $(DESTDIR)$(PREFIX)/$(AUTHKEYS_INSTALL_PATH) install -m 0755 $(OSLOGIN_HELPER) $(DESTDIR)$(PREFIX)/$(BIN_INSTALL_PATH) install -m 0755 $(NSS_CACHE_BIN) $(DESTDIR)$(PREFIX)/$(BIN_INSTALL_PATH) ifdef MAKE_LINKS ln -sf $(LIBNSS_CACHE_OSLOGIN_NAME) $(DESTDIR)$(PREFIX)/$(NSS_INSTALL_PATH)/$(LIBNSS_CACHE_OSLOGIN_SONAME) ln -sf $(NSS_LIBRARY_NAME) $(DESTDIR)$(PREFIX)/$(NSS_INSTALL_PATH)/$(NSS_LIBRARY_SONAME) endif ifdef INSTALL_SELINUX mkdir -p $(DESTDIR)$(PREFIX)/$(SELINUX_INSTALL_PATH) install -T -m 0644 $(SELINUX_MODULE) $(DESTDIR)$(PREFIX)/$(SELINUX_INSTALL_PATH)/$(SELINUX_INSTALL_NAME) endif uninstall: rm -f $(DESTDIR)$(PREFIX)/$(NSS_INSTALL_PATH)/$(LIBNSS_CACHE_OSLOGIN_NAME) rm -f $(DESTDIR)$(PREFIX)/$(NSS_INSTALL_PATH)/$(NSS_LIBRARY_NAME) rm -f $(DESTDIR)$(PREFIX)/$(PAM_INSTALL_PATH)/$(PAM_ADMIN_MOD) rm -f $(DESTDIR)$(PREFIX)/$(PAM_INSTALL_PATH)/$(PAM_LOGIN_MOD) rm -f $(DESTDIR)$(PREFIX)/$(AUTHKEYS_INSTALL_PATH)/$(AUTHKEYS_BIN) rm -f $(DESTDIR)$(PREFIX)/$(BIN_INSTALL_PATH)/$(OSLOGIN_HELPER) rm -f $(DESTDIR)$(PREFIX)/$(BIN_INSTALL_PATH)/$(NSS_CACHE_BIN) clean: 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)