File: Makefile

package info (click to toggle)
ocaml-expat 1.3.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 320 kB
  • sloc: xml: 3,918; ml: 648; ansic: 572; makefile: 102
file content (113 lines) | stat: -rw-r--r-- 2,820 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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#
#

# Change this to match your expat installation.
EXPAT_LIB=-lexpat
EXPAT_LIBDIR=/usr/local/lib
EXPAT_INCDIR=/usr/local/include

NAME=expat
OBJECTS=expat.cmo
XOBJECTS=$(OBJECTS:.cmo=.cmx)
C_OBJECTS=expat_stubs$(EXT_OBJ)

ARCHIVE=$(NAME).cma
XARCHIVE=$(ARCHIVE:.cma=.cmxa)
XSARCHIVE=$(ARCHIVE:.cma=.cmxs)
CARCHIVE_NAME=mlexpat
CARCHIVE=lib$(CARCHIVE_NAME)$(EXT_LIB)

# Flags for the C compiler.
CFLAGS=-DFULL_UNROLL -O2 -I$(EXPAT_INCDIR)

OCAMLFIND=ocamlfind
OCAMLPKGS=-package bytes
OCAMLC=$(OCAMLFIND) ocamlc $(OCAMLPKGS)
OCAMLOPT=$(OCAMLFIND) ocamlopt $(OCAMLPKGS)
OCAMLDEP=$(OCAMLFIND) ocamldep $(OCAMLPKGS)
OCAMLMKLIB=$(OCAMLFIND) ocamlmklib $(OCAMLPKGS)
OCAMLDOC=$(OCAMLFIND) ocamldoc $(OCAMLPKGS)
OCAMLDIR=$(shell $(OCAMLFIND) query stdlib)
include $(OCAMLDIR)/Makefile.config

OPT_TARGETS=	$(XARCHIVE)
ifeq ($(SUPPORTS_SHARED_LIBRARIES),true)
OPT_TARGETS+=	$(XSARCHIVE)
endif
 
.PHONY: all
all: $(ARCHIVE)
.PHONY: allopt
allopt:  $(OPT_TARGETS)

depend: *.c *.ml *.mli
	gcc -I $(OCAMLDIR) -MM *.c > depend
	$(OCAMLDEP) *.mli *.ml >> depend

## Library creation
$(CARCHIVE): $(C_OBJECTS)
	$(OCAMLMKLIB) -oc $(CARCHIVE_NAME) $(C_OBJECTS) \
	-L$(EXPAT_LIBDIR) $(EXPAT_LIB)
$(ARCHIVE): $(CARCHIVE) $(OBJECTS)
	$(OCAMLMKLIB) -o $(NAME) $(OBJECTS) -oc $(CARCHIVE_NAME) \
	-L$(EXPAT_LIBDIR) $(EXPAT_LIB)
$(XARCHIVE): $(CARCHIVE) $(XOBJECTS)
	$(OCAMLMKLIB) -o $(NAME) $(XOBJECTS) -oc $(CARCHIVE_NAME) \
	-L$(EXPAT_LIBDIR) $(EXPAT_LIB)
$(XSARCHIVE): $(CARCHIVE) $(XOBJECTS)
	$(OCAMLOPT) -linkall -shared -o $(XSARCHIVE) $(XOBJECTS) $(CARCHIVE) \
	-ccopt -L$(EXPAT_LIBDIR) -cclib $(EXPAT_LIB)

## Installation
.PHONY: install
install: all
	{ test ! -f $(XARCHIVE) || extra="$(OPT_TARGETS) $(NAME)$(EXT_LIB)"; }; \
	$(OCAMLFIND) install $(NAME) META $(NAME).cmi $(NAME).mli $(ARCHIVE) \
	lib$(CARCHIVE_NAME)$(EXT_LIB) $$extra \
	-optional dll$(CARCHIVE_NAME)$(EXT_DLL)

.PHONY: uninstall
uninstall:
	$(OCAMLFIND) remove $(NAME)

## Documentation
.PHONY: doc
doc: FORCE
	cd doc; $(OCAMLDOC) -html -I .. ../$(NAME).mli

## Testing
.PHONY: testall
testall: test testopt
.PHONY: test
test: unittest
	CAML_LD_LIBRARY_PATH=$(pwd) ./unittest
.PHONY: testopt
testopt: unittest.opt
	./unittest.opt
unittest: all unittest.ml
	$(OCAMLFIND) ocamlc -o unittest -package oUnit -ccopt -L. -linkpkg \
	$(ARCHIVE) unittest.ml
unittest.opt: allopt unittest.ml
	$(OCAMLFIND) ocamlopt -o unittest.opt -package oUnit -ccopt -L. -linkpkg \
	$(XARCHIVE) unittest.ml

## Cleaning up
.PHONY: clean
clean::
	rm -f *~ *.cm* *$(EXT_OBJ) *$(EXT_LIB) *$(EXT_DLL) doc/*.html doc/*.css depend \
	unittest unittest.opt oUnit*.cache

FORCE:

.SUFFIXES: .ml .mli .cmo .cmi .cmx

.mli.cmi:
	$(OCAMLC) -c $(COMPFLAGS) $<
.ml.cmo:
	$(OCAMLC) -c $(COMPLAGS) $<
.ml.cmx:
	$(OCAMLOPT) -c $(COMPFLAGS) $<
.c.o:
	$(OCAMLC) -c -ccopt "$(CFLAGS)" $<

include depend