-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmakefile.inc
More file actions
46 lines (35 loc) · 1.35 KB
/
Copy pathmakefile.inc
File metadata and controls
46 lines (35 loc) · 1.35 KB
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
42
43
44
45
46
# Cross-compiling (e.g., on Mac OS X, install arm-none-eabi-gcc with MacPorts)
CROSSCOMPILE := arm-none-eabi-
CC = $(CROSSCOMPILE)gcc
AS = $(CROSSCOMPILE)as
LD = $(CROSSCOMPILE)ld
OBJCOPY = $(CROSSCOMPILE)objcopy
OBJDUMP = $(CROSSCOMPILE)objdump
CFLAGS = -march=armv6 -fno-pic -static -fno-builtin -fno-strict-aliasing -Wall -Werror -I.
LDFLAGS = -L.
ASFLAGS = -march=armv6
LIBGCC = $(shell $(CC) -print-libgcc-file-name)
# host compiler
HOSTCC_preferred = gcc
define get_hostcc
$(if $(shell which $(HOSTCC_preferred)),$(HOSTCC_preferred),"cc")
endef
HOSTCC := $(call get_hostcc)
# general rules
quiet-command = $(if $(V),$1,$(if $(2),@echo $2 && $1, @$1))
LINK_BIN = $(call quiet-command,$(LD) $(LDFLAGS) \
-T $(1) -o $(2) $(3) $(LIBS) -b binary $(4), " LINK $(TARGET_DIR)$@")
LINK_INIT = $(call quiet-command,$(LD) $(LDFLAGS) \
$(1) -o $@.out $<, " LINK $(TARGET_DIR)$@")
OBJCOPY_INIT = $(call quiet-command,$(OBJCOPY) \
-S -O binary --prefix-symbols="_binary_$@" $@.out $@, " OBJCOPY $(TARGET_DIR)$@")
build-directory = $(shell mkdir -p build build/device build/lib)
build/%.o: %.c
$(call build-directory)
$(call quiet-command,$(CC) $(CFLAGS) \
-c -o $@ $<," CC $(TARGET_DIR)$@")
AS_WITH = $(call quiet-command,$(CC) $(ASFLAGS) \
$(1) -c -o $@ $<," AS $(TARGET_DIR)$@")
build/%.o: %.S
$(call build-directory)
$(call AS_WITH, )