Skip to content
Snippets Groups Projects
Makefile 1.65 KiB
Newer Older
# Binaries that should generate the same output every time
EXPECT_BINS=\
Jeremy Soller's avatar
Jeremy Soller committed
	atof \
Paul Sajna's avatar
Paul Sajna committed
	atoi \
Paul Sajna's avatar
Paul Sajna committed
	brk \
	create \
Paul Sajna's avatar
Paul Sajna committed
	ctype \
Paul Sajna's avatar
Paul Sajna committed
	dup \
Jeremy Soller's avatar
Jeremy Soller committed
	error \
Paul Sajna's avatar
Paul Sajna committed
	fchdir \
Paul Sajna's avatar
Paul Sajna committed
	fsync \
Paul Sajna's avatar
Paul Sajna committed
	ftruncate \
Paul Sajna's avatar
Paul Sajna committed
	link \
Jeremy Soller's avatar
Jeremy Soller committed
	math \
Paul Sajna's avatar
Paul Sajna committed
	pipe \
Paul Sajna's avatar
Paul Sajna committed
	rmdir \
Paul Sajna's avatar
Paul Sajna committed
	sleep \
Justin Raymond's avatar
Justin Raymond committed
	stdlib/bsearch \
	stdlib/a64l \
Paul Sajna's avatar
Paul Sajna committed
	stdlib/rand \
	string/strcspn \
	string/strchr \
Justin Raymond's avatar
Justin Raymond committed
	string/strrchr \
	string/strstr \
	string/strpbrk \
Timothy Bess's avatar
Timothy Bess committed
	string/strtok \
Timothy Bess's avatar
Timothy Bess committed
	string/strtok_r \
Paul Sajna's avatar
Paul Sajna committed
	unlink \
Paul Sajna's avatar
Paul Sajna committed
	waitpid \
# Binaries that may generate varied output
BINS=\
	$(EXPECT_BINS) \
	alloc \
all: $(BINS)
Jeremy Soller's avatar
Jeremy Soller committed

clean:
	rm -f $(BINS) *.out
run: $(BINS)
Paul Sajna's avatar
Paul Sajna committed
	do \
		echo "# $${bin} #"; \
		"./$${bin}" test args || exit $$?; \
expected: $(EXPECT_BINS)
	rm -rf expected
Jeremy Soller's avatar
Jeremy Soller committed
	mkdir -p expected
	do \
		echo "# $${bin} #"; \
Alex Lyon's avatar
Alex Lyon committed
		mkdir -p expected/`dirname $${bin}`; \
		"./$${bin}" test args > "expected/$${bin}.stdout" 2> "expected/$${bin}.stderr" || exit $$?; \
verify: $(EXPECT_BINS)
	rm -rf gen
	mkdir -p gen
	do \
		echo "# $${bin} #"; \
Alex Lyon's avatar
Alex Lyon committed
		mkdir -p gen/`dirname $${bin}`; \
		"./$${bin}" test args > "gen/$${bin}.stdout" 2> "gen/$${bin}.stderr" || exit $$?; \
		diff -u "gen/$${bin}.stdout" "expected/$${bin}.stdout" || exit $$?; \
		diff -u "gen/$${bin}.stderr" "expected/$${bin}.stderr" || exit $$?; \
Jeremy Soller's avatar
Jeremy Soller committed

Jeremy Soller's avatar
Jeremy Soller committed
GCCHEAD=\
	-nostdinc \
	-nostdlib \
	-I ../include \
	-I ../target/include \
	-I ../openlibm/include \
	-I ../openlibm/src \
	../target/debug/libcrt0.a

GCCTAIL=\
	../target/debug/libc.a \
	../openlibm/libopenlibm.a

Jeremy Soller's avatar
Jeremy Soller committed
	gcc -fno-stack-protector -Wall $(GCCHEAD) "$<" $(GCCTAIL) -o "$@"