root / branches / init_refactor / code / projects / libdragonfly / Makefile @ 1518
History | View | Annotate | Download (5.61 KB)
1 |
############################ |
---|---|
2 |
### Update this Section #### |
3 |
############################ |
4 |
|
5 |
COLONYROOT = ../../.. |
6 |
|
7 |
# Target file name (without extension). |
8 |
TARGET = libdragonfly |
9 |
|
10 |
############################ |
11 |
|
12 |
CDEFS = |
13 |
|
14 |
# MCU name |
15 |
MCU = atmega128 |
16 |
|
17 |
|
18 |
# Processor frequency. |
19 |
# This will define a symbol, F_CPU, in all source code files equal to the |
20 |
# processor frequency. You can then use this symbol in your source code to |
21 |
# calculate timings. Do NOT tack on a 'UL' at the end, this will be done |
22 |
# automatically to create a 32-bit value in your source code. |
23 |
F_CPU = 16000000 |
24 |
|
25 |
|
26 |
# Output format. (can be srec, ihex, binary) |
27 |
FORMAT = ihex |
28 |
|
29 |
|
30 |
# List C source files here. (C dependencies are automatically generated.) |
31 |
SRC = $(wildcard *.c) |
32 |
|
33 |
# List Assembler source files here. |
34 |
# Make them always end in a capital .S. Files ending in a lowercase .s |
35 |
# will not be considered source files but generated files (assembler |
36 |
# output from the compiler), and will be deleted upon "make clean"! |
37 |
# Even though the DOS/Win* filesystem matches both .s and .S the same, |
38 |
# it will preserve the spelling of the filenames, and gcc itself does |
39 |
# care about how the name is spelled on its command-line. |
40 |
ASRC = |
41 |
|
42 |
# Optimization level, can be [0, 1, 2, 3, s]. |
43 |
# 0 = turn off optimization. s = optimize for size. |
44 |
# (Note: 3 is not always the best optimization level. See avr-libc FAQ.) |
45 |
OPT = s |
46 |
|
47 |
# Debugging format. |
48 |
# Native formats for AVR-GCC's -g are dwarf-2 [default] or stabs. |
49 |
# AVR Studio 4.10 requires dwarf-2. |
50 |
# AVR [Extended] COFF format requires stabs, plus an avr-objcopy run. |
51 |
DEBUG = |
52 |
# dwarf-2 |
53 |
|
54 |
# List any extra directories to look for include files here. |
55 |
# Each directory must be seperated by a space. |
56 |
# Use forward slashes for directory separators. |
57 |
# For a directory that has spaces, enclose it in quotes. |
58 |
EXTRAINCDIRS = |
59 |
|
60 |
# Compiler flag to set the C Standard level. |
61 |
# c89 = "ANSI" C |
62 |
# gnu89 = c89 plus GCC extensions |
63 |
# c99 = ISO C99 standard (not yet fully implemented) |
64 |
# gnu99 = c99 plus GCC extensions |
65 |
CSTANDARD = -std=gnu99 |
66 |
|
67 |
|
68 |
# Place -D or -U options here |
69 |
CDEFS += -DF_CPU=$(F_CPU)UL |
70 |
|
71 |
# Place -I options here |
72 |
|
73 |
|
74 |
#---------------- Compiler Options ---------------- |
75 |
# -g*: generate debugging information |
76 |
# -O*: optimization level |
77 |
# -f...: tuning, see GCC manual and avr-libc documentation |
78 |
# -Wall...: warning level |
79 |
# -Wa,...: tell GCC to pass this to the assembler. |
80 |
# -adhlns...: create assembler listing |
81 |
CFLAGS = -g$(DEBUG) |
82 |
CFLAGS += $(CDEFS) $(CINCS) |
83 |
CFLAGS += -O$(OPT) |
84 |
CFLAGS += -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums |
85 |
CFLAGS += -Wall -Wstrict-prototypes |
86 |
CFLAGS += -Wa,-adhlns=$(<:.c=.lst) |
87 |
CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS)) |
88 |
CFLAGS += $(CSTANDARD) |
89 |
|
90 |
|
91 |
#---------------- Library Options ---------------- |
92 |
# Minimalistic printf version |
93 |
PRINTF_LIB_MIN = -Wl,-u,vfprintf -lprintf_min |
94 |
|
95 |
# Floating point printf version (requires MATH_LIB = -lm below) |
96 |
PRINTF_LIB_FLOAT = -Wl,-u,vfprintf -lprintf_flt |
97 |
|
98 |
# If this is left blank, then it will use the Standard printf version. |
99 |
PRINTF_LIB = |
100 |
#PRINTF_LIB = $(PRINTF_LIB_MIN) |
101 |
#PRINTF_LIB = $(PRINTF_LIB_FLOAT) |
102 |
|
103 |
# Minimalistic scanf version |
104 |
SCANF_LIB_MIN = -Wl,-u,vfscanf -lscanf_min |
105 |
|
106 |
# Floating point + %[ scanf version (requires MATH_LIB = -lm below) |
107 |
SCANF_LIB_FLOAT = -Wl,-u,vfscanf -lscanf_flt |
108 |
|
109 |
# If this is left blank, then it will use the Standard scanf version. |
110 |
SCANF_LIB = |
111 |
#SCANF_LIB = $(SCANF_LIB_MIN) |
112 |
#SCANF_LIB = $(SCANF_LIB_FLOAT) |
113 |
|
114 |
MATH_LIB = -lm |
115 |
|
116 |
#============================================================================ |
117 |
|
118 |
|
119 |
# Define programs and commands. |
120 |
SHELL = sh |
121 |
CC = avr-gcc |
122 |
AR = avr-ar |
123 |
OBJCOPY = avr-objcopy |
124 |
OBJDUMP = avr-objdump |
125 |
SIZE = avr-size |
126 |
NM = avr-nm |
127 |
AVRDUDE = avrdude |
128 |
REMOVE = rm -f |
129 |
REMOVEDIR = rm -rf |
130 |
COPY = cp |
131 |
DOXYGEN = doxygen |
132 |
WINSHELL = cmd |
133 |
|
134 |
|
135 |
# Define Messages |
136 |
# English |
137 |
MSG_ERRORS_NONE = Errors: none |
138 |
MSG_BEGIN = -------- begin -------- |
139 |
MSG_END = -------- end -------- |
140 |
MSG_COMPILING = Compiling: |
141 |
MSG_CLEANING = Cleaning project: |
142 |
|
143 |
# Define all object files. |
144 |
OBJ = $(SRC:.c=.o) $(ASRC:.S=.o) |
145 |
|
146 |
# Define all listing files. |
147 |
LST = $(SRC:.c=.lst) $(ASRC:.S=.lst) |
148 |
|
149 |
# Compiler flags to generate dependency files. |
150 |
GENDEPFLAGS = -MD -MP -MF .dep/$(@F).d |
151 |
|
152 |
# Combine all necessary flags and optional flags. |
153 |
# Add target processor to flags. |
154 |
ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) $(GENDEPFLAGS) $(GLOBAL_CFLAGS) |
155 |
ALL_ASFLAGS = rcs |
156 |
|
157 |
# Default target. |
158 |
all: begin build end |
159 |
|
160 |
dist: all publish |
161 |
|
162 |
debug_dist: ALL_CFLAGS += -DDRAGONFLY_DEBUG |
163 |
debug_dist: test all publish |
164 |
|
165 |
test: |
166 |
echo "~~~~~~~ $(ALL_CFLAGS)" |
167 |
|
168 |
|
169 |
publish: |
170 |
$(COPY) $(TARGET).a $(COLONYROOT)/code/lib/bin |
171 |
$(COPY) *.h $(COLONYROOT)/code/lib/include/$(TARGET) |
172 |
|
173 |
.PHONY: docs |
174 |
docs: |
175 |
$(DOXYGEN) |
176 |
$(COPY) docs/html/* $(COLONYROOT)/docs/$(TARGET) |
177 |
|
178 |
|
179 |
build: $(OBJ) |
180 |
$(AR) $(ALL_ASFLAGS) $(TARGET).a $(OBJ) |
181 |
|
182 |
# Eye candy. |
183 |
# AVR Studio 3.x does not check make's exit code but relies on |
184 |
# the following magic strings to be generated by the compile job. |
185 |
begin: |
186 |
@echo |
187 |
@echo $(MSG_BEGIN) |
188 |
|
189 |
end: |
190 |
@echo $(MSG_END) |
191 |
@echo |
192 |
|
193 |
# Compile: create object files from C source files. |
194 |
%.o : %.c |
195 |
@echo |
196 |
@echo $(MSG_COMPILING) $< |
197 |
$(CC) -c $(ALL_CFLAGS) $< -o $@ |
198 |
|
199 |
|
200 |
# Target: clean project. |
201 |
clean: begin clean_list end |
202 |
|
203 |
clean_list : |
204 |
@echo |
205 |
@echo $(MSG_CLEANING) |
206 |
$(REMOVE) $(TARGET).a |
207 |
$(REMOVE) $(OBJ) |
208 |
$(REMOVE) $(LST) |
209 |
$(REMOVE) $(SRC:.c=.s) |
210 |
$(REMOVE) $(SRC:.c=.d) |
211 |
$(REMOVEDIR) .dep |
212 |
|
213 |
|
214 |
|
215 |
# Include the dependency files. |
216 |
-include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*) |
217 |
|