3d57a4fa5e8a28070f8b39399e54e375fa91d5ef
[asterisk/asterisk.git] / mxml / Makefile.in
1 #
2 # "$Id$"
3 #
4 # Makefile for Mini-XML, a small XML-like file parsing library.
5 #
6 # Copyright 2003-2005 by Michael Sweet.
7 #
8 # This program is free software; you can redistribute it and/or
9 # modify it under the terms of the GNU Library General Public
10 # License as published by the Free Software Foundation; either
11 # version 2, or (at your option) any later version.
12 #
13 # This program is distributed in the hope that it will be useful,
14 # but WITHOUT ANY WARRANTY; without even the implied warranty of
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 # GNU General Public License for more details.
17 #
18
19 #
20 # Compiler tools definitions...
21 #
22
23 AR              =       @AR@
24 ARFLAGS         =       @ARFLAGS@
25 CC              =       @CC@
26 CFLAGS          =       $(OPTIM) @CFLAGS@ @CPPFLAGS@
27 CP              =       @CP@
28 DSO             =       @DSO@
29 DSOFLAGS        =       @DSOFLAGS@
30 LDFLAGS         =       $(OPTIM) @LDFLAGS@
31 INSTALL         =       @INSTALL@
32 LIBMXML         =       @LIBMXML@
33 LN              =       @LN@ -s
34 MKDIR           =       @MKDIR@
35 NROFF           =       @NROFF@
36 OPTIM           =       @OPTIM@
37 RANLIB          =       @RANLIB@
38 RM              =       @RM@ -f
39 SHELL           =       /bin/sh
40
41
42 #
43 # Configured directories...
44 #
45
46 prefix          =       @prefix@
47 exec_prefix     =       @exec_prefix@
48 bindir          =       @bindir@
49 includedir      =       @includedir@
50 libdir          =       @libdir@
51 mandir          =       @mandir@
52 docdir          =       @docdir@
53 BUILDROOT       =       $(DSTROOT)
54
55
56 #
57 # Manpage extensions...
58 #
59
60 CAT1EXT         =       @CAT1EXT@
61 CAT3EXT         =       @CAT3EXT@
62 MAN1EXT         =       @MAN1EXT@
63 MAN3EXT         =       @MAN3EXT@
64
65
66 #
67 # Install commands...
68 #
69
70 INSTALL_BIN     =       $(LIBTOOL) $(INSTALL) -m 755 -s
71 INSTALL_DATA    =       $(INSTALL) -m 644
72 INSTALL_DIR     =       $(INSTALL) -d
73 INSTALL_LIB     =       $(LIBTOOL) $(INSTALL) -m 755
74 INSTALL_MAN     =       $(INSTALL) -m 644
75 INSTALL_SCRIPT  =       $(INSTALL) -m 755
76
77
78 #
79 # Rules...
80 #
81
82 .SUFFIXES:      .0 .1 .3 .c .man .o
83 .c.o:
84         $(CC) $(CFLAGS) -c $<
85 .man.0 .man.1 .man.3:
86         $(RM) $@
87         $(NROFF) -man $< >$@
88
89
90 #
91 # Targets...
92 #
93
94 DOCFILES        =       doc/mxml.html doc/mxmldoc.xsd \
95                         README COPYING CHANGES
96 PUBLIBOBJS      =       mxml-attr.o mxml-entity.o mxml-file.o mxml-index.o \
97                         mxml-node.o mxml-search.o mxml-set.o
98 LIBOBJS         =       $(PUBLIBOBJS) mxml-private.o mxml-string.o
99 OBJS            =       mxmldoc.o testmxml.o $(LIBOBJS)
100 TARGETS         =       $(LIBMXML) mxmldoc doc/mxml.$(CAT3EXT) \
101                         doc/mxmldoc.$(CAT1EXT) testmxml mxml.xml
102
103
104 #
105 # Make everything...
106 #
107
108 all:            Makefile configure config.h $(TARGETS)
109
110
111 #
112 # Clean everything...
113 #
114
115 clean:
116         $(RM) $(OBJS) $(TARGETS)
117         $(RM) mxmldoc-static libmxml.a
118         $(RM) *.bck *.bak
119         $(RM) config.cache config.log config.status
120         $(RM) -r autom4te*.cache
121
122
123 #
124 # Install everything...
125 #
126
127 install:        $(TARGETS) install-$(LIBMXML) install-libmxml.a
128         $(INSTALL_DIR) $(BUILDROOT)$(bindir)
129         $(INSTALL_BIN) mxmldoc $(BUILDROOT)$(bindir) 
130         $(INSTALL_DIR) $(BUILDROOT)$(docdir)
131         for file in $(DOCFILES); do \
132                 $(INSTALL_MAN) $$file $(BUILDROOT)$(docdir); \
133         done
134         $(INSTALL_DIR) $(BUILDROOT)$(includedir)
135         $(INSTALL_DATA) mxml.h $(BUILDROOT)$(includedir)
136         $(INSTALL_DIR) $(BUILDROOT)$(libdir)/pkgconfig
137         $(INSTALL_DATA) mxml.pc $(BUILDROOT)$(libdir)/pkgconfig
138         $(INSTALL_DIR) $(BUILDROOT)$(mandir)/cat1
139         $(INSTALL_MAN) doc/mxmldoc.$(CAT1EXT) $(BUILDROOT)$(mandir)/cat1/mxmldoc.$(CAT1EXT)
140         $(INSTALL_DIR) $(BUILDROOT)$(mandir)/cat3
141         $(INSTALL_MAN) doc/mxml.$(CAT3EXT) $(BUILDROOT)$(mandir)/cat3/mxml.$(CAT3EXT)
142         $(INSTALL_DIR) $(BUILDROOT)$(mandir)/man1
143         $(INSTALL_MAN) doc/mxmldoc.man $(BUILDROOT)$(mandir)/man1/mxmldoc.$(MAN1EXT)
144         $(INSTALL_DIR) $(BUILDROOT)$(mandir)/man3
145         $(INSTALL_MAN) doc/mxml.man $(BUILDROOT)$(mandir)/man3/mxml.$(MAN3EXT)
146
147 install-libmxml.a:
148         $(INSTALL_DIR) $(BUILDROOT)$(libdir)
149         $(INSTALL_LIB) libmxml.a $(BUILDROOT)$(libdir)
150
151 install-libmxml.so.1.0:
152         $(INSTALL_DIR) $(BUILDROOT)$(libdir)
153         $(INSTALL_LIB) libmxml.so.1.0 $(BUILDROOT)$(libdir)
154         $(RM) $(BUILDROOT)$(libdir)/libmxml.so
155         $(LN) libmxml.so.1.0 $(BUILDROOT)$(libdir)/libmxml.so
156         $(RM) $(BUILDROOT)$(libdir)/libmxml.so.1
157         $(LN) libmxml.so.1.0 $(BUILDROOT)$(libdir)/libmxml.so.1
158
159 install-libmxml.sl.1:
160         $(INSTALL_DIR) $(BUILDROOT)$(libdir)
161         $(INSTALL_LIB) libmxml.sl.1 $(BUILDROOT)$(libdir)
162         $(RM) $(BUILDROOT)$(libdir)/libmxml.so
163         $(LN) libmxml.sl.1 $(BUILDROOT)$(libdir)/libmxml.sl
164
165 install-libmxml.1.dylib:
166         $(INSTALL_DIR) $(BUILDROOT)$(libdir)
167         $(INSTALL_LIB) libmxml.1.dylib $(BUILDROOT)$(libdir)
168         $(RM) $(BUILDROOT)$(libdir)/libmxml.dylib
169         $(LN) libmxml.1.dylib $(BUILDROOT)$(libdir)/libmxml.dylib
170
171
172 #
173 # Uninstall everything...
174 #
175
176 uninstall: uninstall-$(LIBMXML) uninstall-libmxml.a
177         $(RM) $(BUILDROOT)$(bindir)/mxmldoc
178         $(RM) -r $(BUILDROOT)$(docdir)
179         $(RM) $(BUILDROOT)$(includedir)/mxml.h
180         $(RM) $(BUILDROOT)$(libdir)/pkgconfig/mxml.pc
181         $(RM) $(BUILDROOT)$(mandir)/cat1/mxmldoc.$(CAT1EXT)
182         $(RM) $(BUILDROOT)$(mandir)/cat3/mxml.$(CAT3EXT)
183         $(RM) $(BUILDROOT)$(mandir)/man1/mxmldoc.$(MAN1EXT)
184         $(RM) $(BUILDROOT)$(mandir)/man3/mxml.$(MAN3EXT)
185
186 uninstall-libmxml.a:
187         $(RM) $(BUILDROOT)$(libdir)/libmxml.a
188
189 uninstall-libmxml.so.1.0:
190         $(RM) $(BUILDROOT)$(libdir)/libmxml.so
191         $(RM) $(BUILDROOT)$(libdir)/libmxml.so.1
192         $(RM) $(BUILDROOT)$(libdir)/libmxml.so.1.0
193
194 uninstall-libmxml.sl.1:
195         $(RM) $(BUILDROOT)$(libdir)/libmxml.sl
196         $(RM) $(BUILDROOT)$(libdir)/libmxml.sl.1
197
198 uninstall-libmxml.1.dylib:
199         $(RM) $(BUILDROOT)$(libdir)/libmxml.dylib
200         $(RM) $(BUILDROOT)$(libdir)/libmxml.1.dylib
201
202
203 #
204 # Make packages using EPM (http://www.easysw.com/epm/)
205 #
206
207 epm:    all
208         epm --output-dir dist -v -f native mxml
209         epm --output-dir dist -v -f portable mxml
210
211
212 #
213 # autoconf stuff...
214 #
215
216 Makefile:       Makefile.in
217         if test -f config.status; then \
218                 ./config.status --recheck; \
219                 ./config.status; \
220         else \
221                 ./configure; \
222         fi
223         touch config.h
224
225
226 config.h:       configure config.h.in
227         autoconf
228         if test -f config.status; then \
229                 ./config.status --recheck; \
230                 ./config.status; \
231         else \
232                 ./configure; \
233         fi
234         touch config.h
235
236
237 #
238 # libmxml.a
239 #
240
241 libmxml.a:      $(LIBOBJS)
242         $(RM) $@
243         $(AR) $(ARFLAGS) $@ $(LIBOBJS)
244         $(RANLIB) $@
245
246 $(LIBOBJS):     mxml.h
247
248
249 #
250 # libmxml.so.1.0
251 #
252
253 libmxml.so.1.0: $(LIBOBJS)
254         $(DSO) $(DSOFLAGS) -o libmxml.so.1.0 $(LIBOBJS)
255         $(RM) libmxml.so libmxml.so.1
256         $(LN) libmxml.so.1.0 libmxml.so
257         $(LN) libmxml.so.1.0 libmxml.so.1
258
259
260 #
261 # libmxml.sl.1
262 #
263
264 libmxml.sl.1:   $(LIBOBJS)
265         $(DSO) $(DSOFLAGS) -o libmxml.sl.1 $(LIBOBJS)
266         $(RM) libmxml.sl libmxml.sl.1
267         $(LN) libmxml.sl.1 libmxml.sl
268
269
270 #
271 # libmxml.1.dylib
272 #
273
274 libmxml.1.dylib:        $(LIBOBJS)
275         $(DSO) $(DSOFLAGS) -o libmxml.1.dylib \
276                 -install_name $(libdir)/libmxml.dylib \
277                 -current_version 1.0.0 \
278                 -compatibility_version 1.0.0 \
279                 $(LIBOBJS)
280         $(RM) libmxml.dylib libmxml.1.dylib
281         $(LN) libmxml.1.dylib libmxml.dylib
282
283
284 #
285 # mxmldoc
286 #
287
288 mxmldoc:        $(LIBMXML) mxmldoc.o
289         $(CC) $(LDFLAGS) -o $@ mxmldoc.o -L. -lmxml
290
291 mxmldoc-static: libmxml.a mxmldoc.o
292         $(CC) $(LDFLAGS) -o $@ mxmldoc.o libmxml.a
293
294 mxmldoc.o:      mxml.h
295
296
297 #
298 # testmxml
299 #
300
301 testmxml:       libmxml.a testmxml.o
302         $(CC) $(LDFLAGS) -o $@ testmxml.o libmxml.a
303         @echo Testing library...
304         ./testmxml test.xml >temp1.xml 2>temp1s.xml
305         ./testmxml temp1.xml >temp2.xml 2>temp2s.xml
306         @if cmp temp1.xml temp2.xml; then \
307                 echo Stdio file test passed!; \
308                 $(RM) temp2.xml temp2s.xml; \
309         else \
310                 echo Stdio file test failed!; \
311         fi
312         @if cmp temp1.xml temp1s.xml; then \
313                 echo String test passed!; \
314                 $(RM) temp1.xml temp1s.xml; \
315         else \
316                 echo String test failed!; \
317         fi
318         @if cmp test.xml test.xmlfd; then \
319                 echo File descriptor test passed!; \
320                 $(RM) test.xmlfd; \
321         else \
322                 echo File descriptor test failed!; \
323         fi
324
325 testmxml.o:     mxml.h
326
327
328 #
329 # mxml.xml
330 #
331
332 mxml.xml:       mxmldoc-static mxml.h $(PUBLIBOBJS:.o=.c)
333         $(RM) mxml.xml
334         ./mxmldoc-static mxml.xml mxml.h $(PUBLIBOBJS:.o=.c) >doc/reference.html
335
336 valgrind:       mxmldoc-static
337         $(RM) valgrind.xml
338         valgrind --tool=memcheck --leak-check=yes ./mxmldoc-static \
339                 valgrind.xml mxml.h $(PUBLIBOBJS:.o=.c) \
340                 >valgrind.html 2>valgrind.out
341
342
343 #
344 # All object files depend on the makefile...
345 #
346
347 $(OBJS):        Makefile config.h
348
349
350 #
351 # End of "$Id$".
352 #