1# create a separate list of objects per source type
2
3# If a source  file is located under $(BUILDDIR) directory
4# a corresponding object will be generated next to it
5MODULE_INPLACE_SRCS := $(filter $(BUILDDIR)/%,$(MODULE_SRCS))
6MODULE_OUTPLACE_SRCS := $(filter-out $(BUILDDIR)/%,$(MODULE_SRCS))
7
8MODULE_INPLACE_SRCS_FIRST := $(filter $(BUILDDIR)/%,$(MODULE_SRCS_FIRST))
9MODULE_OUTPLACE_SRCS_FIRST := $(filter-out $(BUILDDIR)/%,$(MODULE_SRCS_FIRST))
10
11MODULE_CSRCS := $(filter %.c,$(MODULE_OUTPLACE_SRCS))
12MODULE_CPPSRCS := $(filter %.cpp,$(MODULE_OUTPLACE_SRCS))
13MODULE_CCSRCS := $(filter %.cc,$(MODULE_OUTPLACE_SRCS))
14MODULE_ASMSRCS := $(filter %.S,$(MODULE_OUTPLACE_SRCS))
15
16MODULE_COBJS := $(call TOBUILDDIR,$(patsubst %.c,%.o,$(MODULE_CSRCS)))
17MODULE_CPPOBJS := $(call TOBUILDDIR,$(patsubst %.cpp,%.o,$(MODULE_CPPSRCS)))
18MODULE_CCOBJS := $(call TOBUILDDIR,$(patsubst %.cc,%.o,$(MODULE_CCSRCS)))
19MODULE_ASMOBJS := $(call TOBUILDDIR,$(patsubst %.S,%.o,$(MODULE_ASMSRCS)))
20
21MODULE_CSRCS_FIRST := $(filter %.c,$(MODULE_OUTPLACE_SRCS_FIRST))
22MODULE_CPPSRCS_FIRST := $(filter %.cpp,$(MODULE_OUTPLACE_SRCS_FIRST))
23MODULE_CCSRCS_FIRST := $(filter %.cc,$(MODULE_OUTPLACE_SRCS_FIRST))
24MODULE_ASMSRCS_FIRST := $(filter %.S,$(MODULE_OUTPLACE_SRCS_FIRST))
25
26MODULE_COBJS_FIRST := $(call TOBUILDDIR,$(patsubst %.c,%.o,$(MODULE_CSRCS_FIRST)))
27MODULE_CPPOBJS_FIRST := $(call TOBUILDDIR,$(patsubst %.cpp,%.o,$(MODULE_CPPSRCS_FIRST)))
28MODULE_CCOBJS_FIRST := $(call TOBUILDDIR,$(patsubst %.cc,%.o,$(MODULE_CCSRCS_FIRST)))
29MODULE_ASMOBJS_FIRST := $(call TOBUILDDIR,$(patsubst %.S,%.o,$(MODULE_ASMSRCS_FIRST)))
30
31# same for INPLACE sources
32MODULE_INPLACE_CSRCS := $(filter %.c,$(MODULE_INPLACE_SRCS))
33MODULE_INPLACE_CPPSRCS := $(filter %.cpp,$(MODULE_INPLACE_SRCS))
34MODULE_INPLACE_CCSRCS := $(filter %.cc,$(MODULE_INPLACE_SRCS))
35MODULE_INPLACE_ASMSRCS := $(filter %.S,$(MODULE_INPLACE_SRCS))
36
37MODULE_INPLACE_COBJS := $(patsubst %.c,%.o,$(MODULE_INPLACE_CSRCS))
38MODULE_INPLACE_CPPOBJS := $(patsubst %.cpp,%.o,$(MODULE_INPLACE_CPPSRCS))
39MODULE_INPLACE_CCOBJS := $(patsubst %.cc,%.o,$(MODULE_INPLACE_CCSRCS))
40MODULE_INPLACE_ASMOBJS := $(patsubst %.S,%.o,$(MODULE_INPLACE_ASMSRCS))
41
42MODULE_INPLACE_CSRCS_FIRST := $(filter %.c,$(MODULE_INPLACE_SRCS_FIRST))
43MODULE_INPLACE_CPPSRCS_FIRST := $(filter %.cpp,$(MODULE_INPLACE_SRCS_FIRST))
44MODULE_INPLACE_CCSRCS_FIRST := $(filter %.cc,$(MODULE_INPLACE_SRCS_FIRST))
45MODULE_INPLACE_ASMSRCS_FIRST := $(filter %.S,$(MODULE_INPLACE_SRCS_FIRST))
46
47MODULE_INPLACE_COBJS_FIRST := $(patsubst %.c,%.o,$(MODULE_INPLACE_CSRCS_FIRST))
48MODULE_INPLACE_CPPOBJS_FIRST := $(patsubst %.cpp,%.o,$(MODULE_INPLACE_CPPSRCS_FIRST))
49MODULE_INPLACE_CCOBJS_FIRST := $(patsubst %.cc,%.o,$(MODULE_INPLACE_CCSRCS_FIRST))
50MODULE_INPLACE_ASMOBJS_FIRST := $(patsubst %.S,%.o,$(MODULE_INPLACE_ASMSRCS_FIRST))
51
52# do the same thing for files specified in arm override mode
53MODULE_ARM_CSRCS := $(filter %.c,$(MODULE_ARM_OVERRIDE_SRCS))
54MODULE_ARM_CPPSRCS := $(filter %.cpp,$(MODULE_ARM_OVERRIDE_SRCS))
55MODULE_ARM_CCSRCS := $(filter %.cc,$(MODULE_ARM_OVERRIDE_SRCS))
56MODULE_ARM_ASMSRCS := $(filter %.S,$(MODULE_ARM_OVERRIDE_SRCS))
57
58MODULE_ARM_COBJS := $(call TOBUILDDIR,$(patsubst %.c,%.o,$(MODULE_ARM_CSRCS)))
59MODULE_ARM_CPPOBJS := $(call TOBUILDDIR,$(patsubst %.cpp,%.o,$(MODULE_ARM_CPPSRCS)))
60MODULE_ARM_CCOBJS := $(call TOBUILDDIR,$(patsubst %.cc,%.o,$(MODULE_ARM_CCSRCS)))
61MODULE_ARM_ASMOBJS := $(call TOBUILDDIR,$(patsubst %.S,%.o,$(MODULE_ARM_ASMSRCS)))
62
63MODULE_OBJS := $(MODULE_COBJS) \
64               $(MODULE_CPPOBJS) \
65               $(MODULE_CCOBJS) \
66               $(MODULE_ASMOBJS) \
67               $(MODULE_ARM_COBJS) \
68               $(MODULE_ARM_CPPOBJS) \
69               $(MODULE_ARM_CCOBJS) \
70               $(MODULE_ARM_ASMOBJS) \
71               $(MODULE_INPLACE_COBJS) \
72               $(MODULE_INPLACE_CPPOBJS) \
73               $(MODULE_INPLACE_CCOBJS) \
74               $(MODULE_INPLACE_ASMOBJS) \
75
76MODULE_INIT_OBJS := \
77	$(MODULE_COBJS_FIRST) \
78	$(MODULE_CPPOBJS_FIRST) \
79	$(MODULE_CCOBJS_FIRST) \
80	$(MODULE_ASMOBJS_FIRST) \
81
82MODULE_COBJS += $(MODULE_COBJS_FIRST)
83MODULE_CPPOBJS += $(MODULE_CPPOBJS_FIRST)
84MODULE_CCOBJS += $(MODULE_CCOBJS_FIRST)
85MODULE_ASMOBJS += $(MODULE_ASMOBJS_FIRST)
86
87MODULE_INPLACE_COBJS += $(MODULE_INPLACE_COBJS_FIRST)
88MODULE_INPLACE_CPPOBJS += $(MODULE_INPLACE_CPPOBJS_FIRST)
89MODULE_INPLACE_CCOBJS += $(MODULE_INPLACE_CCOBJS_FIRST)
90MODULE_INPLACE_ASMOBJS += $(MODULE_INPLACE_ASMOBJS_FIRST)
91
92#$(info MODULE_SRCS = $(MODULE_SRCS))
93#$(info MODULE_CSRCS = $(MODULE_CSRCS))
94#$(info MODULE_CPPSRCS = $(MODULE_CPPSRCS))
95#$(info MODULE_ASMSRCS = $(MODULE_ASMSRCS))
96
97#$(info MODULE_OBJS = $(MODULE_OBJS))
98#$(info MODULE_COBJS = $(MODULE_COBJS))
99#$(info MODULE_CPPOBJS = $(MODULE_CPPOBJS))
100#$(info MODULE_ASMOBJS = $(MODULE_ASMOBJS))
101
102#$(info MODULE_INPLACE_SRCS = $(MODULE_INPLACE_SRCS))
103#$(info MODULE_INPLACE_CSRCS = $(MODULE_INPLACE_CSRCS))
104#$(info MODULE_INPLACE_CPPSRCS = $(MODULE_INPLACE_CPPSRCS))
105#$(info MODULE_INPLACE_ASMSRCS = $(MODULE_INPLACE_ASMSRCS))
106
107#$(info MODULE_INPLACE_OBJS = $(MODULE_INPLACE_OBJS))
108#$(info MODULE_INPLACE_COBJS = $(MODULE_INPLACE_COBJS))
109#$(info MODULE_INPLACE_CPPOBJS = $(MODULE_INPLACE_CPPOBJS))
110#$(info MODULE_INPLACE_ASMOBJS = $(MODULE_INPLACE_ASMOBJS))
111
112$(MODULE_INIT_OBJS): MODULE:=$(MODULE)
113$(MODULE_INIT_OBJS): MODULE_OPTFLAGS:=$(MODULE_OPTFLAGS)
114$(MODULE_INIT_OBJS): MODULE_COMPILEFLAGS:=$(MODULE_COMPILEFLAGS)
115$(MODULE_INIT_OBJS): MODULE_CFLAGS:=$(MODULE_CFLAGS)
116$(MODULE_INIT_OBJS): MODULE_CPPFLAGS:=$(MODULE_CPPFLAGS)
117$(MODULE_INIT_OBJS): MODULE_ASMFLAGS:=$(MODULE_ASMFLAGS)
118$(MODULE_INIT_OBJS): MODULE_SRCDEPS:=$(MODULE_SRCDEPS)
119$(MODULE_INIT_OBJS): MODULE_INCLUDES:=$(MODULE_INCLUDES)
120
121$(MODULE_OBJS): MODULE:=$(MODULE)
122$(MODULE_OBJS): MODULE_OPTFLAGS:=$(MODULE_OPTFLAGS)
123$(MODULE_OBJS): MODULE_COMPILEFLAGS:=$(MODULE_COMPILEFLAGS)
124$(MODULE_OBJS): MODULE_CFLAGS:=$(MODULE_CFLAGS)
125$(MODULE_OBJS): MODULE_CPPFLAGS:=$(MODULE_CPPFLAGS)
126$(MODULE_OBJS): MODULE_ASMFLAGS:=$(MODULE_ASMFLAGS)
127$(MODULE_OBJS): MODULE_SRCDEPS:=$(MODULE_SRCDEPS)
128$(MODULE_OBJS): MODULE_INCLUDES:=$(MODULE_INCLUDES)
129
130$(MODULE_COBJS): $(BUILDDIR)/%.o: %.c $(MODULE_SRCDEPS)
131	@$(MKDIR)
132	@$(call ECHO,$(MODULE),compiling,$<)
133	$(NOECHO)$(CC) $(GLOBAL_OPTFLAGS) $(MODULE_OPTFLAGS) $(GLOBAL_COMPILEFLAGS) $(ARCH_COMPILEFLAGS) $(MODULE_COMPILEFLAGS) $(GLOBAL_CFLAGS) $(ARCH_CFLAGS) $(MODULE_CFLAGS) $(THUMBCFLAGS) $(MODULE_INCLUDES) $(GLOBAL_INCLUDES) -c $< -MD -MP -MT $@ -MF $(@:%o=%d) -o $@
134	@$(call ECHO_DONE_SILENT,$(MODULE),compiling,$<)
135
136$(MODULE_CPPOBJS): $(BUILDDIR)/%.o: %.cpp $(MODULE_SRCDEPS)
137	@$(MKDIR)
138	@$(call ECHO,$(MODULE),compiling,$<)
139	$(NOECHO)$(CC) $(GLOBAL_OPTFLAGS) $(MODULE_OPTFLAGS) $(GLOBAL_COMPILEFLAGS) $(ARCH_COMPILEFLAGS) $(MODULE_COMPILEFLAGS) $(GLOBAL_CPPFLAGS) $(ARCH_CPPFLAGS) $(MODULE_CPPFLAGS) $(THUMBCFLAGS) $(MODULE_INCLUDES) $(GLOBAL_INCLUDES) -c $< -MD -MP -MT $@ -MF $(@:%o=%d) -o $@
140	@$(call ECHO_DONE_SILENT,$(MODULE),compiling,$<)
141
142$(MODULE_CCOBJS): $(BUILDDIR)/%.o: %.cc $(MODULE_SRCDEPS)
143	@$(MKDIR)
144	@$(call ECHO,$(MODULE),compiling,$<)
145	$(NOECHO)$(CC) $(GLOBAL_OPTFLAGS) $(MODULE_OPTFLAGS) $(GLOBAL_COMPILEFLAGS) $(ARCH_COMPILEFLAGS) $(MODULE_COMPILEFLAGS) $(GLOBAL_CPPFLAGS) $(ARCH_CPPFLAGS) $(MODULE_CPPFLAGS) $(THUMBCFLAGS) $(MODULE_INCLUDES) $(GLOBAL_INCLUDES) -c $< -MD -MP -MT $@ -MF $(@:%o=%d) -o $@
146	@$(call ECHO_DONE_SILENT,$(MODULE),compiling,$<)
147
148$(MODULE_ASMOBJS): $(BUILDDIR)/%.o: %.S $(MODULE_SRCDEPS)
149	@$(MKDIR)
150	@$(call ECHO,$(MODULE),compiling,$<)
151	$(NOECHO)$(CC) $(GLOBAL_OPTFLAGS) $(MODULE_OPTFLAGS) $(GLOBAL_COMPILEFLAGS) $(ARCH_COMPILEFLAGS) $(MODULE_COMPILEFLAGS) $(GLOBAL_ASMFLAGS) $(ARCH_ASMFLAGS) $(MODULE_ASMFLAGS) $(THUMBCFLAGS) $(MODULE_INCLUDES) $(GLOBAL_INCLUDES) -c $< -MD -MP -MT $@ -MF $(@:%o=%d) -o $@
152	@$(call ECHO_DONE_SILENT,$(MODULE),compiling,$<)
153
154# Same rules as normal sources but output file is %.o rather then $(BUILDDIR)/%.o
155$(MODULE_INPLACE_COBJS): %.o : %.c $(MODULE_SRCDEPS)
156	@$(MKDIR)
157	@$(call ECHO,$(MODULE),compiling,$<)
158	$(NOECHO)$(CC) $(GLOBAL_OPTFLAGS) $(MODULE_OPTFLAGS) $(GLOBAL_COMPILEFLAGS) $(ARCH_COMPILEFLAGS) $(MODULE_COMPILEFLAGS) $(GLOBAL_CFLAGS) $(ARCH_CFLAGS) $(MODULE_CFLAGS) $(THUMBCFLAGS) $(MODULE_INCLUDES) $(GLOBAL_INCLUDES) -c $< -MD -MP -MT $@ -MF $(@:%o=%d) -o $@
159	@$(call ECHO_DONE_SILENT,$(MODULE),compiling,$<)
160
161$(MODULE_INPLACE_CPPOBJS): %.o : %.cpp $(MODULE_SRCDEPS)
162	@$(MKDIR)
163	@$(call ECHO,$(MODULE),compiling,$<)
164	$(NOECHO)$(CC) $(GLOBAL_OPTFLAGS) $(MODULE_OPTFLAGS) $(GLOBAL_COMPILEFLAGS) $(ARCH_COMPILEFLAGS) $(MODULE_COMPILEFLAGS) $(GLOBAL_CPPFLAGS) $(ARCH_CPPFLAGS) $(MODULE_CPPFLAGS) $(THUMBCFLAGS) $(MODULE_INCLUDES) $(GLOBAL_INCLUDES) -c $< -MD -MP -MT $@ -MF $(@:%o=%d) -o $@
165	@$(call ECHO_DONE_SILENT,$(MODULE),compiling,$<)
166
167$(MODULE_INPLACE_CCOBJS): %.o : %.cc $(MODULE_SRCDEPS)
168	@$(MKDIR)
169	@$(call ECHO,$(MODULE),compiling,$<)
170	$(NOECHO)$(CC) $(GLOBAL_OPTFLAGS) $(MODULE_OPTFLAGS) $(GLOBAL_COMPILEFLAGS) $(ARCH_COMPILEFLAGS) $(MODULE_COMPILEFLAGS) $(GLOBAL_CPPFLAGS) $(ARCH_CPPFLAGS) $(MODULE_CPPFLAGS) $(THUMBCFLAGS) $(MODULE_INCLUDES) $(GLOBAL_INCLUDES) -c $< -MD -MP -MT $@ -MF $(@:%o=%d) -o $@
171	@$(call ECHO_DONE_SILENT,$(MODULE),compiling,$<)
172
173$(MODULE_INPLACE_ASMOBJS): %.o : %.S $(MODULE_SRCDEPS)
174	@$(MKDIR)
175	@$(call ECHO,$(MODULE),compiling,$<)
176	$(NOECHO)$(CC) $(GLOBAL_OPTFLAGS) $(MODULE_OPTFLAGS) $(GLOBAL_COMPILEFLAGS) $(ARCH_COMPILEFLAGS) $(MODULE_COMPILEFLAGS) $(GLOBAL_ASMFLAGS) $(ARCH_ASMFLAGS) $(MODULE_ASMFLAGS) $(THUMBCFLAGS) $(MODULE_INCLUDES) $(GLOBAL_INCLUDES) -c $< -MD -MP -MT $@ -MF $(@:%o=%d) -o $@
177	@$(call ECHO_DONE_SILENT,$(MODULE),compiling,$<)
178
179# overridden arm versions
180$(MODULE_ARM_COBJS): $(BUILDDIR)/%.o: %.c $(MODULE_SRCDEPS)
181	@$(MKDIR)
182	@$(call ECHO,$(MODULE),compiling,$<)
183	$(NOECHO)$(CC) $(GLOBAL_OPTFLAGS) $(MODULE_OPTFLAGS) $(GLOBAL_COMPILEFLAGS) $(ARCH_COMPILEFLAGS) $(MODULE_COMPILEFLAGS) $(GLOBAL_CFLAGS) $(ARCH_CFLAGS) $(MODULE_CFLAGS) $(MODULE_INCLUDES) $(GLOBAL_INCLUDES) -c $< -MD -MP -MT $@ -MF $(@:%o=%d) -o $@
184	@$(call ECHO_DONE_SILENT,$(MODULE),compiling,$<)
185
186$(MODULE_ARM_CPPOBJS): $(BUILDDIR)/%.o: %.cpp $(MODULE_SRCDEPS)
187	@$(MKDIR)
188	@$(call ECHO,$(MODULE),compiling,$<)
189	$(NOECHO)$(CC) $(GLOBAL_OPTFLAGS) $(MODULE_OPTFLAGS) $(GLOBAL_COMPILEFLAGS) $(ARCH_COMPILEFLAGS) $(MODULE_COMPILEFLAGS) $(GLOBAL_CPPFLAGS) $(ARCH_CPPFLAGS) $(MODULE_CPPFLAGS) $(MODULE_INCLUDES) $(GLOBAL_INCLUDES) -c $< -MD -MP -MT $@ -MF $(@:%o=%d) -o $@
190	@$(call ECHO_DONE_SILENT,$(MODULE),compiling,$<)
191
192$(MODULE_ARM_CCOBJS): $(BUILDDIR)/%.o: %.cc $(MODULE_SRCDEPS)
193	@$(MKDIR)
194	@$(call ECHO,$(MODULE),compiling,$<)
195	$(CC) $(GLOBAL_OPTFLAGS) $(MODULE_OPTFLAGS) $(GLOBAL_COMPILEFLAGS) $(ARCH_COMPILEFLAGS) $(MODULE_COMPILEFLAGS) $(GLOBAL_CPPFLAGS) $(ARCH_CPPFLAGS) $(MODULE_CPPFLAGS) $(MODULE_INCLUDES) $(GLOBAL_INCLUDES) -c $< -MD -MP -MT $@ -MF $(@:%o=%d) -o $@
196	@$(call ECHO_DONE_SILENT,$(MODULE),compiling,$<)
197
198$(MODULE_ARM_ASMOBJS): $(BUILDDIR)/%.o: %.S $(MODULE_SRCDEPS)
199	@$(MKDIR)
200	@$(call ECHO,$(MODULE),compiling,$<)
201	$(NOECHO)$(CC) $(GLOBAL_OPTFLAGS) $(MODULE_OPTFLAGS) $(GLOBAL_COMPILEFLAGS) $(ARCH_COMPILEFLAGS) $(MODULE_COMPILEFLAGS) $(GLOBAL_ASMFLAGS) $(ARCH_ASMFLAGS) $(MODULE_ASMFLAGS) $(MODULE_INCLUDES) $(GLOBAL_INCLUDES) -c $< -MD -MP -MT $@ -MF $(@:%o=%d) -o $@
202	@$(call ECHO_DONE_SILENT,$(MODULE),compiling,$<)
203
204# clear some variables we set here
205MODULE_CSRCS :=
206MODULE_CPPSRCS :=
207MODULE_CCSRCS :=
208MODULE_ASMSRCS :=
209MODULE_COBJS :=
210MODULE_CPPOBJS :=
211MODULE_CCOBJS :=
212MODULE_ASMOBJS :=
213
214MODULE_INPLACE_CSRCS :=
215MODULE_INPLACE_CPPSRCS :=
216MODULE_INPLACE_CCSRCS :=
217MODULE_INPLACE_ASMSRCS :=
218MODULE_INPLACE_COBJS :=
219MODULE_INPLACE_CPPOBJS :=
220MODULE_INPLACE_CCOBJS :=
221MODULE_INPLACE_ASMOBJS :=
222
223MODULE_INPLACE_SRCS:=
224MODULE_OUTPLACE_SRCS:=
225
226MODULE_INPLACE_SRCS_FIRST:=
227MODULE_OUTPLACE_SRCS_FIRST:=
228
229MODULE_CSRCS_FIRST :=
230MODULE_CPPSRCS_FIRST :=
231MODULE_CCSRCS_FIRST :=
232MODULE_ASMSRCS_FIRST :=
233
234MODULE_COBJS_FIRST :=
235MODULE_CPPOBJS_FIRST :=
236MODULE_CCOBJS_FIRST :=
237MODULE_ASMOBJS_FIRST :=
238
239MODULE_INPLACE_CSRCS_FIRST :=
240MODULE_INPLACE_CPPSRCS_FIRST :=
241MODULE_INPLACE_CCSRCS_FIRST :=
242MODULE_INPLACE_ASMSRCS_FIRST :=
243MODULE_INPLACE_COBJS_FIRST :=
244MODULE_INPLACE_CPPOBJS_FIRST :=
245MODULE_INPLACE_CCOBJS_FIRST :=
246MODULE_INPLACE_ASMOBJS_FIRST :=
247
248# MODULE_OBJS is passed back
249#MODULE_OBJS :=
250
251