328 lines
13 KiB
Makefile
328 lines
13 KiB
Makefile
##
|
|
# Makefile.source and Makefile: Directions for building and installing OPIE.
|
|
#
|
|
# %%% portions-copyright-cmetz-96
|
|
# Portions of this software are Copyright 1996-1999 by Craig Metz, All Rights
|
|
# Reserved. The Inner Net License Version 2 applies to these portions of
|
|
# the software.
|
|
# You should have received a copy of the license with this software. If
|
|
# you didn't get a copy, you may request one from <license@inner.net>.
|
|
#
|
|
# Portions of this software are Copyright 1995 by Randall Atkinson and Dan
|
|
# McDonald, All Rights Reserved. All Rights under this copyright are assigned
|
|
# to the U.S. Naval Research Laboratory (NRL). The NRL Copyright Notice and
|
|
# License Agreement applies to this software.
|
|
#
|
|
# History:
|
|
#
|
|
# Modified by cmetz for OPIE 2.4. Add libmissing to include header path.
|
|
# Renamed realclean to distclean. Added opieauto rules. Made
|
|
# system program install more tolerant of non-existent files.
|
|
# Modified by cmetz for OPIE 2.31. Moved logwtmp.o into libopie.
|
|
# Modified by cmetz for OPIE 2.3. Removed manual config -- it's
|
|
# Autoconf or bust. Replaced user configuration options
|
|
# with options.h. Eliminated unused variables. Pass down
|
|
# $(DEBUG) instead of several other variables to the
|
|
# subdirs. Extended/standard key file support. Added
|
|
# dependencies on subdir files. Made opietest call silent.
|
|
# Removed opie-md4, opie-md5, and key aliases. Removed
|
|
# test target. Make uninstall remove man page aliases.
|
|
# Modified by cmetz for OPIE 2.22. Removed @LIBOBJS@ from MISSING for
|
|
# Autoconf target. Re-ordered LFLAGS because some ld's won't
|
|
# include libmissing properly if it's not at the end.
|
|
# Modified by cmetz for OPIE 2.21. Added getusershell.o to IRIX
|
|
# missing functions.
|
|
# Modified by cmetz for OPIE 2.2. Added NEW_PROMPTS definition.
|
|
# Added MISSING and new flags-passing for libmissing.
|
|
# Quote MISSING or lose. Update TEST target for FTPD
|
|
# variable. Removed line formatting for compile commands
|
|
# since macro expansion confuses the issue anyway.
|
|
# Added targets for opieserv. Added targets for opietest.
|
|
# Removed obselete options.h target. Swapped libmissing
|
|
# and libopie. Updated manual config options. Added more
|
|
# explanatory text. Fixed uses of old SYSV and BSD4_3
|
|
# symbols.
|
|
# Modified at NRL for OPIE 2.2: Renamed LDFLAGS setting to LIBS,
|
|
# renamed LDFLAGS in targets to LFLAGS. Added targets for
|
|
# libopie and libmissing directories. Got rid of PROTOTYPES.
|
|
# Added opiegen. Fixed RANLIB Autoconf target.
|
|
# Modified at NRL for OPIE 2.11: Fixed fatal mistype of Autoconf.
|
|
# Modified at NRL for OPIE 2.1: Changed targets to reflect source
|
|
# file name changes. Changed explanation and flags for static
|
|
# linking. Changed opieinfo target. Removed WHOAMI. Added
|
|
# Autoconf targets. Changed if conditionals to use test
|
|
# instead of [. Changed SU_DIR to SU to help autoconf.
|
|
# Changed FTPDIR and FTPDNAME to FTPD to help autoconf.
|
|
# Changed HP-UX to HP-UX9 and HP-UX10. Make uninstall
|
|
# target depend on config. HPUX *is* no longer necessary, but
|
|
# something does have to be there. Sub in Autoconf @CC@.
|
|
# Modified at NRL for OPIE 2.04: Re-worded explanation of SU_STAR_CHECK.
|
|
# Modified at NRL for OPIE 2.02: Added SU_STAR_CHECK flag.
|
|
# Modified at NRL for OPIE 2.01: Test target makes opiesu and opielogin
|
|
# setuid. install target clears that. uninstall target needs to
|
|
# remove the opiekey symlinks. opieinfo target needs to
|
|
# substitute for $(EXISTS). ifdefs target needs to check for
|
|
# starting hash. $(LFLAGS) and -o should be at the end of all
|
|
# link commands to spoon-feed drain bamaged link editors. Added
|
|
# A/UX defaults.
|
|
# Modified heavily at NRL for OPIE 2.0.
|
|
# Written at Bellcore for the S/Key Version 1 software distribution
|
|
# (Makefile).
|
|
|
|
#============================================================================
|
|
# CONFIGURATION PARAMETERS -- CHANGE THESE TO SUIT YOUR MACHINE
|
|
|
|
# Shell to use for make(1)
|
|
# It's usually a good idea to leave this as-is. On some systems, ksh or bash
|
|
# may be necessary
|
|
SHELL=/bin/sh
|
|
|
|
# OWNER is the username who should own the OPIE binaries.
|
|
# GROUP is the groupname associated with the OPIE binaries.
|
|
#
|
|
OWNER=0
|
|
GROUP=bin
|
|
|
|
# Where should the OPIE standard and extended databases be stored?
|
|
#
|
|
# Some sites might want to put this elsewhere. If you want to use an old
|
|
# S/Key database, you should create a link from /etc/skeykeys to /etc/opiekeys.
|
|
KEY_FILE=/etc/opiekeys
|
|
|
|
# Are we debugging?
|
|
#
|
|
# The first line will build a normal version of OPIE. You should use it.
|
|
#
|
|
# The second is for brave souls porting OPIE to a new system or trying to
|
|
# debug it and should definitely NOT be used to build a production copy
|
|
# of OPIE.
|
|
#
|
|
# The third is the above using nifty heap debugger called "Electric Fence".
|
|
DEBUG=-O
|
|
#DEBUG=-DDEBUG=1 -g
|
|
#DEBUG=-DDEBUG=1 -g -lefence
|
|
|
|
# These parameters are determined by Autoconf and are probably correct.
|
|
# If OPIE doesn't build or work right, try tweaking these.
|
|
CC=@CC@
|
|
YACC=@YACC@
|
|
FTPD=@FTPD@
|
|
LIBS=@LIBS@
|
|
OPTIONS=@DEFS@
|
|
EXISTS=@EXISTS@
|
|
MKDIR=@MKDIR@
|
|
CHOWN=@CHOWN@
|
|
LOCALBIN=@LOCALBIN@
|
|
LOCALMAN=@LOCALMAN@
|
|
SU=@SU@
|
|
ALT_SU=@ALT_SU@
|
|
LOGIN=@LOGIN@
|
|
LOCK_DIR=@LOCK_DIR@
|
|
OPIEAUTO=@OPIEAUTO@
|
|
|
|
BACKUP=opie.old
|
|
|
|
CFLAGS=$(DEBUG) -Ilibmissing
|
|
|
|
LFLAGS=-Llibopie -Llibmissing -lopie $(LIBS) -lmissing -lopie
|
|
LDEPS=libmissing/libmissing.a libopie/libopie.a
|
|
|
|
all: client server
|
|
|
|
ifdefs:
|
|
egrep '^#*if*def' *.c *.h | cut -f2 -d: | sort | uniq
|
|
|
|
client: libopie/libopie.a libmissing/libmissing.a opietest-passed opiekey opiegen $(OPIEAUTO)
|
|
|
|
client-install: client
|
|
@echo "Installing OPIE client software..."
|
|
@echo "Copying OPIE key-related files"
|
|
@if test ! -d $(LOCALBIN); then $(MKDIR) $(LOCALBIN); chmod 755 $(LOCALBIN); fi
|
|
@cp opiekey $(OPIEAUTO) $(LOCALBIN)
|
|
@$(CHOWN) $(OWNER) $(LOCALBIN)/opiekey
|
|
@if test ! -z "$(OPIEAUTO)"; then $(CHOWN) $(OWNER) $(LOCALBIN)/opieauto; fi
|
|
@chgrp $(GROUP) $(LOCALBIN)/opiekey
|
|
@echo "Changing file permissions"
|
|
@chmod 0511 $(LOCALBIN)/opiekey
|
|
@if test ! -z "$(OPIEAUTO)"; then chmod 0511 $(LOCALBIN)/opieauto; fi
|
|
@echo "Symlinking aliases to opiekey"
|
|
@-ln -s $(LOCALBIN)/opiekey $(LOCALBIN)/otp-md4
|
|
@-ln -s $(LOCALBIN)/opiekey $(LOCALBIN)/otp-md5
|
|
@echo "Installing manual pages"
|
|
@-for i in otp-md4 otp-md5; do ln -s opiekey.1 $(LOCALMAN)/man1/$$i.1; done
|
|
@if test ! -d $(LOCALMAN)/man1; then $(MKDIR) $(LOCALMAN)/man1; chmod 755 $(LOCALMAN)/man1; fi; cp opiekey.1 $(LOCALMAN)/man1/opiekey.1; $(CHOWN) $(OWNER) $(LOCALMAN)/man1/opiekey.1; chgrp $(GROUP) $(LOCALMAN)/man1/opiekey.1; chmod 644 $(LOCALMAN)/man1/opiekey.1
|
|
|
|
server: libopie/libopie.a libmissing/libmissing.a opietest-passed opielogin opiesu opiepasswd opieinfo opieftpd opieserv
|
|
|
|
server-install: server
|
|
@echo "Installing OPIE server software..."
|
|
@echo "Copying OPIE user programs"
|
|
@if test ! -d $(LOCALBIN); then $(MKDIR) $(LOCALBIN); chmod 755 $(LOCALBIN); fi
|
|
@cp opiepasswd opieinfo $(LOCALBIN)
|
|
@echo "Changing ownership"
|
|
@$(CHOWN) $(OWNER) $(LOCALBIN)/opiepasswd $(LOCALBIN)/opieinfo
|
|
@chgrp $(GROUP) $(LOCALBIN)/opiepasswd $(LOCALBIN)/opieinfo
|
|
@echo "Changing file permissions"
|
|
@chmod 0555 $(LOCALBIN)/opieinfo
|
|
@chmod 4511 $(LOCALBIN)/opiepasswd
|
|
@echo "Installing OPIE system programs..."
|
|
@if test ! -z $(LOGIN); \
|
|
then \
|
|
if test ! $(EXISTS) $(LOGIN).$(BACKUP); \
|
|
then \
|
|
echo "Renaming existing $(LOGIN) to $(LOGIN).$(BACKUP)"; \
|
|
mv $(LOGIN) $(LOGIN).$(BACKUP); \
|
|
echo "Clearing permissions on $(LOGIN)"; \
|
|
chmod 0 $(LOGIN).$(BACKUP); \
|
|
fi; \
|
|
echo "Copying OPIE login to $(LOGIN)"; \
|
|
cp opielogin $(LOGIN); \
|
|
echo "Changing ownership of $(LOGIN)"; \
|
|
$(CHOWN) $(OWNER) $(LOGIN); \
|
|
chgrp $(GROUP) $(LOGIN); \
|
|
echo "Changing file permissions of $(LOGIN)"; \
|
|
chmod 4111 $(LOGIN); \
|
|
fi
|
|
@if test ! -z $(SU); \
|
|
then \
|
|
if test ! $(EXISTS) $(SU).$(BACKUP); \
|
|
then \
|
|
echo "Renaming existing $(SU) to $(SU).$(BACKUP)"; \
|
|
mv $(SU) $(SU).$(BACKUP); \
|
|
echo "Clearing permissions on $(SU)"; \
|
|
chmod 0 $(SU).$(BACKUP); \
|
|
fi; \
|
|
echo "Copying OPIE su to $(SU)"; \
|
|
cp opiesu $(SU); \
|
|
echo "Changing ownership of $(SU)"; \
|
|
$(CHOWN) $(OWNER) $(SU); \
|
|
chgrp $(GROUP) $(SU); \
|
|
echo "Changing file permissions of $(SU)"; \
|
|
chmod 4111 $(SU); \
|
|
fi
|
|
@if test ! -z $(ALT_SU); \
|
|
then \
|
|
if test ! $(EXISTS) $(ALT_SU).$(BACKUP); \
|
|
then \
|
|
echo "Renaming existing $(ALT_SU) to $(ALT_SU).$(BACKUP)"; \
|
|
mv $(ALT_SU) $(ALT_SU).$(BACKUP); \
|
|
echo "Clearing permissions on $(ALT_SU)"; \
|
|
chmod 0 $(ALT_SU).$(BACKUP); \
|
|
fi; \
|
|
echo "Copying OPIE su to $(ALT_SU)"; \
|
|
cp opiesu $(ALT_SU); \
|
|
echo "Changing ownership of $(ALT_SU)"; \
|
|
$(CHOWN) $(OWNER) $(ALT_SU); \
|
|
chgrp $(GROUP) $(ALT_SU); \
|
|
echo "Changing file permissions of $(ALT_SU)"; \
|
|
chmod 4111 $(ALT_SU); \
|
|
fi
|
|
@if test ! -z $(FTPD); \
|
|
then \
|
|
if test ! $(EXISTS) $(FTPD).$(BACKUP); \
|
|
then \
|
|
echo "Renaming existing $(FTPD) to $(FTPD).$(BACKUP)"; \
|
|
mv $(FTPD) $(FTPD).$(BACKUP); \
|
|
echo "Clearing permissions on $(FTPD).$(BACKUP)"; \
|
|
chmod 0 $(FTPD).$(BACKUP); \
|
|
fi; \
|
|
echo "Copying OPIE ftp daemon to $(FTPD)"; \
|
|
cp opieftpd $(FTPD); \
|
|
echo "Changing ownership of $(FTPD)"; \
|
|
$(CHOWN) $(OWNER) $(FTPD); \
|
|
chgrp $(GROUP) $(FTPD); \
|
|
echo "Changing file permissions of $(FTPD)"; \
|
|
chmod 0100 $(FTPD); \
|
|
fi
|
|
@echo "Making sure OPIE database file exists";
|
|
@touch $(KEY_FILE)
|
|
@echo "Changing permissions of OPIE database file"
|
|
@chmod 0644 $(KEY_FILE)
|
|
@echo "Changing ownership of OPIE database file"
|
|
@$(CHOWN) $(OWNER) $(KEY_FILE)
|
|
@chgrp $(GROUP) $(KEY_FILE)
|
|
@-if test ! -z "$(LOCK_DIR)"; then echo "Creating OPIE lock directory"; mkdir $(LOCK_DIR); $(CHOWN) 0 $(LOCK_DIR); chgrp 0 $(LOCK_DIR); chmod 0700 $(LOCK_DIR); fi;
|
|
@-if test ! -z "$(ACCESS_FILE)"; then echo "Creating OPIE access file (don't say we didn't warn you)"; touch $(ACCESS_FILE); $(CHOWN) 0 $(ACCESS_FILE); chgrp 0 $(ACCESS_FILE); chmod 0444 $(ACCESS_FILE); fi;
|
|
@echo "Installing manual pages"
|
|
@if test ! -d $(LOCALMAN); then $(MKDIR) $(LOCALMAN); chmod 755 $(LOCALMAN); fi
|
|
@for i in 1 4 5 8; do for j in *.$$i; do if test ! -d $(LOCALMAN)/man$$i; then $(MKDIR) $(LOCALMAN)/man$$i; chmod 755 $(LOCALMAN)/man$$i; fi; cp $$j $(LOCALMAN)/man$$i/$$j; $(CHOWN) $(OWNER) $(LOCALMAN)/man$$i/$$j; chgrp $(GROUP) $(LOCALMAN)/man$$i/$$j; chmod 644 $(LOCALMAN)/man$$i/$$j; done; done
|
|
@echo "REMEMBER to run opiepasswd on your users immediately."
|
|
|
|
install: client-install server-install
|
|
|
|
uninstall:
|
|
@echo "Un-installing OPIE..."
|
|
@echo "Removing symlinks"
|
|
@-for i in otp-md4 otp-md5; do rm $(LOCALBIN)/$$i; done
|
|
@echo "Removing OPIE programs"
|
|
@-for i in opiekey opiepasswd opieinfo; do rm $(LOCALBIN)/$$i; done
|
|
@echo "Removing OPIE manual pages"
|
|
@-for i in 1 4 5 8; do for j in *.$$i; do rm $(LOCALMAN)/man$$i/$$j; done; done
|
|
@-rm $(LOCALMAN)/man1/otp-md4.1 $(LOCALMAN)/man1/otp-md5.1
|
|
@echo "Restoring old binaries"
|
|
@-for i in $(SU) $(ALT_SU) $(LOGIN) $(FTPD); do FILE=`basename $$i`; if test ! $(EXISTS) $$i.$(BACKUP); then echo "No $$i.$(BACKUP)! Aborting."; exit 1; else echo "Removing $$FILE"; rm $$i || true; echo "Restoring old $$FILE"; mv $$i.$(BACKUP) $$i; fi; done
|
|
@echo "Resetting permissions"
|
|
@chmod 4111 $(SU) $(LOGIN)
|
|
@chmod 0100 $(FTPD)
|
|
@if test ! -z "$(ALT_SU)"; then chmod 4111 $(ALT_SU); fi
|
|
@echo "OPIE is now un-installed."
|
|
@echo "Please verify by hand that this process worked."
|
|
|
|
opietest-passed: opietest
|
|
-./opietest && touch opietest-passed
|
|
|
|
libopie/libopie.a: libopie/*.c *.h
|
|
(cd libopie ; $(MAKE) libopie.a CFL='$(CFLAGS) -DKEY_FILE=\"$(KEY_FILE)\"')
|
|
|
|
libmissing/libmissing.a: libmissing/*.c
|
|
(cd libmissing ; $(MAKE) libmissing.a CFL='$(CFLAGS)')
|
|
|
|
clean:
|
|
-rm -f *.o opiekey opiegen opielogin opiepasswd opiesu opieftpd
|
|
-rm -f opieserv opieinfo opietest opieauto *core* opietest-passed
|
|
-rm -f Makefile.munge configure.munger y.tab.c .gdb*
|
|
(cd libopie ; $(MAKE) clean)
|
|
(cd libmissing ; $(MAKE) clean)
|
|
|
|
realclean: distclean
|
|
|
|
distclean: clean
|
|
-rm -f *~ core* "\#*\#" Makefile make.log
|
|
-rm -f config.log config.status config.cache config.h
|
|
(cd libopie ; $(MAKE) distclean)
|
|
(cd libmissing ; $(MAKE) distclean)
|
|
|
|
opiekey: opiekey.o $(LDEPS)
|
|
$(CC) $(CFLAGS) opiekey.o $(LFLAGS) -o opiekey
|
|
|
|
opiegen: opiegen.o $(LDEPS)
|
|
$(CC) $(CFLAGS) opiegen.o $(LFLAGS) -o opiegen
|
|
|
|
opieserv: opieserv.o $(LDEPS)
|
|
$(CC) $(CFLAGS) opieserv.o $(LFLAGS) -o opieserv
|
|
|
|
opieftpd: opieftpd.o glob.o popen.o y.tab.o $(LDEPS)
|
|
$(CC) $(CFLAGS) opieftpd.o glob.o popen.o y.tab.o $(LFLAGS) -o opieftpd
|
|
|
|
opielogin: opielogin.o permsfile.o $(LDEPS)
|
|
$(CC) $(CFLAGS) opielogin.o permsfile.o $(LFLAGS) -o opielogin
|
|
|
|
opiepasswd: opiepasswd.o $(LDEPS)
|
|
$(CC) $(CFLAGS) opiepasswd.o $(LFLAGS) -o opiepasswd
|
|
|
|
opiesu: opiesu.o $(LDEPS)
|
|
$(CC) $(CFLAGS) opiesu.o $(LFLAGS) -o opiesu
|
|
|
|
y.tab.c: ftpcmd.y
|
|
$(YACC) ftpcmd.y
|
|
|
|
opieinfo: opieinfo.o $(LDEPS)
|
|
$(CC) $(CFLAGS) opieinfo.o $(LFLAGS) -o opieinfo
|
|
|
|
opietest: opietest.o $(LDEPS)
|
|
$(CC) $(CFLAGS) opietest.o $(LFLAGS) -o opietest
|
|
|
|
opieauto: opieauto.o $(LDEPS)
|
|
$(CC) $(CFLAGS) opieauto.o $(LFLAGS) -o opieauto
|
|
|