| [2463] | 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 |
|
|---|