#
# 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/'}
CFLAGS += -O2 -Wall
CFLAGS += -g
-ifeq ($(ARCH), i)
-CFLAGS += -msse2
-endif
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-
AVR_CPPFLAGS= ${CPPFLAGS} -idirafter ${AVR_INC}/include
-CC = gcc
+CC ?= clang
AR ?= ar
RANLIB ?= ranlib
MKDIR ?= mkdir -p
INSTALL ?= install
SHELL := ${shell which bash}
-
-# simavr directory
-SIMAVR ?= ${shell for p in . .. ../.. ../../..;do test -d $$p/simavr/sim && echo $$p/simavr; done}
OBJ = obj-${shell $(CC) -dumpmachine}
LIBDIR = ${shell pwd}/${SIMAVR}/${OBJ}
LDFLAGS += -lelf
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 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.
-ffunction-sections -fdata-sections \
-Wl,--relax,--gc-sections \
-Wl,--undefined=_mmcu,--section-start=.mmcu=0x910000 \
- -I../include -I../../include \
+ -I../simavr/sim/avr -I../../simavr/sim/avr \
${^} -o ${@}
@${AVR}size ${@}|sed '1d'