Skip to content
Snippets Groups Projects
Commit 749c9c25 authored by Chris Bieneman's avatar Chris Bieneman
Browse files

Add back the ABITest makefiles

These files are standalone and not integrated with CMake, so we probably want them.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@259667 91177308-0d34-0410-b5e6-96231b3b80d8
parent 334563d0
No related branches found
No related tags found
No related merge requests found
# -*- Makefile -*-
# Usage: make test.N.report
#
# COUNT can be over-ridden to change the number of tests generated per
# file, and TESTARGS is used to change the type generation. Make sure
# to 'make clean' after changing either of these parameters.
TESTARGS := --no-unsigned --no-vector --no-complex --no-bool
COUNT := 1
TIMEOUT := 5
CFLAGS := -std=gnu99
X_COMPILER := gcc
X_LL_CFLAGS := -emit-llvm -S
Y_COMPILER := clang
Y_LL_CFLAGS := -emit-llvm -S
CC := gcc
###
ABITESTGEN := ../ABITestGen.py
ifndef VERBOSE
Verb := @
endif
.PHONY: test.%.report
test.%.report: temps/test.%.xx.diff temps/test.%.xy.diff temps/test.%.yx.diff temps/test.%.yy.diff
@ok=1;\
for t in $^; do \
if [ -s $$t ]; then \
echo "TEST $*: $$t failed"; \
ok=0;\
fi; \
done; \
if [ $$ok -eq 1 ]; then \
true; \
else \
false; \
fi
.PHONY: test.%.defs-report
test.%.defs-report: temps/test.%.defs.diff
@for t in $^; do \
if [ -s $$t ]; then \
echo "TEST $*: $$t failed"; \
cat $$t; \
fi; \
done
.PHONY: test.%.build
test.%.build: temps/test.%.ref temps/test.%.xx temps/test.%.xy temps/test.%.yx temps/test.%.yy temps/test.%.x.defs temps/test.%.y.defs
@true
###
# Diffs and output
.PRECIOUS: temps/.dir
.PRECIOUS: temps/test.%.xx.diff
temps/test.%.xx.diff: temps/test.%.ref.out temps/test.%.xx.out
$(Verb) diff $^ > $@ || true
.PRECIOUS: temps/test.%.xy.diff
temps/test.%.xy.diff: temps/test.%.ref.out temps/test.%.xy.out
$(Verb) diff $^ > $@ || true
.PRECIOUS: temps/test.%.yx.diff
temps/test.%.yx.diff: temps/test.%.ref.out temps/test.%.yx.out
$(Verb) diff $^ > $@ || true
.PRECIOUS: temps/test.%.yy.diff
temps/test.%.yy.diff: temps/test.%.ref.out temps/test.%.yy.out
$(Verb) diff $^ > $@ || true
.PRECIOUS: temps/test.%.defs.diff
temps/test.%.defs.diff: temps/test.%.x.defs temps/test.%.y.defs
$(Verb) zipdifflines \
--replace "%struct.T[0-9]+" "%struct.s" \
--replace "%union.T[0-9]+" "%struct.s" \
--replace "byval align [0-9]+" "byval" \
$^ > $@
.PRECIOUS: temps/test.%.out
temps/test.%.out: temps/test.%
-$(Verb) ./$< > $@
# Executables
.PRECIOUS: temps/test.%.ref
temps/test.%.ref: temps/test.%.driver.ref.o temps/test.%.a.ref.o temps/test.%.b.ref.o
$(Verb) $(CC) $(CFLAGS) $(CC_CFLAGS) -O3 -o $@ $^
.PRECIOUS: temps/test.%.xx
temps/test.%.xx: temps/test.%.driver.ref.o temps/test.%.a.x.o temps/test.%.b.x.o
$(Verb) $(CC) $(CFLAGS) $(CC_CFLAGS) -O3 -o $@ $^
.PRECIOUS: temps/test.%.xy
temps/test.%.xy: temps/test.%.driver.ref.o temps/test.%.a.x.o temps/test.%.b.y.o
$(Verb) $(CC) $(CFLAGS) $(CC_CFLAGS) -O3 -o $@ $^
.PRECIOUS: temps/test.%.yx
temps/test.%.yx: temps/test.%.driver.ref.o temps/test.%.a.y.o temps/test.%.b.x.o
$(Verb) $(CC) $(CFLAGS) $(CC_CFLAGS) -O3 -o $@ $^
.PRECIOUS: temps/test.%.yy
temps/test.%.yy: temps/test.%.driver.ref.o temps/test.%.a.y.o temps/test.%.b.y.o
$(Verb) $(CC) $(CFLAGS) $(CC_CFLAGS) -O3 -o $@ $^
# Object files
.PRECIOUS: temps/test.%.ref.o
temps/test.%.ref.o: inputs/test.%.c temps/.dir
$(Verb) $(CC) -c $(CFLAGS) $(CC_CFLAGS) -o $@ $<
.PRECIOUS: temps/test.%.x.o
temps/test.%.x.o: inputs/test.%.c temps/.dir
$(Verb) $(X_COMPILER) -c $(CFLAGS) $(X_CFLAGS) -o $@ $<
.PRECIOUS: temps/test.%.y.o
temps/test.%.y.o: inputs/test.%.c temps/.dir
$(Verb) $(Y_COMPILER) -c $(CFLAGS) $(Y_CFLAGS) -o $@ $<
.PRECIOUS: temps/test.%.x.defs
temps/test.%.x.defs: temps/test.%.a.x.ll temps/.dir
-$(Verb) -grep '^define ' $< > $@
.PRECIOUS: temps/test.%.y.defs
temps/test.%.y.defs: temps/test.%.a.y.ll temps/.dir
-$(Verb) -grep '^define ' $< > $@
.PRECIOUS: temps/test.%.a.x.ll
temps/test.%.a.x.ll: inputs/test.%.a.c temps/.dir
$(Verb) $(X_COMPILER) $(CFLAGS) $(X_LL_CFLAGS) $(X_CFLAGS) -o $@ $<
.PRECIOUS: temps/test.%.b.x.ll
temps/test.%.b.x.ll: inputs/test.%.b.c temps/.dir
$(Verb) $(X_COMPILER) $(CFLAGS) $(X_LL_CFLAGS) $(X_CFLAGS) -o $@ $<
.PRECIOUS: temps/test.%.a.y.ll
temps/test.%.a.y.ll: inputs/test.%.a.c temps/.dir
$(Verb) $(Y_COMPILER) $(CFLAGS) $(Y_LL_CFLAGS) $(Y_CFLAGS) -o $@ $<
.PRECIOUS: temps/test.%.b.y.ll
temps/test.%.b.y.ll: inputs/test.%.b.c temps/.dir
$(Verb) $(Y_COMPILER) $(CFLAGS) $(Y_LL_CFLAGS) $(Y_CFLAGS) -o $@ $<
# Input generation
.PHONY: test.%.top
test.%.top: inputs/test.%.a.c inputs/test.%.b.c inputs/test.%.driver.c
@true
.PRECIOUS: inputs/test.%.a.c inputs/test.%.b.c inputs/test.%.driver.c
inputs/test.%.a.c: test.%.generate
@true
inputs/test.%.b.c: test.%.generate
@true
inputs/test.%.driver.c: test.%.generate
@true
.PHONY: test.%.generate
.PRECIOUS: inputs/.dir
test.%.generate: $(ABITESTGEN) inputs/.dir
$(Verb) $(ABITESTGEN) $(TESTARGS) -o inputs/test.$*.a.c -T inputs/test.$*.b.c -D inputs/test.$*.driver.c --min=$(shell expr $* '*' $(COUNT)) --count=$(COUNT)
# Cleaning
clean-temps:
$(Verb) rm -rf temps
clean:
$(Verb) rm -rf temps inputs
# Etc.
%/.dir:
$(Verb) mkdir -p $* > /dev/null
$(Verb) $(DATE) > $@
# Usage: make test.N.report
#
# COUNT can be over-ridden to change the number of tests generated per
# file, and TESTARGS is used to change the type generation. Make sure
# to 'make clean' after changing either of these parameters.
ABITESTGEN := ../ABITestGen.py
TESTARGS := --max-args 0 --test-layout
COUNT := 1000
TIMEOUT := 5
CFLAGS := -std=gnu99
X_COMPILER := llvm-gcc
Y_COMPILER := clang
CC := gcc
ifeq (0, 0)
X_CFLAGS := -m32
Y_CFLAGS := -m32
CC_CFLAGS := -m32
else
X_CFLAGS := -m64
Y_CFLAGS := -m64
CC_CFLAGS := -m64
endif
.PHONY: test.%.report
test.%.report: test.%.x.diff test.%.y.diff
@for t in $^; do \
if [ -s $$t ]; then \
echo "TEST $*: $$t failed"; \
fi; \
done
.PHONY: test.%.build
test.%.build: test.%.ref test.%.x test.%.y
@true
###
.PRECIOUS: test.%.x.diff
test.%.x.diff: test.%.ref.out test.%.x.out
-diff $^ > $@
.PRECIOUS: test.%.y.diff
test.%.y.diff: test.%.ref.out test.%.y.out
-diff $^ > $@
.PRECIOUS: test.%.out
test.%.out: test.%
-./$< > $@
.PRECIOUS: test.%.ref
test.%.ref: test.%.c
$(CC) $(CFLAGS) $(CC_CFLAGS) -o $@ $^
.PRECIOUS: test.%.x
test.%.x: test.%.c
$(X_COMPILER) $(CFLAGS) $(X_CFLAGS) -o $@ $^
.PRECIOUS: test.%.y
test.%.y: test.%.c
$(Y_COMPILER) $(CFLAGS) $(Y_CFLAGS) -o $@ $^
.PRECIOUS: test.%.c
test.%.c: $(ABITESTGEN)
$(ABITESTGEN) $(TESTARGS) -o $@ --min=$(shell expr $* '*' $(COUNT)) --count=$(COUNT)
clean:
rm -f test.* *~
X_CFLAGS := -m32
Y_CFLAGS := -m32
CC_CFLAGS := -m32
include ../Makefile.test.common
TESTARGS += --max-args 0
X_CFLAGS := -m64
Y_CFLAGS := -m64
CC_CFLAGS := -m64
include ../Makefile.test.common
TESTARGS += --max-args 0
X_CFLAGS := -m32
Y_CFLAGS := -m32
CC_CFLAGS := -m32
include ../Makefile.test.common
TESTARGS += --no-function-return --max-args 1
# Usage: make test.N.report
#
# COUNT can be over-ridden to change the number of tests generated per
# file, and TESTARGS is used to change the type generation. Make sure
# to 'make clean' after changing either of these parameters.
X_CFLAGS := -m64
Y_CFLAGS := -m64
CC_CFLAGS := -m64
include ../Makefile.test.common
TESTARGS += --no-function-return --max-args 1
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment