Add some debug help : print pc and lr upon Fault
[dtplug] / Makefile
index ffd375c..2093f49 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,6 @@
 # Makefile for GPIO Demo Module
 
-TARGET_DIR = apps/$(NAME)
+TARGET_DIR = apps/$(MODULE)/$(NAME)
 
 LPC = lpc1764
 CPU = cortex-m3
@@ -16,7 +16,7 @@ LINKOPTS = -static -nostartfiles -nostdlib \
                   -Wl,-Map=$(TARGET_DIR)/lpc_map_$(LPC).map -Tlpc_link_$(LPC).ld
 
 
-APPS = $(subst apps/,,$(wildcard apps/*))
+APPS = $(subst apps/,,$(wildcard apps/*/*))
 
 .PHONY: all $(APPS)
 all: $(APPS)
@@ -26,6 +26,7 @@ TARGET_INCLUDES = $(TARGET_DIR)/
 OBJDIR = objs
 
 SRC = $(wildcard */*.c)
+SRC += $(wildcard lib/*/*.c)
 OBJS = ${SRC:%.c=${OBJDIR}/%.o}
 DEPS = ${OBJS:%.o=$(OBJDIR)/%.d}
 
@@ -38,13 +39,14 @@ NAME_DEPS = ${NAME_OBJS:%.o=$(OBJDIR)/%.d}
 .SECONDARY: $(OBJS) $(NAME_OBJS)
 .PRECIOUS: %.elf
 %.elf: $(OBJS) $(NAME_OBJS)
-       @echo "Linking $(NAME) ..."
+       @echo "Linking $(MODULE)/$(NAME) ..."
        @$(CC) $(LINKOPTS) $(OBJS) $(NAME_OBJS) -o $@
 
 %.bin: %.elf
        @echo "Creating image : \e[32m$@\e[39m"
        @$(CROSS_COMPILE)objcopy -R .stack -R .bss -O binary $^ $@
        @ls -l $@
+       @$(CROSS_COMPILE)size $^
        @echo Done.
 
 ${OBJDIR}/%.o: %.c
@@ -54,7 +56,7 @@ ${OBJDIR}/%.o: %.c
 
 
 $(APPS):
-       @make --no-print-directory NAME=$@ apps/$@/$@.bin
+       @make --no-print-directory MODULE=$(shell dirname $@) NAME=$(shell basename $@) apps/$(shell dirname $@)/$(shell basename $@)/$(shell basename $@).bin
 
 all_apps: $(APPS)
 
@@ -62,18 +64,17 @@ clean:
        rm -rf $(OBJDIR)
 
 mrproper: clean
-       rm -f apps/*/*.bin apps/*/*.elf apps/*/*.map
+       rm -f apps/*/*/*.bin apps/*/*/*.elf apps/*/*/*.map
 
 
 # Some notes :
-# The command "make -f /path/to/here/Makefile app_name" does not work, as well
-# as the command "make -f /path/to/here/apps/app_name/Makefile".
+# The command "make -f /path/to/here/Makefile module/app_name" does not work, as well
+# as the command "make -f /path/to/here/apps/module/app_name/Makefile".
 # This could be solved in the app Makefiles by replacing
 #   "NAME = $(shell basename $(CURDIR))"
 # with
 #   "NAME = $(shell basename $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST)))))"
 # and possibly some similar trick for the base Makefile but this is just
 # unreadable and moslty unusefull, so it won't be supported.
-# Use "make -C /path/to/here/ app_name" or "make -C /path/to/here/apps/app_name"
+# Use "make -C /path/to/here/ module/app_name" or "make -C /path/to/here/apps/module/app_name"
 # instead.
-