CXX = g++ CXXFLAGS = -Wall -Werror -Wno-unused -O RANLIB = ranlib PATCH = $(shell test `uname` = SunOS && echo gpatch || echo patch) TAR = $(shell test `uname` = SunOS && echo gtar || echo tar) JAVA = java JAVAC = javac nestedvm = $(HOME)/Work/nestedvm PATH := $(nestedvm)/upstream/install/bin:$(PATH) MIPS_CC = mips-unknown-elf-gcc MIPS_CFLAGS = -O2 MIPS_LDFLAGS = -s --static -Wl,--gc-sections apps = CPU arch_url = http://www.cs.rit.edu/~icsg720/pub/misc/arch2-5a.tar.gz CPU: CPU.o globals.o Adder.o Injector.o SuperBus.o make_connections.o fetch.o decode.o execute.o memory.o writeback.o branch.o forward.o syscall.o lib/libarch.a .PRECIOUS: %.arch %.mips %.class all: $(apps) %.o: %.C lib/Clock.h $(CXX) $(CXXFLAGS) -c -Ilib -o $@ $< $(apps): %: $(CXX) -o $@ $(LDFLAGS) $^ test: test-fib test-matrix_add test-test @echo "======================" @echo "| All tests passed!! |" @echo "======================" %.mips: %.c $(MIPS_CC) $(MIPS_CFLAGS) $(MIPS_LDFLAGS) -o $@ $^ %.class: %.java $(JAVAC) -classpath "$(nestedvm)/build:." $< %.arch: %.mips ELF2Arch.class $(JAVA) -cp "$(nestedvm)/build:." ELF2Arch $< > $@ test-%: %.arch CPU ./CPU $< #test-fib: CPU # N="`./CPU fib.arch nodebug | sed -n 's/R2\[\(.*\)\]/\1/p;'`"; \ # echo "Fib(7): $$N"; echo; \ # [ "$$N" = "00000015" ] #test-matrix: CPU # M=`./CPU matrix_add.arch nodebug 0x11020 16 | sed -n '/MEMORY DUMP/,$$s/^0[^ ]* //p;' | tr '\n' ' '`; \ # echo "Matrix: $$M"; echo; \ # [ "$$M" = "00 00 00 0a 00 00 00 07 00 00 00 0b 00 00 00 0f " ] clean: rm -f *.o *.arch *.mips $(apps) push: darcs push charger.brianweb.net:/home/darcs/arch darcs dist -d arch-snapshot scp arch-snapshot.tar.gz charger:/home/darcs/arch lib/Clock.h: mkdir -p lib test -f lib/Clock.h || wget -O - $(arch_url) | $(TAR) -xvzf- -C lib test -f lib/GNUmakefile || (cd lib && $(PATCH) -p0 < ../arch.patch) lib/libarch.a: lib/Clock.h $(MAKE) -C lib -f GNUmakefile CXX="$(CXX)" CXXFLAGS="$(filter-out -Werror,$(CXXFLAGS))" RANLIB="$(RANLIB)"