1### Makefile.am
2include $(top_builddir)/version.mk
3
4AM_CFLAGS = $(EXTRA_CFLAGS)
5AM_CPPFLAGS = -D_POSIX_C_SOURCE=200112L -D_XOPEN_SOURCE=600 -D_BSD_SOURCE
6AM_CPPFLAGS += -DHAVE_VERSION_H
7AM_LDFLAGS =
8AM_YFLAGS = -d
9
10M4 = m4
11
12bin_PROGRAMS =
13noinst_PROGRAMS =
14noinst_HEADERS =
15noinst_LIBRARIES =
16BUILT_SOURCES =
17CLEANFILES =
18GGO_HELPERS =
19EXTRA_DIST = $(BUILT_SOURCES) $(GGO_HELPERS)
20SUFFIXES =
21
22DT_INCLUDES = -I$(top_srcdir)/lib -I$(top_builddir)/lib
23DT_LIBS = $(top_builddir)/lib/libdut.a
24
25ANALYZE = clang
26ANALYZE_FLAGS = "--analyze"
27# Based on COMPILE target
28ANALYZE_COMMAND = $(ANALYZE) \
29	$(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
30	$(CPPFLAGS) $(DT_INCLUDES) $(AM_CFLAGS) $(CFLAGS) \
31	$(ANALYZE_FLAGS)
32
33noinst_LIBRARIES += libdutio.a
34libdutio_a_SOURCES =
35libdutio_a_SOURCES += dt-io.c dt-io.h
36libdutio_a_SOURCES += dt-io-zone.c dt-io-zone.h
37libdutio_a_SOURCES += alist.c alist.h
38libdutio_a_SOURCES += prchunk.c prchunk.h
39libdutio_a_SOURCES += dexpr.h
40libdutio_a_CPPFLAGS = $(AM_CPPFLAGS)
41libdutio_a_CPPFLAGS += $(DT_INCLUDES)
42libdutio_a_CPPFLAGS += -DTZMAP_DIR='"$(pkgdatadir)"'
43EXTRA_DIST += strpdt-special.gperf
44BUILT_SOURCES += strpdt-special.c
45
46## all them binaries, alphabetical
47bin_PROGRAMS += dadd
48bin_PROGRAMS += dconv
49bin_PROGRAMS += ddiff
50bin_PROGRAMS += dgrep
51bin_PROGRAMS += dround
52bin_PROGRAMS += dseq
53bin_PROGRAMS += dsort
54bin_PROGRAMS += dtest
55bin_PROGRAMS += dzone
56
57if WITH_OLD_LINKS
58CREATE_OLD_LINKS =  $(LN_S) date$$prog$(EXEEXT) d$$prog$(EXEEXT);
59endif
60
61if !WITH_OLD_NAMES
62install-exec-hook:
63	cd $(DESTDIR)$(bindir) && \
64		for prog in add conv diff grep round seq sort test zone; do \
65			mv -f d$$prog$(EXEEXT) date$$prog$(EXEEXT) ; \
66			$(CREATE_OLD_LINKS) \
67		done
68
69uninstall-hook:
70	cd $(DESTDIR)$(bindir) && \
71		for prog in add conv diff grep round seq sort test zone; do \
72			$(RM) date$$prog$(EXEEXT) ; \
73		done
74endif  ## !WITH_OLD_NAMES
75
76dseq_SOURCES = dseq.c dseq.yuck
77dseq_CPPFLAGS = $(AM_CPPFLAGS) $(DT_INCLUDES)
78dseq_LDFLAGS = $(AM_LDFLAGS)
79dseq_LDADD = libdutio.a
80dseq_LDADD += $(DT_LIBS)
81BUILT_SOURCES += dseq.yucc
82
83if HAVE_STRPTIME
84bin_PROGRAMS += strptime
85strptime_SOURCES = strptime.c strptime.yuck
86strptime_CPPFLAGS = $(AM_CPPFLAGS) $(DT_INCLUDES)
87strptime_LDFLAGS = $(AM_LDFLAGS)
88strptime_LDADD = libdutio.a
89strptime_LDADD += $(DT_LIBS)
90endif
91BUILT_SOURCES += strptime.yucc
92
93dconv_SOURCES = dconv.c dconv.yuck
94dconv_CPPFLAGS = $(AM_CPPFLAGS) $(DT_INCLUDES)
95dconv_LDFLAGS = $(AM_LDFLAGS)
96dconv_LDADD = libdutio.a
97dconv_LDADD += $(DT_LIBS)
98BUILT_SOURCES += dconv.yucc
99
100dtest_SOURCES = dtest.c dtest.yuck
101dtest_CPPFLAGS = $(AM_CPPFLAGS) $(DT_INCLUDES)
102dtest_LDFLAGS = $(AM_LDFLAGS)
103dtest_LDADD = libdutio.a
104dtest_LDADD += $(DT_LIBS)
105BUILT_SOURCES += dtest.yucc
106
107dadd_SOURCES = dadd.c dadd.yuck
108dadd_CPPFLAGS = $(AM_CPPFLAGS) $(DT_INCLUDES)
109dadd_LDFLAGS = $(AM_LDFLAGS)
110dadd_LDADD = libdutio.a
111dadd_LDADD += $(DT_LIBS)
112BUILT_SOURCES += dadd.yucc
113
114ddiff_SOURCES = ddiff.c ddiff.yuck
115ddiff_CPPFLAGS = $(AM_CPPFLAGS) $(DT_INCLUDES)
116ddiff_LDFLAGS = $(AM_LDFLAGS)
117ddiff_LDADD = libdutio.a
118ddiff_LDADD += $(DT_LIBS)
119BUILT_SOURCES += ddiff.yucc
120
121dgrep_SOURCES = dgrep.c dgrep.yuck
122dgrep_CPPFLAGS = $(AM_CPPFLAGS) $(DT_INCLUDES)
123dgrep_LDFLAGS = $(AM_LDFLAGS)
124dgrep_LDADD = libdutio.a
125dgrep_LDADD += $(DT_LIBS)
126BUILT_SOURCES += dgrep.yucc
127
128dround_SOURCES = dround.c dround.yuck
129dround_CPPFLAGS = $(AM_CPPFLAGS) $(DT_INCLUDES)
130dround_LDFLAGS = $(AM_LDFLAGS)
131dround_LDADD = libdutio.a
132dround_LDADD += $(DT_LIBS)
133BUILT_SOURCES += dround.yucc
134
135dzone_SOURCES = dzone.c dzone.yuck
136dzone_CPPFLAGS = $(AM_CPPFLAGS) $(DT_INCLUDES)
137dzone_LDFLAGS = $(AM_LDFLAGS)
138dzone_LDADD = libdutio.a
139dzone_LDADD += $(DT_LIBS)
140BUILT_SOURCES += dzone.yucc
141
142dsort_SOURCES = dsort.c dsort.yuck
143dsort_CPPFLAGS = $(AM_CPPFLAGS) $(DT_INCLUDES)
144dsort_LDFLAGS = $(AM_LDFLAGS)
145dsort_LDADD = libdutio.a
146dsort_LDADD += $(DT_LIBS)
147BUILT_SOURCES += dsort.yucc
148
149if BUILD_DEXPR
150noinst_PROGRAMS += dexpr
151dexpr_SOURCES = dexpr.c
152dexpr_SOURCES += dexpr-scanner.l
153dexpr_SOURCES += dexpr-parser.y
154dexpr_CPPFLAGS = $(AM_CPPFLAGS) $(DT_INCLUDES) -DSTANDALONE
155dexpr_LDFLAGS = $(AM_LDFLAGS)
156dexpr_LDADD = libdutio.a
157dexpr_LDADD += $(DT_LIBS)
158endif  ## BUILD_DEXPR
159BUILT_SOURCES += dexpr-scanner.c dexpr-parser.c dexpr-parser.h
160
161
162## yuck rule
163SUFFIXES += .yuck
164SUFFIXES += .yucc
165.yuck.yucc:
166	$(AM_V_GEN) PATH=$(top_builddir)/build-aux:"$${PATH}" \
167		yuck$(EXEEXT) gen -o $@ $<
168
169## gperf rule
170SUFFIXES += .gperf
171.gperf.c:
172	$(AM_V_GEN) $(GPERF) -L ANSI-C $< --output-file $@
173
174
175## just for parallel builds
176dexpr-parser.h: dexpr-parser.c
177
178#
179# Help the developers get nice post-processed source files
180
181## Create preprocessor output (debugging purposes only)
182.c.i:
183	$(COMPILE) -E -o $@ $<
184
185## Create assembler output (debugging purposes only)
186.c.s:
187	$(COMPILE) -S -c $(AM_CFLAGS) $<
188
189## Run Clang static analyzer over sources.
190anal: $(SOURCES)
191	@list='$(SOURCES)'; \
192	result=0; \
193	for file in $$list; do \
194		if echo $$file | grep '\.c$$' >/dev/null 2>&1; then \
195			echo "Analyzing $$file"; \
196			$(ANALYZE_COMMAND) $(srcdir)/$$file; \
197			status=$$?; \
198			if test $$status != 0; then \
199				result=1; \
200			fi; \
201		fi; \
202	done; \
203	set -e; exit $$result
204