.PHONY: all install clean nxenv_install suid_install

SHELL = /bin/bash

# helpers for "install" target
INSTALL_DIR=install -d -m 755
INSTALL_FILE=install -m 644 -C
INSTALL_PROGRAM=install -m 755
INSTALL_SYMLINK=ln -s -f

NX_ETC_DIR      ?= /etc/nxserver
PREFIX          ?= /usr
PATH_BIN        ?= $(PREFIX)/bin
PATH_LIB        ?= $(PREFIX)/lib
CUPS_BACKEND    ?= $(PREFIX)/lib/cups/backend
PATH_SHARE      ?= $(PREFIX)/share

NX_VERSION=`cat VERSION 2>/dev/null`

SUBDIRS=nxredir nxviewer-passwd nx-session-launcher
PROGRAMS=nxcheckload.sample nxdialog.freenx nxkeygen nxnode nxnode-login nxserver nxsetup nx-session-launcher/nx-session-launcher
PROGRAMS_BIN=nxviewer-passwd/nxpasswd/nxpasswd nx-session-launcher/nx-session-launcher-suid

all:
	cd nxviewer-passwd && xmkmf && make Makefiles && make depend
	export PATH_BIN PATH_LIB CUPS_BACKEND NX_VERSION NX_ETC_DIR &&\
	for i in $(SUBDIRS) ; \
	do\
		echo "making" all "in $$i..."; \
	        $(MAKE) -C $$i all || exit 1;\
	done

suid_install:
	chown nx:root $(DESTDIR)/$(PATH_BIN)/nx-session-launcher-suid
	chmod 4755 $(DESTDIR)/$(PATH_BIN)/nx-session-launcher-suid
	chown :users $(DESTDIR)/$(NX_ETC_DIR)/ppd
	chmod 775 $(DESTDIR)/$(NX_ETC_DIR)/ppd
	chown nx:nx $(DESTDIR)/var/lib/nxserver/home/
	chown nx:nx  $(DESTDIR)/var/lib/nxserver/db/


nxenv_install:
	$(INSTALL_DIR) $(DESTDIR)/$(PATH_BIN)/
	$(INSTALL_DIR) $(DESTDIR)/$(PATH_LIB)/freenx-server/
	$(INSTALL_DIR) $(DESTDIR)/$(NX_ETC_DIR)/
	$(INSTALL_FILE) conf/node.conf $(DESTDIR)/$(NX_ETC_DIR)/
	$(INSTALL_FILE) data/Xkbmap $(DESTDIR)/$(NX_ETC_DIR)/
	$(INSTALL_PROGRAM) data/fixkeyboard $(DESTDIR)/$(NX_ETC_DIR)/
	$(INSTALL_PROGRAM) data/Xsession $(DESTDIR)/$(NX_ETC_DIR)/
	$(INSTALL_DIR) $(DESTDIR)/$(NX_ETC_DIR)/node.conf.d/
	$(INSTALL_FILE) conf/conf.d/*.conf $(DESTDIR)/$(NX_ETC_DIR)/node.conf.d/
	$(INSTALL_DIR) $(DESTDIR)/$(NX_ETC_DIR)/acls/
	$(INSTALL_FILE) conf/acls/* $(DESTDIR)/$(NX_ETC_DIR)/acls/
	install -m775 -d  $(DESTDIR)/$(NX_ETC_DIR)/ppd/
	$(INSTALL_DIR) $(DESTDIR)/$(PATH_SHARE)/freenx-server/node.conf.def
	$(INSTALL_FILE) node.conf.def/* $(DESTDIR)/$(PATH_SHARE)/freenx-server/node.conf.def/
	$(INSTALL_FILE) nxfuncs $(DESTDIR)/$(PATH_SHARE)/freenx-server/
	$(INSTALL_DIR) $(DESTDIR)/$(CUPS_BACKEND)/
	$(INSTALL_DIR) $(DESTDIR)/etc/logrotate.d/
	$(INSTALL_FILE) data/logrotate $(DESTDIR)/etc/logrotate.d/freenx-server
	$(INSTALL_DIR) $(DESTDIR)/etc/sudoers.d/
	install -m400 data/sudoers.conf $(DESTDIR)/etc/sudoers.d/nxserver
	$(INSTALL_DIR) $(DESTDIR)/etc/dbus-1/system.d/
	$(INSTALL_FILE) nx-session-launcher/ConsoleKit-NX.conf $(DESTDIR)/etc/dbus-1/system.d/
	$(INSTALL_DIR) $(DESTDIR)/var/lib/nxserver/
	install -m2750 -d $(DESTDIR)/var/lib/nxserver/home/
	install -m2770 -d $(DESTDIR)/var/lib/nxserver/db/
	for i in $(PROGRAMS) ;\
	do\
	        $(INSTALL_PROGRAM) $$i $(DESTDIR)/$(PATH_BIN)/ || exit 1;\
	done
	for i in $(PROGRAMS_BIN) ;\
	do\
	        $(INSTALL_PROGRAM) -s $$i $(DESTDIR)/$(PATH_BIN)/ || exit 1;\
	done
	$(MAKE) -C nxredir install
	#$(MAKE) suid_install

clean:
	for i in $(SUBDIRS) ; \
	do\
		echo "making" clean "in $$i..."; \
		if test -e "$$i/Makefile"; \
		then $(MAKE) -C $$i clean || exit 1;\
		else echo ignoring $$i;\
		fi;\
	done
	rm -f nxviewer-passwd/Makefile.back
	rm -f nxviewer-passwd/Makefile
	rm -f nxviewer-passwd/nxpasswd/Makefile
	rm -f nxviewer-passwd/libvncauth/Makefile

install:
	export PATH_BIN PATH_LIB CUPS_BACKEND NX_VERSION NX_ETC_DIR &&\
	$(MAKE) nxenv_install
