1
# $Id: Makefile,v 1.7 2007/02/15 23:38:51 chris_77 Exp $
3
PKGNAME = $(shell grep "name" META | sed -e "s/.*\"\([^\"]*\)\".*/\1/")
4
PKGVERSION = $(shell grep "version" META | sed -e "s/.*\"\([^\"]*\)\".*/\1/")
7
SF_WEB = /home/groups/o/oc/ocaml-lpd/htdocs
10
OCAMLC = $(CAMLPATH)ocamlc
11
OCAMLP4 = $(CAMLPATH)camlp4o
12
OCAMLOPT = $(CAMLPATH)ocamlopt
13
OCAMLDEP = $(CAMLPATH)ocamldep
14
OCAMLDOC = $(CAMLPATH)ocamldoc
17
OCAMLOPTFLAGS = -dtypes -inline 3
18
OCAMLDOCFLAGS = -html -stars -colorize-code #-css-style $(OCAMLDOCCSS)
20
DISTFILES = INSTALL LICENSE META Make.bat Makefile hosts.lpd \
21
$(wildcard *.ml) $(wildcard *.mli)
23
MLI_FILES = $(wildcard *.mli)
24
DOCFILES = lpd.mli socket.mli
26
PKG_TARBALL = $(PKGNAME)-$(PKGVERSION).tar.gz
27
ARCHIVE = $(shell grep "archive(byte)" META | \
28
sed -e "s/.*\"\([^\"]*\)\".*/\1/")
29
XARCHIVE = $(shell grep "archive(native)" META | \
30
sed -e "s/.*\"\([^\"]*\)\".*/\1/")
34
######################################################################
36
PKGS = $(shell grep "requires" META | sed -e "s/.*\"\([^\"]*\)\".*/\1/")
37
PKGS_CMA = $(addsuffix .cma, $(PKGS))
38
PKGS_CMXA = $(addsuffix .cmxa, $(PKGS))
40
CMI_FILES = $(MLI_FILES:.mli=.cmi)
42
.PHONY: all byte opt install install-byte install-opt doc dist
44
byte: socket.cma lpd.cma
45
opt: socket.cmxa lpd.cmxa
50
ex: lpd_to_win.exe page_counter.exe
52
%.exe: socket.cma lpd.cma %.ml
53
$(OCAMLC) $(OCAMLCFLAGS) -o $@ -I +threads $(PKGS_CMA) threads.cma $^
54
%.opt: socket.cmxa lpd.cmxa %.ml
55
$(OCAMLOPT) $(OCAMLOPTFLAGS) -o $@ -I +threads \
56
$(PKGS_CMXA) threads.cmxa $^
59
.PHONY: install uninstall
61
ocamlfind remove $(PKGNAME); \
62
[ -f "$(XARCHIVE)" ] && \
63
extra="$(XARCHIVE) $(addsuffix .a,$(basename $(XARCHIVE)))"; \
64
ocamlfind install $(if $(DESTDIR),-destdir $(DESTDIR)) $(PKGNAME) \
65
$(MLI_FILES) $(CMI_FILES) $(ARCHIVE) META $$extra
68
ocamlfind remove $(PKGNAME); \
69
ocamlfind install $(if $(DESTDIR),-destdir $(DESTDIR)) $(PKGNAME) \
70
$(MLI_FILES) $(CMI_FILES) $(ARCHIVE) META
73
ocamlfind remove $(PKGNAME)
75
# Compile HTML documentation
77
doc: $(DOCFILES) $(CMI_FILES)
78
@if [ -n "$(DOCFILES)" ] ; then \
79
if [ ! -x $(DOC_DIR) ] ; then mkdir $(DOC_DIR) ; fi ; \
80
$(OCAMLDOC) -v -d $(DOC_DIR) $(OCAMLDOCFLAGS) $(DOCFILES) ; \
86
mkdir $(PKGNAME)-$(PKGVERSION)
87
cp -r $(DISTFILES) $(PKGNAME)-$(PKGVERSION)/
88
# Create a trivial hosts.lpd
89
# echo "# hosts.lpd\nmachine.network.com" \
90
# > $(PKGNAME)-$(PKGVERSION)/hosts.lpd
91
tar --exclude "CVS" --exclude ".cvsignore" --exclude "*~" \
92
--exclude "*.cm{i,x,o,xa}" --exclude "*.o" \
93
-zcvf $(PKG_TARBALL) $(PKGNAME)-$(PKGVERSION)
94
rm -rf $(PKGNAME)-$(PKGVERSION)
96
# Release a tarball and publish the HTML doc
100
# Generic compilation instructions.
103
$(OCAMLC) $(OCAMLCFLAGS) -c $<
106
$(OCAMLC) $(OCAMLCFLAGS) -c $<
109
$(OCAMLC) -a -o $@ $(OCAMLCFLAGS) $<
112
$(OCAMLOPT) $(OCAMLOPTFLAGS) -c $<
115
$(OCAMLOPT) -a -o $@ $(OCAMLOPTFLAGS) $<
121
.depend: $(wildcard *.mli) $(wildcard *.ml) $(wildcard */*.ml)
124
ifeq ($(wildcard .depend),.depend)
131
rm -f *~ .*~ *.{o,a} *.cm[aiox] *.cmxa *.annot
132
rm -rf $(DOC_DIR) $(PKG_TARBALL)
133
find . -type f -perm -u=x -exec rm -f {} \;
135
.SUFFIXES: .ml .mli .cmi .cmo
'\\ No newline at end of file'