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