+csv dep for PG'OCaml.
[cocanwiki.git] / scripts / Makefile
1 # Makefile for COCANWIKI.
2 # $Id: Makefile,v 1.55 2007/02/24 17:28:52 rich Exp $
3
4 include ../Makefile.config
5
6 PGOCAML_PP := camlp4o -I +pcre -I +extlib -I $(PGOCAMLDIR) $(OCAMLLIBDIR)/unix.cma $(OCAMLLIBDIR)/pcre/pcre.cma $(OCAMLLIBDIR)/extlib/extLib.cma $(OCAMLLIBDIR)/calendar/calendar.cma $(CSVDIR)/csv/csv.cma pgocaml.cma pa_pgsql.cmo
7
8 PACKAGES = apache,pcre,extlib,netstring,calendar
9
10 OCAMLC := ocamlc
11 OCAMLCFLAGS = \
12         -package $(PACKAGES) \
13         -I $(PGOCAMLDIR) -I $(CSVDIR) \
14         -I lib -pp "$(PGOCAML_PP)"
15 CPP := cpp
16
17 export PGDATABASE=cocanwiki
18
19 ifeq ($(shell hostname),oirase)
20 # While compiling on home machine, create a tunnel using
21 # ssh -L 5430:localhost:5432 towada.merjis.com
22 export PGHOST=localhost
23 export PGPORT=5430
24 endif
25
26 SRCS := $(wildcard *.ml)
27 ADMIN_SRCS := $(wildcard admin/*.ml)
28
29 OBJS := $(SRCS:.ml=.cmo)
30 ADMIN_OBJS := $(ADMIN_SRCS:.ml=.cmo)
31
32 # NB. Order in which these are built really matters!  To rebuild
33 # the ordering after substantially editing the library files, try:
34 # PGDATABASE=cocanwiki ocamldsort -pp "'$(PGOCAML_PP)'" -byte *.ml *.mli
35 LIB_OBJS := \
36         lib/cocanwiki_version.cmo \
37         lib/cocanwiki_extensions.cmo \
38         lib/cocanwiki_date.cmo \
39         lib/cocanwiki_files.cmo \
40         lib/cocanwiki_server_settings.cmo \
41         lib/cocanwiki_strings.cmo \
42         lib/cocanwiki_version.cmo \
43         lib/cocanwiki_create_host.cmo \
44         lib/wikilib.cmo \
45         lib/cocanwiki_template.cmo \
46         lib/cocanwiki_images.cmo \
47         lib/cocanwiki_ok.cmo \
48         lib/cocanwiki.cmo \
49         lib/cocanwiki_links.cmo \
50         lib/cocanwiki_ext_calendar.cmo \
51         lib/cocanwiki_emailnotify.cmo \
52         lib/cocanwiki_pages.cmo \
53         lib/cocanwiki_diff.cmo \
54         lib/cocanwiki_mail.cmo \
55         lib/cdvmm_phone_numbers.cmo \
56         lib/cocanwiki_func_shell.cmo
57
58 ifneq ($(OCAMLRSS),)
59 LIB_OBJS += lib/cocanwiki_func_rss.cmo
60 OCAMLCFLAGS += -package netclient -I $(OCAMLRSS) -I $(XML_LIGHT)
61 endif
62
63 INSTDIR := ../html/_bin
64
65 all: lib/cocanwiki.cma $(OBJS) $(ADMIN_OBJS)
66
67 lib/cocanwiki.cma: $(LIB_OBJS)
68         ocamlfind ocamlc $(OCAMLCFLAGS) -a -o $@ $^
69
70 lib/cocanwiki_version.ml: lib/cocanwiki_version.ml.in ../Makefile.config
71         $(CPP) -P -DPACKAGE="$(PACKAGE)" -DVERSION="$(VERSION)" $< > $@
72
73 # For debugging camlp4 macro.
74 print:
75         $(PGOCAML_PP) pr_o.cmo lib/cocanwiki_pages.ml
76
77 clean:
78         rm -f *~ *.bak core *.cmi *.cmo *.cma lib/cocanwiki_version.ml
79         rm -f lib/*~ lib/*.bak lib/core lib/*.cmi lib/*.cmo lib/*.cma
80         rm -f admin/*~ admin/*.bak admin/core admin/*.cmi admin/*.cmo
81
82 install:
83         install -d -m 0755 $(INSTDIR)
84         install -c -m 0555 lib/cocanwiki.cma $(INSTDIR)
85         install -c -m 0555 $(OBJS) $(INSTDIR)
86
87         install -d -m 0755 $(INSTDIR)/admin
88         install -c -m 0555 $(ADMIN_OBJS) $(INSTDIR)/admin
89
90 %.cmi: %.mli
91         ocamlfind ocamlc $(OCAMLCFLAGS) -c $<
92
93 %.cmo: %.ml
94         ocamlfind ocamlc $(OCAMLCFLAGS) -c $<
95
96 dep:    .depend
97 depend: .depend
98
99 .depend:
100         ocamldep -pp "$(PGOCAML_PP)" \
101           -I lib \
102           lib/*.ml lib/*.mli *.ml admin/*.ml > $@
103
104 ifeq ($(wildcard .depend),.depend)
105 include .depend
106 endif
107
108 .SUFFIXES: .ml .mli .cmi .cmo