summaryrefslogtreecommitdiff
path: root/src/Makefile
blob: bc223c79e287550b8f6bae74cf60b09958ea69e6 (plain)
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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134

include ../config.make

CPPFLAGS = -g

TARGETS = cairo
ifdef LABLGTKDIR
TARGETS += lablgtk
endif
ifdef LIBSVG_CAIRO_CFLAGS
TARGETS += svgcairo
endif
ifdef LIBPANGOCAIRO_CFLAGS
TARGETS += pangocairo
endif

ifneq ($(OCAMLOPT),no)
OPT_TARGET = opt
endif

all : $(TARGETS) $(OPT_TARGET)
opt : $(addsuffix .opt,$(TARGETS))

cairo     : cairo.cma  libmlcairo.a
cairo.opt : cairo.cmxa dllmlcairo.so
lablgtk     : cairo_lablgtk.cma  libmlcairo_lablgtk.a
lablgtk.opt : cairo_lablgtk.cmxa dllmlcairo_lablgtk.so
gtkcairo     : gtkcairo.cma  libmlgtkcairo.a
gtkcairo.opt : gtkcairo.cmxa dllmlgtkcairo.so
svgcairo     : svg_cairo.cma libmlsvgcairo.a
svgcairo.opt : svg_cairo.cmxa dllmlsvgcairo.so
pangocairo     : pango_cairo.cma libmlpangocairo.a
pangocairo.opt : pango_cairo.cmxa dllmlpangocairo.so

cairo_SRC = cairo.mli cairo.ml \
            cairo_bigarray.mli cairo_bigarray.ml \
	    cairo_png.mli cairo_png.ml \
	    cairo_pdf.mli cairo_pdf.ml \
	    cairo_ps.mli cairo_ps.ml \
            cairo_svg.mli cairo_svg.ml \
            cairo_ft.mli cairo_ft.ml \
            ml_cairo_wrappers.c \
            ml_cairo.c ml_cairo_status.c ml_cairo_bigarr.c ml_cairo_path.c \
	    ml_cairo_surface.c ml_cairo_pattern.c ml_cairo_matrix.c \
	    ml_cairo_font.c ml_cairo_ft.c \
	    ml_cairo_png.c ml_cairo_pdf.c ml_cairo_ps.c ml_cairo_svg.c

cairo.cma : $(call mlobjs,$(cairo_SRC))
	$(OCAMLMKLIB) -o cairo -oc mlcairo $^ $(CAIRO_LIBS)
cairo.cmxa : $(call mloptobjs,$(cairo_SRC))
	$(OCAMLMKLIB) -o cairo -oc mlcairo $^ $(CAIRO_LIBS)
libmlcairo.a dllmlcairo.so : $(call cobjs,$(cairo_SRC))
	$(OCAMLMKLIB) -o cairo -oc mlcairo $^ $(CAIRO_LIBS)

lablgtk_SRC = cairo_lablgtk.mli cairo_lablgtk.ml ml_cairo_lablgtk.c

cairo_lablgtk.cma : $(call mlobjs,$(lablgtk_SRC))
	$(OCAMLMKLIB) -o cairo_lablgtk -oc mlcairo_lablgtk $^
cairo_lablgtk.cmxa : $(call mloptobjs,$(lablgtk_SRC))
	$(OCAMLMKLIB) -o cairo_lablgtk -oc mlcairo_lablgtk $^
libmlcairo_lablgtk.a dllmlcairo_lablgtk.so : $(call cobjs,$(lablgtk_SRC))
	$(OCAMLMKLIB) -o cairo_lablgtk -oc mlcairo_lablgtk $^

svgcairo_SRC = svg_cairo.mli svg_cairo.ml ml_svg_cairo.c

svg_cairo.cma : $(call mlobjs,$(svgcairo_SRC))
	$(OCAMLMKLIB) -o svg_cairo -oc mlsvgcairo $^ $(LIBSVG_CAIRO_LIBS)
svg_cairo.cmxa : $(call mloptobjs,$(svgcairo_SRC))
	$(OCAMLMKLIB) -o svg_cairo -oc mlsvgcairo $^ $(LIBSVG_CAIRO_LIBS)
libmlsvgcairo.a dllmlsvgcairo.so : $(call cobjs,$(svgcairo_SRC))
	$(OCAMLMKLIB) -o svg_cairo -oc mlsvgcairo $^ $(LIBSVG_CAIRO_LIBS)

pangocairo_SRC = pango_cairo.mli pango_cairo.ml ml_pango_cairo.c

pango_cairo.cma : $(call mlobjs,$(pangocairo_SRC))
	$(OCAMLMKLIB) -o pango_cairo -oc mlpangocairo $^ $(LIBPANGOCAIRO_LIBS)
pango_cairo.cmxa : $(call mloptobjs,$(pangocairo_SRC))
	$(OCAMLMKLIB) -o pango_cairo -oc mlpangocairo $^ $(LIBPANGO_CAIRO_LIBS)
libmlpangocairo.a dllmlpangocairo.so : $(call cobjs,$(pangocairo_SRC))
	$(OCAMLMKLIB) -o pango_cairo -oc mlpangocairo $^ $(LIBPANGOCAIRO_LIBS)

$(call cobjs,$(cairo_SRC))    : CPPFLAGS+=$(CAIRO_CFLAGS)
$(call cobjs,$(lablgtk_SRC))  : CPPFLAGS+=$(GDK_CFLAGS) -I$(C_LABLGTKDIR)
$(call cobjs,$(svgcairo_SRC))  : CPPFLAGS+=$(LIBSVG_CAIRO_CFLAGS)
$(call cobjs,$(pangocairo_SRC))  : CPPFLAGS+=$(LIBPANGOCAIRO_CFLAGS) $(GDK_CFLAGS) -I$(C_LABLGTKDIR)
$(call mlobjs,$(lablgtk_SRC))  : INCFLAGS=-I $(LABLGTKDIR)
$(call mlintfs,$(lablgtk_SRC))  : INCFLAGS=-I $(LABLGTKDIR)
$(call mloptobjs,$(lablgtk_SRC))  : INCFLAGS=-I $(LABLGTKDIR)
$(call mlobjs,$(pangocairo_SRC))  : INCFLAGS=-I $(LABLGTKDIR)
$(call mlintfs,$(pangocairo_SRC))  : INCFLAGS=-I $(LABLGTKDIR)
$(call mloptobjs,$(pangocairo_SRC))  : INCFLAGS=-I $(LABLGTKDIR)

install: all
	mkdir -p $(DESTDIR)$(INSTALLDIR) $(DESTDIR)$(OCAMLLIB)/stublibs
	install -m 644 *.mli *.cmi *.cma lib*.a $(DESTDIR)$(INSTALLDIR)
ifneq ($(OCAMLOPT),no)
	install -m644 *.cmxa *.a *.cmx $(DESTDIR)$(INSTALLDIR)
endif
	install -m 755 dll*.so $(DESTDIR)$(INSTALLDIR)
	if test -w $(DESTDIR)$(OCAMLLIB)/stublibs ; then \
          for lib in dll*.so ; do \
            ln -s $(INSTALLDIR)/$$lib $(DESTDIR)$(OCAMLLIB)/stublibs ; done ; fi

DOCFILES = cairo.mli cairo_bigarray.mli cairo_png.mli cairo_pdf.mli cairo_ps.mli cairo_ft.mli
ifdef LABLGTKDIR
DOCFILES += cairo_lablgtk.mli
endif
ifdef LIBSVG_CAIRO_CFLAGS
DOCFILES += svg_cairo.mli
endif
ifdef LIBPANGOCAIRO_CFLAGS
DOCFILES += pango_cairo.mli
endif

doc: $(DOCFILES:%.mli=%.cmi)
	mkdir -p ../doc/html
	ocamldoc -v -html -d ../doc/html -t Cairo-ocaml $(if $(LABLGTKDIR),-I $(LABLGTKDIR)) $(DOCFILES) 

clean :
	rm -f *.cm* *.o *.a *.so .depend

.depend : $(wildcard *.ml *.mli)
	@echo "making deps"
	@$(OCAMLDEP) $^ > $@

-include .depend
-include .depend_c

depend : .depend $(wildcard *.h *.c)
	gcc -MM -isystem $(OCAMLLIB) -isystem $(C_LABLGTKDIR) $(patsubst -I%,-isystem %,$(GDK_CFLAGS)) $(filter %.c,$^) > .depend_c

.PHONY : cairo lablgtk gtkcairo doc

include ../Makefile.rules