Fixed loads of bugs. It now works. Ready to integrate in assessortool.
[perl4caml.git] / Makefile
1 # Interface to Perl from OCaml.
2 # Copyright (C) 2003 Merjis Ltd.
3 # $Id: Makefile,v 1.7 2003-10-14 16:05:21 rich Exp $
4
5 include Makefile.config
6
7 OCAMLC := ocamlc
8 OCAMLOPT := ocamlopt
9 OCAMLMKLIB := ocamlmklib
10 OCAMLDEP := ocamldep
11
12 OCAMLCINCS := -I wrappers
13 OCAMLOPTINCS := $(OCAMLCINCS)
14
15 OCAMLCFLAGS := -w s -g $(OCAMLCINCS)
16 OCAMLOPTFLAGS := -w s $(OCAMLOPTINCS)
17
18 CC := gcc
19 CFLAGS := -Wall -Wno-unused -I$(PERLINCDIR)
20
21 LIBPERL := $(shell perl -MExtUtils::Embed -e ldopts)
22
23 WRAPPERS := \
24         wrappers/pl_Net_Google_Cache.cmo \
25         wrappers/pl_Net_Google_Response.cmo \
26         wrappers/pl_Net_Google_Search.cmo \
27         wrappers/pl_Net_Google_Spelling.cmo \
28         wrappers/pl_Net_Google.cmo \
29         wrappers/pl_HTML_Element.cmo \
30         wrappers/pl_HTML_Parser.cmo \
31         wrappers/pl_HTML_TreeBuilder.cmo \
32         wrappers/pl_URI.cmo \
33         wrappers/pl_HTTP_Message.cmo \
34         wrappers/pl_HTTP_Request.cmo \
35         wrappers/pl_HTTP_Response.cmo \
36         wrappers/pl_LWP_UserAgent.cmo \
37         wrappers/pl_Net_Google.cmo
38
39 all:    perl.cma perl.cmxa perl_init.cmo perl_init.cmx all-examples
40
41 perl.cma: perl.cmo perl_c.o $(WRAPPERS)
42         $(OCAMLMKLIB) -o perl $(LIBPERL) $^
43
44 perl.cmxa: perl.cmx perl_c.o $(WRAPPERS:.cmo=.cmx)
45         $(OCAMLMKLIB) -o perl $(LIBPERL) $^
46
47 all-examples: examples/test examples/loadpage examples/google
48
49 examples/test: examples/test.cmo
50         $(OCAMLC) $(OCAMLCFLAGS) perl.cma perl_init.cmo $^ -o $@
51
52 #examples/test.opt: examples/test.cmx
53 #       $(OCAMLOPT) $(OCAMLOPTFLAGS) perl.cmxa perl_init.cmx $^ -o $@
54
55 examples/loadpage: examples/loadpage.cmo
56         $(OCAMLC) $(OCAMLCFLAGS) perl.cma perl_init.cmo $^ -o $@
57
58 #examples/loadpage.opt: examples/loadpage.cmx
59 #       $(OCAMLOPT) $(OCAMLOPTFLAGS) perl.cmxa perl_init.cmx $^ -o $@
60
61 examples/google: examples/google.cmo
62         $(OCAMLC) $(OCAMLCFLAGS) perl.cma perl_init.cmo $^ -o $@
63
64 #examples/google.opt: examples/google.cmx
65 #       $(OCAMLOPT) $(OCAMLOPTFLAGS) perl.cmxa perl_init.cmx $^ -o $@
66
67 %.cmi: %.mli
68         $(OCAMLC) $(OCAMLCFLAGS) -c $<
69
70 %.cmo: %.ml
71         $(OCAMLC) $(OCAMLCFLAGS) -c $<
72
73 %.cmx: %.ml
74         $(OCAMLOPT) $(OCAMLOPTFLAGS) -c $<
75
76 .SUFFIXES: .mli .ml .cmi .cmo .cmx
77
78 # Clean.
79
80 JUNKFILES = core *~ *.bak *.cmi *.cmo *.cmx *.cma *.cmxa *.o *.a *.so
81
82 clean:
83         rm -f examples/test examples/loadpage examples/google
84         for d in . examples wrappers; do (cd $$d; rm -f $(JUNKFILES)); done
85
86 # Build dependencies.
87
88 ifeq ($(wildcard .depend),.depend)
89 include .depend
90 endif
91
92 depend: .depend
93
94 .depend: $(wildcard *.ml) $(wildcard *.mli) $(wildcard examples/*.ml) \
95         $(wildcard wrappers/*.ml)
96         $(OCAMLDEP) $(OCAMLCINCS) *.mli *.ml examples/*.ml wrappers/*.ml \
97         > .depend
98
99 # Install.
100
101 install:
102         install -c -m 0755 -d $(OCAMLLIBDIR)
103         install -c -m 0755 -d $(OCAMLLIBDIR)/stublibs
104         install -c -m 0644 perl.cmi perl.mli perl.cma perl.cmxa $(OCAMLLIBDIR)
105         install -c -m 0644 perl_init.cmo perl_init.cmx $(OCAMLLIBDIR)
106         install -c -m 0644 perl.a libperl.a $(OCAMLLIBDIR)
107         install -c -m 0644 dllperl.so $(OCAMLLIBDIR)/stublibs
108
109 # Distribution.
110
111 dist:
112         rm -rf $(PACKAGE)-$(VERSION)
113         mkdir $(PACKAGE)-$(VERSION)
114         tar -cf - -T MANIFEST | tar -C $(PACKAGE)-$(VERSION) -xf -
115         tar zcf $(PACKAGE)-$(VERSION).tar.gz $(PACKAGE)-$(VERSION)
116         rm -rf $(PACKAGE)-$(VERSION)
117         ls -l $(PACKAGE)-$(VERSION).tar.gz
118
119 check-manifest:
120         @for d in `find -type d -name CVS`; \
121         do \
122         b=`dirname $$d`/; \
123         awk -F/ '$$1 != "D" {print $$2}' $$d/Entries | \
124         sed -e "s|^|$$b|" -e "s|^\./||"; \
125         done | sort > .check-manifest; \
126         sort MANIFEST > .orig-manifest; \
127         diff -u .orig-manifest .check-manifest; \
128         rm -f .orig-manifest .check-manifest
129
130 .PHONY: depend dist check-manifest