0,0 → 1,180 |
# |
# Copyright (c) 2005 Martin Decky |
# All rights reserved. |
# |
# Redistribution and use in source and binary forms, with or without |
# modification, are permitted provided that the following conditions |
# are met: |
# |
# - Redistributions of source code must retain the above copyright |
# notice, this list of conditions and the following disclaimer. |
# - Redistributions in binary form must reproduce the above copyright |
# notice, this list of conditions and the following disclaimer in the |
# documentation and/or other materials provided with the distribution. |
# - The name of the author may not be used to endorse or promote products |
# derived from this software without specific prior written permission. |
# |
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
# |
|
include ../../../version |
include ../../Makefile.config |
|
## Setup toolchain |
# |
|
LIBC_PREFIX = ../../lib/libc |
SOFTINT_PREFIX = ../../lib/softint |
include $(LIBC_PREFIX)/Makefile.toolchain |
|
CFLAGS += \ |
-DSHELL \ |
-I. \ |
-DNO_HISTORY \ |
-DBSD=1 \ |
-DSMALL \ |
-D_GNU_SOURCE \ |
-DGLOB_BROKEN \ |
-D__COPYRIGHT\(x\)= \ |
-D__RCSID\(x\)= |
# -D_DIAGASSERT\(x\)= \ |
# -DHETIO |
|
LIBS = $(LIBC_PREFIX)/libc.a |
DEFS += -DRELEASE=\"$(RELEASE)\" |
|
ifdef REVISION |
DEFS += "-DREVISION=\"$(REVISION)\"" |
endif |
|
ifdef TIMESTAMP |
DEFS += "-DTIMESTAMP=\"$(TIMESTAMP)\"" |
endif |
|
## Sources |
# |
|
OUTPUT = sh |
SHSRCS = \ |
fake.c \ |
alias.c \ |
cd.c \ |
bltin/echo.c \ |
error.c \ |
eval.c \ |
exec.c \ |
expand.c \ |
hetio.c \ |
histedit.c \ |
input.c \ |
jobs.c \ |
mail.c \ |
main.c \ |
memalloc.c \ |
miscbltin.c \ |
mystring.c \ |
options.c \ |
output.c \ |
parser.c \ |
redir.c \ |
show.c \ |
setmode.c \ |
bltin/test.c \ |
bltin/times.c \ |
trap.c \ |
var.c |
|
GENSRCS = \ |
builtins.c \ |
init.c \ |
nodes.c \ |
syntax.c \ |
signames.c |
# lex.yy.c \ |
# arith.c \ |
# arith.h \ |
|
GENHEADERS = \ |
token.h \ |
nodes.h \ |
syntax.h \ |
builtins.h |
|
SOURCES = ${SHSRCS} ${GENSRCS} |
SUBDIRS = tools |
|
OBJECTS := $(addsuffix .o,$(basename $(SOURCES))) |
|
.PHONY: all clean depend disasm all-subdirs |
|
all: all-subdirs $(OUTPUT) disasm |
|
all-subdirs: |
for i in $(SUBDIRS); do \ |
echo "make all in $$i..."; \ |
make -C $$i all; \ |
done |
|
-include Makefile.depend |
|
.ORDER: builtins.c builtins.h |
builtins.c builtins.h: mkbuiltins builtins.def |
sh mkbuiltins shell.h builtins.def `pwd` |
|
INIT_DEPS = alias.c eval.c exec.c input.c jobs.c options.c parser.c \ |
redir.c trap.c var.c output.c |
|
init.c: mkinit $(INIT_DEPS) |
./mkinit $(INIT_DEPS) |
|
signames.c: mksignames |
./mksignames |
|
nodes.c nodes.h: mknodes nodetypes nodes.c.pat |
./mknodes ./nodetypes ./nodes.c.pat |
|
syntax.c syntax.h: mksyntax |
./mksyntax |
|
#arith.c arith.h: arith.y |
# yacc -d arith.y |
# mv y.tab.h arith.h |
# mv y.tab.c arith.c |
|
token.h: mktokens |
sh ./mktokens |
|
clean: |
-rm -f $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm Makefile.depend |
-rm -f $(GENSRCS) $(GENHEADERS) $(OBJECTS) |
for i in $(SUBDIRS); do \ |
echo "make clean in $$i..."; \ |
make -C $$i clean; \ |
done |
|
depend: |
$(CC) $(DEFS) $(CFLAGS) -M $(SOURCES) $(GENHEADERS) > Makefile.depend |
|
$(OUTPUT): $(GENSRCS) $(GENHEADERS) $(OBJECTS) $(LIBS) |
$(LD) -T $(LIBC_PREFIX)/arch/$(ARCH)/_link.ld $(OBJECTS) $(LIBS) $(LFLAGS) -o $@ -Map $(OUTPUT).map |
|
disasm: |
$(OBJDUMP) -d $(OUTPUT) >$(OUTPUT).disasm |
|
%.o: %.S |
$(CC) $(DEFS) $(AFLAGS) $(CFLAGS) -D__ASM__ -c $< -o $@ |
|
%.o: %.s |
$(AS) $(AFLAGS) $< -o $@ |
|
%.o: %.c |
$(CC) $(DEFS) $(CFLAGS) -c $< -o $@ |