# Author: Bernardo Innocenti <bernie@develer.com>
#
# $Log$
+# Revision 1.8 2006/09/19 17:50:56 bernie
+# Make native build the default.
+#
+# Revision 1.7 2006/07/19 12:56:24 bernie
+# Convert to new Doxygen style.
+#
+# Revision 1.6 2006/06/12 22:05:09 marco
+# Bring back config wrongly commited
+#
+# Revision 1.4 2006/05/27 22:41:46 bernie
+# Tweak optimization flags for loops.
+#
+# Revision 1.3 2006/05/18 00:40:10 bernie
+# Setup for AVR development.
+#
+# Revision 1.2 2006/03/27 04:48:33 bernie
+# Add CXXFLAGS; Add recursive targets.
+#
# Revision 1.1 2006/03/22 09:51:53 bernie
# Add build infrastructure.
#
# STK200 parallel cable
#DPROG = -c stk200 -E noreset
+# JTAG ICE mkII
+#DPROG = avarice --mkII -j usb -l
+
# PonyProg serial programmer
#DPROG = -c dasa2
-#OPTCFLAGS = -O3 # DANGER - DO NOT USE - DOESN'T WORK WITH 3.4.1 & 3.5 (HEAD)
-OPTCFLAGS = -ffunction-sections -fdata-sections
+OPTCFLAGS = -ffunction-sections -fdata-sections -funsafe-loop-optimizations
# For AVRStudio
#DEBUGCFLAGS = -gdwarf-2
# For GDB
-DEBUGCFLAGS = -g
+DEBUGCFLAGS = -ggdb
#
# define some variables based on the AVR base path in $(AVR)
#
-CROSS =
+CROSS =
+#CROSS = avr-
CC = $(CROSS)gcc
-AS = $(CROSS)$(CC) -x assembler-with-cpp
-LD = $(CROSS)$(CC)
+CXX = $(CROSS)g++
+AS = $(CC) -x assembler-with-cpp
+LD = $(CC)
OBJCOPY = $(CROSS)objcopy
INSTALL = cp -a
RM = rm -f
DOXYGEN = doxygen
UISP = uisp
AVRDUDE = avrdude
+FLEXCAT = $(top_srcdir)/tools/flexcat/flexcat
# output format can be srec, ihex (avrobj is always created)
FORMAT = srec
#FORMAT = ihex
+# Compiler flags for generating dependencies
+DEP_FLAGS = -MMD -MP
+
+# Compiler flags for generating source listings
+LIST_FLAGS = -Wa,-anhlmsd=$(@:.o=.lst)
+
+# Linker flags for generating map files
+#bernie: bogus binutils from Fedora 6 can't cope with this
+#MAP_FLAGS = -Wl,-Map=$(@:%.elf=%.map),--cref
+
+# Compiler warning flags for both C and C++
WARNFLAGS = \
-W -Wformat -Wall -Wundef -Wpointer-arith -Wcast-qual \
- -Wcast-align -Wwrite-strings -Wsign-compare -Wstrict-prototypes \
- -Wmissing-prototypes -Wmissing-noreturn
+ -Wcast-align -Wwrite-strings -Wsign-compare \
+ -Wmissing-prototypes -Wmissing-noreturn \
+ -Wextra -Wstrict-aliasing=2 \
+ -Wunsafe-loop-optimizations
+
+# Compiler warning flags for C only
+C_WARNFLAGS = \
+ -Wmissing-prototypes -Wstrict-prototypes
-# default compiler flags
-CFLAGS = $(INCDIR) $(OPTCFLAGS) $(DEBUGCFLAGS) $(WARNFLAGS) \
- -MMD -MP -Wa,-anhlmsd=$(@:.o=.lst) -std=gnu99
+# Default C preprocessor flags (for C, C++ and cpp+as)
+CPPFLAGS = $(INCDIR)
-# default compiler assembly flags
+# Default C compiler flags
+CFLAGS = $(OPTCFLAGS) $(DEBUGCFLAGS) $(WARNFLAGS) $(C_WARNFLAGS) \
+ $(DEP_FLAGS) $(LIST_FLAGS) -std=gnu99
+
+# Default C++ compiler flags
+CXXFLAGS = $(OPTCFLAGS) $(DEBUGCFLAGS) $(WARNFLAGS) \
+ $(DEP_FLAGS) $(LIST_FLAGS)
+
+# Default compiler assembly flags
CPPAFLAGS = $(DEBUGCFLAGS) -MMD
-# default assembler flags
+# Default assembler flags
ASFLAGS = $(DEBUGCFLAGS)
-# default linker flags
-#LDFLAGS = -Wl,-Map=$(@:%.elf=%.map),--cref -Wl,--reduce-memory-overheads
-LDFLAGS = -Wl,-Map=$(@:%.elf=%.map),--cref -Wl,--gc-sections
+# Default linker flags
+LDFLAGS = $(MAP_FLAGS)
+
+#bernie: does not complain for missing symbols!
+#LDFLAGS = $(MAP_FLAGS) -Wl,--gc-sections
-# flags for avrdude
+# Flags for avrdude
AVRDUDEFLAGS = $(DPROG)
# additional libs