######################################################################### # # # 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=../.. CSC=csc COMPFLAGS=-I $(OTOPDIR)/otherlibs/bigarray LD_PATH=$(TOPDIR)/otherlibs/bigarray .PHONY: default default: @if ! $(SUPPORTS_SHARED_LIBRARIES); then \ echo 'skipped (shared libraries not available)'; \ elif $(BYTECODE_ONLY); then \ echo 'skipped (native compiler not available)' ; \ else \ $(SET_LD_PATH) $(MAKE) all; \ fi .PHONY: all all: prepare bytecode bytecode-dll native native-dll .PHONY: prepare prepare: @$(OCAMLC) -c plugin.ml @$(OCAMLOPT) -o plugin.cmxs -shared plugin.ml .PHONY: bytecode bytecode: @printf " ... testing 'bytecode':" @if [ ! `which $(CSC) >/dev/null 2>&1` ]; then \ echo " => skipped"; \ else \ $(OCAMLC) -output-obj -o main.dll dynlink.cma main.ml entry.c; \ $(CSC) /out:main.exe main.cs; \ ./main.exe > bytecode.result; \ $(DIFF) bytecode.reference bytecode.result >/dev/null \ && echo " => passed" || echo " => failed"; \ fi .PHONY: bytecode-dll bytecode-dll: @printf " ... testing 'bytecode-dll':" @if [ ! `which $(CSC) > /dev/null 2>&1` ]; then \ echo " => skipped"; \ else \ $(OCAMLC) -output-obj -o main_obj.$(O) dynlink.cma entry.c main.ml; \ $(MKDLL) -maindll -o main.dll main_obj.$(O) entry.$(O) \ ../../byterun/libcamlrun.$(A) $(BYTECCLIBS) -v; \ $(CSC) /out:main.exe main.cs; \ ./main.exe >bytecode.result; \ $(DIFF) bytecode.reference bytecode.result >/dev/null \ && echo " => passed" || echo " => failed"; \ fi .PHONY: native native: @printf " ... testing 'native':" @if [ ! `which $(CSC) > /dev/null 2>&1` ]; then \ echo " => skipped"; \ else \ $(OCAMLOPT) -output-obj -o main.dll dynlink.cmxa entry.c main.ml; \ $(CSC) /out:main.exe main.cs; \ ./main.exe > native.result; \ $(DIFF) native.reference native.result > /dev/null \ && echo " => passed" || echo " => failed"; \ fi .PHONY: native-dll native-dll: @printf " ... testing 'native-dll':" @if [ ! `which $(CSC) > /dev/null 2>&1` ]; then \ echo " => skipped"; \ else \ $(OCAMLOPT) -output-obj -o main_obj.$(O) dynlink.cmxa entry.c \ main.ml; \ $(MKDLL) -maindll -o main.dll main_obj.$(O) entry.$(O) \ ../../asmrun/libasmrun.lib -v; \ $(CSC) /out:main.exe main.cs; \ ./main.exe > native.result; \ $(DIFF) native.reference native.result >/dev/null \ && echo " => passed" || echo " => failed"; \ fi .PHONY: promote promote: defaultpromote .PHONY: clean clean: defaultclean @rm -f *.result *.exe *.dll *.so *.obj *.o include $(BASEDIR)/makefiles/Makefile.common