xref: /freebsd/contrib/ntp/sntp/Makefile.am (revision f4b37ed0f8b307b1f3f0f630ca725d68f1dff30d)
1## Makefile.am for JMK's SNTP, by Harlan Stenn
2
3ACLOCAL_AMFLAGS = -I m4 -I libevent/m4 -I libopts/m4
4
5NULL =
6
7AM_CFLAGS = $(CFLAGS_NTP)
8
9AM_CPPFLAGS  = $(SNTP_INCS)
10AM_CPPFLAGS += $(LIBOPTS_CFLAGS)
11AM_CPPFLAGS += $(CPPFLAGS_LIBEVENT)
12AM_CPPFLAGS += $(CPPFLAGS_NTP)
13
14AM_LDFLAGS = $(LDFLAGS_NTP)
15
16LDADD  = version.o
17LDADD += libsntp.a
18LDADD += $(LIBOPTS_LDADD)
19LDADD += $(LDADD_LIBEVENT)
20LDADD += ../libntp/libntp.a $(LDADD_LIBNTP) $(LIBM)
21LDADD += $(PTHREAD_LIBS)
22LDADD += $(LDADD_NTP)
23
24run_ag =	cd $(srcdir) &&	env PATH="$(abs_builddir):$(PATH)" AUTOGEN_DNE_DATE=-D	\
25		autogen -L include -L ag-tpl --writable
26std_def_list =						\
27	$(srcdir)/include/debug-opt.def			\
28	$(srcdir)/include/autogen-version.def 		\
29	$(srcdir)/include/copyright.def 		\
30	$(srcdir)/include/homerc.def 			\
31	$(srcdir)/include/ntp.lic 			\
32	$(srcdir)/include/version.def			\
33	$(NULL)
34
35EXTRA_PROGRAMS = sntp
36
37bin_PROGRAMS =		@SNTP_DB@
38libexec_PROGRAMS =	@SNTP_DL@
39sbin_PROGRAMS =		@SNTP_DS@
40
41##
42## DIST_SUBDIRS is typically automatically derived by automake including
43## all possible SUBDIRS values, as even items which are not built are
44## typically distributed.
45##
46## To allow us to avoid configuring the libevent tearoff entirely when
47## it is not needed, we define DIST_SUBDIRS manually excluding libevent
48## when not building it, and in that case arrange for its distribution
49## with EXTRA_DIST copying the entire directory and libevent-dist-hook
50## cleaning unwanted VCS remnants.
51##
52## When we are building libevent, it is distributed conventionally, by
53## recursive make dist in sntp including libevent.
54##
55
56SUBDIRS = include scripts unity
57DIST_SUBDIRS = include scripts unity
58
59if BUILD_LIBEVENT
60SUBDIRS += libevent
61DIST_SUBDIRS += libevent
62endif
63
64if NEED_LIBOPTS
65SUBDIRS += libopts
66endif
67
68if BUILD_SNTP
69noinst_LIBRARIES = libsntp.a
70SUBDIRS += tests
71endif
72
73DIST_SUBDIRS += libopts tests
74
75libsntp_a_SOURCES =		\
76	crypto.c		\
77	kod_management.c	\
78	log.c			\
79	main.c			\
80	networking.c		\
81	sntp-opts.c		\
82	utilities.c		\
83	$(NULL)
84
85sntp_SOURCES =		\
86	sntp.c		\
87	$(NULL)
88
89noinst_HEADERS =		\
90	crypto.h		\
91	data_formats.h		\
92	kod_management.h	\
93	log.h			\
94	main.h			\
95	networking.h		\
96	sntp-opts.h		\
97	tests_main.h		\
98	utilities.h		\
99	$(NULL)
100
101DISTCLEANFILES =			\
102	.version			\
103	version.c			\
104	config.log			\
105	$(man_MANS)			\
106	$(NULL)
107
108EXTRA_DIST =				\
109	$(srcdir)/COPYRIGHT		\
110	ag-tpl				\
111	deps-ver			\
112	invoke-sntp.menu		\
113	invoke-sntp.texi		\
114	@NTP_FORCE_LIBEVENT_DIST@	\
115	libpkgver 			\
116	loc				\
117	sntp-opts.def			\
118	sntp.1sntpman			\
119	sntp.1sntpmdoc			\
120	sntp.man.in			\
121	sntp.mdoc.in			\
122	sntp.html			\
123	sntp.texi			\
124	unity/auto			\
125	$(srcdir)/scm-rev		\
126	$(srcdir)/m4/version.m4		\
127	$(NULL)
128
129BUILT_SOURCES =				\
130	$(srcdir)/COPYRIGHT		\
131	libtool				\
132	$(srcdir)/sntp-opts.c		\
133	$(srcdir)/sntp-opts.h		\
134	check-scm-rev			\
135	$(srcdir)/include/version.def	\
136	$(srcdir)/m4/version.m4		\
137	$(srcdir)/include/version.texi	\
138	$(NULL)
139
140CLEANFILES =				\
141	built-sources-only		\
142	check-COPYRIGHT-submake		\
143	$(NULL)
144
145man1_MANS=
146man8_MANS=
147man_MANS=	sntp.$(SNTP_MS)
148
149## HMS: Real Soon Now...
150##info_TEXINFOS=	sntp.texi
151##sntp_TEXINFOS=	invoke-sntp.texi
152
153html_DATA=				\
154	$(srcdir)/sntp.html		\
155	$(NULL)
156
157noinst_DATA=				\
158	$(srcdir)/invoke-sntp.menu	\
159	$(srcdir)/invoke-sntp.texi	\
160	$(srcdir)/sntp.man.in		\
161	$(srcdir)/sntp.mdoc.in		\
162	$(NULL)
163
164install-data-local: install-html
165
166FRC:
167	@: do-nothing action to prevent default SCCS get
168	@: FRC "force" depends on nothing and is not a file, so is
169	@: always out-of-date causing targets which depend on it to
170	@: similarly always be outdated causing their rules to fire
171	@: each time they or a dependent is built.
172
173$(PROGRAMS): version.o
174
175## We probably need something about libevent, too
176## That is probably not possible since LDADD_LIBEVENT may be
177## non-file "-levent_core".
178
179version.c: $(sntp_OBJECTS) ../libntp/libntp.a Makefile $(srcdir)/scm-rev
180	env CSET=`cat $(srcdir)/scm-rev` $(top_builddir)/../scripts/build/mkver sntp
181
182version.o: version.c
183	env CCACHE_DISABLE=1 $(COMPILE) -c version.c -o version.o
184
185check-autogen-version.def: FRC
186	@cd $(srcdir)							\
187	&& test -r ../include/autogen-version.def			\
188	&& ( if cmp -s ../include/autogen-version.def autogen-version.def; \
189	   then : ;							\
190	   else cp ../include/autogen-version.def autogen-version.def;	 \
191		echo "Installing new sntp/autogen-version.def file";	\
192	   fi )
193
194$(srcdir)/autogen-version.def:
195	$(MAKE) $(AM_MAKEFLAGS) check-autogen-version.def
196
197built-sources-only: $(BUILT_SOURCES)
198	@: do-nothing action to avoid default SCCS get
199
200## HMS: The next bit is still suboptimal.  We'll get an error if this is
201## a bk repo and srcdir or scm-rev is unwritable.
202
203check-scm-rev: $(srcdir)/scm-rev
204	@: do-nothing
205
206$(srcdir)/scm-rev:
207	-test -r $(srcdir)/../SCCS/s.ChangeSet &&		\
208	    (bk version) >/dev/null 2>&1 &&			\
209	    cd $(srcdir)/.. &&					\
210	    x=`bk -R prs -hr+ -nd:I: ChangeSet` &&		\
211	    y=`cat sntp/scm-rev 2>/dev/null` || true &&		\
212	    case "$$x" in ''|$$y) ;; *) echo $$x > sntp/scm-rev ;; esac
213
214$(srcdir)/m4/version.m4: $(srcdir)/../packageinfo.sh
215	TEMPDIR=`pwd` && export TEMPDIR && cd $(srcdir) && \
216	../scripts/build/genver m4/version.m4
217
218$(srcdir)/include/version.def: $(srcdir)/../packageinfo.sh
219	TEMPDIR=`pwd` && export TEMPDIR && cd $(srcdir) && \
220	../scripts/build/genver include/version.def
221
222$(srcdir)/include/version.texi: $(srcdir)/../packageinfo.sh
223	TEMPDIR=`pwd` && export TEMPDIR && cd $(srcdir) && \
224	../scripts/build/genver include/version.texi
225
226$(srcdir)/../COPYRIGHT:
227	cd .. && $(MAKE) $(AM_MAKEFLAGS) COPYRIGHT-please
228
229check-COPYRIGHT-submake: $(srcdir)/../COPYRIGHT
230	@cmp -s $(srcdir)/../COPYRIGHT $(srcdir)/COPYRIGHT	\
231	 || { cp $(srcdir)/../COPYRIGHT $(srcdir)		\
232	      && echo 'updated sntp/COPYRIGHT installed' ;}
233	@echo 'submake avoided if this file is newer than parent COPYRIGHT' > $@
234
235check-COPYRIGHT: FRC
236	[ ! -r $(srcdir)/../COPYRIGHT ]					\
237	|| [ check-COPYRIGHT-submake -nt $(srcdir)/../COPYRIGHT ]	\
238	|| $(MAKE) $(AM_MAKEFLAGS) check-COPYRIGHT-submake
239
240$(srcdir)/COPYRIGHT: check-COPYRIGHT
241	@: do-nothing action to prevent any default
242
243$(srcdir)/sntp-opts.h: $(srcdir)/sntp-opts.c
244	@: do-nothing action to avoid default SCCS get, .h built with .c
245
246$(srcdir)/sntp-opts.c: $(srcdir)/sntp-opts.def $(std_def_list)
247	$(run_ag) sntp-opts.def
248
249###
250
251$(srcdir)/sntp.1sntpman: $(srcdir)/sntp-opts.def $(std_def_list)
252	$(run_ag) -DMAN_SECTION=1sntpman -Tagman-cmd.tpl sntp-opts.def
253
254$(srcdir)/sntp.man.in: $(srcdir)/sntp.1sntpman $(srcdir)/scripts/mansec2subst.sed
255	sed -f $(srcdir)/scripts/mansec2subst.sed $(srcdir)/sntp.1sntpman > $(srcdir)/sntp.man.in+
256	mv $(srcdir)/sntp.man.in+ $(srcdir)/sntp.man.in
257
258###
259
260$(srcdir)/sntp.1sntpmdoc: $(srcdir)/sntp-opts.def $(std_def_list)
261	$(run_ag) -DMAN_SECTION=1sntpmdoc -Tagmdoc-cmd.tpl sntp-opts.def
262
263$(srcdir)/sntp.mdoc.in: $(srcdir)/sntp.1sntpmdoc $(srcdir)/scripts/mansec2subst.sed
264	sed -f $(srcdir)/scripts/mansec2subst.sed $(srcdir)/sntp.1sntpmdoc > $(srcdir)/sntp.mdoc.in+
265	mv $(srcdir)/sntp.mdoc.in+ $(srcdir)/sntp.mdoc.in
266
267###
268
269sntp.$(SNTP_MS): $(srcdir)/sntp.$(MANTAGFMT).in $(top_builddir)/config.status
270	$(top_builddir)/config.status --file=sntp.$(SNTP_MS)+:$(srcdir)/sntp.$(MANTAGFMT).in
271	mv sntp.$(SNTP_MS)+ sntp.$(SNTP_MS)
272
273###
274
275$(srcdir)/invoke-sntp.menu: $(srcdir)/invoke-sntp.texi
276	@: do-nothing action to avoid default SCCS get, .menu built with .texi
277
278$(srcdir)/invoke-sntp.texi: $(srcdir)/sntp-opts.def $(std_def_list)
279	$(run_ag) -Tagtexi-cmd.tpl -DLEVEL=section sntp-opts.def
280	$(top_srcdir)/../scripts/build/check--help $@
281
282$(srcdir)/sntp.html: $(srcdir)/invoke-sntp.menu $(srcdir)/invoke-sntp.texi $(srcdir)/sntp.texi $(srcdir)/include/version.texi
283	cd $(srcdir) && ( makeinfo --force --html --no-split -o sntp.html sntp.texi || true )
284
285libtool: $(LIBTOOL_DEPS)
286	./config.status --recheck
287
288libevent-dist-hook:
289	if test -n "$(NTP_FORCE_LIBEVENT_DIST)" ; then rm -rf $(distdir)/libevent/autom4te.cache $(distdir)/libevent/config.h.in~ ; find $(distdir)/libevent -type d -name SCCS -print | xargs rm -rf ; fi
290
291dist-hook: libevent-dist-hook
292	@: do-nothing action to avoid default SCCS get
293
294include $(top_srcdir)/bincheck.mf
295include $(top_srcdir)/check-libntp.mf
296include $(top_srcdir)/check-libopts.mf
297include $(top_srcdir)/depsver.mf
298include $(top_srcdir)/includes.mf
299