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