ocaml/testsuite/tests/runtime-errors/Makefile

77 lines
2.5 KiB
Makefile

#########################################################################
# #
# OCaml #
# #
# Xavier Clerc, SED, INRIA Rocquencourt #
# #
# Copyright 2010 Institut National de Recherche en Informatique et #
# en Automatique. All rights reserved. This file is distributed #
# under the terms of the Q Public License version 1.0. #
# #
#########################################################################
BASEDIR=../..
.PHONY: default
default:
@$(MAKE) compile
@$(MAKE) run
.PHONY: compile
compile:
@for f in *.ml; do \
F=`basename $$f .ml`; \
rm -f $$F.bytecode $$F.native $$F.native.exe; \
$(OCAMLC) -w a -o $$F.bytecode $$f; \
if $(BYTECODE_ONLY); then : ; else \
$(OCAMLOPT) -w a -o $$F.native$(EXE) $$f; \
fi; \
done
@grep -q HAS_STACK_OVERFLOW_DETECTION $(TOPDIR)/config/s.h \
|| rm -f stackoverflow.native$(EXE)
# Cygwin doesn't allow the stack limit to be changed - the 4096 is
# intended to be larger than the its default stack size. The logic
# causes the test to be skipped if the stacksize cannot be brought
# below this value (uname -s value exits with an error status in Cygwin)
.PHONY: run
run:
@ul=`ulimit -s`; \
if ( [ "$$ul" = "unlimited" ] || [ $$ul -gt 4096 ] ) ; then \
ulimit -s 1024 && ul=1 || ul=0 ; \
else \
ul=1; \
fi; \
for f in *.bytecode; do \
printf " ... testing '$$f':"; \
if [ $$ul -eq 1 ] ; then \
$(OCAMLRUN) ./$$f >$$f.result 2>&1 || true; \
DIFF="$(DIFF)" sh $$f.checker \
&& echo " => passed" || echo " => failed"; \
else \
echo " => unexpected error"; \
fi; \
fn=`basename $$f bytecode`native; \
if $(BYTECODE_ONLY) || [ ! -f "$${fn}$(EXE)" ] ; then \
echo " ... testing '$$fn': => skipped" ; \
else \
printf " ... testing '$$fn':"; \
if [ $$ul -eq 1 ] ; then \
./$${fn}$(EXE) >$$fn.result 2>&1 || true; \
DIFF="$(DIFF)" sh $$fn.checker \
&& echo " => passed" || echo " => failed"; \
else \
echo " => unexpected error"; \
fi; \
fi; \
done
.PHONY: promote
promote: defaultpromote
.PHONY: clean
clean: defaultclean
@rm -f *.bytecode *.native *.native.exe *.result
include $(BASEDIR)/makefiles/Makefile.common