2012-10-17 13:09:16 -07:00
|
|
|
#########################################################################
|
|
|
|
# #
|
|
|
|
# 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. #
|
|
|
|
# #
|
|
|
|
#########################################################################
|
|
|
|
|
2011-06-15 01:38:27 -07:00
|
|
|
BASEDIR=../..
|
|
|
|
|
2013-05-16 05:20:59 -07:00
|
|
|
.PHONY: default
|
2013-12-03 06:42:23 -08:00
|
|
|
default:
|
2016-01-05 10:19:25 -08:00
|
|
|
@$(MAKE) compile
|
|
|
|
@$(MAKE) run
|
2010-01-25 06:26:23 -08:00
|
|
|
|
2013-05-16 05:20:59 -07:00
|
|
|
.PHONY: compile
|
2010-01-25 06:26:23 -08:00
|
|
|
compile:
|
|
|
|
@for f in *.ml; do \
|
2013-05-16 05:20:59 -07:00
|
|
|
F=`basename $$f .ml`; \
|
|
|
|
rm -f $$F.bytecode $$F.native $$F.native.exe; \
|
|
|
|
$(OCAMLC) -w a -o $$F.bytecode $$f; \
|
2013-05-14 11:34:30 -07:00
|
|
|
if $(BYTECODE_ONLY); then : ; else \
|
2013-05-16 05:20:59 -07:00
|
|
|
$(OCAMLOPT) -w a -o $$F.native$(EXE) $$f; \
|
2013-05-14 11:34:30 -07:00
|
|
|
fi; \
|
2010-01-25 06:26:23 -08:00
|
|
|
done
|
2013-05-14 11:34:30 -07:00
|
|
|
@grep -q HAS_STACK_OVERFLOW_DETECTION $(TOPDIR)/config/s.h \
|
2013-05-16 05:20:59 -07:00
|
|
|
|| rm -f stackoverflow.native$(EXE)
|
2010-01-25 06:26:23 -08:00
|
|
|
|
2015-12-22 09:38:32 -08:00
|
|
|
# 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)
|
2013-05-22 05:56:54 -07:00
|
|
|
.PHONY: run
|
2010-01-25 06:26:23 -08:00
|
|
|
run:
|
2015-12-22 09:38:32 -08:00
|
|
|
@ul=`ulimit -s`; \
|
|
|
|
if ( [ "$$ul" = "unlimited" ] || [ $$ul -gt 4096 ] ) ; then \
|
|
|
|
ulimit -s 1024 && ul=1 || ul=0 ; \
|
|
|
|
else \
|
|
|
|
ul=1; \
|
|
|
|
fi; \
|
2013-04-13 12:45:51 -07:00
|
|
|
for f in *.bytecode; do \
|
2010-03-17 02:11:27 -07:00
|
|
|
printf " ... testing '$$f':"; \
|
2015-12-22 09:38:32 -08:00
|
|
|
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; \
|
2013-04-13 12:45:51 -07:00
|
|
|
fn=`basename $$f bytecode`native; \
|
2016-02-16 04:23:31 -08:00
|
|
|
if $(BYTECODE_ONLY) || [ ! -f "$${fn}$(EXE)" ] ; then \
|
|
|
|
echo " ... testing '$$fn': => skipped" ; \
|
|
|
|
else \
|
2013-04-13 12:45:51 -07:00
|
|
|
printf " ... testing '$$fn':"; \
|
2015-12-22 09:38:32 -08:00
|
|
|
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; \
|
2012-01-18 01:51:16 -08:00
|
|
|
fi; \
|
2010-01-25 06:26:23 -08:00
|
|
|
done
|
2012-01-18 01:51:16 -08:00
|
|
|
|
2013-05-16 05:20:59 -07:00
|
|
|
.PHONY: promote
|
2011-06-15 05:14:14 -07:00
|
|
|
promote: defaultpromote
|
2010-01-25 06:26:23 -08:00
|
|
|
|
2013-05-16 05:20:59 -07:00
|
|
|
.PHONY: clean
|
2010-01-25 06:26:23 -08:00
|
|
|
clean: defaultclean
|
2013-05-16 05:20:59 -07:00
|
|
|
@rm -f *.bytecode *.native *.native.exe *.result
|
2010-01-25 06:26:23 -08:00
|
|
|
|
2011-06-15 01:38:27 -07:00
|
|
|
include $(BASEDIR)/makefiles/Makefile.common
|