d4c00418ecd0b64c4e0f0998db3aa3af918b20f0
[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:       configure 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 configure:      configure.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 config.h:       configure config.h.in
238         autoconf
239         if test -f config.status; then \
240                 ./config.status --recheck; \
241                 ./config.status; \
242         else \
243                 ./configure; \
244         fi
245         touch config.h
246
247
248 #
249 # libmxml.a
250 #
251
252 libmxml.a:      $(LIBOBJS)
253         $(RM) $@
254         $(AR) $(ARFLAGS) $@ $(LIBOBJS)
255         $(RANLIB) $@
256
257 $(LIBOBJS):     mxml.h
258
259
260 #
261 # libmxml.so.1.0
262 #
263
264 libmxml.so.1.0: $(LIBOBJS)
265         $(DSO) $(DSOFLAGS) -o libmxml.so.1.0 $(LIBOBJS)
266         $(RM) libmxml.so libmxml.so.1
267         $(LN) libmxml.so.1.0 libmxml.so
268         $(LN) libmxml.so.1.0 libmxml.so.1
269
270
271 #
272 # libmxml.sl.1
273 #
274
275 libmxml.sl.1:   $(LIBOBJS)
276         $(DSO) $(DSOFLAGS) -o libmxml.sl.1 $(LIBOBJS)
277         $(RM) libmxml.sl libmxml.sl.1
278         $(LN) libmxml.sl.1 libmxml.sl
279
280
281 #
282 # libmxml.1.dylib
283 #
284
285 libmxml.1.dylib:        $(LIBOBJS)
286         $(DSO) $(DSOFLAGS) -o libmxml.1.dylib \
287                 -install_name $(libdir)/libmxml.dylib \
288                 -current_version 1.0.0 \
289                 -compatibility_version 1.0.0 \
290                 $(LIBOBJS)
291         $(RM) libmxml.dylib libmxml.1.dylib
292         $(LN) libmxml.1.dylib libmxml.dylib
293
294
295 #
296 # mxmldoc
297 #
298
299 mxmldoc:        $(LIBMXML) mxmldoc.o
300         $(CC) $(LDFLAGS) -o $@ mxmldoc.o -L. -lmxml
301
302 mxmldoc-static: libmxml.a mxmldoc.o
303         $(CC) $(LDFLAGS) -o $@ mxmldoc.o libmxml.a
304
305 mxmldoc.o:      mxml.h
306
307
308 #
309 # testmxml
310 #
311
312 testmxml:       libmxml.a testmxml.o
313         $(CC) $(LDFLAGS) -o $@ testmxml.o libmxml.a
314         @echo Testing library...
315         ./testmxml test.xml >temp1.xml 2>temp1s.xml
316         ./testmxml temp1.xml >temp2.xml 2>temp2s.xml
317         @if cmp temp1.xml temp2.xml; then \
318                 echo Stdio file test passed!; \
319                 $(RM) temp2.xml temp2s.xml; \
320         else \
321                 echo Stdio file test failed!; \
322         fi
323         @if cmp temp1.xml temp1s.xml; then \
324                 echo String test passed!; \
325                 $(RM) temp1.xml temp1s.xml; \
326         else \
327                 echo String test failed!; \
328         fi
329         @if cmp test.xml test.xmlfd; then \
330                 echo File descriptor test passed!; \
331                 $(RM) test.xmlfd; \
332         else \
333                 echo File descriptor test failed!; \
334         fi
335
336 testmxml.o:     mxml.h
337
338
339 #
340 # mxml.xml
341 #
342
343 mxml.xml:       mxmldoc-static mxml.h $(PUBLIBOBJS:.o=.c)
344         $(RM) mxml.xml
345         ./mxmldoc-static mxml.xml mxml.h $(PUBLIBOBJS:.o=.c) >doc/reference.html
346
347 valgrind:       mxmldoc-static
348         $(RM) valgrind.xml
349         valgrind --tool=memcheck --leak-check=yes ./mxmldoc-static \
350                 valgrind.xml mxml.h $(PUBLIBOBJS:.o=.c) \
351                 >valgrind.html 2>valgrind.out
352
353
354 #
355 # All object files depend on the makefile...
356 #
357
358 $(OBJS):        Makefile config.h
359
360
361 #
362 # End of "$Id$".
363 #