#include the global configuration file include ../config.mk # attention: if -DPROF is also defined here the simulation breaks # after 1000000 steps!!!! Dont wonder about that again :-) #PROF=-pg #PROF=-pg -DPROF #PROF= #CXX=/opt/linux/bin/g++ #CC=/opt/linux/bin/gcc #CFLAGS= -g -Wall $(PROF) -O3 -funroll-loops -fstrict-aliasing -fsched-interblock -falign-loops=16 -falign-jumps=16 -falign-functions=16 -falign-jumps-max-skip=15 -falign-loops-max-skip=15 -fomit-frame-pointer -foptimize-sibling-calls -finline-all-stringops -funit-at-a-time -funswitch-loops -ffast-math -march=i686 -mtune=pentium3 -I$(BFD)/bfd CFLAGS= -g -Wall $(PROF) -O2 -mtune=pentium4 -I$(BFD_H_DIR) -I./.. #CFLAGS= -g -Wall $(PROF) -O2 -mcpu=pentium4 -I$(BFD)/bfd CXXFLAGS = $(CFLAGS) OBJECTS= serialtx.o serialrx.o main.o decoder.o decoder_trace.o gdbserver.o avrmalloc.o avrerror.o rwmem.o hardware.o hwstack.o hweeprom.o avrdevice.o irqsystem.o hwtimer.o ui.o hwwado.o hwuart.o hwspi.o hwextirq.o hwtimer01irq.o hwsreg.o flash.o atmega128.o at8515.o hwmegatimer.o hwmegatimer0123irq.o helper.o systemclock.o lcd.o keyboard.o trace.o hwmegaextirq.o mysocket.o memory.o at4433.o hwacomp.o pin.o net.o hwport.o pinatport.o ioregs.o hwad.o scope.o printable.o application.o TCL_OBJECTS= serialtx.o serialrx.o main.o decoder.o decoder_trace.o gdbserver.o avrmalloc.o avrerror.o rwmem.o hardware.o hwstack.o hweeprom.o avrdevice.o irqsystem.o hwtimer.o ui.o hwwado.o hwuart.o hwspi.o hwextirq.o hwtimer01irq.o hwsreg.o flash.o atmega128.o at8515.o hwmegatimer.o hwmegatimer0123irq.o helper.o systemclock.o simulavr_wrap.o lcd.o keyboard.o trace.o hwmegaextirq.o mysocket.o memory.o at4433.o hwacomp.o pin.o net.o hwport.o pinatport.o ioregs.o hwad.o scope.o printable.o application.o TCL_OBJECTS=$(OBJECTS) simulavr_wrap.o TCLHEADER= serialtx.h serialrx.h avrdevice.h at8515.h atmega128.h at4433.h systemclock.h ui.h hardware.h pin.h net.h trace.h gdb.h lcd.h simulavr: $(OBJECTS) $(CXX) $(CFLAGS) $(OBJECTS) $(BFD_LIB_DIR)/libbfd.a $(IBERTY_LIB_DIR)/libiberty.a -lncurses -lc -lm -o simulavr # pull in dependency info for *existing* .o files -include $(OBJECTS:.o=.d) # compile and generate dependency info; # will also become command-less, prereq-less targets # sed: strip the target (everything before colon) # sed: remove any continuation backslashes # fmt -1: list words one per line # sed: strip leading spaces # sed: add trailing colons %.o: %.c $(CC) -c $(CFLAGS) $*.c -o $*.o $(CC) -MM $(CFLAGS) $*.c > $*.d @mv -f $*.d $*.d.tmp @sed -e 's|.*:|$*.o:|' < $*.d.tmp > $*.d @sed -e 's/.*://' -e 's/\\$$//' < $*.d.tmp | fmt -1 | \ sed -e 's/^ *//' -e 's/$$/:/' >> $*.d @rm -f $*.d.tmp %.o: %.cpp $(CXX) -c $(CXXFLAGS) $*.cpp -o $*.o $(CXX) -MM $(CXXFLAGS) $*.cpp > $*.d @mv -f $*.d $*.d.tmp @sed -e 's|.*:|$*.o:|' < $*.d.tmp > $*.d @sed -e 's/.*://' -e 's/\\$$//' < $*.d.tmp | fmt -1 | \ sed -e 's/^ *//' -e 's/$$/:/' >> $*.d @rm -f $*.d.tmp #special targets for ui-keyboard keytrans.h: keynumber_to_scancode.dat xcode_to_keynumber.dat kbdgentables chmod +x kbdgentables ./kbdgentables kbdgentables: kbdgentables.cpp $(CXX) $(CXXFLAGS) kbdgentables.cpp -o kbdgentables keyboard.o: keytrans.h clean: rm -f *.o simulavr simulavr.so *.bin *.srec *.oo *.om *binm *wrap.c *wrap.cxx *.so tags *.o.go *_out dump *.d rm -f keytrans.h kbdgentables rm -f gmon.out rm -f *.gch rm -f *.Plo rm -rf .deps rm -rf .libs simulavr_wrap.cxx: simulavr.i $(TCLHEADER) swig -c++ simulavr.i simulavr_wrap.o: simulavr_wrap.cxx $(CXX) $(CXXFLAGS) simulavr_wrap.cxx -c simulavr.so: $(TCL_OBJECTS) $(CXX) $(CXXFLAGS) $(TCL_OBJECTS) -ltcl$(TCL_VERSION) $(BFD_LIB_DIR)/libbfd.a $(IBERTY_LIB_DIR)/libiberty.a -lc -lm -lncurses -shared -o simulavr.so