# the meanings of the following flags are described in file INSTALL
INSTALL=/usr/local/bin
XMODE=755
XGRP=bin
xlfSYN=f77 f90
xlcSYN=cc c89
xlCSYN=
xlpSYN=

# c compiler options
CFLAGS=-g
CCFLAGS=$(CC) $(CFLAGS)

# Display info
info:
	more INSTALL


# compile all ulimit changer
all:		rzxlf rzxlc rzxlC rzxlp


# delete all binaries created by this makefile
clean:
	rm -f chkroot rzxlf rzxlc rzxlC rzxlp


# this step requires root permissions:
install: 	all chk_root clean_inst inst_all


# check for root permissions
chk_root:	chkroot
	./chkroot


# compile chkroot
chkroot:	chkroot.c
	$(CCFLAGS) -o chkroot chkroot.c


# delete all installed ulimit changer
clean_inst: 
	# remove xlf and synonyms; \
	for i in xlf $(xlfSYN); do \
	   rm -f $(INSTALL)/$$i; \
	done
	# remove xlc and synonyms; \
	for i in xlc $(xlcSYN); do \
	   rm -f $(INSTALL)/$$i; \
	done
	# remove xlC and synonyms; \
	for i in xlC $(xlCSYN); do \
	   rm -f $(INSTALL)/$$i; \
	done
	# remove xlp and synonyms; \
	for i in xlp $(xlpSYN); do \
	   rm -f $(INSTALL)/$$i; \
	done


# install all ulimit changer
inst_all:	inst_rzxlf inst_rzxlc inst_rzxlC inst_rzxlp


# install ulimit changer for xl Fortran compiler
inst_rzxlf:	rzxlf
	cp rzxlf $(INSTALL)/xlf
	chmod $(XMODE) $(INSTALL)/xlf
	chown root $(INSTALL)/xlf
	chgrp $(XGRP) $(INSTALL)/xlf
	chmod u+s $(INSTALL)/xlf
	# create hardlinks; \
	for i in $(xlfSYN) _dummy_; do \
	   if [ $$i != _dummy_ ]; then \
	      ln $(INSTALL)/xlf $(INSTALL)/$$i; \
	   fi; \
	done


# install ulimit changer for xl C compiler
inst_rzxlc:	rzxlc
	cp rzxlc $(INSTALL)/xlc
	chmod $(XMODE) $(INSTALL)/xlc
	chown root $(INSTALL)/xlc
	chgrp $(XGRP) $(INSTALL)/xlc
	chmod u+s $(INSTALL)/xlc
	# create hardlinks; \
	for i in $(xlcSYN) _dummy_; do \
	   if [ $$i != _dummy_ ]; then \
	      ln $(INSTALL)/xlc $(INSTALL)/$$i; \
	   fi; \
	done


# install ulimit changer for xl C++ compiler
inst_rzxlC:	rzxlC
	cp rzxlC $(INSTALL)/xlC
	chmod $(XMODE) $(INSTALL)/xlC
	chown root $(INSTALL)/xlC
	chgrp $(XGRP) $(INSTALL)/xlC
	chmod u+s $(INSTALL)/xlC
	# create hardlinks; \
	for i in $(xlCSYN) _dummy_; do \
	   if [ $$i != _dummy_ ]; then \
	      ln $(INSTALL)/xlC $(INSTALL)/$$i; \
	   fi; \
	done


# install ulimit changer for xl Pascal compiler
inst_rzxlp:	rzxlp
	cp rzxlp $(INSTALL)/xlp
	chmod $(XMODE) $(INSTALL)/xlp
	chown root $(INSTALL)/xlp
	chgrp $(XGRP) $(INSTALL)/xlp
	chmod u+s $(INSTALL)/xlp
	# create hardlinks; \
	for i in $(xlpSYN) _dummy_; do \
	   if [ $$i != _dummy_ ]; then \
	      ln $(INSTALL)/xlp $(INSTALL)/$$i; \
	   fi; \
	done


# compile the ulimit changer executing the xl Fortran compiler
rzxlf:
	$(CCFLAGS) -D'execprg="/usr/bin/xlf"' -o rzxlf rzxl.c


# compile the ulimit changer executing the xl C compiler
rzxlc:
	$(CCFLAGS) -D'execprg="/usr/bin/xlc"' -o rzxlc rzxl.c


# compile the ulimit changer executing the xl C++ compiler
rzxlC:
	$(CCFLAGS) -D'execprg="/usr/bin/xlC"' -o rzxlC rzxl.c


# compile the ulimit changer executing the xl Pascal compiler
rzxlp:
	$(CCFLAGS) -D'execprg="/usr/bin/xlp"' -o rzxlp rzxl.c

