summaryrefslogtreecommitdiff
path: root/Makefile.nrf
blob: 8a8cb18e82960ec1d646c005837ddc2ccd284d22 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
PLATFORM_SOURCE_FILES = $(SDK_DIR)/Nordic/nrf51822/Source/templates/system_nrf51.c
PLATFORM_ASM_FILES = $(SDK_DIR)/Nordic/nrf51822/Source/templates/gcc/gcc_startup_nrf51.s
PROJECT_SOURCE_FILES = examples/helloworld/main.c

AM_CPPFLAGS += -I$(SDK_DIR)/Nordic/nrf51822/Include
AM_CPPFLAGS += -I$(SDK_DIR)/Nordic/nrf51822/Include/gcc

LDFLAGS += -T$(SDK_DIR)/Nordic/nrf51822/Source/templates/gcc/gcc_nrf51_blank_xxaa.ld
LDFLAGS += -L$(SDK_DIR)/Nordic/nrf51822/Source/templates/gcc
LDFLAGS += -mabi=aapcs --specs=nano.specs -Xlinker -Map=$(BUILD_DIR)/nrf.map

PLATFORM_OBJECT_FILES	= $(PLATFORM_SOURCE_FILES:.c=.o)
ASM_OBJECT_FILES	= $(PLATFORM_ASM_FILES:.s=.o)
PROJECT_OBJECT_FILES	= $(PROJECT_SOURCE_FILES:.c=.o)

all: $(BUILD_DIR) $(BUILD_DIR)/helloworld.bin

$(BUILD_DIR)/helloworld.bin: $(BUILD_DIR)/helloworld.out
	$(OBJCOPY) -Obinary $(BUILD_DIR)/helloworld.out $@

$(BUILD_DIR)/helloworld.out: $(PROJECT_OBJECT_FILES) $(STACK_OBJECT_FILES) \
				$(PLATFORM_OBJECT_FILES) $(ASM_OBJECT_FILES)
	$(CC) $(LDFLAGS) $(ASM_OBJECT_FILES) $(PROJECT_OBJECT_FILES) \
			$(PLATFORM_OBJECT_FILES) $(STACK_OBJECT_FILES) -o $@
	$(OBJDUMP) -h $(BUILD_DIR)/helloworld.out

# Build object files from C source files
%.o: %.c
	$(CC) -c $(CFLAGS) $(AM_CPPFLAGS) $(AM_CPPFLAGS) -o $@ $<

# Build object files from ASM source files
%.o: %.s
	$(CC) -c $(ASMFLAGS) $(AM_CPPFLAGS) -o $@ $<

$(BUILD_DIR):
	mkdir $@

clean:
	rm -rf $(BUILD_DIR) *.log
	rm $(PROJECT_OBJECT_FILES) $(PLATFORM_OBJECT_FILES) \
		$(ASM_OBJECT_FILES) $(STACK_OBJECT_FILES)