X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=Makefile.common;h=205ef6b2ba5ae6d3940e55fe2cdb12f596b6154b;hb=f5dbd6f6355e32e2a888aaba6902c40448caefe0;hp=d219b96d939853f581065fd305db42cc8dd9b7d9;hpb=b73f9b6094e2c9639fded52022ec60556ae8f8de;p=simavr diff --git a/Makefile.common b/Makefile.common index d219b96..205ef6b 100644 --- a/Makefile.common +++ b/Makefile.common @@ -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. # @@ -26,14 +26,22 @@ # You should have received a copy of the GNU General Public License # along with simavr. If not, see . +# 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 +CORE_CFLAGS = -nostdinc ifeq (${shell uname}, Darwin) # gcc 4.2 from MacOS is really not up to scratch anymore @@ -50,23 +58,30 @@ 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 ?= 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} @@ -74,14 +89,24 @@ 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 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. @@ -102,18 +127,18 @@ endif -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' # this rule has precedence ${OBJ}/sim_%.o : cores/sim_%.c ifeq ($(V),1) - $(CC) $(CPPFLAGS) $(CFLAGS) -MMD \ + $(CC) $(CPPFLAGS) $(CFLAGS) $(CORE_CFLAGS) -MMD \ ${AVR_CPPFLAGS} \ $< -c -o $@ else - @$(CC) $(CPPFLAGS) $(CFLAGS) $(CFLAGS) -MMD \ + @$(CC) $(CPPFLAGS) $(CFLAGS) $(CFLAGS) $(CORE_CFLAGS) -MMD \ ${AVR_CPPFLAGS} \ $< -c -o $@ @echo CORE $<