1# 2# Root directory. Mainly useful for package building; leave empty for 3# normal installation. 4# 5ROOT= 6 7# 8# The destination directory for the "sh" and "jsh" binaries. 9# 10SV3BIN=/usr/5bin 11 12# 13# Location for manual pages (with man1 below). 14# 15MANDIR=/usr/share/man/5man 16 17# 18# Enable this definition if spell checking should be done for the 19# "cd" special command. 20# 21#SPELL=-DSPELL 22 23# 24# A BSD-compatible install command. 25# 26UCBINST=/usr/ucb/install 27 28# 29# The strip command that is used at installation time. 30# 31STRIP=strip 32 33# 34# A command to create the link from "jsh" to "sh". 35# 36LNS=ln -s 37 38# 39# Uncomment the following line to compile with diet libc. -Ifakewchar might 40# be usable for other environments without wide character support too. 41# 42#CC=diet gcc -Ifakewchar 43 44# 45# Compiler flags. 46# 47CFLAGS=-O 48 49# 50# Flags for the C preprocessor. 51# 52CFLAGS=-D_GNU_SOURCE 53 54# 55# A define for large file support, if necessary. 56# 57LARGEF=-D_FILE_OFFSET_BITS=64L 58 59# 60# The compiler warning options. 61# 62WERROR=-Werror 63WARN = -Wchar-subscripts -Wformat -Wno-format-y2k -Wimplicit \ 64 -Wmissing-braces -Wsequence-point -Wreturn-type -Wtrigraphs \ 65 -Wunused-function -Wunused-label -Wunused-variable -Wunused-value \ 66 -Wuninitialized -Wmultichar -Wpointer-arith $(WERROR) 67WARN= 68 69# 70# End of adjustable settings. 71# 72 73OBJ = args.o blok.o bltin.o cmd.o ctype.o defs.o echo.o error.o \ 74 expand.o fault.o func.o hash.o hashserv.o io.o jobs.o \ 75 macro.o main.o msg.o name.o print.o pwd.o service.o \ 76 setbrk.o stak.o string.o test.o ulimit.o word.o xec.o \ 77 gmatch.o getopt.o strsig.o version.o mapmalloc.o umask.o 78 79.c.o: ; $(CC) -c $(CFLAGS) $(CPPFLAGS) $(LARGEF) $(SPELL) $(WARN) $< 80 81all: sh jsh sh.1.out 82 83sh: $(OBJ) 84 $(CC) $(LDFLAGS) $(OBJ) $(LIBS) -o sh 85 86jsh: sh 87 rm -f jsh 88 $(LNS) sh jsh 89 90sh.1.out: sh.1 91 test "x$(SPELL)" != x && cat sh.1 >$@ || \ 92 sed '/BEGIN SPELL/,/END SPELL/d' <sh.1 >$@ 93 94install: all 95 test -d $(ROOT)$(SV3BIN) || mkdir -p $(ROOT)$(SV3BIN) 96 $(UCBINST) -c -m 755 sh $(ROOT)$(SV3BIN)/sh 97 $(STRIP) $(ROOT)$(SV3BIN)/sh 98 rm -f $(ROOT)$(SV3BIN)/jsh 99 cd $(ROOT)$(SV3BIN) && $(LNS) sh jsh 100 test -d $(ROOT)$(MANDIR)/man1 || mkdir -p $(ROOT)$(MANDIR)/man1 101 $(UCBINST) -c -m 644 sh.1.out $(ROOT)$(MANDIR)/man1/sh.1 102 rm -f $(ROOT)$(MANDIR)/man1/jsh.1 103 cd $(ROOT)$(MANDIR)/man1 && $(LNS) sh.1 jsh.1 104 105maninstall: sh.1.out 106 $(UCBINST) -c -m 644 sh.1.out $(ROOT)$(MANDIR)/man1/sh.1 107 108diet: 109 $(MAKE) CC='diet gcc -Ifakewchar' CFLAGS='-Os -fomit-frame-pointer' \ 110 STRIP='strip -s -R .comment -R .note' WERROR= 111 112dietinstall: 113 ldd sh >/dev/null 2>&1 && { echo dynamic; exit 1; } || : 114 $(MAKE) install SV3BIN=/sbin 115 116world: 117 $(MAKE) clean 118 $(MAKE) 119 sudo $(MAKE) install 120 $(MAKE) clean 121 $(MAKE) diet 122 sudo $(MAKE) dietinstall 123 $(MAKE) clean 124 125clean: 126 rm -f $(OBJ) sh jsh sh.1.out core log *~ 127 128mrproper: clean 129 130args.o: args.c defs.h mac.h mode.h name.h stak.h brkincr.h ctype.h 131blok.o: blok.c defs.h mac.h mode.h name.h stak.h brkincr.h ctype.h 132bltin.o: bltin.c defs.h mac.h mode.h name.h stak.h brkincr.h ctype.h \ 133 sym.h hash.h 134cmd.o: cmd.c defs.h mac.h mode.h name.h stak.h brkincr.h ctype.h sym.h 135ctype.o: ctype.c defs.h mac.h mode.h name.h stak.h brkincr.h ctype.h 136defs.o: defs.c mode.h name.h 137echo.o: echo.c defs.h mac.h mode.h name.h stak.h brkincr.h ctype.h 138error.o: error.c defs.h mac.h mode.h name.h stak.h brkincr.h ctype.h 139expand.o: expand.c defs.h mac.h mode.h name.h stak.h brkincr.h ctype.h 140fault.o: fault.c defs.h mac.h mode.h name.h stak.h brkincr.h ctype.h 141func.o: func.c defs.h mac.h mode.h name.h stak.h brkincr.h ctype.h 142getopt.o: getopt.c 143gmatch.o: gmatch.c mbtowi.h 144hash.o: hash.c hash.h defs.h mac.h mode.h name.h stak.h brkincr.h ctype.h 145hashserv.o: hashserv.c hash.h defs.h mac.h mode.h name.h stak.h brkincr.h \ 146 ctype.h 147io.o: io.c defs.h mac.h mode.h name.h stak.h brkincr.h ctype.h dup.h 148jobs.o: jobs.c defs.h mac.h mode.h name.h stak.h brkincr.h ctype.h 149macro.o: macro.c defs.h mac.h mode.h name.h stak.h brkincr.h ctype.h \ 150 sym.h 151main.o: main.c defs.h mac.h mode.h name.h stak.h brkincr.h ctype.h sym.h \ 152 hash.h timeout.h dup.h 153mapmalloc.o: mapmalloc.c 154msg.o: msg.c defs.h mac.h mode.h name.h stak.h brkincr.h ctype.h sym.h 155name.o: name.c defs.h mac.h mode.h name.h stak.h brkincr.h ctype.h 156print.o: print.c defs.h mac.h mode.h name.h stak.h brkincr.h ctype.h 157pwd.o: pwd.c mac.h defs.h mode.h name.h stak.h brkincr.h ctype.h 158service.o: service.c defs.h mac.h mode.h name.h stak.h brkincr.h ctype.h 159setbrk.o: setbrk.c defs.h mac.h mode.h name.h stak.h brkincr.h ctype.h 160stak.o: stak.c defs.h mac.h mode.h name.h stak.h brkincr.h ctype.h 161string.o: string.c defs.h mac.h mode.h name.h stak.h brkincr.h ctype.h 162strsig.o: strsig.c 163test.o: test.c defs.h mac.h mode.h name.h stak.h brkincr.h ctype.h 164ulimit.o: ulimit.c defs.h mac.h mode.h name.h stak.h brkincr.h ctype.h 165umask.o: umask.c defs.h mac.h mode.h name.h stak.h brkincr.h ctype.h 166version.o: version.c 167word.o: word.c defs.h mac.h mode.h name.h stak.h brkincr.h ctype.h sym.h 168xec.o: xec.c defs.h mac.h mode.h name.h stak.h brkincr.h ctype.h sym.h \ 169 hash.h 170