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