1TRACE_LEVEL=@TRACE_VAR@
2
3RPMBUILD ?= $(PWD)/rpmbuild
4
5#Some old versions of automake don't define builddir
6builddir ?= .
7
8dist_noinst_DATA = \
9    m4 \
10    COPYING \
11    COPYING.LESSER \
12    path_utils/libpath_utils.sym \
13    dhash/libdhash.sym \
14    collection/libcollection.sym \
15    refarray/libref_array.sym \
16    basicobjects/libbasicobjects.sym \
17    ini/libini_config.sym
18
19##############################################################################
20# Common
21##############################################################################
22AM_CFLAGS =
23if HAVE_GCC
24    AM_CFLAGS += \
25        -Wall -Wshadow -Wstrict-prototypes -Wpointer-arith -Wcast-qual \
26        -Wcast-align -Wwrite-strings -Wextra -Wno-unused-parameter \
27        -Wno-sign-compare -Wformat-security -Wmissing-prototypes -Wundef
28endif
29
30AM_CPPFLAGS = \
31    -I$(srcdir)/collection \
32    -I$(srcdir)/path_utils \
33    -I$(srcdir)/refarray \
34    -I$(srcdir)/dhash \
35    -I$(srcdir)/ini \
36    -I$(srcdir)/basicobjects \
37    -I$(srcdir) \
38    -I$(srcdir)/trace \
39    $(TRACE_LEVEL)
40
41ACLOCAL_AMFLAGS = -I m4
42
43DOXYGEN = @DOXYGEN@
44
45pkgconfigdir = $(libdir)/pkgconfig
46
47dist_pkgconfig_DATA =
48dist_doc_DATA =
49dist_examples_DATA =
50dist_include_HEADERS =
51lib_LTLIBRARIES =
52check_PROGRAMS =
53TESTS =
54
55examplesdir = $(docdir)/examples
56
57##############################################################################
58# Path Utils
59##############################################################################
60
61lib_LTLIBRARIES += libpath_utils.la
62dist_pkgconfig_DATA += path_utils/path_utils.pc
63dist_include_HEADERS += path_utils/path_utils.h
64
65libpath_utils_la_SOURCES = path_utils/path_utils.c
66libpath_utils_la_DEPENDENCIES = path_utils/libpath_utils.sym
67libpath_utils_la_LDFLAGS = \
68    -version-info 1:1:0 \
69    -Wl,--version-script=$(top_srcdir)/path_utils/libpath_utils.sym
70
71if HAVE_CHECK
72    check_PROGRAMS += path_utils_ut \
73                      ini_augment_ut_check \
74                      ini_configmod_ut_check \
75                      ini_parse_ut_check \
76                      ini_validators_ut_check \
77                      $(NULL)
78    TESTS += path_utils_ut \
79             ini_augment_ut_check \
80             ini_configmod_ut_check \
81             ini_parse_ut_check \
82             ini_validators_ut_check \
83             $(NULL)
84endif
85
86path_utils_ut_SOURCES = path_utils/path_utils_ut.c
87path_utils_ut_CFLAGS = \
88    $(AM_CFLAGS) \
89    $(CHECK_CFLAGS)
90path_utils_ut_LDADD = \
91    $(CHECK_LIBS) \
92    libpath_utils.la
93
94path_utils-docs:
95if HAVE_DOXYGEN
96	cd path_utils; \
97	$(DOXYGEN) path_utils.cfg.doxy;
98endif
99
100dist_doc_DATA += path_utils/README.path_utils
101
102##############################################################################
103# dhash
104##############################################################################
105
106lib_LTLIBRARIES += libdhash.la
107dist_pkgconfig_DATA += dhash/dhash.pc
108dist_include_HEADERS += dhash/dhash.h
109
110libdhash_la_SOURCES = dhash/dhash.c
111libdhash_la_DEPENDENCIES = dhash/libdhash.sym
112libdhash_la_LDFLAGS = \
113    -version-info 2:0:1 \
114    -Wl,--version-script=$(top_srcdir)/dhash/libdhash.sym
115
116check_PROGRAMS += dhash_test dhash_example
117TESTS += dhash_test dhash_example
118
119if HAVE_CHECK
120    check_PROGRAMS += dhash_ut_check
121    TESTS += dhash_ut_check
122endif
123
124
125dhash_test_SOURCES = dhash/examples/dhash_test.c
126dhash_test_LDADD = libdhash.la
127
128dhash_example_SOURCES = dhash/examples/dhash_example.c
129dhash_example_LDADD = libdhash.la
130
131dhash_ut_check_SOURCES = dhash/dhash_ut_check.c
132dhash_ut_chech_CFLAGS = $(AM_CFLAGS) \
133                        $(CHECK_CFLAGS) \
134                        $(NULL)
135dhash_ut_check_LDADD = libdhash.la \
136                       $(CHECK_LIBS) \
137                       $(NULL)
138
139dist_examples_DATA += \
140    dhash/examples/dhash_test.c \
141    dhash/examples/dhash_example.c
142
143dist_doc_DATA += dhash/README.dhash
144
145##############################################################################
146# collection
147##############################################################################
148
149lib_LTLIBRARIES += libcollection.la
150dist_pkgconfig_DATA += collection/collection.pc
151dist_include_HEADERS += \
152    collection/collection.h \
153    collection/collection_tools.h \
154    collection/collection_queue.h \
155    collection/collection_stack.h
156
157libcollection_la_SOURCES = \
158    collection/collection.c \
159    collection/collection_tools.c \
160    collection/collection_cnv.c \
161    collection/collection_queue.c \
162    collection/collection_stack.c \
163    collection/collection_cmp.c \
164    collection/collection_iter.c \
165    collection/collection_priv.h \
166    trace/trace.h
167libcollection_la_DEPENDENCIES = collection/libcollection.sym
168libcollection_la_LDFLAGS = \
169    -version-info 5:1:1 \
170    -Wl,--version-script=$(top_srcdir)/collection/libcollection.sym
171
172check_PROGRAMS += \
173    collection_ut \
174    collection_stack_ut \
175    collection_queue_ut
176TESTS += \
177    collection_ut \
178    collection_stack_ut \
179    collection_queue_ut
180
181collection_ut_SOURCES = collection/collection_ut.c
182collection_ut_LDADD = libcollection.la
183collection_stack_ut_SOURCES = collection/collection_stack_ut.c
184collection_stack_ut_LDADD = libcollection.la
185collection_queue_ut_SOURCES = collection/collection_queue_ut.c
186collection_queue_ut_LDADD = libcollection.la
187
188collection-docs:
189if HAVE_DOXYGEN
190	cd collection; \
191	$(DOXYGEN) collection.cfg.doxy
192endif
193
194##############################################################################
195# refarray
196##############################################################################
197
198lib_LTLIBRARIES += libref_array.la
199dist_pkgconfig_DATA += refarray/ref_array.pc
200dist_include_HEADERS += refarray/ref_array.h
201
202libref_array_la_SOURCES = \
203    refarray/ref_array.c \
204    trace/trace.h
205libref_array_la_DEPENDENCIES = refarray/libref_array.sym
206libref_array_la_LDFLAGS = \
207    -version-info 3:1:2 \
208    -Wl,--version-script=$(top_srcdir)/refarray/libref_array.sym
209
210check_PROGRAMS += ref_array_ut
211TESTS += ref_array_ut
212ref_array_ut_SOURCES = refarray/ref_array_ut.c
213ref_array_ut_LDADD = libref_array.la
214
215dist_doc_DATA += refarray/README.ref_array
216
217ref_array-docs:
218if HAVE_DOXYGEN
219	cd refarray; \
220	$(DOXYGEN) ref_array.cfg.doxy
221endif
222
223##############################################################################
224# basicobjects
225##############################################################################
226
227lib_LTLIBRARIES += libbasicobjects.la
228dist_pkgconfig_DATA += basicobjects/basicobjects.pc
229dist_include_HEADERS += basicobjects/simplebuffer.h
230
231libbasicobjects_la_SOURCES = \
232    basicobjects/simplebuffer.c \
233    trace/trace.h
234libbasicobjects_la_DEPENDENCIES = basicobjects/libbasicobjects.sym
235libbasicobjects_la_LDFLAGS = \
236    -version-info 1:0:1 \
237    -Wl,--version-script=$(top_srcdir)/basicobjects/libbasicobjects.sym
238
239check_PROGRAMS += simplebuffer_ut
240TESTS += simplebuffer_ut
241simplebuffer_ut_SOURCES = basicobjects/simplebuffer_ut.c
242simplebuffer_ut_LDADD = libbasicobjects.la
243
244basicobjects-docs:
245if HAVE_DOXYGEN
246	cd basicobjects; \
247	$(DOXYGEN) basicobjects.cfg.doxy
248endif
249
250
251##############################################################################
252# ini_config
253##############################################################################
254
255lib_LTLIBRARIES += libini_config.la
256dist_pkgconfig_DATA += ini/ini_config.pc
257dist_include_HEADERS += ini/ini_config.h ini/ini_configobj.h \
258                        ini/ini_valueobj.h ini/ini_comment.h \
259                        ini/ini_configmod.h
260
261libini_config_la_SOURCES = \
262    ini/ini_config.c \
263    ini/ini_config.h \
264    ini/ini_get_value.c \
265    ini/ini_get_array.c \
266    ini/ini_list.c \
267    ini/ini_print.c \
268    ini/ini_parse.c \
269    ini/ini_metadata.c \
270    ini/ini_metadata.h \
271    ini/ini_defines.h \
272    ini/ini_comment.c \
273    ini/ini_comment.h \
274    ini/ini_valueobj.c \
275    ini/ini_valueobj.h \
276    ini/ini_serialize.c \
277    ini/ini_fileobj.c \
278    ini/ini_configobj.c \
279    ini/ini_configobj.h \
280    ini/ini_configmod.h \
281    ini/ini_configmod.c \
282    ini/ini_config_priv.h \
283    ini/ini_get_valueobj.c \
284    ini/ini_get_array_valueobj.c \
285    ini/ini_list_valueobj.c \
286    ini/ini_augment.c \
287    trace/trace.h
288EXTRA_libini_config_la_DEPENDENCIES = ini/libini_config.sym
289libini_config_la_LIBADD = \
290    libcollection.la \
291    libpath_utils.la \
292    libref_array.la \
293    libbasicobjects.la
294libini_config_la_LDFLAGS = \
295    -version-info 7:1:2 \
296    -Wl,--version-script=$(top_srcdir)/ini/libini_config.sym
297
298dist_noinst_DATA += \
299    ini/ini.conf \
300    ini/ini.d/real.conf \
301    ini/ini.d/test.conf \
302    ini/ini.d/ipa.conf \
303    ini/ini.d/foo.conf.in \
304    ini/ini.d/mysssd.conf \
305    ini/ini.d/smerge.conf \
306    ini/ini.d/sexpect.conf \
307    ini/ini.d/first.conf \
308    ini/ini.d/second.conf \
309    ini/ini.d/space.conf \
310    ini/ini.d/mergecheck.conf \
311    ini/ini.d/comment.conf \
312    ini/ini.d/real8.conf \
313    ini/ini.d/real16be.conf \
314    ini/ini.d/real16le.conf \
315    ini/ini.d/real32be.conf \
316    ini/ini.d/real32le.conf \
317    ini/ini.d/symbols.conf \
318    ini/ini.d/new_line.conf \
319    ini/ini.d/merge.validator \
320    ini/ini2.d/real8.conf \
321    ini/ini2.d/real16be.conf \
322    ini/ini2.d/real16le.conf \
323    ini/ini2.d/real32be.conf \
324    ini/ini2.d/real32le.conf
325
326
327check_PROGRAMS += \
328    ini_config_ut \
329    ini_comment_ut \
330    ini_valueobj_ut \
331    ini_parse_ut \
332    ini_augment_ut \
333    ini_configmod_ut \
334    ini_save_ut
335
336TESTS += \
337    ini_config_ut \
338    ini_comment_ut \
339    ini_valueobj_ut \
340    ini_parse_ut \
341    ini_augment_ut \
342    ini_configmod_ut \
343    ini_save_ut
344
345
346ini_config_ut_SOURCES = ini/ini_config_ut.c
347ini_config_ut_LDADD = \
348    libini_config.la \
349    libcollection.la
350
351ini_comment_ut_SOURCES = ini/ini_comment_ut.c
352ini_comment_ut_LDADD = libini_config.la
353
354ini_valueobj_ut_SOURCES = ini/ini_valueobj_ut.c
355ini_valueobj_ut_LDADD = libini_config.la libbasicobjects.la
356
357ini_parse_ut_SOURCES = ini/ini_parse_ut.c
358ini_parse_ut_LDADD = libini_config.la libcollection.la libbasicobjects.la
359
360ini_augment_ut_SOURCES = ini/ini_augment_ut.c
361ini_augment_ut_LDADD = libini_config.la libcollection.la \
362                       libbasicobjects.la libpath_utils.la libref_array.la
363
364ini_configmod_ut_SOURCES = ini/ini_configmod_ut.c
365ini_configmod_ut_LDADD = libini_config.la libcollection.la \
366                         libbasicobjects.la libpath_utils.la libref_array.la
367
368ini_augment_ut_check_SOURCES = ini/ini_augment_ut_check.c
369ini_augment_ut_check_CFLAGS = $(AM_CFLAGS) $(CHECK_CFLAGS)
370ini_augment_ut_check_LDADD = libini_config.la $(CHECK_LIBS) \
371                             libref_array.la
372
373ini_configmod_ut_check_SOURCES = ini/ini_configmod_ut_check.c
374ini_configmod_ut_check_CFLAGS = $(AM_CFLAGS) $(CHECK_CFLAGS)
375ini_configmod_ut_check_LDADD = libini_config.la libcollection.la \
376                               libbasicobjects.la libpath_utils.la \
377                               libref_array.la \
378                               $(CHECK_LIBS)
379
380ini_parse_ut_check_SOURCES = ini/ini_parse_ut_check.c
381ini_parse_ut_check_CFLAGS = $(AM_CFLAGS) $(CHECK_CFLAGS)
382ini_parse_ut_check_LDADD = libini_config.la \
383                           libref_array.la \
384                           $(CHECK_LIBS)
385
386ini_validators_ut_check_SOURCES = ini/ini_validators_ut_check.c
387ini_validators_ut_check_CFLAGS = $(AM_CFLAGS) $(CHECK_CFLAGS)
388ini_validators_ut_check_LDADD = libini_config.la $(CHECK_LIBS)
389
390
391ini_save_ut_SOURCES = ini/ini_save_ut.c
392ini_save_ut_LDADD = libini_config.la libcollection.la \
393                         libbasicobjects.la libpath_utils.la libref_array.la
394
395ini_config-docs:
396if HAVE_DOXYGEN
397	cd ini; \
398	$(DOXYGEN) ini_config.cfg.doxy
399endif
400
401clean-local-ini_config:
402	rm -f ./*.out
403	rm -f test.ini
404	rm -f ./foo.conf ./bom* #From ini_parse_ut
405	rm -f ./merge.validator.* #From ini_augment_ut
406	rm -f ./real.conf.manual
407	rm -f ./modtest.conf.real
408	rm -f ./modtest.conf.exp
409	rm -f ./test_*
410
411
412
413##############################################################################
414# Additional rules
415##############################################################################
416
417
418rpmroot:
419	mkdir -p $(RPMBUILD)/BUILD
420	mkdir -p $(RPMBUILD)/RPMS
421	mkdir -p $(RPMBUILD)/SOURCES
422	mkdir -p $(RPMBUILD)/SPECS
423	mkdir -p $(RPMBUILD)/SRPMS
424
425rpms: dist-gzip rpmroot
426	cp $(builddir)/contrib/ding-libs.spec $(RPMBUILD)/SPECS
427	cp $(distdir).tar.gz $(RPMBUILD)/SOURCES
428	cd $(RPMBUILD); \
429	rpmbuild --define "_topdir $(RPMBUILD)" -ba SPECS/ding-libs.spec
430
431if GIT_CHECKOUT
432prerelease-rpms:
433	cp $(srcdir)/version.m4 $(srcdir)/version.m4.orig
434	sed -e "s/m4_define(\[PRERELEASE_VERSION_NUMBER\], \[.*\])/m4_define(\[PRERELEASE_VERSION_NUMBER\], \[.`date +%Y%m%d%H`git`git log -1 --pretty=format:%h`\])/" < $(srcdir)/version.m4.orig > $(srcdir)/version.m4
435	$(MAKE) rpms
436	mv $(srcdir)/version.m4.orig $(srcdir)/version.m4
437endif
438
439# make srpms will use the old digest algorithm to be compatible
440# with RHEL5
441srpm: dist-gzip rpmroot
442	cp $(builddir)/contrib/ding-libs.spec $(RPMBUILD)/SPECS
443	cp $(distdir).tar.gz $(RPMBUILD)/SOURCES
444	cd $(RPMBUILD); \
445	rpmbuild --define "_topdir $(RPMBUILD)" \
446	         --define _source_filedigest_algorithm=1 \
447	         -bs SPECS/ding-libs.spec
448
449if GIT_CHECKOUT
450prerelease-srpm:
451	cp $(srcdir)/version.m4 $(srcdir)/version.m4.orig
452	sed -e "s/m4_define(\[PRERELEASE_VERSION_NUMBER\], \[.*\])/m4_define(\[PRERELEASE_VERSION_NUMBER\], \[.`date +%Y%m%d%H`git`git log -1 --pretty=format:%h`\])/" < $(srcdir)/version.m4.orig > $(srcdir)/version.m4
453	$(MAKE) srpm
454	mv $(srcdir)/version.m4.orig $(srcdir)/version.m4
455endif
456
457tests: all $(check_PROGRAMS)
458
459docs: path_utils-docs collection-docs ref_array-docs ini_config-docs basicobjects-docs
460
461clean-local: clean-local-ini_config
462	rm -Rf doc
463