File: Makefile

package info (click to toggle)
ocaml 4.05.0-11
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 27,060 kB
  • sloc: ml: 199,255; ansic: 44,187; sh: 5,611; makefile: 4,958; lisp: 4,223; asm: 4,220; awk: 306; perl: 87; fortran: 21; cs: 9; sed: 9
file content (76 lines) | stat: -rw-r--r-- 2,892 bytes parent folder | download | duplicates (2)
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
71
72
73
74
75
76
#**************************************************************************
#*                                                                        *
#*                                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 GNU Lesser General Public License version 2.1, with the          *
#*   special exception on linking described in the file LICENSE.          *
#*                                                                        *
#**************************************************************************

BASEDIR=../..

COMPFLAGS=-I $(OTOPDIR)/otherlibs/dynlink
LD_PATH=.:$(TOPDIR)/otherlibs/dynlink

# This test relies on the upstream behaviour of -custom
export OCAML_CUSTOM_EMBED=n

.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 -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)/byterun/ocamlrun$(USE_RUNTIME)$(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 dllplug*.dll

include $(BASEDIR)/makefiles/Makefile.common