+# 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/'}
+
+CFLAGS += -O2 -Wall
+CFLAGS += -g
+CORE_CFLAGS = -nostdinc
+
+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-
+# 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}
+AVR := avr-
+ifeq (${shell uname -o}, Msys)
+AVR_ROOT := ${shell echo "${AVR32_HOME}" | tr '\\' '/'}
+AVR_INC := ${AVR_ROOT}/avr
+AVR := ${AVR_ROOT}/bin/avr-
+IPATH += ${PREFIX}/include
+CFLAGS += -I${PREFIX}/include
+LDFLAGS += -L/lib -L/local/lib
+CFLAGS += -DNO_COLOR
+else
+CFLAGS += -fPIC
+endif
+endif
+
+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
+SHELL := ${shell which bash}
+
+OBJ = obj-${shell $(CC) -dumpmachine}
+LIBDIR = ${shell pwd}/${SIMAVR}/${OBJ}
+LDFLAGS += -L${LIBDIR} -lsimavr
+
+LDFLAGS += -lelf
+
+ifeq (${shell uname -o}, Msys)
+LDFLAGS += -lws2_32
+endif
+
+ifeq (${shell uname}, Linux)
+ifeq ($(RELEASE),1)
+# allow the shared library to be found in the build directory
+# only for linking, the install time location is used at runtime
+LFLAGS += -Wl,-rpath-link,${LIBDIR}
+else
+# allow the shared library to be found in the build directory
+LFLAGS += -Wl,-rpath,${LIBDIR}
+endif
+endif
+
+# The code is compiled "optimized" to the max.
+#
+# 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.
+