b02d2724b794bf8f5fab5660e5a00fdfdbf40523
[perl4caml.git] / Makefile
1 # Interface to Perl from OCaml.
2 # Copyright (C) 2003 Merjis Ltd.
3 # $Id: Makefile,v 1.5 2003-10-12 12:14:06 rich Exp $
4
5 include Makefile.config
6
7 OCAMLC := ocamlc
8 OCAMLOPT := ocamlopt
9 OCAMLMKLIB := ocamlmklib
10 OCAMLDEP := ocamldep
11
12 OCAMLCFLAGS := -w s -g
13 OCAMLOPTFLAGS := -w s
14
15 CC := gcc
16 CFLAGS := -Wall -Wno-unused -I$(PERLINCDIR)
17
18 all:    perl.cma perl.cmxa examples/test
19
20 perl.cma: perl.cmo perl_c.o
21         $(OCAMLMKLIB) -o perl $^ -lperl
22
23 perl.cmxa: perl.cmx perl_c.o
24         $(OCAMLMKLIB) -o perl $^ -lperl
25
26 examples/test: examples/test.ml
27         $(OCAMLC) $(OCAMLCFLAGS) perl.cma $^ -o $@
28
29 %.cmi: %.mli
30         $(OCAMLC) $(OCAMLCFLAGS) -c $<
31
32 %.cmo: %.ml
33         $(OCAMLC) $(OCAMLCFLAGS) -c $<
34
35 %.cmx: %.ml
36         $(OCAMLOPT) $(OCAMLOPTFLAGS) -c $<
37
38 .SUFFIXES: .mli .ml .cmi .cmo .cmx
39
40 # Clean.
41
42 JUNKFILES = core *~ *.bak *.cmi *.cmo *.cmx *.cma *.cmxa *.o *.a *.so
43
44 clean:
45         rm -f examples/test
46         for d in . examples; do (cd $$d; rm -f $(JUNKFILES)); done
47
48 # Build dependencies.
49
50 ifeq ($(wildcard .depend),.depend)
51 include .depend
52 endif
53
54 depend: .depend
55
56 .depend: $(wildcard *.ml) $(wildcard *.mli)
57         $(OCAMLDEP) *.mli *.ml examples/*.ml > .depend
58
59 # Install.
60
61 install:
62         install -c -m 0755 -d $(OCAMLLIBDIR)
63         install -c -m 0755 -d $(OCAMLLIBDIR)/stublibs
64         install -c -m 0644 perl.cmi perl.mli perl.cma perl.cmxa $(OCAMLLIBDIR)
65         install -c -m 0644 perl.a libperl.a $(OCAMLLIBDIR)
66         install -c -m 0644 dllperl.so $(OCAMLLIBDIR)/stublibs
67
68 # Distribution.
69
70 dist:
71         rm -rf $(PACKAGE)-$(VERSION)
72         mkdir $(PACKAGE)-$(VERSION)
73         tar -cf - -T MANIFEST | tar -C $(PACKAGE)-$(VERSION) -xf -
74         tar zcf $(PACKAGE)-$(VERSION).tar.gz $(PACKAGE)-$(VERSION)
75         rm -rf $(PACKAGE)-$(VERSION)
76         ls -l $(PACKAGE)-$(VERSION).tar.gz
77
78 check-manifest:
79         @for d in `find -type d -name CVS`; \
80         do \
81         b=`dirname $$d`/; \
82         awk -F/ '$$1 != "D" {print $$2}' $$d/Entries | \
83         sed -e "s|^|$$b|" -e "s|^\./||"; \
84         done | sort > .check-manifest; \
85         sort MANIFEST > .orig-manifest; \
86         diff -u .orig-manifest .check-manifest; \
87         rm -f .orig-manifest .check-manifest
88
89 .PHONY: depend dist check-manifest