Add first draft of marshalling spec
[polintos/scott/priv.git] / Makefile.tail
1 # Makefile.tail -- see Makefile.head for usage information
2
3 ASSRCS := $(ASFILES:%=%.S)
4 CSRCS := $(CFILES:%=%.c)
5 CXXSRCS := $(CXXFILES:%=%.cc)
6
7 ASOBJS := $(ASFILES:%=$(BUILDDIR)/%.o)
8 GENASOBJS := $(GENASFILES:%=$(BUILDDIR)/%.o)
9 COBJS := $(CFILES:%=$(BUILDDIR)/%.o)
10 GENCOBJS := $(GENCFILES:%=$(BUILDDIR)/%.o)
11 CXXOBJS := $(CXXFILES:%=$(BUILDDIR)/%.o)
12 GENCXXOBJS := $(GENCXXFILES:%=$(BUILDDIR)/%.o)
13
14 # ASOBJS must come first, so that the kernel entry code can be
15 # at the beginning of the output image.
16
17 FILES := $(ASFILES) $(CFILES) $(CXXFILES)
18 OBJS := $(ASOBJS) $(COBJS) $(CXXOBJS) $(GENASOBJS) $(GENCOBJS) $(GENCXXOBJS)
19 GENSRCS := $(GENASFILES:%=$(BUILDDIR)/%.S) $(GENCFILES:%=$(BUILDDIR)/%.c) \
20            $(GENCXXFILES:%=$(BUILDDIR)/%.cc)
21 SRCS := $(ASFILES:%=%.S) $(CFILES:%=%.c) $(CXXFILES:%=%.cc)
22
23 BUILDCOBJS := $(BUILDCFILES:%=$(BUILDDIR)/%.o)
24 BUILDGENCOBJS := $(BUILDGENCFILES:%=$(BUILDDIR)/%.o)
25 BUILDCXXOBJS := $(BUILDCXXFILES:%=$(BUILDDIR)/%.o)
26 BUILDGENCXXOBJS := $(BUILDGENCXXFILES:%=$(BUILDDIR)/%.o)
27
28 BUILDOBJS := $(BUILDCOBJS) $(BUILDCXXOBJS) $(BUILDGENCOBJS) $(BUILDGENCXXOBJS)
29 BUILDGENSRCS := $(BUILDGENCFILES:%=$(BUILDDIR)/%.c) $(BUILDGENCXXFILES:%=$(BUILDDIR)/%.cc)
30 BUILDSRCS := $(BUILDCFILES:%=%.c) $(BUILDCXXFILES:%=%.cc)
31
32 $(ASOBJS): $(BUILDDIR)/%.o: %.S
33         @echo $(COMP): "$<"
34         @$(MKDIR) $(dir $@)
35         @$(CC) $(ASFLAGS) -c -o "$@" "$<"
36
37 $(COBJS): $(BUILDDIR)/%.o: %.c
38         @echo $(COMP): "$<"
39         @$(MKDIR) $(dir $@)
40         @$(CC) $(CFLAGS) -c -o "$@" "$<"
41
42 $(CXXOBJS): $(BUILDDIR)/%.o: %.cc
43         @echo $(COMP): "$<"
44         @$(MKDIR) $(dir $@)
45         @$(CXX) $(CXXFLAGS) -c -o "$@" "$<"
46
47 $(GENASOBJS): %.o: %.S
48         @echo $(COMP): "$<"
49         @$(MKDIR) $(dir $@)
50         @$(CC) $(ASFLAGS) -c -o "$@" "$<"
51
52 $(GENCOBJS): %.o: %.c
53         @echo $(COMP): "$<"
54         @$(MKDIR) $(dir $@)
55         @$(CC) $(CFLAGS) -c -o "$@" "$<"
56
57 $(GENCXXOBJS): %.o: %.cc
58         @echo $(COMP): "$<"
59         @$(MKDIR) $(dir $@)
60         @$(CXX) $(CXXFLAGS) -c -o "$@" "$<"
61
62 $(BUILDCOBJS): $(BUILDDIR)/%.o: %.c
63         @echo $(COMP): "$<"
64         @$(MKDIR) $(dir $@)
65         @$(BUILDCC) $(BUILDCFLAGS) -c -o "$@" "$<"
66
67 $(BUILDCXXOBJS): $(BUILDDIR)/%.o: %.cc
68         @echo $(COMP): "$<"
69         @$(MKDIR) $(dir $@)
70         @$(BUILDCXX) $(BUILDCXXFLAGS) -c -o "$@" "$<"
71
72 $(BUILDGENCOBJS): %.o: %.c
73         @echo $(COMP): "$<"
74         @$(MKDIR) $(dir $@)
75         @$(BUILDCC) $(BUILDCFLAGS) -c -o "$@" "$<"
76
77 $(BUILDGENCXXOBJS): %.o: %.cc
78         @echo $(COMP): "$<"
79         @$(MKDIR) $(dir $@)
80         @$(BUILDCXX) $(BUILDCXXFLAGS) -c -o "$@" "$<"
81
82 clean: $(EXTRACLEAN)
83         $(RM) $(foreach dir,$(DIRS),$(BUILDDIR)/$(dir)*.o)
84         $(RMDIR) $(BUILDDIR)/include/servers
85         $(RMDIR) $(TARGETS) $(GENSRCS) $(BUILDGENSRCS)
86
87 distclean: clean $(EXTRADISTCLEAN)
88         $(RM) .gdb_history
89         $(RMDIR) $(BUILDDIR)
90
91 # Every .o file which has a corresponding .cdl file will
92 # depend on the server stubs.
93
94 SERVERS := $(wildcard $(FILES:%=%.cdl))
95 SERVERS := $(SERVERS:%.cdl=%) 
96
97 $(SERVERS:%=$(SERVERDIR)/%): $(SERVERDIR)/%: %.cdl $(IFACES)
98         @echo $(COMP): "$<"
99         @$(RMDIR) "$@"
100         @if ! $(IDLC) -t $(ARCH) -l c++ -r -i "$(IFACES)" -o "$@" "$<"; then \
101                 $(RMDIR) "$@"; \
102                 false; \
103         fi
104
105 .DELETE_ON_ERROR: $(SERVERS:%=$(SERVERDIR)/%)
106
107 $(SERVERS:%=%.cc): %.cc: $(SERVERDIR)/%
108 servers: $(SERVERS:%=$(SERVERDIR)/%)
109
110 ifneq ($(NODEPS),y)
111 dep: servers $(PREDEP) 
112         @echo $(COMP): Generating dependencies
113         @$(RM) "$(BUILDDIR)"/.depend
114         @$(MKDIR) "$(BUILDDIR)"
115         @$(TOUCH) "$(BUILDDIR)"/.depend
116         @for i in $(SRCS); do if [ -f "$$i" ]; then \
117                 OBJ=`echo "$$i" | sed s/\\.\[^.\]*$$//`.o; \
118                 $(CXX) $(CXXFLAGS) -DMAKEDEP -M -MT "$(BUILDDIR)/$$OBJ" "$$i" >> "$(BUILDDIR)"/.depend; \
119         fi; done
120         @for i in $(GENSRCS); do if [ -f "$$i" ]; then \
121                 OBJ=`echo "$$i" | sed s/\\.\[^.\]*$$//`.o; \
122                 $(CXX) $(CXXFLAGS) -DMAKEDEP -M -MT "$$OBJ" "$$i" >> "$(BUILDDIR)"/.depend; \
123         fi; done
124         @for i in $(BUILDSRCS); do if [ -f "$$i" ]; then \
125                 OBJ=`echo "$$i" | sed s/\\.\[^.\]*$$//`.o; \
126                 $(BUILDCXX) $(BUILDCXXFLAGS) -DMAKEDEP -M -MT "$(BUILDDIR)/$$OBJ" "$$i" >> "$(BUILDDIR)"/.depend; \
127         fi; done
128         @for i in $(BUILDGENSRCS); do if [ -f "$$i" ]; then \
129                 OBJ=`echo "$$i" | sed s/\\.\[^.\]*$$//`.o; \
130                 $(BUILDCXX) $(BUILDCXXFLAGS) -DMAKEDEP -M -MT "$$OBJ" "$$i" >> "$(BUILDDIR)"/.depend; \
131         fi; done
132         @for i in $(SERVERS); do \
133                 $(IDLC) -M -l c++ -r -i "$(IFACES)" -o "$(SERVERDIR)/$$i" \
134                 "$$i.cdl" >> "$(BUILDDIR)"/.depend; \
135         done
136
137 depend: dep
138
139 ifeq ($(BUILDDIR)/.depend,$(wildcard $(BUILDDIR)/.depend))
140 include $(BUILDDIR)/.depend
141 default: $(TARGETS)
142 else
143 rerun: dep
144         @$(MAKE)
145
146 default: rerun
147 endif
148
149 else
150 dep:
151 depend:
152
153 default: $(TARGETS)
154 endif