1# See if we can cast the automake spell. -*-Makefile-*-
2#
3
4#
5AUTOMAKE_OPTIONS = no-dependencies 1.4
6
7EX_B_DIR=$(top_builddir)/examples
8EX_INST_DIR=$(libdir)/vstr-$(VERSION)/examples
9
10GEN_CFLAGS = -I../include -I../../include @CFLAGS@ @WARNS@
11if USE_EX_STATIC_LIBS
12GEN_CFLAGS += -DCONF_FULL_STATIC=1
13endif
14
15GEN_LDLIBS = @LDFLAGS@ @LOCAL_EX_PROG_LIBS@
16
17
18ex_cat_DEPENDENCIES = ex_utils.h
19ex_cat_CFLAGS = $(GEN_CFLAGS)
20ex_cat_LDADD  = $(GEN_LDLIBS)
21
22ex_ccount_DEPENDENCIES = ex_utils.h
23ex_ccount_CFLAGS = $(GEN_CFLAGS)
24ex_ccount_LDADD  = $(GEN_LDLIBS)
25
26ex_conf_SOURCES      = conf.c ex_conf.c conf_inline.c
27ex_conf_DEPENDENCIES = conf.h ex_utils.h mk.h
28ex_conf_CFLAGS = $(GEN_CFLAGS)
29ex_conf_LDADD  = $(GEN_LDLIBS)
30
31ex_hello_world_DEPENDENCIES = ex_utils.h
32ex_hello_world_CFLAGS = $(GEN_CFLAGS)
33ex_hello_world_LDADD  = $(GEN_LDLIBS)
34
35ex_hello_world_s_DEPENDENCIES = ex_utils.h
36ex_hello_world_s_CFLAGS = $(GEN_CFLAGS)
37ex_hello_world_s_LDADD  = $(GEN_LDLIBS)
38
39ex_hello_world_m_DEPENDENCIES = ex_utils.h
40ex_hello_world_m_CFLAGS = $(GEN_CFLAGS)
41ex_hello_world_m_LDADD  = $(GEN_LDLIBS)
42
43ex_hello_world_x_DEPENDENCIES = ex_utils.h
44ex_hello_world_x_CFLAGS = $(GEN_CFLAGS)
45ex_hello_world_x_LDADD  = $(GEN_LDLIBS)
46
47ex_hexdump_SOURCES      = hexdump.c ex_hexdump.c
48ex_hexdump_DEPENDENCIES = hexdump.h ex_utils.h
49ex_hexdump_CFLAGS = $(GEN_CFLAGS)
50ex_hexdump_LDADD  = $(GEN_LDLIBS)
51
52ex_dir_list2html_DEPENDENCIES = ex_utils.h
53ex_dir_list2html_CFLAGS = $(GEN_CFLAGS)
54ex_dir_list2html_LDADD  = $(GEN_LDLIBS)
55
56ex_dir_filter_SOURCES      = opt.c bag.c ex_dir_filter.c
57ex_dir_filter_DEPENDENCIES = opt.h bag.h ex_utils.h
58ex_dir_filter_CFLAGS = $(GEN_CFLAGS)
59ex_dir_filter_LDADD  = $(GEN_LDLIBS)
60
61ex_dir_list_DEPENDENCIES = ex_utils.h
62ex_dir_list_CFLAGS = $(GEN_CFLAGS)
63ex_dir_list_LDADD  = $(GEN_LDLIBS)
64
65ex_dir_sort_SOURCES      = opt.c bag.c ex_dir_sort.c
66ex_dir_sort_DEPENDENCIES = opt.h bag.h ex_utils.h
67ex_dir_sort_CFLAGS = $(GEN_CFLAGS)
68ex_dir_sort_LDADD  = $(GEN_LDLIBS)
69
70ex_nl_DEPENDENCIES = ex_utils.h
71ex_nl_CFLAGS = $(GEN_CFLAGS)
72ex_nl_LDADD  = $(GEN_LDLIBS)
73
74ex_phone_names_DEPENDENCIES = ex_utils.h
75ex_phone_names_CFLAGS = $(GEN_CFLAGS)
76ex_phone_names_LDADD  = $(GEN_LDLIBS)
77
78ex_rot13_DEPENDENCIES = ex_utils.h
79ex_rot13_CFLAGS = $(GEN_CFLAGS)
80ex_rot13_LDADD  = $(GEN_LDLIBS)
81
82ex_yes_DEPENDENCIES = ex_utils.h
83ex_yes_CFLAGS = $(GEN_CFLAGS)
84ex_yes_LDADD  = $(GEN_LDLIBS)
85
86ex_mon_cp_DEPENDENCIES = ex_utils.h
87ex_mon_cp_CFLAGS = $(GEN_CFLAGS)
88ex_mon_cp_LDADD  = $(GEN_LDLIBS)
89
90ex_lookup_ip_DEPENDENCIES = ex_utils.h
91ex_lookup_ip_CFLAGS = $(GEN_CFLAGS)
92ex_lookup_ip_LDADD  = $(GEN_LDLIBS)
93
94ex_csv_DEPENDENCIES = ex_utils.h
95ex_csv_CFLAGS = $(GEN_CFLAGS)
96ex_csv_LDADD  = $(GEN_LDLIBS)
97
98ex_highlight_DEPENDENCIES = ex_utils.h
99ex_highlight_CFLAGS = $(GEN_CFLAGS)
100ex_highlight_LDADD  = $(GEN_LDLIBS)
101
102ex_ssi_SOURCES      = opt.c ex_ssi.c
103ex_ssi_DEPENDENCIES = opt.h ex_utils.h
104ex_ssi_CFLAGS = $(GEN_CFLAGS)
105ex_ssi_LDADD  = $(GEN_LDLIBS)
106
107ex_rainbow_DEPENDENCIES = ex_utils.h
108ex_rainbow_CFLAGS = $(GEN_CFLAGS)
109ex_rainbow_LDADD  = $(GEN_LDLIBS)
110
111ex_changelog_diff_DEPENDENCIES = ex_utils.h
112ex_changelog_diff_CFLAGS = $(GEN_CFLAGS)
113ex_changelog_diff_LDADD  = $(GEN_LDLIBS)
114
115ex_slowcat_SOURCES      = opt.c ex_slowcat.c
116ex_slowcat_DEPENDENCIES = opt.h ex_utils.h
117ex_slowcat_CFLAGS   = $(GEN_CFLAGS) $(TIMER_Q_CFLAGS)
118ex_slowcat_LDADD    = $(GEN_LDLIBS) $(TIMER_Q_LDLIBS)
119
120# For command line stuff that uses events...
121CMDLINE_FILES_SRCS = date.c evnt.c hexdump.c opt.c vlg.c
122CMDLINE_FILES_HDRS = date.h evnt.h hexdump.h opt.h vlg.h
123
124ex_dns_SOURCES      = dns.c $(CMDLINE_FILES_SRCS) ex_dns.c
125ex_dns_DEPENDENCIES = dns.h $(CMDLINE_FILES_HDRS)
126ex_dns_CFLAGS   = $(GEN_CFLAGS) $(SOCKET_POLL_CFLAGS) $(TIMER_Q_CFLAGS)
127ex_dns_LDADD    = $(GEN_LDLIBS) $(SOCKET_POLL_LDLIBS) $(TIMER_Q_LDLIBS)
128
129ex_cntl_SOURCES      = $(CMDLINE_FILES_SRCS) ex_cntl.c
130ex_cntl_DEPENDENCIES = $(CMDLINE_FILES_HDRS) mk.h
131ex_cntl_CFLAGS   = $(GEN_CFLAGS) $(SOCKET_POLL_CFLAGS) $(TIMER_Q_CFLAGS)
132ex_cntl_LDADD    = $(GEN_LDLIBS) $(SOCKET_POLL_LDLIBS) $(TIMER_Q_LDLIBS)
133
134DAEMON_FILES_SRCS = bag.c conf.c cntl.c date.c evnt.c hexdump.c \
135                    opt.c opt_policy.c opt_serv.c vlg.c \
136                    conf_inline.c opt_policy_inline.c
137DAEMON_FILES_HDRS = bag.h conf.h cntl.h date.h evnt.h hexdump.h \
138                    opt.h opt_policy.h opt_serv.h vlg.h
139
140ex_httpd_SOURCES      = mime_types.c httpd_conf_main.c httpd_conf_req.c \
141			httpd_policy.c httpd_policy_inline.c \
142                        $(DAEMON_FILES_SRCS) httpd.c ex_httpd.c
143ex_httpd_DEPENDENCIES = mime_types.h httpd_conf_main.h httpd_conf_req.h \
144			httpd_policy.h \
145                        $(DAEMON_FILES_HDRS) httpd.h httpd_err_codes.h
146ex_httpd_CFLAGS   = $(GEN_CFLAGS) $(SOCKET_POLL_CFLAGS) $(TIMER_Q_CFLAGS)
147ex_httpd_LDADD    = $(GEN_LDLIBS) $(SOCKET_POLL_LDLIBS) $(TIMER_Q_LDLIBS)
148
149ex_echod_SOURCES      = $(DAEMON_FILES_SRCS) ex_echod.c
150ex_echod_DEPENDENCIES = $(DAEMON_FILES_HDRS)
151ex_echod_CFLAGS   = $(GEN_CFLAGS) $(SOCKET_POLL_CFLAGS) $(TIMER_Q_CFLAGS)
152ex_echod_LDADD    = $(GEN_LDLIBS) $(SOCKET_POLL_LDLIBS) $(TIMER_Q_LDLIBS)
153
154ex_ypservd_SOURCES      = $(DAEMON_FILES_SRCS) ex_ypservd.c
155ex_ypservd_DEPENDENCIES = $(DAEMON_FILES_HDRS)
156ex_ypservd_CFLAGS   = $(GEN_CFLAGS) $(SOCKET_POLL_CFLAGS) $(TIMER_Q_CFLAGS)
157ex_ypservd_LDADD    = $(GEN_LDLIBS) $(SOCKET_POLL_LDLIBS) $(TIMER_Q_LDLIBS)
158
159ex_zcat_DEPENDENCIES = ex_utils.h
160ex_zcat_CFLAGS = $(GEN_CFLAGS) $(ZLIB_CFLAGS) $(BZ2_CFLAGS)
161ex_zcat_LDADD  = $(GEN_LDLIBS) $(ZLIB_LDLIBS) $(BZ2_LDLIBS)
162
163ex_sock_filter_DEPENDENCIES = ex_utils.h
164ex_sock_filter_CFLAGS = $(GEN_CFLAGS)
165ex_sock_filter_LDADD  = $(GEN_LDLIBS)
166
167ex_perf_sgopenssl_DEPENDENCIES = ex_perf.h
168ex_perf_sgopenssl_CFLAGS = $(GEN_CFLAGS) $(OPENSSL_CFLAGS) -Wno-aggregate-return
169ex_perf_sgopenssl_LDADD  = $(GEN_LDLIBS) $(OPENSSL_LDLIBS)
170
171ex_gmp_factorials_DEPENDENCIES = ex_utils.h
172ex_gmp_factorials_CFLAGS = $(GEN_CFLAGS) $(GMP_CFLAGS)
173ex_gmp_factorials_LDADD  = $(GEN_LDLIBS) $(GMP_LDLIBS)
174ex_gmp_nums_DEPENDENCIES = ex_utils.h
175ex_gmp_nums_CFLAGS = $(GEN_CFLAGS) $(GMP_CFLAGS)
176ex_gmp_nums_LDADD  = $(GEN_LDLIBS) $(GMP_LDLIBS)
177ex_gmp_num_roman_DEPENDENCIES = ex_utils.h
178ex_gmp_num_roman_CFLAGS = $(GEN_CFLAGS) $(GMP_CFLAGS)
179ex_gmp_num_roman_LDADD  = $(GEN_LDLIBS) $(GMP_LDLIBS)
180ex_gmp_num_words_DEPENDENCIES = ex_utils.h
181ex_gmp_num_words_CFLAGS = $(GEN_CFLAGS) $(GMP_CFLAGS)
182ex_gmp_num_words_LDADD  = $(GEN_LDLIBS) $(GMP_LDLIBS)
183
184ex_perf_nodesize_foreach_DEPENDENCIES = ex_perf.h
185ex_perf_nodesize_foreach_CFLAGS = $(GEN_CFLAGS) $(GLIB20_CFLAGS) -Wno-aggregate-return
186ex_perf_nodesize_foreach_LDADD  = $(GEN_LDLIBS) $(GLIB20_LDLIBS)
187
188ex_netstr_DEPENDENCIES = ex_perf.h
189ex_netstr_CFLAGS = $(GEN_CFLAGS)
190ex_netstr_LDADD  = $(GEN_LDLIBS)
191
192ex_perf_nodesize_DEPENDENCIES = ex_perf.h
193ex_perf_nodesize_CFLAGS = $(GEN_CFLAGS) -Wno-aggregate-return
194ex_perf_nodesize_LDADD  = $(GEN_LDLIBS)
195
196ex_perf_add_DEPENDENCIES = ex_perf.h
197ex_perf_add_CFLAGS = $(GEN_CFLAGS) -Wno-aggregate-return
198ex_perf_add_LDADD  = $(GEN_LDLIBS)
199
200
201# BEG: Not a Vstr app.
202ex_tdns_CFLAGS   = -pthread $(GEN_CFLAGS)
203ex_tdns_LDADD    = $(GEN_LDLIBS)
204ex_tdns_LDFLAGS  = -pthread
205# END: Not a Vstr app.
206
207
208examplesdir = $(EX_INST_DIR)
209examples_PROGRAMS = ex_netstr
210
211if MALLINFO_AVAIL
212examples_PROGRAMS += ex_perf_nodesize ex_perf_add
213endif
214
215# Turn on Programs we can compile...
216
217if HAVE_POSIX_HOST
218
219hi_DEP =   ex_highlight
220hi_APP = ./ex_highlight
221ls_DEP =   ex_dir_list ex_dir_filter ex_dir_sort ex_dir_list2html
222ls1_APP = ./ex_dir_list --size --follow --
223ls2_APP = | ./ex_dir_filter \
224 -A .. --deny-name-beg . \
225 -D index.html -D dir_list.css \
226 --deny-name-end .gz --deny-name-end .bz2 \
227 --deny-name-end ~ --deny-name-end \\\# | \
228 ./ex_dir_sort --sort=cmp | \
229 ./ex_dir_list2html --name
230
231
232# Don't build by default, requires threads...
233# examples_PROGRAMS += ex_tdns
234
235examples_PROGRAMS += \
236  ex_cat \
237  ex_hello_world ex_hello_world_s ex_hello_world_m ex_hello_world_x \
238  ex_hexdump ex_dir_list2html ex_dir_filter ex_dir_list ex_dir_sort ex_nl \
239  ex_phone_names ex_rot13 \
240  ex_yes ex_mon_cp ex_lookup_ip ex_csv $(hi_DEP) \
241  ex_ssi ex_rainbow ex_changelog_diff ex_ccount ex_sock_filter ex_conf
242
243if TIMER_Q_AVAIL
244examples_PROGRAMS += ex_slowcat
245
246if SOCKET_POLL_AVAIL
247examples_PROGRAMS += ex_cntl ex_dns ex_echod
248#examples_PROGRAMS += ex_httpd
249#examples_PROGRAMS += ex_ypservd
250endif
251# Timer_q
252endif
253
254if BZ2_AVAIL
255if ZLIB_AVAIL
256examples_PROGRAMS += ex_zcat
257endif
258endif
259
260if GMP_AVAIL
261examples_PROGRAMS += \
262  ex_gmp_factorials ex_gmp_nums ex_gmp_num_roman ex_gmp_num_words
263endif
264
265if OPENSSL_AVAIL
266if MALLINFO_AVAIL
267examples_PROGRAMS += ex_perf_sgopenssl
268endif
269endif
270
271if GLIB20_AVAIL
272if MALLINFO_AVAIL
273examples_PROGRAMS += ex_perf_nodesize_foreach
274endif
275endif
276
277
278if PERL_USR_BIN_AVAIL
279TESTS_ENVIRONMENT = SRCDIR="$(srcdir)"
280TESTS = tst/tst_cat.pl tst/tst_hexdump.pl tst/tst_nl.pl tst/tst_rot13.pl \
281        tst/tst_sock_filter.pl tst/tst_conf.pl \
282        tst/tst_echod.pl
283#TESTS += tst/tst_httpd_cmd.pl tst/tst_httpd_conf.pl
284#TESTS += tst/tst_httpd_pubonly.pl
285#TESTS += tst/tst_httpd_none.pl
286#TESTS += tst/tst_httpd_nonvhosts.pl
287#TESTS += tst/tst_httpd_vhosts.pl
288endif
289
290else
291# !HAVE_POSIX_HOST
292
293# Use pre-installed version...
294hi_DEP =
295hi_APP = echo -- hi
296ls_DEP =
297ls1_APP = echo -- ls1
298ls2_APP = echo -- ls2
299
300endif
301
302example_code_html = \
303  html/app.h.html \
304  html/bag.c.html \
305  html/bag.h.html \
306  html/conf.c.html \
307  html/conf.h.html \
308  html/conf_inline.c.html \
309  html/cntl.c.html \
310  html/cntl.h.html \
311  html/date.c.html \
312  html/date.h.html \
313  html/dns.c.html \
314  html/dns.h.html \
315  html/evnt.c.html \
316  html/evnt.h.html \
317  html/mime_types.c.html \
318  html/mime_types.h.html \
319  html/ex_cat.c.html \
320  html/ex_ccount.c.html \
321  html/ex_changelog_diff.c.html \
322  html/ex_conf.c.html \
323  html/ex_cntl.c.html \
324  html/ex_csv.c.html \
325  html/ex_dir_filter.c.html \
326  html/ex_dir_list.c.html \
327  html/ex_dir_sort.c.html \
328  html/ex_dns.c.html \
329  html/ex_echod.c.html \
330  html/ex_gmp_factorials.c.html \
331  html/ex_gmp_num_roman.c.html \
332  html/ex_gmp_nums.c.html \
333  html/ex_gmp_num_words.c.html \
334  html/ex_hello_world.c.html \
335  html/ex_hello_world.h.html \
336  html/ex_hello_world_m.c.html \
337  html/ex_hello_world_s.c.html \
338  html/ex_hello_world_x.c.html \
339  html/ex_hexdump.c.html \
340  html/ex_highlight.c.html \
341  html/ex_dir_list2html.c.html \
342  html/ex_httpd.c.html \
343  html/ex_lookup_ip.c.html \
344  html/ex_mon_cp.c.html \
345  html/ex_netstr.c.html \
346  html/ex_nl.c.html \
347  html/ex_perf_add.c.html \
348  html/ex_perf.h.html \
349  html/ex_perf_nodesize.c.html \
350  html/ex_perf_nodesize_foreach.c.html \
351  html/ex_perf_sgopenssl.c.html \
352  html/ex_phone_names.c.html \
353  html/ex_rainbow.c.html \
354  html/ex_rot13.c.html \
355  html/ex_slowcat.c.html \
356  html/ex_ssi.c.html \
357  html/ex_utils.h.html \
358  html/ex_yes.c.html \
359  html/ex_ypservd.c.html \
360  html/ex_zcat.c.html \
361  html/hexdump.c.html \
362  html/hexdump.h.html \
363  html/httpd.c.html \
364  html/httpd.h.html \
365  html/httpd_err_codes.h.html \
366  html/httpd_conf_main.c.html \
367  html/httpd_conf_main.h.html \
368  html/httpd_conf_req.c.html \
369  html/httpd_conf_req.h.html \
370  html/httpd_policy.c.html \
371  html/httpd_policy.h.html \
372  html/httpd_policy_inline.c.html \
373  html/mk.h.html \
374  html/opt.h.html \
375  html/opt_serv.c.html \
376  html/opt_serv.h.html \
377  html/opt_policy.c.html \
378  html/opt_policy.h.html \
379  html/opt_policy_inline.c.html \
380  html/vlg.c.html \
381  html/vlg.h.html
382#  html/ex_tdns.c.html
383
384
385htmldir   = $(EX_INST_DIR)/html
386html_DATA = \
387  html/index.html \
388  html/dir_list.css \
389  html/f_c.css \
390  \
391  $(example_code_html)
392
393examplesscriptsdir = $(EX_INST_DIR)/scripts
394examplesscripts_DATA = \
395  highlight2style.pl \
396  nodesize_plots.pl \
397  nodesize_split.pl
398
399extradatadir = $(EX_INST_DIR)/data
400extradata_DATA = \
401  hexdump_data \
402  mime_types_extra.txt \
403  README \
404  zcat_data_1.bz2 \
405  zcat_data_1.gz \
406  zcat_data_2.bz2 \
407  zcat_data_2.gz
408
409
410initddir = $(sysconfdir)/init.d
411initd_SCRIPTS = \
412  init.d/jechod
413
414
415CLEANFILES=$(html_DATA) html
416
417html/f_c.css: ../Documentation/f_c.css
418		-@mkdir html
419		-$(LN_S) ../$< html
420
421html/dir_list.css: ../examples/dir_list.css
422		-@mkdir html
423		-$(LN_S) ../$< html
424
425html/index.html: html/dir_list.css $(ls_DEP) $(example_code_html)
426		$(ls1_APP) html $(ls2_APP) 'Vstr example code' > $@
427		$(srcdir)/gzip-r.pl --zero --type=all html
428
429html/%.html: % html/f_c.css $(hi_DEP)
430		$(hi_APP) --css-filename=f_c.css $< > $@
431
432