1# Define the target all as default2all:34PREFIX = /usr/local5LIBPREFIX = $(PREFIX)6LIBPROFILE = scc7CONF = amd64-linux8TOOL = unix9HOST = posix10ROFF = gnu11VERSION = 0.112include $(PROJECTDIR)/config.mk1314# Define helper macros for project directories15DOCDIR = $(PROJECTDIR)/doc16INCDIR = $(PROJECTDIR)/include/scc17BINDIR = $(PROJECTDIR)/bin18SRCDIR = $(PROJECTDIR)/src19SCRIPTDIR = $(PROJECTDIR)/scripts20LIBDIR = $(PROJECTDIR)/lib21LIBEXEC = $(PROJECTDIR)/libexec22BUILDDIR = $(PROJECTDIR)/scripts/build23CRTDIR = $(PROJECTDIR)/lib/scc24LIBCDIR = $(CRTDIR)/$(ARCH)-$(SYS)25MKDEP = $(SCRIPTDIR)/mkdep26SRCDIR = $(PROJECTDIR)/src27CMDDIR = $(SRCDIR)/cmd28MANDIR = $(PROJECTDIR)/share/man2930SCC = $(BINDIR)/scc31SCC_AR = $(BINDIR)/scc-ar32SCC_RANLIB= $(BINDIR)/scc-ranlib3334# library dependences helpers35LIBMACH = $(LIBDIR)/scc/libmach.a36LIBSCC = $(LIBDIR)/scc/libscc.a37LIBSCC_DRIVER = $(LIBDIR)/scc/libscc-$(DRIVER).a3839# Include configuration definitions40include $(BUILDDIR)/conf/$(CONF).mk41include $(BUILDDIR)/tool/$(TOOL).mk42include $(BUILDDIR)/host/$(HOST).mk4344# Locations for -I or -L in compiler, assembler or linker45CPPINCLUDES = -I$(INCDIR)/bits46ASINCLUDES = -I$(INCDIR)/bits47LDINCLUDES = -L$(LIBDIR)/scc4849# Definition of command line for cc, as, ld and emu50PROJ_CPPFLAGS =\51 $(CPPINCLUDES)\52 $(HOST_CPPFLAGS)\53 $(MORE_CPPFLAGS)5455PROJ_CFLAGS =\56 $(PROJ_CPPFLAGS)\57 $(MORE_CFLAGS)\58 $(HOST_CFLAGS)\59 $(SYS_CFLAGS)\60 $(TOOL_CFLAGS)\61 $(CFLAGS)6263PROJ_LDFLAGS =\64 $(MORE_LDFLAGS)\65 $(HOST_LDFLAGS)\66 $(SYS_LDFLAGS)\67 $(TOOL_LDFLAGS)\68 $(LDINCLUDES)\69 $(LDFLAGS)7071PROJ_ASFLAGS =\72 $(MORE_ASFLAGS)\73 $(HOST_ASFLAGS)\74 $(SYS_ASFLAGS)\75 $(TOOL_ASFLAGS)\76 $(ASINCLUDES)\77 $(ASFLAGS)7879PROJ_ARFLAGS =\80 $(MORE_ARFLAGS)\81 $(HOST_ARFLAGS)\82 $(SYS_ARFLAGS)\83 $(TOOL_ARFLAGS)\84 $(ARFLAGS)8586PROJ_RLFLAGS =\87 $(MORE_RLFLAGS)\88 $(HOST_RLFLAGS)\89 $(SYS_RLFLAGS)\90 $(TOOL_RLFLAGS)\91 $(RLFLAGS)9293PROJ_LDLIBS =\94 $(MORE_LDLIBS)\95 $(HOST_LDLIBS)\96 $(SYS_LDLIBS)\97 $(TOOL_LDLIBS)\98 $(LIBS)99100# Definition of tools101CC = $(CROSS_COMPILE)$(COMP)102AS = $(CROSS_COMPILE)$(ASM)103LD = $(CROSS_COMPILE)$(LINKER)104OC = $(CROSS_COMPILE)$(OBJCOPY)105OD = $(CROSS_COMPILE)$(OBJDUMP)106RL = $(CROSS_COMPILE)$(RANLIB)107AR = $(CROSS_COMPILE)$(ARCHIVE)108CPP = $(CROSS_COMPILE)$(PRECOMP)109GS = gs110111$(DIRS) DUMMY : FORCE112 +@cd $@ && $(MAKE)113114# Generic rules115.SUFFIXES:116.SUFFIXES: .c .map .dump .elf .bin\117 .i .a .o .s .S .ko .ld .tmpl\118 .pdf .ps .eps .puml\119 .ms .1 .2 .3 .4 .5 .6 .7\120121.c:122 $(CC) $(PROJ_CFLAGS) $(PROJ_LDFLAGS) -o $@ $< $(PROJ_LDLIBS)123124.s.o:125 $(AS) $(PROJ_ASFLAGS) $< -o $@126127.s.ko:128 $(AS) $(PROJ_ASFLAGS) $< -o $@129130.c.o:131 $(CC) $(PROJ_CFLAGS) -o $@ -c $<132133.c.s:134 $(CC) $(PROJ_CFLAGS) -S -o $@ $<135136.c.i:137 $(CPP) $(PROJ_CPPFLAGS) -o $@ $<138139.elf.bin:140 $(OC) -O binary $< $@141142.o.dump:143 trap 'rm -f $$$$.dump' EXIT;\144 trap 'exit $?' HUP INT TERM;\145 $(OD) -D $< > $$$$.dump && mv $$$$.dump $@146147.elf.map:148 $(LD) -Map=$@ $< -o /dev/null149150.puml.eps:151 trap 'rm -f $$$$.eps' EXIT;\152 trap 'exit $?' HUP INT TERM;\153 plantuml -p -teps < $< > $$$$.eps && mv $$$$.eps $@154155.ms.ps:156 trap 'rm -f $$$$.ps' EXIT;\157 trap 'exit $?' HUP INT TERM;\158 $(SOELIM) $< | $(GRAP) | $(PIC) | $(EQN) | $(TBL) |\159 $(TROFF) -ms | $(DPOST) > $$$$.ps &&\160 mv $$$$.ps $@161162.1.ps .2.ps .3.ps .4.ps .5.ps .6.ps .7.ps:163 trap 'rm -f $$$$.ps' EXIT;\164 trap 'exit $?' HUP INT TERM;\165 $(TBL) $< | $(TROFF) -man | $(DPOST) > $$$$.ps && mv $$$$.ps $@166167.ps.pdf:168 $(GS) -P- -dSAFER -q -P- -dNOPAUSE -dBATCH -sDEVICE=pdfwrite \169 -ssdout=%stderr "-sOutputFile=$@" -P- -dSAFER "$<"170171.eps.pdf:172 $(GS) -P- -dSAFER -q -P- -dNOPAUSE -dBATCH -sDEVICE=pdfwrite \173 -ssdout=%stderr "-sOutputFile=$@" -P- -dSAFER "$<"174FORCE:175176clean: clean-files clean-dirs177178clean-dirs:179 +@set -e; \180 for i in $(DIRS); \181 do \182 cd $$i; \183 $(MAKE) clean; \184 cd -; \185 done186187clean-files:188 rm -f *.i *.d *.o *.a *.elf $(TARGET)189190dep: add-makefile recursive-dep191192add-makefile: FORCE193 test -n "$(NODEP)" || $(MKDEP)194195recursive-dep: FORCE196 +@set -e; \197 for i in $(DIRS); \198 do \199 test $$i = tests && continue;\200 cd $$i; \201 $(MAKE) dep; \202 cd -; \203 done204205distclean: recursive-distclean206207del-makefile: FORCE208 rm -f makefile209210recursive-distclean: del-makefile FORCE211 +@set -e;\212 for i in $(DIRS); \213 do\214 test $$i = tests && continue;\215 cd $$i;\216 $(MAKE) distclean;\217 cd -;\218 done