0fcc395cff937a0575676ea811a023dbc04f1f0c
[fw/sdcc] / src / port.mk
1 # Common Makefile for all ports.
2 # Input: SOURCES - list of C files included in the project
3 #        SPECIAL - list of special files that should be included in dependencies
4 #        PEEPRULES - list of all peephole rules (.rul) derrived files
5 #        PREBUILD - list of special files to build before deps.
6
7 # Ports are always located in sdcc/src/<portname>
8 PRJDIR = ../..
9 # Output
10 LIB = port.a
11 # Include the sdcc/src directory
12 INCLUDEFLAGS = -I..
13
14 # If the sources aren't specified, assume all in this directory.
15 ifndef SOURCES
16 SOURCES = $(wildcard *.c)
17 endif
18
19 # If the peephole rules aren't specified, assume all.
20 ifndef PEEPRULES
21 PEEPDEFS = $(wildcard *.def)
22 PEEPRULES = $(PEEPDEFS:.def=.rul)
23 endif
24
25 PREBUILD += $(PEEPRULES)
26
27 all: $(PREBUILD) dep $(LIB)
28
29 include $(PRJDIR)/Makefile.common
30
31 $(LIB): $(OBJ)
32         rm -f $(LIB)
33         $(AR) r $(LIB) $(OBJ)
34         $(RANLIB) $(LIB)
35
36 %.rul: %.def
37         $(AWK) -f ../SDCCpeeph.awk $< > $@
38
39 dep: Makefile.dep
40
41 Makefile.dep: $(PREBUILD) Makefile $(SOURCES) $(SPECIAL) *.h $(PRJDIR)/*.h $(PRJDIR)/src/*.h
42         $(CPP) $(CPPFLAGS) $(M_OR_MM) $(SOURCES) >Makefile.dep
43
44 include Makefile.dep
45
46 include ../port-clean.mk