blob: f9b1c6f9c3ab3d6daf48b505b5ba6a2ab8010ed2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
#########################################################################
# #
# 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=../..
COMPFLAGS=-I $(OTOPDIR)/otherlibs/dynlink
LD_PATH=.:$(TOPDIR)/otherlibs/dynlink
.PHONY: default
default:
@if ! $(SUPPORTS_SHARED_LIBRARIES); then \
echo 'skipped (shared libraries not available)'; \
else \
$(SET_LD_PATH) $(MAKE) compile run; \
fi
.PHONY: compile
compile:
@$(OCAMLC) -c registry.ml
@for file in stub*.c; do \
$(OCAMLC) -ccopt -I -ccopt $(CTOPDIR)/byterun/caml -c $$file; \
$(OCAMLMKLIB) -o `echo $$file | sed -e 's/stub/plug/' -e 's/\.c//'` \
`basename $$file c`$(O); \
done
@for file in plug*.ml; do \
$(OCAMLC) -c $$file; \
$(OCAMLMKLIB) -o `basename $$file .ml` `basename $$file ml`cmo; \
done
@$(OCAMLC) -c main.ml
@rm -f main static custom custom.exe
@$(OCAMLC) -o main dynlink.cma registry.cmo main.cmo
@$(OCAMLC) -o static -linkall registry.cmo plug1.cma plug2.cma \
-use-runtime $(OTOPDIR)/boot/ocamlrun$(EXE)
@$(OCAMLC) -o custom$(EXE) -custom -linkall registry.cmo plug2.cma \
plug1.cma -I .
.PHONY: run
run:
@printf " ... testing 'main'"
@$(OCAMLRUN) ./main plug1.cma plug2.cma >main.result
@$(DIFF) main.reference main.result >/dev/null \
&& echo " => passed" || echo " => failed"
@printf " ... testing 'static'"
@$(OCAMLRUN) ./static >static.result
@$(DIFF) static.reference static.result >/dev/null \
&& echo " => passed" || echo " => failed"
@printf " ... testing 'custom'"
@./custom$(EXE) >custom.result
@$(DIFF) custom.reference custom.result >/dev/null \
&& echo " => passed" || echo " => failed"
.PHONY: promote
promote: defaultpromote
.PHONY: clean
clean: defaultclean
@rm -f main static custom custom.exe *.result marshal.data
include $(BASEDIR)/makefiles/Makefile.common
|