diff --git a/.gitignore b/.gitignore index 02c2e0c..3fdca0d 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ *.objdump *.txt *.diff +a.out diff --git a/Makefile b/Makefile index d02f5a9..70f83ba 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ GOSOURCES = $(wildcard *.go) SOURCES = $(wildcard t1/*.s) -GNU_OBJS = $(SOURCES:t1/%.s=t1/%.gnu.o) -MY_OBJS = $(SOURCES:t1/%.s=t1/%.my.o) +GNU_OBJS = $(SOURCES:t1/%.s=out1/%.gnu.o) +MY_OBJS = $(SOURCES:t1/%.s=out1/%.my.o) goas: $(GOSOURCES) go build -o goas . @@ -9,63 +9,66 @@ goas: $(GOSOURCES) .PHONY: test test: test-single test-multi +out1: + mkdir -p $@ + # Test single-source program .PHONY: test-single -test-single: objs - diff t1/00.gnu.o t1/00.my.o - diff t1/01.gnu.o t1/01.my.o - diff t1/02.gnu.o t1/02.my.o - diff t1/03.gnu.o t1/03.my.o - diff t1/04.gnu.o t1/04.my.o - diff t1/05.gnu.o t1/05.my.o - diff t1/06.gnu.o t1/06.my.o - diff t1/07.gnu.o t1/07.my.o - diff t1/08.gnu.o t1/08.my.o - diff t1/09.gnu.o t1/09.my.o - diff t1/10.gnu.o t1/10.my.o +test-single: $(GNU_OBJS) $(MY_OBJS) + diff out1/00.gnu.o out1/00.my.o + diff out1/01.gnu.o out1/01.my.o + diff out1/02.gnu.o out1/02.my.o + diff out1/03.gnu.o out1/03.my.o + diff out1/04.gnu.o out1/04.my.o + diff out1/05.gnu.o out1/05.my.o + diff out1/06.gnu.o out1/06.my.o + diff out1/07.gnu.o out1/07.my.o + diff out1/08.gnu.o out1/08.my.o + diff out1/09.gnu.o out1/09.my.o + diff out1/10.gnu.o out1/10.my.o @echo ok -.PHONY: objs -objs: $(GNU_OBJS) $(MY_OBJS) - -t1/%.gnu.o: t1/%.s +out1/%.gnu.o: t1/%.s out1 as -o $@ $< -t1/%.my.o: t1/%.s goas +out1/%.my.o: t1/%.s goas out1 ./goas -o $@ $< # Test multi-source program .PHONY: test-multi test-babygo-test test-babygo-self test-multi: test-babygo-test test-babygo-self -test-babygo-test: t2/t.my.o t2/t.gnu.o +out2: + mkdir -p $@ + +test-babygo-test: out2/t.my.o out2/t.gnu.o diff $^ -t2/t.gnu.o: t2/babygo-runtime.s t2/babygo-test.s +out2/t.gnu.o: t2/babygo-runtime.s t2/babygo-test.s as -o $@ $^ -t2/t.my.o: goas t2/babygo-runtime.s t2/babygo-test.s +out2/t.my.o: goas t2/babygo-runtime.s t2/babygo-test.s out2 ./goas -o $@ t2/babygo-runtime.s t2/babygo-test.s -test-babygo-self: t2/b.my.o t2/b.gnu.o +test-babygo-self: out2/b.my.o out2/b.gnu.o diff $^ -t2/b.my.o: goas t2/babygo-runtime.s t2/babygo-main.s +out2/b.my.o: goas t2/babygo-runtime.s t2/babygo-main.s ./goas -o $@ t2/babygo-runtime.s t2/babygo-main.s -t2/b.gnu.o: t2/babygo-runtime.s t2/babygo-main.s +out2/b.gnu.o: t2/babygo-runtime.s t2/babygo-main.s as -o $@ $^ # Make binary executables (These are not essential) -t2/t.gnu.bin: t2/t.gnu.o +out2/t.gnu.bin: t2/t.gnu.o ld -o $@ $< -t2/t.my.bin: t2/t.my.o +out2/t.my.bin: t2/t.my.o ld -o $@ $< -babygo: t2/b.my.o +babygo: out2/b.my.o ld -o $@ $< ./$@ version clean: - rm -f goas *.{o,bin,out} t{1,2}/*.{o,bin,out} + rm -f goas *.{o,bin,out} out{1,2}/*.{o,bin}