firmware: separated various pieces of interrupt handling apart
[osmocom-bb.git] / src / target / firmware / Makefile.inc
index 1577e2c..52b58ee 100644 (file)
@@ -35,6 +35,7 @@ GIT_MODIFIED:=$(shell (git status | grep "modified:\|added:\|deleted:" -q) && ec
 
 GIT_REVISION:=$(GIT_COMMIT)$(GIT_MODIFIED)
 
+ASFLAGS += -DGIT_REVISION=\"$(GIT_REVISION)\"
 CFLAGS += -DGIT_REVISION=\"$(GIT_REVISION)\"
 
 #### GLOBAL DATA ####
@@ -71,20 +72,27 @@ ALL_DEPS+=$(ANY_APP_OBJS:.o=.p)
 # template for application rules
 define APPLICATION_BOARD_ENVIRONMENT_template
 
-board/$(2)/$(1).$(3).elf board/$(2)/$(1).$(3).map board/$(2)/$(1).$(3).size: apps/$(1)/main.o $(ANY_APP_OBJS) $(ANY_APP_LIBS) $$($(2)_OBJS) board/$(2)/manifest.$(3).o
-       $(CROSS_COMPILE)$(LD) $(LDFLAGS) -T $$($(3)_LDS) -Bstatic -Map board/$(2)/$(1).$(3).map  -o board/$(2)/$(1).$(3).elf --start-group $$^ --end-group
-       $(CROSS_COMPILE)$(SIZE) board/$(2)/$(1).$(3).elf | tee board/$(2)/$(1).$(3).size
+# define set of objects for this binary
+$(1)_$(2)_$(3)_OBJS := apps/$(1)/main.o $(ANY_APP_OBJS) $$($(2)_OBJS)
+$(1)_$(2)_$(3)_LIBS := $(ANY_APP_LIBS)
 
-ALL_APPS+=board/$(2)/$(1).$(3).elf
+# define manifest compilation
+board/$(2)/$(1).$(3).manifest.o: board/manifest.c
+       $(CROSS_COMPILE)$(CC) $(CFLAGS) -DAPPLICATION=\"$(1)\" -DBOARD=\"$(2)\" -DENVIRONMENT=\"$(3)\" -c -o $$@ $$<
 
-endef
+# add manifest object to object list
+$(1)_$(2)_$(3)_OBJS+=board/$(2)/$(1).$(3).manifest.o $$($(3)_OBJS)
 
-define BOARD_ENVIRONMENT_template
+# define compilation, generating various extra files on the way
+board/$(2)/$(1).$(3).elf board/$(2)/$(1).$(3).map board/$(2)/$(1).$(3).size: $$($(1)_$(2)_$(3)_OBJS) $$($(1)_$(2)_$(3)_LIBS) $$($(3)_LDS)
+       $(CROSS_COMPILE)$(LD) $(LDFLAGS) -T $$($(3)_LDS) -Bstatic \
+               -Map board/$(2)/$(1).$(3).map -o board/$(2)/$(1).$(3).elf \
+               --start-group $$($(1)_$(2)_$(3)_OBJS) $$($(1)_$(2)_$(3)_LIBS) --end-group
+       $(CROSS_COMPILE)$(SIZE) board/$(2)/$(1).$(3).elf | tee board/$(2)/$(1).$(3).size
 
-board/$(1)/manifest.$(2).o: board/manifest.c
-       $(CROSS_COMPILE)$(CC) $(CFLAGS) -DBOARD=\"$(1)\" -DENVIRONMENT=\"$(2)\" -c -o $$@ $$<
+ALL_APPS+=board/$(2)/$(1).$(3).elf
 
-ALL_OBJS+=board/$(1)/manifest.$(2).o
+ALL_OBJS+=$$($(1)_$(2)_$(3)_OBJS)
 
 endef
 
@@ -106,10 +114,16 @@ ALL_DEPS+=$$($(1)_OBJS:.o=.p) apps/$(1)/main.p
 endef
 
 # define rules for all defined applications
-$(foreach app,$(APPLICATIONS),$(foreach brd,$(BOARDS),$(foreach env,$(ENVIRONMENTS),$(eval $(call APPLICATION_BOARD_ENVIRONMENT_template,$(app),$(brd),$(env))))))
-$(foreach brd,$(BOARDS),$(foreach env,$(ENVIRONMENTS),$(eval $(call BOARD_ENVIRONMENT_template,$(brd),$(env)))))
-$(foreach brd,$(BOARDS),$(eval $(call BOARD_template,$(brd))))
-$(foreach app,$(APPLICATIONS),$(eval $(call APPLICATION_template,$(app))))
+$(foreach app,$(APPLICATIONS),                \
+       $(foreach brd,$(BOARDS),                  \
+               $(foreach env,$($(brd)_ENVIRONMENTS), \
+                       $(eval $(call APPLICATION_BOARD_ENVIRONMENT_template,$(app),$(brd),$(env))))))
+
+$(foreach brd,$(BOARDS), \
+       $(eval $(call BOARD_template,$(brd))))
+
+$(foreach app,$(APPLICATIONS), \
+       $(eval $(call APPLICATION_template,$(app))))
 
 
 #### LIBRARY RULES ####
@@ -173,6 +187,7 @@ clean:
 
 .PHONY: distclean
 distclean: clean
+       find . -name '*.o' -or -name '*.bin' -or -name '*.map' -or -name '*.lst' -or -name '*.p' -exec rm '{}' ';'
 
 
 #### DEPENDENCY LOAD ####