-
Notifications
You must be signed in to change notification settings - Fork 76
/
Makefile.rules
128 lines (103 loc) · 4.53 KB
/
Makefile.rules
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
# ----------------------------------------------------------------------------
# SAM Software Package License
# ----------------------------------------------------------------------------
# Copyright (c) 2015, Atmel Corporation
#
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# - Redistributions of source code must retain the above copyright notice,
# this list of conditions and the disclaimer below.
#
# Atmel's name may not be used to endorse or promote products derived from
# this software without specific prior written permission.
#
# DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
# DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
# OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# ----------------------------------------------------------------------------
# default target
all::
include $(TOP)/scripts/Makefile.vars
BUILDDIR ?= ./build/$(TARGET)/$(VARIANT)
#-------------------------------------------------------------------------------
# Rules
#-------------------------------------------------------------------------------
include $(TOP)/samba_applets/common/Makefile.inc
include $(TOP)/flash_loaders/applets/common/Makefile.inc
include $(TOP)/scripts/Makefile.config
include $(TOP)/arch/Makefile.inc
include $(TOP)/utils/Makefile.inc
include $(TOP)/target/Makefile.inc
include $(TOP)/drivers/Makefile.inc
include $(TOP)/lib/Makefile.inc
include $(TOP)/scripts/Makefile.freertos
vpath %.c $(TOP)
vpath %.S $(TOP)
ifeq ($(CROSS_COMPILE),xc32-)
OBJS := $(addprefix $(BUILDDIR)/,$(xc32-cstartup-y) $(obj-y))
else
OBJS := $(addprefix $(BUILDDIR)/,$(gnu-cstartup-y) $(obj-y))
endif
LIBS := $(addprefix $(BUILDDIR)/,$(lib-y))
-include $(OBJS:.o=.d)
.PHONY: all build clean size debug
all:: build
build: $(BUILDDIR)/$(BINNAME).elf \
$(BUILDDIR)/$(BINNAME).symbols \
$(BUILDDIR)/$(BINNAME).bin
ifeq ($(VARIANT),ddram)
CONFIG_BOOTSTRAP ?= y
ifeq ($(CONFIG_BOOTSTRAP),y)
$(BUILDDIR)/$(BINNAME).elf: $(BUILDDIR)/target/bootstrap.elf
$(BUILDDIR)/target/bootstrap.elf: $(BOOTSTRAP_OBJS) $(LIBS)
@mkdir -p $(dir $@)
$(ECHO) LINK $@
$(Q)$(CC) $(LDFLAGS) $(CFLAGS_CPU) $(CFLAGS_DEFS) -T$(bootstrap-linker-script-y) -Wl,-Map,$(BUILDDIR)/bootstrap.map -o $@ $(BOOTSTRAP_OBJS) -Wl,--start-group $(LIBS) -Wl,--end-group
endif
endif
$(BUILDDIR):
@mkdir -p $(BUILDDIR)
$(BUILDDIR)/%.d: %.c
@mkdir -p $(dir $@)
$(ECHO) DEP $<
$(Q)$(CC) $(CFLAGS) $(CFLAGS_CPU) $(CFLAGS_INC) $(CFLAGS_DEFS) -MM $< -MT $(basename $@).o -o $(basename $@).d
$(BUILDDIR)/%.o: %.c
@mkdir -p $(dir $@)
$(ECHO) CC $<
$(Q)$(CC) $(CFLAGS) $(CFLAGS_CPU) $(CFLAGS_INC) $(CFLAGS_DEFS) -c $< -o $@
$(BUILDDIR)/%.d: %.S
@mkdir -p $(dir $@)
$(ECHO) DEP $<
$(Q)$(CC) $(CFLAGS_ASM) $(CFLAGS_CPU) $(CFLAGS_INC) $(CFLAGS_DEFS) -MM $< -MT $(basename $@).o -o $(basename $@).d
$(BUILDDIR)/%.o: %.S
@mkdir -p $(dir $@)
$(ECHO) CC $<
$(Q)$(CC) $(CFLAGS_ASM) $(CFLAGS_CPU) $(CFLAGS_INC) $(CFLAGS_DEFS) -c $< -o $@
$(BUILDDIR)/$(BINNAME).elf: $(OBJS) $(LIBS) $(gnu-debug-lib-y) $(gnu-linker-script-y)
@cp $(gnu-debug-lib-y) $(BUILDDIR)/target/
$(ECHO) LINK $@
$(Q)$(CC) $(LDFLAGS) $(CFLAGS_CPU) $(CFLAGS_DEFS) -T$(gnu-linker-script-y) -Wl,-Map,$(BUILDDIR)/$(BINNAME).map -o $@ $(OBJS) -Wl,--start-group $(LIBS) -Wl,--end-group -Wl,--no-undefined
$(BUILDDIR)/$(BINNAME).symbols: $(BUILDDIR)/$(BINNAME).elf
$(Q)$(NM) $< >$@
$(BUILDDIR)/$(BINNAME).bin: $(BUILDDIR)/$(BINNAME).elf
$(ECHO) OBJCOPY $@
$(Q)$(OBJCOPY) -O binary $< $@
clean:
@rm -rf $(BUILDDIR) settings
@rm -f $(BINNAME).eww $(BINNAME)_$(TARGET).ewp $(BINNAME)_$(TARGET).ewd $(BINNAME)_$(TARGET).ewt $(BINNAME)_$(TARGET).dep
size: $(BUILDDIR)/$(BINNAME).elf
@$(SIZE) $(OBJECTS) $(BUILDDIR)/$(BINNAME).elf
debug: $(BUILDDIR)/$(BINNAME).elf
$(Q)$(GDB) -cd $(BUILDDIR) -x "$(realpath $(gnu-debug-script-y))" -ex "reset" -readnow -se $(realpath $(BUILDDIR)/$(BINNAME).elf)
include $(TOP)/scripts/Makefile.iar
include $(TOP)/scripts/Makefile.mplab