Makefile.in revision 267654
1##
2# Makefile.source and Makefile: Directions for building and installing OPIE.
3#
4# %%% portions-copyright-cmetz-96
5# Portions of this software are Copyright 1996-1999 by Craig Metz, All Rights
6# Reserved. The Inner Net License Version 2 applies to these portions of
7# the software.
8# You should have received a copy of the license with this software. If
9# you didn't get a copy, you may request one from <license@inner.net>.
10#
11# Portions of this software are Copyright 1995 by Randall Atkinson and Dan
12# McDonald, All Rights Reserved. All Rights under this copyright are assigned
13# to the U.S. Naval Research Laboratory (NRL). The NRL Copyright Notice and   
14# License Agreement applies to this software.   
15#
16#	History:
17#
18#	Modified by cmetz for OPIE 2.4. Add libmissing to include header path.
19#		Renamed realclean to distclean. Added opieauto rules. Made
20#		system program install more tolerant of non-existent files.
21#	Modified by cmetz for OPIE 2.31. Moved logwtmp.o into libopie.
22#	Modified by cmetz for OPIE 2.3. Removed manual config -- it's
23#		Autoconf or bust. Replaced user configuration options
24#		with options.h. Eliminated unused variables. Pass down
25#		$(DEBUG) instead of several other variables to the
26#		subdirs. Extended/standard key file support. Added
27#		dependencies on subdir files. Made opietest call silent.
28#		Removed opie-md4, opie-md5, and key aliases. Removed
29#		test target. Make uninstall remove man page aliases.
30#	Modified by cmetz for OPIE 2.22. Removed @LIBOBJS@ from MISSING for
31#		Autoconf target. Re-ordered LFLAGS because some ld's won't
32#		include libmissing properly if it's not at the end.
33#       Modified by cmetz for OPIE 2.21. Added getusershell.o to IRIX
34#               missing functions.
35#       Modified by cmetz for OPIE 2.2. Added NEW_PROMPTS definition.
36#               Added MISSING and new flags-passing for libmissing.
37#               Quote MISSING or lose. Update TEST target for FTPD
38#               variable. Removed line formatting for compile commands
39#               since macro expansion confuses the issue anyway.
40#               Added targets for opieserv. Added targets for opietest.
41#               Removed obselete options.h target. Swapped libmissing
42#               and libopie. Updated manual config options. Added more
43#               explanatory text. Fixed uses of old SYSV and BSD4_3
44#               symbols.
45#       Modified at NRL for OPIE 2.2: Renamed LDFLAGS setting to LIBS,
46#               renamed LDFLAGS in targets to LFLAGS. Added targets for
47#               libopie and libmissing directories. Got rid of PROTOTYPES.
48#               Added opiegen. Fixed RANLIB Autoconf target. 
49#       Modified at NRL for OPIE 2.11: Fixed fatal mistype of Autoconf.
50#	Modified at NRL for OPIE 2.1: Changed targets to reflect source
51#		file name changes. Changed explanation and flags for static
52#		linking. Changed opieinfo target. Removed WHOAMI. Added
53#		Autoconf targets. Changed if conditionals to use test
54#               instead of [. Changed SU_DIR to SU to help autoconf.
55#               Changed FTPDIR and FTPDNAME to FTPD to help autoconf.
56#               Changed HP-UX to HP-UX9 and HP-UX10. Make uninstall
57#               target depend on config. HPUX *is* no longer necessary, but
58#               something does have to be there. Sub in Autoconf @CC@.
59#       Modified at NRL for OPIE 2.04: Re-worded explanation of SU_STAR_CHECK.
60#       Modified at NRL for OPIE 2.02: Added SU_STAR_CHECK flag.
61#       Modified at NRL for OPIE 2.01: Test target makes opiesu and opielogin 
62#               setuid. install target clears that. uninstall target needs to
63#               remove the opiekey symlinks. opieinfo target needs to 
64#               substitute for $(EXISTS). ifdefs target needs to check for 
65#               starting hash. $(LFLAGS) and -o should be at the end of all 
66#               link commands to spoon-feed drain bamaged link editors. Added
67#               A/UX defaults.
68#	Modified heavily at NRL for OPIE 2.0.
69#	Written at Bellcore for the S/Key Version 1 software distribution
70#		(Makefile).
71
72#============================================================================
73# CONFIGURATION PARAMETERS -- CHANGE THESE TO SUIT YOUR MACHINE
74
75# Shell to use for make(1)
76# It's usually a good idea to leave this as-is. On some systems, ksh or bash
77# may be necessary
78SHELL=/bin/sh
79
80# OWNER is the username who should own the OPIE binaries.
81# GROUP is the groupname associated with the OPIE binaries.
82#
83OWNER=0
84GROUP=bin
85
86# Where should the OPIE standard and extended databases be stored?
87#
88# Some sites might want to put this elsewhere. If you want to use an old
89# S/Key database, you should create a link from /etc/skeykeys to /etc/opiekeys.
90KEY_FILE=/etc/opiekeys
91
92# Are we debugging?
93#
94# The first line will build a normal version of OPIE. You should use it.
95#
96# The second is for brave souls porting OPIE to a new system or trying to
97# debug it and should definitely NOT be used to build a production copy
98# of OPIE. 
99#
100# The third is the above using nifty heap debugger called "Electric Fence".
101DEBUG=-O
102#DEBUG=-DDEBUG=1 -g
103#DEBUG=-DDEBUG=1 -g -lefence
104
105# These parameters are determined by Autoconf and are probably correct.
106# If OPIE doesn't build or work right, try tweaking these.
107CC=@CC@
108YACC=@YACC@
109FTPD=@FTPD@
110LIBS=@LIBS@
111OPTIONS=@DEFS@
112EXISTS=@EXISTS@
113MKDIR=@MKDIR@
114CHOWN=@CHOWN@
115LOCALBIN=@LOCALBIN@
116LOCALMAN=@LOCALMAN@
117SU=@SU@
118ALT_SU=@ALT_SU@
119LOGIN=@LOGIN@
120LOCK_DIR=@LOCK_DIR@
121OPIEAUTO=@OPIEAUTO@
122
123BACKUP=opie.old
124
125CFLAGS=$(DEBUG) -Ilibmissing
126
127LFLAGS=-Llibopie -Llibmissing -lopie $(LIBS) -lmissing -lopie
128LDEPS=libmissing/libmissing.a libopie/libopie.a
129
130all:	client server
131
132ifdefs:	
133	egrep '^#*if*def' *.c *.h | cut -f2 -d: | sort | uniq
134
135client: libopie/libopie.a libmissing/libmissing.a opietest-passed opiekey opiegen $(OPIEAUTO)
136
137client-install: client
138	@echo "Installing OPIE client software..."
139	@echo "Copying OPIE key-related files"
140	@if test ! -d $(LOCALBIN); then $(MKDIR) $(LOCALBIN); chmod 755 $(LOCALBIN); fi 
141	@cp opiekey $(OPIEAUTO) $(LOCALBIN)
142	@$(CHOWN) $(OWNER) $(LOCALBIN)/opiekey
143	@if test ! -z "$(OPIEAUTO)"; then $(CHOWN) $(OWNER) $(LOCALBIN)/opieauto; fi
144	@chgrp $(GROUP) $(LOCALBIN)/opiekey
145	@echo "Changing file permissions"
146	@chmod 0511 $(LOCALBIN)/opiekey
147	@if test ! -z "$(OPIEAUTO)"; then chmod 0511 $(LOCALBIN)/opieauto; fi
148	@echo "Symlinking aliases to opiekey"
149	@-ln -s $(LOCALBIN)/opiekey $(LOCALBIN)/otp-md4
150	@-ln -s $(LOCALBIN)/opiekey $(LOCALBIN)/otp-md5
151	@echo "Installing manual pages"
152	@-for i in otp-md4 otp-md5; do ln -s opiekey.1 $(LOCALMAN)/man1/$$i.1; done
153	@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
154
155server:	libopie/libopie.a libmissing/libmissing.a opietest-passed opielogin opiesu opiepasswd opieinfo opieftpd opieserv
156
157server-install: server
158	@echo "Installing OPIE server software..."
159	@echo "Copying OPIE user programs"
160	@if test ! -d $(LOCALBIN); then $(MKDIR) $(LOCALBIN); chmod 755 $(LOCALBIN); fi 
161	@cp opiepasswd opieinfo $(LOCALBIN)
162	@echo "Changing ownership"
163	@$(CHOWN) $(OWNER) $(LOCALBIN)/opiepasswd $(LOCALBIN)/opieinfo
164	@chgrp $(GROUP) $(LOCALBIN)/opiepasswd $(LOCALBIN)/opieinfo
165	@echo "Changing file permissions"
166	@chmod 0555 $(LOCALBIN)/opieinfo
167	@chmod 4511 $(LOCALBIN)/opiepasswd
168	@echo "Installing OPIE system programs..."
169	@if test ! -z $(LOGIN); \
170	then \
171		if test ! $(EXISTS) $(LOGIN).$(BACKUP); \
172		then \
173			echo "Renaming existing $(LOGIN) to $(LOGIN).$(BACKUP)"; \
174			mv $(LOGIN) $(LOGIN).$(BACKUP); \
175			echo "Clearing permissions on $(LOGIN)"; \
176			chmod 0 $(LOGIN).$(BACKUP); \
177		fi; \
178		echo "Copying OPIE login to $(LOGIN)"; \
179		cp opielogin $(LOGIN); \
180		echo "Changing ownership of $(LOGIN)"; \
181		$(CHOWN) $(OWNER) $(LOGIN); \
182		chgrp $(GROUP) $(LOGIN); \
183		echo "Changing file permissions of $(LOGIN)"; \
184		chmod 4111 $(LOGIN); \
185	fi
186	@if test ! -z $(SU); \
187	then \
188		if test ! $(EXISTS) $(SU).$(BACKUP); \
189		then \
190			echo "Renaming existing $(SU) to $(SU).$(BACKUP)"; \
191			mv $(SU) $(SU).$(BACKUP); \
192			echo "Clearing permissions on $(SU)"; \
193			chmod 0 $(SU).$(BACKUP); \
194		fi; \
195		echo "Copying OPIE su to $(SU)"; \
196		cp opiesu $(SU); \
197		echo "Changing ownership of $(SU)"; \
198		$(CHOWN) $(OWNER) $(SU); \
199		chgrp $(GROUP) $(SU); \
200		echo "Changing file permissions of $(SU)"; \
201		chmod 4111 $(SU); \
202	fi
203	@if test ! -z $(ALT_SU); \
204	then \
205		if test ! $(EXISTS) $(ALT_SU).$(BACKUP); \
206		then \
207			echo "Renaming existing $(ALT_SU) to $(ALT_SU).$(BACKUP)"; \
208			mv $(ALT_SU) $(ALT_SU).$(BACKUP); \
209			echo "Clearing permissions on $(ALT_SU)"; \
210			chmod 0 $(ALT_SU).$(BACKUP); \
211		fi; \
212		echo "Copying OPIE su to $(ALT_SU)"; \
213		cp opiesu $(ALT_SU); \
214		echo "Changing ownership of $(ALT_SU)"; \
215		$(CHOWN) $(OWNER) $(ALT_SU); \
216		chgrp $(GROUP) $(ALT_SU); \
217		echo "Changing file permissions of $(ALT_SU)"; \
218		chmod 4111 $(ALT_SU); \
219	fi
220	@if test ! -z $(FTPD); \
221	then \
222		if test ! $(EXISTS) $(FTPD).$(BACKUP); \
223		then \
224			echo "Renaming existing $(FTPD) to $(FTPD).$(BACKUP)"; \
225			mv $(FTPD) $(FTPD).$(BACKUP); \
226			echo "Clearing permissions on $(FTPD).$(BACKUP)"; \
227			chmod 0 $(FTPD).$(BACKUP); \
228		fi; \
229		echo "Copying OPIE ftp daemon to $(FTPD)"; \
230		cp opieftpd $(FTPD); \
231		echo "Changing ownership of $(FTPD)"; \
232		$(CHOWN) $(OWNER) $(FTPD); \
233		chgrp $(GROUP) $(FTPD); \
234		echo "Changing file permissions of $(FTPD)"; \
235		chmod 0100 $(FTPD); \
236	fi
237	@echo "Making sure OPIE database file exists";
238	@touch $(KEY_FILE)
239	@echo "Changing permissions of OPIE database file"
240	@chmod 0644 $(KEY_FILE)
241	@echo "Changing ownership of OPIE database file"
242	@$(CHOWN) $(OWNER) $(KEY_FILE)
243	@chgrp $(GROUP) $(KEY_FILE)
244	@-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;
245	@-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;
246	@echo "Installing manual pages"
247	@if test ! -d $(LOCALMAN); then $(MKDIR) $(LOCALMAN); chmod 755 $(LOCALMAN); fi
248	@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
249	@echo "REMEMBER to run opiepasswd on your users immediately."
250
251install: client-install server-install
252
253uninstall:
254	@echo "Un-installing OPIE..."
255	@echo "Removing symlinks"
256	@-for i in otp-md4 otp-md5; do rm $(LOCALBIN)/$$i; done
257	@echo "Removing OPIE programs"
258	@-for i in opiekey opiepasswd opieinfo; do rm $(LOCALBIN)/$$i; done
259	@echo "Removing OPIE manual pages"
260	@-for i in 1 4 5 8; do for j in *.$$i; do rm $(LOCALMAN)/man$$i/$$j; done; done
261	@-rm $(LOCALMAN)/man1/otp-md4.1 $(LOCALMAN)/man1/otp-md5.1
262	@echo "Restoring old binaries"
263	@-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
264	@echo "Resetting permissions"
265	@chmod 4111 $(SU) $(LOGIN)
266	@chmod 0100 $(FTPD)
267	@if test ! -z "$(ALT_SU)"; then chmod 4111 $(ALT_SU); fi
268	@echo "OPIE is now un-installed."
269	@echo "Please verify by hand that this process worked."
270
271opietest-passed:	opietest
272	-./opietest && touch opietest-passed
273
274libopie/libopie.a: libopie/*.c *.h
275	(cd libopie ; $(MAKE) libopie.a CFL='$(CFLAGS) -DKEY_FILE=\"$(KEY_FILE)\"')
276
277libmissing/libmissing.a: libmissing/*.c
278	(cd libmissing ; $(MAKE) libmissing.a CFL='$(CFLAGS)')
279
280clean:
281	-rm -f *.o opiekey opiegen opielogin opiepasswd opiesu opieftpd
282	-rm -f opieserv opieinfo opietest opieauto *core* opietest-passed
283	-rm -f Makefile.munge configure.munger y.tab.c .gdb*
284	(cd libopie ; $(MAKE) clean)
285	(cd libmissing ; $(MAKE) clean)
286
287realclean: distclean
288
289distclean: clean
290	-rm -f *~ core* "\#*\#" Makefile make.log
291	-rm -f config.log config.status config.cache config.h
292	(cd libopie ; $(MAKE) distclean)
293	(cd libmissing ; $(MAKE) distclean)
294
295opiekey:	opiekey.o $(LDEPS)
296		$(CC) $(CFLAGS) opiekey.o $(LFLAGS) -o opiekey
297
298opiegen:	opiegen.o $(LDEPS)
299		$(CC) $(CFLAGS) opiegen.o $(LFLAGS) -o opiegen
300
301opieserv:	opieserv.o $(LDEPS)
302		$(CC) $(CFLAGS) opieserv.o $(LFLAGS) -o opieserv
303
304opieftpd:	opieftpd.o glob.o popen.o y.tab.o $(LDEPS)
305		$(CC) $(CFLAGS) opieftpd.o glob.o popen.o y.tab.o $(LFLAGS) -o opieftpd
306
307opielogin:	opielogin.o permsfile.o $(LDEPS)
308		$(CC) $(CFLAGS) opielogin.o permsfile.o $(LFLAGS) -o opielogin
309
310opiepasswd:	opiepasswd.o $(LDEPS)
311		$(CC) $(CFLAGS) opiepasswd.o $(LFLAGS) -o opiepasswd
312
313opiesu:		opiesu.o $(LDEPS)
314		$(CC) $(CFLAGS) opiesu.o $(LFLAGS) -o opiesu
315
316y.tab.c:	ftpcmd.y
317		$(YACC) ftpcmd.y
318
319opieinfo:	opieinfo.o $(LDEPS)
320		$(CC) $(CFLAGS) opieinfo.o $(LFLAGS) -o opieinfo
321
322opietest:	opietest.o $(LDEPS)
323		$(CC) $(CFLAGS) opietest.o $(LFLAGS) -o opietest
324
325opieauto:	opieauto.o $(LDEPS)
326		$(CC) $(CFLAGS) opieauto.o $(LFLAGS) -o opieauto
327
328