diff options
author | Paulo Borges <paulo.borges@openbossa.org> | 2013-11-29 20:40:28 -0300 |
---|---|---|
committer | Paulo Borges <paulo.borges@openbossa.org> | 2013-12-20 13:23:46 -0300 |
commit | 2ad20b68c33114055cfd33895b17b9d1f62b3387 (patch) | |
tree | 37c0ca1a98dc70a48986c60b08da9bef80905a48 | |
parent | b0dd5928024ae616d2da8304303f2aac6d2460a0 (diff) |
build: Add Makefile.common
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | Makefile.common | 110 |
2 files changed, 111 insertions, 0 deletions
@@ -1,3 +1,4 @@ +Makefile.config build *.log *.pyc diff --git a/Makefile.common b/Makefile.common new file mode 100644 index 0000000..eaf491e --- /dev/null +++ b/Makefile.common @@ -0,0 +1,110 @@ +# Common Makefile + +# If BLESTACK_PATH isn't defined, assume Makefile.common was the last inclusion +ifeq ($(BLESTACK_PATH),) + BLESTACK_PATH = $(patsubst %\,%,$(dir $(lastword $(MAKEFILE_LIST)))) +endif + +ifeq ($(BUILD_PATH),) + BUILD_PATH = build +endif + +-include Makefile.config + +ifeq ($(PLATFORM),) + $(error PLATFORM is not defined) +endif + +PLATFORM_PATH = $(BLESTACK_PATH)/platform/$(PLATFORM) +-include $(PLATFORM_PATH)/Makefile.platform + +ifeq ($(PROJECT_TARGET),) + $(error PROJECT_TARGET is not defined) +endif + +INCLUDE_PATHS = $(PLATFORM_INCLUDE_PATHS) \ + $(PROJECT_INCLUDE_PATHS) \ + $(BLESTACK_PATH)/stack + +INCLUDES = $(addprefix -I, $(INCLUDE_PATHS)) + +CFLAGS = $(PLATFORM_CFLAGS) \ + $(PROJECT_CFLAGS) \ + $(INCLUDES) + +ASMFLAGS = $(PLATFORM_ASMFLAGS) \ + $(PROJECT_ASMFLAGS) + +LDFLAGS = $(PLATFORM_LDFLAGS) \ + $(PROJECT_LDFLAGS) + +SOURCE_PATHS = $(PLATFORM_SOURCE_PATHS) \ + $(PROJECT_SOURCE_PATHS) + +SOURCE_FILES = $(PLATFORM_SOURCE_FILES) \ + $(PROJECT_SOURCE_FILES) + +ASM_PATHS = $(PLATFORM_ASM_PATHS) \ + $(PROJECT_ASM_PATHS) + +ASM_FILES = $(PLATFORM_ASM_FILES) \ + $(PROJECT_ASM_FILES) + +C_OBJECT_FILES = $(addprefix $(BUILD_PATH)/, $(SOURCE_FILES:.c=.o)) +ASM_OBJECT_FILES = $(addprefix $(BUILD_PATH)/, $(ASM_FILES:.s=.o)) + +vpath %.c $(SOURCE_PATHS) +vpath %.s $(ASM_PATHS) + +all: $(BUILD_PATH) $(BUILD_PATH)/$(PROJECT_TARGET).bin + +$(BUILD_PATH)/$(PROJECT_TARGET).bin: $(BUILD_PATH)/$(PROJECT_TARGET).out + @echo "OBJCOPY\t$@" + @$(OBJCOPY) -Obinary $(BUILD_PATH)/$(PROJECT_TARGET).out \ + $(BUILD_PATH)/$(PROJECT_TARGET).bin + +# Link object files +$(BUILD_PATH)/$(PROJECT_TARGET).out: $(C_OBJECT_FILES) $(ASM_OBJECT_FILES) + @echo " LD\t$@" + @$(LD) $(LDFLAGS) $(C_OBJECT_FILES) $(ASM_OBJECT_FILES) -o $@ + @echo "OBJDUMP\t$@" + @$(OBJDUMP) -h $@ + +# Build source files +$(BUILD_PATH)/%.o: %.c + @echo " CC\t$<" + @$(CC) $(CFLAGS) -o $@ $< + +# Build ASM files +$(BUILD_PATH)/%.o: %.s + @echo " CC\t$<" + @$(CC) $(ASMFLAGS) -o $@ $< + +$(BUILD_PATH): + @echo " MKDIR\t$@" + @-mkdir $@ + +install: all + $(FLASHER) flash `pwd`/$(BUILD_PATH)/$(PROJECT_TARGET).bin + +erase: + $(FLASHER) erase + +clean: + @echo " CLEAN" + @rm -rf $(BUILD_PATH) *.log + +dump: + @echo "" + @echo "INCLUDE_PATHS: $(INCLUDE_PATHS)" + @echo "" + @echo "SOURCE_PATHS: $(SOURCE_PATHS)" + @echo "" + @echo "ASM_PATHS: $(ASM_PATHS)" + @echo "" + @echo "SOURCE_FILES: $(SOURCE_FILES)" + @echo "" + @echo "ASM_FILES: $(ASM_FILES)" + @echo "" + +.PHONY: all install erase clean dump |