timer: Avoid infinite cycle timer on TCNT write
[simavr] / Makefile.common
index d476d83..e019689 100644 (file)
@@ -5,7 +5,7 @@
 # 
 # The code is compiled "optimized" to the max.
 # 
-# The wierd "-Wl,--undefined=_mmcu,--section-start=.mmcu=0x910000"
+# The weird "-Wl,--undefined=_mmcu,--section-start=.mmcu=0x910000"
 # is used to tell the linker not to discard the .mmcu section,
 # otherwise the --gc-sections will delete it.
 # 
 #      You should have received a copy of the GNU General Public License
 #      along with simavr.  If not, see <http://www.gnu.org/licenses/>.
 
+# simavr directory
+SIMAVR         ?= ${shell for p in . .. ../.. ../../..;do test -d $$p/simavr/sim && echo $$p/simavr; done}
+
+# You can override the build settings with local changes in this file
+# for example:
+# export CC=clang
+# export CFLAGS=-march=corei7-avx
+# etc
+-include ${wildcard ${SIMAVR}/../.make.options*}
+
 # get the first character of what the compiler says it is, unless it's 'x86_64' doh
 ARCH           = ${shell $(CC) -dumpmachine | sed -e 's/^x/i/' -e 's/\(.\).*/\1/'}
 
-ifeq ($(ARCH), i)
-CFLAGS         += -mfpmath=sse -msse2
-endif
-
-CFLAGS         += -g --std=gnu99 -Wall
-CFLAGS         += ${patsubst %,-I%,${subst :, ,${IPATH}}}
+CFLAGS         += -O2 -Wall
+CFLAGS         += -g
 
 ifeq (${shell uname}, Darwin)
+# gcc 4.2 from MacOS is really not up to scratch anymore 
+CC                     = clang
 AVR_ROOT       := "/Applications/Arduino.app/Contents/Resources/Java/hardware/tools/avr/"
 AVR_INC        := ${AVR_ROOT}/avr-4/
 AVR            := ${AVR_ROOT}/bin/avr-
-LFLAGS                 += -L/opt/local/lib
+# Thats for MacPorts libelf
+ifeq (${shell test -d /opt/local && echo Exists}, Exists)
+IPATH          += /opt/local/include
+LFLAGS         = -L/opt/local/lib/
+endif
 else
 AVR_ROOT       := /usr/lib/avr
 AVR_INC        := ${AVR_ROOT}
@@ -48,14 +60,17 @@ AVR                 := avr-
 CFLAGS                 += -fPIC
 endif
 
-CC                     ?= gcc
+CPPFLAGS       += --std=gnu99 -Wall
+CPPFLAGS       += ${patsubst %,-I%,${subst :, ,${IPATH}}}
+
+AVR_CPPFLAGS= ${CPPFLAGS} -idirafter ${AVR_INC}/include
+
+CC                     ?= clang
 AR                     ?= ar
 RANLIB                 ?= ranlib
 MKDIR          ?= mkdir -p
 INSTALL                ?= install
-
-# simavr directory
-SIMAVR         ?= ${shell for p in . .. ../.. ../../..;do test -d $$p/simavr/sim && echo $$p/simavr; done}
+SHELL          := ${shell which bash}
        
 OBJ            = obj-${shell $(CC) -dumpmachine}
 LIBDIR         = ${shell pwd}/${SIMAVR}/${OBJ}
@@ -70,7 +85,7 @@ endif
 
 # The code is compiled "optimized" to the max.
 # 
-# The wierd "-Wl,--undefined=_mmcu,--section-start=.mmcu=0x910000"
+# The weird "-Wl,--undefined=_mmcu,--section-start=.mmcu=0x910000"
 # is used to tell the linker not to discard the .mmcu section,
 # otherwise the --gc-sections will delete it.
 
@@ -98,22 +113,22 @@ endif
 # this rule has precedence
 ${OBJ}/sim_%.o : cores/sim_%.c
 ifeq ($(V),1)
-       $(CC) $(CFLAGS) -MMD \
-               -I${AVR_INC}/include/ \
+       $(CC) $(CPPFLAGS) $(CFLAGS) -MMD \
+               ${AVR_CPPFLAGS} \
                $<  -c -o $@
 else
-       @$(CC) $(CFLAGS) -MMD \
-               -I${AVR_INC}/include/ \
+       @$(CC) $(CPPFLAGS) $(CFLAGS) $(CFLAGS) -MMD \
+               ${AVR_CPPFLAGS} \
                $<  -c -o $@
        @echo CORE $<
 endif
 
 ${OBJ}/%.o: %.c
 ifeq ($(V),1)
-       $(CC) $(CFLAGS) -MMD \
+       $(CC) $(CPPFLAGS) $(CFLAGS) -MMD \
                $<  -c -o $@
 else
-       @$(CC) $(CFLAGS) -MMD \
+       @$(CC) $(CPPFLAGS) $(CFLAGS) -MMD \
                $<  -c -o $@
        @echo CC $<
 endif