| 1 | #       $NetBSD: Makefile,v 1.80 2005/06/26 19:10:49 christos Exp $
 | 
|---|
| 2 | #       @(#)Makefile    8.4 (Berkeley) 5/5/95
 | 
|---|
| 3 | SMALLPROG = 1
 | 
|---|
| 4 | 
 | 
|---|
| 5 | OBJDIR ?= obj
 | 
|---|
| 6 | 
 | 
|---|
| 7 | PROG=sh
 | 
|---|
| 8 | SHSRCS= alias.c cd.c echo.c error.c eval.c exec.c expand.c \
 | 
|---|
| 9 |         histedit.c input.c jobs.c mail.c main.c memalloc.c miscbltin.c \
 | 
|---|
| 10 |         mystring.c options.c parser.c redir.c show.c trap.c output.c var.c \
 | 
|---|
| 11 |         test.c kill.c syntax.c yywrap.c
 | 
|---|
| 12 | GENSRCS=arith.c arith_lex.c builtins.c init.c nodes.c
 | 
|---|
| 13 | GENHDRS=$(OBJDIR)/arith.h $(OBJDIR)/builtins.h $(OBJDIR)/nodes.h $(OBJDIR)/token.h
 | 
|---|
| 14 | SRCS=   ${SHSRCS} ${GENSRCS}
 | 
|---|
| 15 | 
 | 
|---|
| 16 | DPSRCS+=${GENHDRS}
 | 
|---|
| 17 | 
 | 
|---|
| 18 | CC        = gcc
 | 
|---|
| 19 | CFLAGS    = -g -Zomf -Dlint -DSHELL -DEXEC_HASH_BANG_SCRIPT -DPC_OS2_LIBPATHS -DPC_PATH_SEP -DPC_DRIVE_LETTERS -DPC_EXE_EXTS -I$(OBJDIR) -I. # (the last is because of error.h)
 | 
|---|
| 20 | # for debug:
 | 
|---|
| 21 | LD        = gcc
 | 
|---|
| 22 | LDFLAGS   = -Zomf -Zmap -Zstack 384 -Zfork
 | 
|---|
| 23 | #LDFLAGS += -Wl,-static -static
 | 
|---|
| 24 | YACC      = yacc
 | 
|---|
| 25 | LEX       = flex
 | 
|---|
| 26 | 
 | 
|---|
| 27 | ifneq ($(BUILD_TYPE),release)
 | 
|---|
| 28 | CFLAGS  += -g -DDEBUG=2 -O0
 | 
|---|
| 29 | LDFLAGS += -g
 | 
|---|
| 30 | else
 | 
|---|
| 31 | CFLAGS += -O2 -march=i586 -mcpu=i586 -fno-strength-reduce  -fomit-frame-pointer
 | 
|---|
| 32 | endif
 | 
|---|
| 33 | 
 | 
|---|
| 34 | ifdef SMALLPROG
 | 
|---|
| 35 | CFLAGS += -DSMALL
 | 
|---|
| 36 | else
 | 
|---|
| 37 | CFLAGS += -Ilibedit
 | 
|---|
| 38 | SRCS   += printf.c
 | 
|---|
| 39 | endif
 | 
|---|
| 40 | 
 | 
|---|
| 41 | LFLAGS= -8      # 8-bit lex scanner for arithmetic
 | 
|---|
| 42 | YFLAGS= -d
 | 
|---|
| 43 | ifdef CRUNCHEDPROG
 | 
|---|
| 44 | LFLAGS+=-L
 | 
|---|
| 45 | YFLAGS+=-l
 | 
|---|
| 46 | endif
 | 
|---|
| 47 | 
 | 
|---|
| 48 | 
 | 
|---|
| 49 | all: ash-dyn.exe ash-static.exe
 | 
|---|
| 50 | 
 | 
|---|
| 51 | CLEANFILES+= ${GENSRCS} ${GENHDRS} y.tab.h
 | 
|---|
| 52 | CLEANFILES+= trace
 | 
|---|
| 53 | 
 | 
|---|
| 54 | $(OBJDIR)/token.h: mktokens | $(OBJDIR)
 | 
|---|
| 55 |         bash $^
 | 
|---|
| 56 |         mv -f token.h $@.tmp
 | 
|---|
| 57 |         mv -f $@.tmp $@
 | 
|---|
| 58 | 
 | 
|---|
| 59 | $(OBJDIR)/builtins.h: $(OBJDIR)/builtins.c | $(OBJDIR)
 | 
|---|
| 60 | 
 | 
|---|
| 61 | $(OBJDIR)/builtins.c: mkbuiltins shell.h builtins.def | $(OBJDIR)
 | 
|---|
| 62 |         bash $^ $(OBJDIR)
 | 
|---|
| 63 |         [ -f $(OBJDIR)/builtins.h ]
 | 
|---|
| 64 | 
 | 
|---|
| 65 | $(OBJDIR)/init.c: mkinit.sh $(foreach src,$(SHSRCS),$(firstword $(wildcard ./$(src) ./funcs/$(src) ./bltin/$(src)) $(src))) | $(OBJDIR)
 | 
|---|
| 66 |         bash $^
 | 
|---|
| 67 |         mv -f init.c $@.tmp
 | 
|---|
| 68 |         mv -f $@.tmp $@
 | 
|---|
| 69 | 
 | 
|---|
| 70 | $(OBJDIR)/nodes.h: $(OBJDIR)/nodes.c | $(OBJDIR)
 | 
|---|
| 71 | 
 | 
|---|
| 72 | $(OBJDIR)/nodes.c: mknodes.sh nodetypes nodes.c.pat | $(OBJDIR)
 | 
|---|
| 73 |         bash $^ $(OBJDIR)
 | 
|---|
| 74 |         [ -f $(OBJDIR)/nodes.h ]
 | 
|---|
| 75 | 
 | 
|---|
| 76 | $(OBJDIR)/arith.h $(OBJDIR)/arith.c: arith.y | $(OBJDIR)
 | 
|---|
| 77 |         $(YACC) $(YFLAGS) $^
 | 
|---|
| 78 |         mv -f y.tab.c $(OBJDIR)/arith.c
 | 
|---|
| 79 |         mv -f y.tab.h $(OBJDIR)/arith.h
 | 
|---|
| 80 | 
 | 
|---|
| 81 | $(OBJDIR)/arith_lex.c: arith_lex.l | $(OBJDIR)
 | 
|---|
| 82 |         $(LEX) $(LFLAGS) -o$@ $^
 | 
|---|
| 83 | 
 | 
|---|
| 84 | #######
 | 
|---|
| 85 | 
 | 
|---|
| 86 | OBJS :=
 | 
|---|
| 87 | 
 | 
|---|
| 88 | define def_compile
 | 
|---|
| 89 | 
 | 
|---|
| 90 | $(eval s := $(firstword $(wildcard ./$(src) ./funcs/$(src) ./bltin/$(src)) $(src)))
 | 
|---|
| 91 | $(eval o := $(OBJDIR)/$(patsubst %.c,%.o,$(src)))
 | 
|---|
| 92 | $(eval OBJS += $(o))
 | 
|---|
| 93 | 
 | 
|---|
| 94 | $(o): $(s) | $(GENHDRS) $(OBJDIR)
 | 
|---|
| 95 |         $$(CC) -c $$(CFLAGS) -o $$@ $(s)
 | 
|---|
| 96 | 
 | 
|---|
| 97 | endef
 | 
|---|
| 98 | 
 | 
|---|
| 99 | $(foreach src,$(SHSRCS),$(eval $(def_compile)))
 | 
|---|
| 100 | 
 | 
|---|
| 101 | define def_compile_gen
 | 
|---|
| 102 | 
 | 
|---|
| 103 | $(eval o := $(patsubst %.c,%.o,$(src)))
 | 
|---|
| 104 | $(eval OBJS += $(o))
 | 
|---|
| 105 | 
 | 
|---|
| 106 | $(o): $(src) | $(OBJDIR)
 | 
|---|
| 107 |         $$(CC) -c $$(CFLAGS) -o $$@ $(src)
 | 
|---|
| 108 | 
 | 
|---|
| 109 | endef
 | 
|---|
| 110 | 
 | 
|---|
| 111 | $(foreach src,$(addprefix $(OBJDIR)/,$(GENSRCS)),$(eval $(def_compile_gen)))
 | 
|---|
| 112 | 
 | 
|---|
| 113 | $(OBJDIR):
 | 
|---|
| 114 |         mkdir -p $@
 | 
|---|
| 115 | 
 | 
|---|
| 116 | #######
 | 
|---|
| 117 | 
 | 
|---|
| 118 | ash-dyn.exe: $(OBJS)
 | 
|---|
| 119 |         $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(OBJS)
 | 
|---|
| 120 | #       lxlite /X /F /APP:4096 /S /T $@
 | 
|---|
| 121 | 
 | 
|---|
| 122 | ash-static.exe: $(OBJS)
 | 
|---|
| 123 |         $(CC) $(CFLAGS) -Wl,-static -static $(LDFLAGS) -lc_omf386 -o $@ $(OBJS)
 | 
|---|
| 124 | #       lxlite /X /F /APP:4096 /S /T $@
 | 
|---|
| 125 | 
 | 
|---|
| 126 | #%.exe: %.c
 | 
|---|
| 127 | #       $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $<
 | 
|---|
| 128 | 
 | 
|---|
| 129 | #echo.o: bltin/echo.c
 | 
|---|
| 130 | #       $(CC) -c -o $@ $(CFLAGS) $<
 | 
|---|
| 131 | #test.o: bltin/test.c
 | 
|---|
| 132 | #       $(CC) -c -o $@ $(CFLAGS) $<
 | 
|---|
| 133 | 
 | 
|---|
| 134 | clean:
 | 
|---|
| 135 |         rm -f core *.o $(CLEAN_FILES)
 | 
|---|
| 136 | 
 | 
|---|
| 137 | 
 | 
|---|