summaryrefslogtreecommitdiffstats
path: root/libvirt/Makefile.in
blob: 66ffc75fc25415610ddae5b0a7252e8d765f65a6 (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
# ocaml-libvirt
# Copyright (C) 2007 Red Hat Inc., Richard W.M. Jones
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA

WIN32		= @WIN32@

CFLAGS		= @CFLAGS@ \
		   -I.. \
		   -I"$(shell ocamlc -where)" \
		   @DEBUG@ @WARNINGS@ @CFLAGS_FPIC@
LDFLAGS		= @LDFLAGS@
#		   -L"$(shell ocamlc -where)"

OCAMLC		= @OCAMLC@
OCAMLOPT	= @OCAMLOPT@
OCAMLFIND	= @OCAMLFIND@
OCAMLMKLIB	= @OCAMLMKLIB@

ifneq ($(OCAMLFIND),)
OCAMLCPACKAGES	:= -package unix
OCAMLCFLAGS	:= -g
OCAMLCLIBS	:= -linkpkg
else
OCAMLCINCS	:=
OCAMLCFLAGS	:= -g
OCAMLCLIBS	:= unix.cma
endif

OCAMLOPTFLAGS	:=
ifneq ($(OCAMLFIND),)
OCAMLOPTPACKAGES := $(OCAMLCPACKAGES)
OCAMLOPTLIBS	:= $(OCAMLCLIBS)
else
OCAMLOPTINCS	:= $(OCAMLCINCS)
OCAMLOPTLIBS	:= unix.cmxa
endif

export LIBRARY_PATH=.
export LD_LIBRARY_PATH=.

BYTE_TARGETS	:= mllibvirt.cma
OPT_TARGETS	:= mllibvirt.cmxa

all: $(BYTE_TARGETS)

opt: $(OPT_TARGETS)

COBJS := libvirt.cmo libvirt_version.cmo
OPTOBJS := libvirt.cmx libvirt_version.cmx

ifneq ($(OCAMLMKLIB),)
# Good, we can just use ocamlmklib
mllibvirt.cma: libvirt_c.o $(COBJS)
	$(OCAMLMKLIB) -o mllibvirt $^ $(LDFLAGS) -lvirt

mllibvirt.cmxa: libvirt_c.o $(OPTOBJS)
	$(OCAMLMKLIB) -o mllibvirt $^ $(LDFLAGS) -lvirt

else
ifeq ($(WIN32),yes)
# Ugh, MinGW doesn't have ocamlmklib.  This technique is copied from the
# example in OCaml distribution, otherlibs/win32unix/Makefile.nt

mllibvirt.cma: dllmllibvirt.dll libmllibvirt.a $(COBJS)
	$(OCAMLC) -a -linkall -o $@ $(COBJS) \
	  -dllib -lmllibvirt -cclib -lmllibvirt -cclib "$(LDFLAGS) -lvirt"

mllibvirt.cmxa: libmllibvirt.a $(OPTOBJS)
	$(OCAMLOPT) -a -linkall -o $@ $(OPTOBJS) \
	  -cclib -lmllibvirt -cclib "$(LDFLAGS) -lvirt"

dllmllibvirt.dll: libvirt_c.o
	$(CC) -shared -o $@ $^ \
	  $(LDFLAGS) "$(shell ocamlc -where)"/ocamlrun.a -lvirt

libmllibvirt.a: libvirt_c.o
	ar rc $@ $^
	ranlib $@

else
# Don't know how to build a library on this platform.
$(BYTE_TARGETS) $(OPT_TARGETS):
	echo "Error: ocamlmklib missing, and no known way to build libraries on this platform"
	exit 1
endif
endif

# Automatically generate the C code from a Perl script 'generator.pl'.
libvirt_c.c: generator.pl
	perl -w $<

# Status of automatically generated bindings.
autostatus: libvirt_c.c
	@echo -n "Functions which have manual bindings:    "
	@grep ^ocaml_libvirt_ libvirt_c_oneoffs.c  | wc -l
	@echo -n "Functions which have automatic bindings: "
	@grep ^ocaml_libvirt_ libvirt_c.c  | wc -l
	@echo -n "LOC in manual bindings:    "
	@wc -l < libvirt_c_oneoffs.c
	@echo -n "LOC in automatic bindings: "
	@wc -l < libvirt_c.c

libvirt.cmo: libvirt.cmi
libvirt.cmi: libvirt.mli

libvirt_version.cmo: libvirt_version.cmi
libvirt_version.cmi: libvirt_version.mli

install:
	ocamlfind install libvirt \
	  ../META *.so *.a *.cmx *.cma *.cmxa *.cmi *.mli

include ../Make.rules