testsuite: more cleanup of the makefiles
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@13670 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02master
parent
4efee60493
commit
0e199b5f7d
|
@ -16,22 +16,25 @@ NO_PRINT=`$(MAKE) empty --no-print-directory >/dev/null 2>&1 && echo '--no-print
|
||||||
FIND=find
|
FIND=find
|
||||||
include ../config/Makefile
|
include ../config/Makefile
|
||||||
|
|
||||||
|
.PHONY: default
|
||||||
default:
|
default:
|
||||||
@echo "Available targets:"
|
@echo "Available targets:"
|
||||||
@echo " all launches all tests"
|
@echo " all launche all tests"
|
||||||
@echo " list FILE=f launches the tests referenced in file f (one path per line)"
|
@echo " list FILE=f launche the tests referenced in file f (one path per line)"
|
||||||
@echo " one DIR=p launches the tests located in path p"
|
@echo " one DIR=p launche the tests located in path p"
|
||||||
@echo " promote DIR=p promotes the reference files for the tests located in path p"
|
@echo " promote DIR=p promote the reference files for the tests located in path p"
|
||||||
@echo " lib builds library modules"
|
@echo " lib build library modules"
|
||||||
@echo " clean deletes generated files"
|
@echo " clean delete generated files"
|
||||||
@echo " report prints the report for the last execution, if any"
|
@echo " report print the report for the last execution, if any"
|
||||||
|
|
||||||
|
.PHONY: all
|
||||||
all: lib
|
all: lib
|
||||||
@for dir in tests/*; do \
|
@for dir in tests/*; do \
|
||||||
$(MAKE) $(NO_PRINT) exec-one DIR=$$dir; \
|
$(MAKE) $(NO_PRINT) exec-one DIR=$$dir; \
|
||||||
done 2>&1 | tee _log
|
done 2>&1 | tee _log
|
||||||
@$(MAKE) report
|
@$(MAKE) report
|
||||||
|
|
||||||
|
.PHONY: list
|
||||||
list: lib
|
list: lib
|
||||||
@if [ -z "$(FILE)" ]; \
|
@if [ -z "$(FILE)" ]; \
|
||||||
then echo "No value set for variable 'FILE'."; \
|
then echo "No value set for variable 'FILE'."; \
|
||||||
|
@ -42,6 +45,7 @@ list: lib
|
||||||
done <$(FILE) 2>&1 | tee _log
|
done <$(FILE) 2>&1 | tee _log
|
||||||
@$(MAKE) report
|
@$(MAKE) report
|
||||||
|
|
||||||
|
.PHONY: one
|
||||||
one: lib
|
one: lib
|
||||||
@if [ -z "$(DIR)" ]; then \
|
@if [ -z "$(DIR)" ]; then \
|
||||||
echo "No value set for variable 'DIR'."; \
|
echo "No value set for variable 'DIR'."; \
|
||||||
|
@ -53,6 +57,7 @@ one: lib
|
||||||
fi
|
fi
|
||||||
@$(MAKE) $(NO_PRINT) exec-one DIR=$(DIR)
|
@$(MAKE) $(NO_PRINT) exec-one DIR=$(DIR)
|
||||||
|
|
||||||
|
.PHONY: exec-one
|
||||||
exec-one:
|
exec-one:
|
||||||
@if [ ! -f $(DIR)/Makefile ]; then \
|
@if [ ! -f $(DIR)/Makefile ]; then \
|
||||||
for dir in $(DIR)/*; do \
|
for dir in $(DIR)/*; do \
|
||||||
|
|
|
@ -67,7 +67,7 @@ defaultclean:
|
||||||
done
|
done
|
||||||
|
|
||||||
.SUFFIXES:
|
.SUFFIXES:
|
||||||
.SUFFIXES: .mli .ml .mly .mll .cmi .cmo .cmx .cmm .cmxa .s .S .o .so
|
.SUFFIXES: .mli .ml .mly .mll .cmi .cmo .cmx .cmm .cmxa .s .S .o .so .c .f
|
||||||
|
|
||||||
.mli.cmi:
|
.mli.cmi:
|
||||||
@$(OCAMLC) -c $(COMPFLAGS) $(ADD_COMPFLAGS) $<
|
@$(OCAMLC) -c $(COMPFLAGS) $(ADD_COMPFLAGS) $<
|
||||||
|
@ -103,3 +103,9 @@ defaultclean:
|
||||||
|
|
||||||
.s.o:
|
.s.o:
|
||||||
@$(ASPP) $(ASPPFLAGS) -DSYS_$(SYSTEM) -o $*.o $*.s
|
@$(ASPP) $(ASPPFLAGS) -DSYS_$(SYSTEM) -o $*.o $*.s
|
||||||
|
|
||||||
|
.c.o:
|
||||||
|
@$(CC) -c -I$(CTOPDIR)/byterun $*.c -o $*.$(O)
|
||||||
|
|
||||||
|
.f.o:
|
||||||
|
@$(FORTRAN_COMPILER) -c -I$(CTOPDIR)/byterun $*.f -o $*.$(O)
|
||||||
|
|
|
@ -31,7 +31,9 @@ compile:
|
||||||
fi; \
|
fi; \
|
||||||
done
|
done
|
||||||
|
|
||||||
|
.PHONY: promote
|
||||||
promote: defaultpromote
|
promote: defaultpromote
|
||||||
|
|
||||||
|
.PHONY: clean
|
||||||
clean: defaultclean
|
clean: defaultclean
|
||||||
@rm -f ./a.out *.cm* *.result
|
@rm -f ./a.out *.cm* *.result
|
||||||
|
|
|
@ -25,11 +25,15 @@ ADD_CMX_FILES=$(ADD_MODULES:=.cmx)
|
||||||
|
|
||||||
GENERATED_SOURCES=$(ML_LEX_FILES) $(ML_YACC_FILES) $(MLI_YACC_FILES)
|
GENERATED_SOURCES=$(ML_LEX_FILES) $(ML_YACC_FILES) $(MLI_YACC_FILES)
|
||||||
|
|
||||||
CUSTOM_FLAG=`if [ -z "$(C_FILES)" ]; then true; else echo '-custom'; fi`
|
CUSTOM_FLAG=`if [ -n "$(C_FILES)" ]; then echo '-custom'; fi`
|
||||||
ADD_CFLAGS+=$(CUSTOM_FLAG)
|
ADD_CFLAGS+=$(CUSTOM_FLAG)
|
||||||
|
|
||||||
|
CC=$(NATIVECC) $(NATIVECCCOMPOPTS)
|
||||||
|
|
||||||
|
.PHONY: default
|
||||||
default: compile run
|
default: compile run
|
||||||
|
|
||||||
|
.PHONY: compile
|
||||||
compile: $(ML_FILES) $(CMO_FILES) $(MAIN_MODULE).cmo
|
compile: $(ML_FILES) $(CMO_FILES) $(MAIN_MODULE).cmo
|
||||||
@for file in $(C_FILES); do \
|
@for file in $(C_FILES); do \
|
||||||
$(NATIVECC) $(NATIVECCCOMPOPTS) -c -I$(CTOPDIR)/byterun $$file.c; \
|
$(NATIVECC) $(NATIVECCCOMPOPTS) -c -I$(CTOPDIR)/byterun $$file.c; \
|
||||||
|
@ -45,6 +49,7 @@ compile: $(ML_FILES) $(CMO_FILES) $(MAIN_MODULE).cmo
|
||||||
$(MAIN_MODULE).cmx; \
|
$(MAIN_MODULE).cmx; \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
.PHONY: run
|
||||||
run:
|
run:
|
||||||
@printf " ... testing with ocamlc"
|
@printf " ... testing with ocamlc"
|
||||||
@./program.byte $(EXEC_ARGS) >$(MAIN_MODULE).result \
|
@./program.byte $(EXEC_ARGS) >$(MAIN_MODULE).result \
|
||||||
|
@ -58,8 +63,10 @@ run:
|
||||||
&& echo " => passed" || echo " => failed"
|
&& echo " => passed" || echo " => failed"
|
||||||
|
|
||||||
|
|
||||||
|
.PHONY: promote
|
||||||
promote: defaultpromote
|
promote: defaultpromote
|
||||||
|
|
||||||
|
.PHONY: clean
|
||||||
clean: defaultclean
|
clean: defaultclean
|
||||||
@rm -f *.result ./program.* $(GENERATED_SOURCES) $(O_FILES) \
|
@rm -f *.result program program.exe $(GENERATED_SOURCES) $(O_FILES) \
|
||||||
$(TEST_TEMP_FILES)
|
$(TEST_TEMP_FILES)
|
||||||
|
|
|
@ -24,11 +24,13 @@ FORTRAN_LIB=`if [ -n "$(F_FILES)" ]; then echo '$(FORTRAN_LIBRARY)'; fi`
|
||||||
ADD_CFLAGS+=$(FORTRAN_LIB)
|
ADD_CFLAGS+=$(FORTRAN_LIB)
|
||||||
ADD_OPTFLAGS+=$(FORTRAN_LIB)
|
ADD_OPTFLAGS+=$(FORTRAN_LIB)
|
||||||
|
|
||||||
|
.PHONY: check
|
||||||
check:
|
check:
|
||||||
@if [ -n "$(FORTRAN_COMPILER)" -o -z "$(F_FILES)" ]; then \
|
@if [ -n "$(FORTRAN_COMPILER)" -o -z "$(F_FILES)" ]; then \
|
||||||
$(MAKE) run-all; \
|
$(MAKE) run-all; \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
.PHONY: run-all
|
||||||
run-all:
|
run-all:
|
||||||
@for file in $(C_FILES); do \
|
@for file in $(C_FILES); do \
|
||||||
$(CC) -c -I$(PREFIX)/lib/ocaml/caml $$file.c; \
|
$(CC) -c -I$(PREFIX)/lib/ocaml/caml $$file.c; \
|
||||||
|
@ -41,19 +43,39 @@ run-all:
|
||||||
CANKILL=$(CANKILL) sh `basename $$file ml`precheck || continue; \
|
CANKILL=$(CANKILL) sh `basename $$file ml`precheck || continue; \
|
||||||
fi; \
|
fi; \
|
||||||
printf " ... testing '$$file':"; \
|
printf " ... testing '$$file':"; \
|
||||||
$(MAKE) run-file DESC=ocamlc COMP='$(OCAMLC)' COMPFLAGS='$(ADD_COMPFLAGS) $(ADD_CFLAGS) $(O_FILES) -w a $(CMA_FILES) -I $(OTOPDIR)/testsuite/lib $(CMO_FILES)' FILE=$$file PROGRAM_ARGS=$(PROGRAM_ARGS) \
|
$(MAKE) run-file DESC=ocamlc COMP='$(OCAMLC)' \
|
||||||
&& if [ -z "$(BYTECODE_ONLY)" ]; then \
|
COMPFLAGS='-w a $(ADD_COMPFLAGS) $(ADD_CFLAGS) $(O_FILES) \
|
||||||
$(MAKE) run-file DESC=ocamlopt COMP='$(OCAMLOPT)' COMPFLAGS='$(ADD_COMPFLAGS) $(ADD_OPTFLAGS) $(O_FILES) -w a $(CMXA_FILES) -I $(OTOPDIR)/testsuite/lib $(CMX_FILES)' FILE=$$file PROGRAM_ARGS=$(PROGRAM_ARGS); \
|
$(CMA_FILES) -I $(OTOPDIR)/testsuite/lib \
|
||||||
fi \
|
$(CMO_FILES)' \
|
||||||
&& if [ ! -z $(UNSAFE) ]; then \
|
FILE=$$file PROGRAM_ARGS=$(PROGRAM_ARGS) \
|
||||||
$(MAKE) run-file DESC=ocamlc-unsafe COMP='$(OCAMLC)' COMPFLAGS='-w a -unsafe -I $(OTOPDIR)/testsuite/lib $(CMO_FILES)' FILE=$$file \
|
&& \
|
||||||
&& if [ -z "$(BYTECODE_ONLY)" ]; then \
|
if [ -z "$(BYTECODE_ONLY)" ]; then \
|
||||||
$(MAKE) run-file DESC=ocamlopt-unsafe COMP='$(OCAMLOPT)' COMPFLAGS='-w a -unsafe -I $(OTOPDIR)/testsuite/lib $(CMX_FILES)' FILE=$$file; \
|
$(MAKE) run-file DESC=ocamlopt COMP='$(OCAMLOPT)' \
|
||||||
|
COMPFLAGS='-w a $(ADD_COMPFLAGS) $(ADD_OPTFLAGS) $(O_FILES)\
|
||||||
|
$(CMXA_FILES) -I $(OTOPDIR)/testsuite/lib \
|
||||||
|
$(CMX_FILES)' \
|
||||||
|
FILE=$$file PROGRAM_ARGS=$(PROGRAM_ARGS); \
|
||||||
|
fi \
|
||||||
|
&& \
|
||||||
|
if [ -n "$(UNSAFE)" ]; then \
|
||||||
|
$(MAKE) run-file DESC=ocamlc-unsafe COMP='$(OCAMLC)' \
|
||||||
|
COMPFLAGS='-w a -unsafe $(ADD_COMPFLAGS) $(ADD_CFLAGS) \
|
||||||
|
$(O_FILES) $(CMA_FILES) \
|
||||||
|
-I $(OTOPDIR)/testsuite/lib $(CMO_FILES)' \
|
||||||
|
FILE=$$file \
|
||||||
|
&& \
|
||||||
|
if [ -z "$(BYTECODE_ONLY)" ]; then \
|
||||||
|
$(MAKE) run-file DESC=ocamlopt-unsafe COMP='$(OCAMLOPT)' \
|
||||||
|
COMPFLAGS='-w a -unsafe $(ADD_COMPFLAGS) $(ADD_OPTFLAGS) \
|
||||||
|
$(O_FILES) $(CMXA_FILES) -I $(OTOPDIR)/testsuite/lib \
|
||||||
|
$(CMX_FILES)' \
|
||||||
|
FILE=$$file; \
|
||||||
fi; \
|
fi; \
|
||||||
fi \
|
fi \
|
||||||
&& echo " => passed" || echo " => failed"; \
|
&& echo " => passed" || echo " => failed"; \
|
||||||
done
|
done
|
||||||
|
|
||||||
|
.PHONY: run-file
|
||||||
run-file:
|
run-file:
|
||||||
@printf " $(DESC)"
|
@printf " $(DESC)"
|
||||||
@rm -f program program.exe
|
@rm -f program program.exe
|
||||||
|
@ -71,7 +93,9 @@ run-file:
|
||||||
$(DIFF) $$F.reference $$F.result >/dev/null; \
|
$(DIFF) $$F.reference $$F.result >/dev/null; \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
.PHONY: promote
|
||||||
promote: defaultpromote
|
promote: defaultpromote
|
||||||
|
|
||||||
|
.PHONY: clean
|
||||||
clean: defaultclean
|
clean: defaultclean
|
||||||
@rm -f *.result program program.exe
|
@rm -f *.result program program.exe
|
||||||
|
|
|
@ -48,6 +48,11 @@ function record_unexp() {
|
||||||
curfile = "";
|
curfile = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/ ... testing.* ... testing/ {
|
||||||
|
printf("error at line %d: found two test results on the same line\n", NR);
|
||||||
|
errored = 1;
|
||||||
|
}
|
||||||
|
|
||||||
/^ ... testing '[^']*'/ {
|
/^ ... testing '[^']*'/ {
|
||||||
if (in_test) record_unexp();
|
if (in_test) record_unexp();
|
||||||
match($0, /... testing '[^']*'/);
|
match($0, /... testing '[^']*'/);
|
||||||
|
@ -74,6 +79,7 @@ function record_unexp() {
|
||||||
|
|
||||||
END {
|
END {
|
||||||
if (errored){
|
if (errored){
|
||||||
|
printf ("\n#### Some fatal error occurred during testing.\n\n");
|
||||||
exit (3);
|
exit (3);
|
||||||
}else{
|
}else{
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|
Loading…
Reference in New Issue