xref: /freebsd/crypto/openssh/Makefile.in (revision ee3960cba1068e12fb032a68c46d74841d9edab3)
1SHELL=@SH@
2
3AUTORECONF=autoreconf
4
5prefix=@prefix@
6exec_prefix=@exec_prefix@
7bindir=@bindir@
8sbindir=@sbindir@
9libexecdir=@libexecdir@
10datadir=@datadir@
11datarootdir=@datarootdir@
12mandir=@mandir@
13mansubdir=@mansubdir@
14sysconfdir=@sysconfdir@
15piddir=@piddir@
16srcdir=@srcdir@
17top_srcdir=@top_srcdir@
18abs_top_srcdir=@abs_top_srcdir@
19abs_top_builddir=@abs_top_builddir@
20
21DESTDIR=
22VPATH=@srcdir@
23SSH_PROGRAM=@bindir@/ssh
24ASKPASS_PROGRAM=$(libexecdir)/ssh-askpass
25SFTP_SERVER=$(libexecdir)/sftp-server
26SSH_KEYSIGN=$(libexecdir)/ssh-keysign
27SSHD_SESSION=$(libexecdir)/sshd-session
28SSH_PKCS11_HELPER=$(libexecdir)/ssh-pkcs11-helper
29SSH_SK_HELPER=$(libexecdir)/ssh-sk-helper
30PRIVSEP_PATH=@PRIVSEP_PATH@
31SSH_PRIVSEP_USER=@SSH_PRIVSEP_USER@
32STRIP_OPT=@STRIP_OPT@
33TEST_SHELL=@TEST_SHELL@
34BUILDDIR=@abs_top_builddir@
35
36PATHS= -DSSHDIR=\"$(sysconfdir)\" \
37	-D_PATH_SSH_PROGRAM=\"$(SSH_PROGRAM)\" \
38	-D_PATH_SSH_ASKPASS_DEFAULT=\"$(ASKPASS_PROGRAM)\" \
39	-D_PATH_SFTP_SERVER=\"$(SFTP_SERVER)\" \
40	-D_PATH_SSH_KEY_SIGN=\"$(SSH_KEYSIGN)\" \
41	-D_PATH_SSHD_SESSION=\"$(SSHD_SESSION)\" \
42	-D_PATH_SSH_PKCS11_HELPER=\"$(SSH_PKCS11_HELPER)\" \
43	-D_PATH_SSH_SK_HELPER=\"$(SSH_SK_HELPER)\" \
44	-D_PATH_SSH_PIDDIR=\"$(piddir)\" \
45	-D_PATH_PRIVSEP_CHROOT_DIR=\"$(PRIVSEP_PATH)\"
46
47CC=@CC@
48LD=@LD@
49CFLAGS=@CFLAGS@
50CFLAGS_NOPIE=@CFLAGS_NOPIE@
51CPPFLAGS=-I. -I$(srcdir) @CPPFLAGS@ $(PATHS) @DEFS@
52PICFLAG=@PICFLAG@
53LIBS=@LIBS@
54CHANNELLIBS=@CHANNELLIBS@
55K5LIBS=@K5LIBS@
56GSSLIBS=@GSSLIBS@
57SSHDLIBS=@SSHDLIBS@
58LIBEDIT=@LIBEDIT@
59LIBFIDO2=@LIBFIDO2@
60AR=@AR@
61AWK=@AWK@
62RANLIB=@RANLIB@
63INSTALL=@INSTALL@
64SED=@SED@
65XAUTH_PATH=@XAUTH_PATH@
66LDFLAGS=-L. -Lopenbsd-compat/ @LDFLAGS@
67LDFLAGS_NOPIE=-L. -Lopenbsd-compat/ @LDFLAGS_NOPIE@
68EXEEXT=@EXEEXT@
69MANFMT=@MANFMT@
70MKDIR_P=@MKDIR_P@
71
72.SUFFIXES: .lo
73
74TARGETS=ssh$(EXEEXT) sshd$(EXEEXT) sshd-session$(EXEEXT) ssh-add$(EXEEXT) ssh-keygen$(EXEEXT) ssh-keyscan${EXEEXT} ssh-keysign${EXEEXT} ssh-pkcs11-helper$(EXEEXT) ssh-agent$(EXEEXT) scp$(EXEEXT) sftp-server$(EXEEXT) sftp$(EXEEXT) ssh-sk-helper$(EXEEXT)
75
76XMSS_OBJS=\
77	ssh-xmss.o \
78	sshkey-xmss.o \
79	xmss_commons.o \
80	xmss_fast.o \
81	xmss_hash.o \
82	xmss_hash_address.o \
83	xmss_wots.o
84
85LIBOPENSSH_OBJS=\
86	ssh_api.o \
87	ssherr.o \
88	sshbuf.o \
89	sshkey.o \
90	sshbuf-getput-basic.o \
91	sshbuf-misc.o \
92	sshbuf-getput-crypto.o \
93	krl.o \
94	bitmap.o \
95	${XMSS_OBJS}
96
97LIBSSH_OBJS=${LIBOPENSSH_OBJS} \
98	authfd.o authfile.o \
99	canohost.o channels.o cipher.o cipher-aes.o cipher-aesctr.o \
100	cleanup.o \
101	compat.o fatal.o hostfile.o \
102	log.o match.o moduli.o nchan.o packet.o \
103	readpass.o ttymodes.o xmalloc.o addr.o addrmatch.o \
104	atomicio.o dispatch.o mac.o misc.o utf8.o \
105	monitor_fdpass.o rijndael.o ssh-dss.o ssh-ecdsa.o ssh-ecdsa-sk.o \
106	ssh-ed25519-sk.o ssh-rsa.o dh.o \
107	msg.o progressmeter.o dns.o entropy.o gss-genr.o umac.o umac128.o \
108	ssh-pkcs11.o smult_curve25519_ref.o \
109	poly1305.o chacha.o cipher-chachapoly.o cipher-chachapoly-libcrypto.o \
110	ssh-ed25519.o digest-openssl.o digest-libc.o \
111	hmac.o ed25519.o hash.o \
112	kex.o kex-names.o kexdh.o kexgex.o kexecdh.o kexc25519.o \
113	kexgexc.o kexgexs.o \
114	kexsntrup761x25519.o kexmlkem768x25519.o sntrup761.o kexgen.o \
115	sftp-realpath.o platform-pledge.o platform-tracing.o platform-misc.o \
116	sshbuf-io.o
117
118SKOBJS=	ssh-sk-client.o
119
120SSHOBJS= ssh.o readconf.o clientloop.o sshtty.o \
121	sshconnect.o sshconnect2.o mux.o $(SKOBJS)
122
123SSHDOBJS=sshd.o \
124	platform-listen.o \
125	servconf.o sshpty.o srclimit.o groupaccess.o auth2-methods.o \
126	dns.o fatal.o compat.o utf8.o authfd.o canohost.o \
127	$(SKOBJS)
128
129SSHD_SESSION_OBJS=sshd-session.o auth-rhosts.o auth-passwd.o \
130	audit.o audit-bsm.o audit-linux.o platform.o \
131	sshpty.o sshlogin.o servconf.o serverloop.o \
132	auth.o auth2.o auth2-methods.o auth-options.o session.o \
133	auth2-chall.o groupaccess.o \
134	auth-bsdauth.o auth2-hostbased.o auth2-kbdint.o \
135	auth2-none.o auth2-passwd.o auth2-pubkey.o auth2-pubkeyfile.o \
136	monitor.o monitor_wrap.o auth-krb5.o \
137	auth2-gss.o gss-serv.o gss-serv-krb5.o \
138	loginrec.o auth-pam.o auth-shadow.o auth-sia.o \
139	sftp-server.o sftp-common.o \
140	sandbox-null.o sandbox-rlimit.o sandbox-systrace.o sandbox-darwin.o \
141	sandbox-seccomp-filter.o sandbox-capsicum.o sandbox-pledge.o \
142	sandbox-solaris.o uidswap.o $(SKOBJS)
143
144SFTP_CLIENT_OBJS=sftp-common.o sftp-client.o sftp-glob.o
145
146SCP_OBJS=	scp.o progressmeter.o $(SFTP_CLIENT_OBJS)
147
148SSHADD_OBJS=	ssh-add.o $(SKOBJS)
149
150SSHAGENT_OBJS=	ssh-agent.o ssh-pkcs11-client.o $(SKOBJS)
151
152SSHKEYGEN_OBJS=	ssh-keygen.o sshsig.o $(SKOBJS)
153
154SSHKEYSIGN_OBJS=ssh-keysign.o readconf.o uidswap.o $(SKOBJS)
155
156P11HELPER_OBJS=	ssh-pkcs11-helper.o ssh-pkcs11.o $(SKOBJS)
157
158SKHELPER_OBJS=	ssh-sk-helper.o ssh-sk.o sk-usbhid.o
159
160SSHKEYSCAN_OBJS=ssh-keyscan.o $(SKOBJS)
161
162SFTPSERVER_OBJS=sftp-common.o sftp-server.o sftp-server-main.o
163
164SFTP_OBJS=	sftp.o sftp-usergroup.o progressmeter.o $(SFTP_CLIENT_OBJS)
165
166MANPAGES	= moduli.5.out scp.1.out ssh-add.1.out ssh-agent.1.out ssh-keygen.1.out ssh-keyscan.1.out ssh.1.out sshd.8.out sftp-server.8.out sftp.1.out ssh-keysign.8.out ssh-pkcs11-helper.8.out ssh-sk-helper.8.out sshd_config.5.out ssh_config.5.out
167MANPAGES_IN	= moduli.5 scp.1 ssh-add.1 ssh-agent.1 ssh-keygen.1 ssh-keyscan.1 ssh.1 sshd.8 sftp-server.8 sftp.1 ssh-keysign.8 ssh-pkcs11-helper.8 ssh-sk-helper.8 sshd_config.5 ssh_config.5
168MANTYPE		= @MANTYPE@
169
170CONFIGFILES=sshd_config.out ssh_config.out moduli.out
171CONFIGFILES_IN=sshd_config ssh_config moduli
172
173PATHSUBS	= \
174	-e 's|/etc/ssh/ssh_config|$(sysconfdir)/ssh_config|g' \
175	-e 's|/etc/ssh/ssh_known_hosts|$(sysconfdir)/ssh_known_hosts|g' \
176	-e 's|/etc/ssh/sshd_config|$(sysconfdir)/sshd_config|g' \
177	-e 's|/usr/libexec|$(libexecdir)|g' \
178	-e 's|/etc/shosts.equiv|$(sysconfdir)/shosts.equiv|g' \
179	-e 's|/etc/ssh/ssh_host_key|$(sysconfdir)/ssh_host_key|g' \
180	-e 's|/etc/ssh/ssh_host_ecdsa_key|$(sysconfdir)/ssh_host_ecdsa_key|g' \
181	-e 's|/etc/ssh/ssh_host_dsa_key|$(sysconfdir)/ssh_host_dsa_key|g' \
182	-e 's|/etc/ssh/ssh_host_rsa_key|$(sysconfdir)/ssh_host_rsa_key|g' \
183	-e 's|/etc/ssh/ssh_host_ed25519_key|$(sysconfdir)/ssh_host_ed25519_key|g' \
184	-e 's|/var/run/sshd.pid|$(piddir)/sshd.pid|g' \
185	-e 's|/etc/moduli|$(sysconfdir)/moduli|g' \
186	-e 's|/etc/ssh/moduli|$(sysconfdir)/moduli|g' \
187	-e 's|/etc/ssh/sshrc|$(sysconfdir)/sshrc|g' \
188	-e 's|/usr/X11R6/bin/xauth|$(XAUTH_PATH)|g' \
189	-e 's|/var/empty|$(PRIVSEP_PATH)|g' \
190	-e 's|/usr/bin:/bin:/usr/sbin:/sbin|@user_path@|g'
191
192FIXPATHSCMD	= $(SED) $(PATHSUBS)
193FIXALGORITHMSCMD= $(SHELL) $(srcdir)/fixalgorithms $(SED) \
194		     @UNSUPPORTED_ALGORITHMS@
195
196all: $(CONFIGFILES) $(MANPAGES) $(TARGETS)
197
198$(LIBSSH_OBJS): Makefile.in config.h
199$(SSHOBJS): Makefile.in config.h
200$(SSHDOBJS): Makefile.in config.h
201
202.c.o:
203	$(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
204
205LIBCOMPAT=openbsd-compat/libopenbsd-compat.a
206$(LIBCOMPAT): always
207	(cd openbsd-compat && $(MAKE))
208always:
209
210libssh.a: $(LIBSSH_OBJS)
211	$(AR) rv $@ $(LIBSSH_OBJS)
212	$(RANLIB) $@
213
214ssh$(EXEEXT): $(LIBCOMPAT) libssh.a $(SSHOBJS)
215	$(LD) -o $@ $(SSHOBJS) $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS) $(GSSLIBS) $(CHANNELLIBS)
216
217sshd$(EXEEXT): libssh.a	$(LIBCOMPAT) $(SSHDOBJS)
218	$(LD) -o $@ $(SSHDOBJS) $(LDFLAGS) -lssh -lopenbsd-compat $(SSHDLIBS) $(LIBS) $(CHANNELLIBS)
219
220sshd-session$(EXEEXT): libssh.a	$(LIBCOMPAT) $(SSHD_SESSION_OBJS)
221	$(LD) -o $@ $(SSHD_SESSION_OBJS) $(LDFLAGS) -lssh -lopenbsd-compat $(SSHDLIBS) $(LIBS) $(GSSLIBS) $(K5LIBS) $(CHANNELLIBS)
222
223scp$(EXEEXT): $(LIBCOMPAT) libssh.a $(SCP_OBJS)
224	$(LD) -o $@ $(SCP_OBJS) $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS)
225
226ssh-add$(EXEEXT): $(LIBCOMPAT) libssh.a $(SSHADD_OBJS)
227	$(LD) -o $@ $(SSHADD_OBJS) $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS) $(CHANNELLIBS)
228
229ssh-agent$(EXEEXT): $(LIBCOMPAT) libssh.a $(SSHAGENT_OBJS)
230	$(LD) -o $@ $(SSHAGENT_OBJS) $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS) $(CHANNELLIBS)
231
232ssh-keygen$(EXEEXT): $(LIBCOMPAT) libssh.a $(SSHKEYGEN_OBJS)
233	$(LD) -o $@ $(SSHKEYGEN_OBJS) $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS) $(CHANNELLIBS)
234
235ssh-keysign$(EXEEXT): $(LIBCOMPAT) libssh.a $(SSHKEYSIGN_OBJS)
236	$(LD) -o $@ $(SSHKEYSIGN_OBJS) $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS) $(CHANNELLIBS)
237
238ssh-pkcs11-helper$(EXEEXT): $(LIBCOMPAT) libssh.a $(P11HELPER_OBJS)
239	$(LD) -o $@ $(P11HELPER_OBJS) $(LDFLAGS) -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(LIBS) $(CHANNELLIBS)
240
241ssh-sk-helper$(EXEEXT): $(LIBCOMPAT) libssh.a $(SKHELPER_OBJS)
242	$(LD) -o $@ $(SKHELPER_OBJS) $(LDFLAGS) -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(LIBS) $(LIBFIDO2) $(CHANNELLIBS)
243
244ssh-keyscan$(EXEEXT): $(LIBCOMPAT) libssh.a $(SSHKEYSCAN_OBJS)
245	$(LD) -o $@ $(SSHKEYSCAN_OBJS) $(LDFLAGS) -lssh -lopenbsd-compat -lssh $(LIBS) $(CHANNELLIBS)
246
247sftp-server$(EXEEXT): $(LIBCOMPAT) libssh.a $(SFTPSERVER_OBJS)
248	$(LD) -o $@ $(SFTPSERVER_OBJS) $(LDFLAGS) -lssh -lopenbsd-compat -lssh $(LIBS)
249
250sftp$(EXEEXT): $(LIBCOMPAT) libssh.a $(SFTP_OBJS)
251	$(LD) -o $@ $(SFTP_OBJS) $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS) $(LIBEDIT)
252
253# test driver for the loginrec code - not built by default
254logintest: logintest.o $(LIBCOMPAT) libssh.a loginrec.o
255	$(LD) -o $@ logintest.o $(LDFLAGS) loginrec.o -lopenbsd-compat -lssh $(LIBS)
256
257$(MANPAGES): $(MANPAGES_IN)
258	if test "$(MANTYPE)" = "cat"; then \
259		manpage=$(srcdir)/`echo $@ | sed 's/\.[1-9]\.out$$/\.0/'`; \
260	else \
261		manpage=$(srcdir)/`echo $@ | sed 's/\.out$$//'`; \
262	fi; \
263	if test "$(MANTYPE)" = "man"; then \
264		$(FIXPATHSCMD) $${manpage} | $(FIXALGORITHMSCMD) | \
265		    $(AWK) -f $(srcdir)/mdoc2man.awk > $@; \
266	else \
267		$(FIXPATHSCMD) $${manpage} | $(FIXALGORITHMSCMD) > $@; \
268	fi
269
270$(CONFIGFILES): $(CONFIGFILES_IN)
271	conffile=`echo $@ | sed 's/.out$$//'`; \
272	$(FIXPATHSCMD) $(srcdir)/$${conffile} > $@
273
274# fake rule to stop make trying to compile moduli.o into a binary "moduli.o"
275moduli:
276	echo
277
278clean:	regressclean
279	rm -f *.o *.lo *.a $(TARGETS) logintest config.cache config.log
280	rm -f *.out core survey
281	rm -f regress/check-perm$(EXEEXT)
282	rm -f regress/mkdtemp$(EXEEXT)
283	rm -f regress/unittests/test_helper/*.a
284	rm -f regress/unittests/test_helper/*.o
285	rm -f regress/unittests/authopt/*.o
286	rm -f regress/unittests/authopt/test_authopt$(EXEEXT)
287	rm -f regress/unittests/bitmap/*.o
288	rm -f regress/unittests/bitmap/test_bitmap$(EXEEXT)
289	rm -f regress/unittests/conversion/*.o
290	rm -f regress/unittests/conversion/test_conversion$(EXEEXT)
291	rm -f regress/unittests/hostkeys/*.o
292	rm -f regress/unittests/hostkeys/test_hostkeys$(EXEEXT)
293	rm -f regress/unittests/kex/*.o
294	rm -f regress/unittests/kex/test_kex$(EXEEXT)
295	rm -f regress/unittests/match/*.o
296	rm -f regress/unittests/match/test_match$(EXEEXT)
297	rm -f regress/unittests/misc/*.o
298	rm -f regress/unittests/misc/test_misc$(EXEEXT)
299	rm -f regress/unittests/sshbuf/*.o
300	rm -f regress/unittests/sshbuf/test_sshbuf$(EXEEXT)
301	rm -f regress/unittests/sshkey/*.o
302	rm -f regress/unittests/sshkey/test_sshkey$(EXEEXT)
303	rm -f regress/unittests/sshsig/*.o
304	rm -f regress/unittests/sshsig/test_sshsig$(EXEEXT)
305	rm -f regress/unittests/utf8/*.o
306	rm -f regress/unittests/utf8/test_utf8$(EXEEXT)
307	rm -f regress/misc/sk-dummy/*.o
308	rm -f regress/misc/sk-dummy/*.lo
309	rm -f regress/misc/sk-dummy/sk-dummy.so
310	(cd openbsd-compat && $(MAKE) clean)
311
312distclean:	regressclean
313	rm -f *.o *.a $(TARGETS) logintest config.cache config.log
314	rm -f *.out core opensshd.init openssh.xml
315	rm -f Makefile buildpkg.sh config.h config.status
316	rm -f survey.sh openbsd-compat/regress/Makefile *~
317	rm -rf autom4te.cache
318	rm -f regress/check-perm
319	rm -f regress/mkdtemp
320	rm -f regress/unittests/test_helper/*.a
321	rm -f regress/unittests/test_helper/*.o
322	rm -f regress/unittests/authopt/*.o
323	rm -f regress/unittests/authopt/test_authopt
324	rm -f regress/unittests/bitmap/*.o
325	rm -f regress/unittests/bitmap/test_bitmap
326	rm -f regress/unittests/conversion/*.o
327	rm -f regress/unittests/conversion/test_conversion
328	rm -f regress/unittests/hostkeys/*.o
329	rm -f regress/unittests/hostkeys/test_hostkeys
330	rm -f regress/unittests/kex/*.o
331	rm -f regress/unittests/kex/test_kex
332	rm -f regress/unittests/match/*.o
333	rm -f regress/unittests/match/test_match
334	rm -f regress/unittests/misc/*.o
335	rm -f regress/unittests/misc/test_misc
336	rm -f regress/unittests/sshbuf/*.o
337	rm -f regress/unittests/sshbuf/test_sshbuf
338	rm -f regress/unittests/sshkey/*.o
339	rm -f regress/unittests/sshkey/test_sshkey
340	rm -f regress/unittests/sshsig/*.o
341	rm -f regress/unittests/sshsig/test_sshsig
342	rm -f regress/unittests/utf8/*.o
343	rm -f regress/unittests/utf8/test_utf8
344	rm -f regress/misc/sk-dummy/*.o
345	rm -f regress/misc/sk-dummy/*.lo
346	rm -f regress/misc/sk-dummy/sk-dummy.so
347	(cd openbsd-compat && $(MAKE) distclean)
348	if test -d pkg ; then \
349		rm -fr pkg ; \
350	fi
351
352veryclean: distclean
353	rm -f configure config.h.in *.0
354
355cleandir: veryclean
356
357mrproper: veryclean
358
359realclean: veryclean
360
361catman-do:
362	@for f in $(MANPAGES_IN) ; do \
363		base=`echo $$f | sed 's/\..*$$//'` ; \
364		echo "$$f -> $$base.0" ; \
365		$(MANFMT) $$f | cat -v | sed -e 's/.\^H//g' \
366			>$$base.0 ; \
367	done
368
369depend: depend-rebuild
370	rm -f .depend.bak
371
372depend-rebuild:
373	mv .depend .depend.old
374	rm -f config.h .depend
375	touch config.h .depend
376	makedepend -w1000 -Y. -f .depend *.c 2>/dev/null
377	(echo '# Automatically generated by makedepend.'; \
378	 echo '# Run "make depend" to rebuild.'; sort .depend ) >.depend.tmp
379	mv .depend.tmp .depend
380	rm -f .depend.bak
381	mv .depend.old .depend.bak
382	rm -f config.h
383
384depend-check: depend-rebuild
385	cmp .depend .depend.bak || (echo .depend stale && exit 1)
386
387distprep: catman-do depend-check
388	$(AUTORECONF)
389	-rm -rf autom4te.cache .depend.bak
390
391install: $(CONFIGFILES) $(MANPAGES) $(TARGETS) install-files install-sysconf host-key check-config
392install-nokeys: $(CONFIGFILES) $(MANPAGES) $(TARGETS) install-files install-sysconf
393install-nosysconf: $(CONFIGFILES) $(MANPAGES) $(TARGETS) install-files
394
395check-config:
396	-$(DESTDIR)$(sbindir)/sshd -t -f $(DESTDIR)$(sysconfdir)/sshd_config
397
398install-files:
399	$(MKDIR_P) $(DESTDIR)$(bindir)
400	$(MKDIR_P) $(DESTDIR)$(sbindir)
401	$(MKDIR_P) $(DESTDIR)$(mandir)/$(mansubdir)1
402	$(MKDIR_P) $(DESTDIR)$(mandir)/$(mansubdir)5
403	$(MKDIR_P) $(DESTDIR)$(mandir)/$(mansubdir)8
404	$(MKDIR_P) $(DESTDIR)$(libexecdir)
405	$(MKDIR_P) -m 0755 $(DESTDIR)$(PRIVSEP_PATH)
406	$(INSTALL) -m 0755 $(STRIP_OPT) ssh$(EXEEXT) $(DESTDIR)$(bindir)/ssh$(EXEEXT)
407	$(INSTALL) -m 0755 $(STRIP_OPT) scp$(EXEEXT) $(DESTDIR)$(bindir)/scp$(EXEEXT)
408	$(INSTALL) -m 0755 $(STRIP_OPT) ssh-add$(EXEEXT) $(DESTDIR)$(bindir)/ssh-add$(EXEEXT)
409	$(INSTALL) -m 0755 $(STRIP_OPT) ssh-agent$(EXEEXT) $(DESTDIR)$(bindir)/ssh-agent$(EXEEXT)
410	$(INSTALL) -m 0755 $(STRIP_OPT) ssh-keygen$(EXEEXT) $(DESTDIR)$(bindir)/ssh-keygen$(EXEEXT)
411	$(INSTALL) -m 0755 $(STRIP_OPT) ssh-keyscan$(EXEEXT) $(DESTDIR)$(bindir)/ssh-keyscan$(EXEEXT)
412	$(INSTALL) -m 0755 $(STRIP_OPT) sshd$(EXEEXT) $(DESTDIR)$(sbindir)/sshd$(EXEEXT)
413	$(INSTALL) -m 0755 $(STRIP_OPT) sshd-session$(EXEEXT) $(DESTDIR)$(SSHD_SESSION)$(EXEEXT)
414	$(INSTALL) -m 4711 $(STRIP_OPT) ssh-keysign$(EXEEXT) $(DESTDIR)$(SSH_KEYSIGN)$(EXEEXT)
415	$(INSTALL) -m 0755 $(STRIP_OPT) ssh-pkcs11-helper$(EXEEXT) $(DESTDIR)$(SSH_PKCS11_HELPER)$(EXEEXT)
416	$(INSTALL) -m 0755 $(STRIP_OPT) ssh-sk-helper$(EXEEXT) $(DESTDIR)$(SSH_SK_HELPER)$(EXEEXT)
417	$(INSTALL) -m 0755 $(STRIP_OPT) sftp$(EXEEXT) $(DESTDIR)$(bindir)/sftp$(EXEEXT)
418	$(INSTALL) -m 0755 $(STRIP_OPT) sftp-server$(EXEEXT) $(DESTDIR)$(SFTP_SERVER)$(EXEEXT)
419	$(INSTALL) -m 644 ssh.1.out $(DESTDIR)$(mandir)/$(mansubdir)1/ssh.1
420	$(INSTALL) -m 644 scp.1.out $(DESTDIR)$(mandir)/$(mansubdir)1/scp.1
421	$(INSTALL) -m 644 ssh-add.1.out $(DESTDIR)$(mandir)/$(mansubdir)1/ssh-add.1
422	$(INSTALL) -m 644 ssh-agent.1.out $(DESTDIR)$(mandir)/$(mansubdir)1/ssh-agent.1
423	$(INSTALL) -m 644 ssh-keygen.1.out $(DESTDIR)$(mandir)/$(mansubdir)1/ssh-keygen.1
424	$(INSTALL) -m 644 ssh-keyscan.1.out $(DESTDIR)$(mandir)/$(mansubdir)1/ssh-keyscan.1
425	$(INSTALL) -m 644 moduli.5.out $(DESTDIR)$(mandir)/$(mansubdir)5/moduli.5
426	$(INSTALL) -m 644 sshd_config.5.out $(DESTDIR)$(mandir)/$(mansubdir)5/sshd_config.5
427	$(INSTALL) -m 644 ssh_config.5.out $(DESTDIR)$(mandir)/$(mansubdir)5/ssh_config.5
428	$(INSTALL) -m 644 sshd.8.out $(DESTDIR)$(mandir)/$(mansubdir)8/sshd.8
429	$(INSTALL) -m 644 sftp.1.out $(DESTDIR)$(mandir)/$(mansubdir)1/sftp.1
430	$(INSTALL) -m 644 sftp-server.8.out $(DESTDIR)$(mandir)/$(mansubdir)8/sftp-server.8
431	$(INSTALL) -m 644 ssh-keysign.8.out $(DESTDIR)$(mandir)/$(mansubdir)8/ssh-keysign.8
432	$(INSTALL) -m 644 ssh-pkcs11-helper.8.out $(DESTDIR)$(mandir)/$(mansubdir)8/ssh-pkcs11-helper.8
433	$(INSTALL) -m 644 ssh-sk-helper.8.out $(DESTDIR)$(mandir)/$(mansubdir)8/ssh-sk-helper.8
434
435install-sysconf:
436	$(MKDIR_P) $(DESTDIR)$(sysconfdir)
437	@if [ ! -f $(DESTDIR)$(sysconfdir)/ssh_config ]; then \
438		$(INSTALL) -m 644 ssh_config.out $(DESTDIR)$(sysconfdir)/ssh_config; \
439	else \
440		echo "$(DESTDIR)$(sysconfdir)/ssh_config already exists, install will not overwrite"; \
441	fi
442	@if [ ! -f $(DESTDIR)$(sysconfdir)/sshd_config ]; then \
443		$(INSTALL) -m 644 sshd_config.out $(DESTDIR)$(sysconfdir)/sshd_config; \
444	else \
445		echo "$(DESTDIR)$(sysconfdir)/sshd_config already exists, install will not overwrite"; \
446	fi
447	@if [ ! -f $(DESTDIR)$(sysconfdir)/moduli ]; then \
448		if [ -f $(DESTDIR)$(sysconfdir)/primes ]; then \
449			echo "moving $(DESTDIR)$(sysconfdir)/primes to $(DESTDIR)$(sysconfdir)/moduli"; \
450			mv "$(DESTDIR)$(sysconfdir)/primes" "$(DESTDIR)$(sysconfdir)/moduli"; \
451		else \
452			$(INSTALL) -m 644 moduli.out $(DESTDIR)$(sysconfdir)/moduli; \
453		fi ; \
454	else \
455		echo "$(DESTDIR)$(sysconfdir)/moduli already exists, install will not overwrite"; \
456	fi
457
458host-key: ssh-keygen$(EXEEXT)
459	@if [ -z "$(DESTDIR)" ] ; then \
460		./ssh-keygen -A; \
461	fi
462
463host-key-force: ssh-keygen$(EXEEXT) ssh$(EXEEXT)
464	./ssh-keygen -t dsa -f $(DESTDIR)$(sysconfdir)/ssh_host_dsa_key -N ""
465	./ssh-keygen -t rsa -f $(DESTDIR)$(sysconfdir)/ssh_host_rsa_key -N ""
466	./ssh-keygen -t ed25519 -f $(DESTDIR)$(sysconfdir)/ssh_host_ed25519_key -N ""
467	if ./ssh -Q key | grep ecdsa >/dev/null ; then \
468		./ssh-keygen -t ecdsa -f $(DESTDIR)$(sysconfdir)/ssh_host_ecdsa_key -N ""; \
469	fi
470
471uninstallall:	uninstall
472	-rm -f $(DESTDIR)$(sysconfdir)/ssh_config
473	-rm -f $(DESTDIR)$(sysconfdir)/sshd_config
474	-rmdir $(DESTDIR)$(sysconfdir)
475	-rmdir $(DESTDIR)$(bindir)
476	-rmdir $(DESTDIR)$(sbindir)
477	-rmdir $(DESTDIR)$(mandir)/$(mansubdir)1
478	-rmdir $(DESTDIR)$(mandir)/$(mansubdir)8
479	-rmdir $(DESTDIR)$(mandir)
480	-rmdir $(DESTDIR)$(libexecdir)
481
482uninstall:
483	-rm -f $(DESTDIR)$(bindir)/ssh$(EXEEXT)
484	-rm -f $(DESTDIR)$(bindir)/scp$(EXEEXT)
485	-rm -f $(DESTDIR)$(bindir)/ssh-add$(EXEEXT)
486	-rm -f $(DESTDIR)$(bindir)/ssh-agent$(EXEEXT)
487	-rm -f $(DESTDIR)$(bindir)/ssh-keygen$(EXEEXT)
488	-rm -f $(DESTDIR)$(bindir)/ssh-keyscan$(EXEEXT)
489	-rm -f $(DESTDIR)$(bindir)/sftp$(EXEEXT)
490	-rm -f $(DESTDIR)$(sbindir)/sshd$(EXEEXT)
491	-rm -r $(DESTDIR)$(SFTP_SERVER)$(EXEEXT)
492	-rm -f $(DESTDIR)$(SSH_KEYSIGN)$(EXEEXT)
493	-rm -f $(DESTDIR)$(SSH_PKCS11_HELPER)$(EXEEXT)
494	-rm -f $(DESTDIR)$(SSH_SK_HELPER)$(EXEEXT)
495	-rm -f $(DESTDIR)$(mandir)/$(mansubdir)1/ssh.1
496	-rm -f $(DESTDIR)$(mandir)/$(mansubdir)1/scp.1
497	-rm -f $(DESTDIR)$(mandir)/$(mansubdir)1/ssh-add.1
498	-rm -f $(DESTDIR)$(mandir)/$(mansubdir)1/ssh-agent.1
499	-rm -f $(DESTDIR)$(mandir)/$(mansubdir)1/ssh-keygen.1
500	-rm -f $(DESTDIR)$(mandir)/$(mansubdir)1/sftp.1
501	-rm -f $(DESTDIR)$(mandir)/$(mansubdir)1/ssh-keyscan.1
502	-rm -f $(DESTDIR)$(mandir)/$(mansubdir)8/sshd.8
503	-rm -f $(DESTDIR)$(mandir)/$(mansubdir)8/sftp-server.8
504	-rm -f $(DESTDIR)$(mandir)/$(mansubdir)8/ssh-keysign.8
505	-rm -f $(DESTDIR)$(mandir)/$(mansubdir)8/ssh-pkcs11-helper.8
506	-rm -f $(DESTDIR)$(mandir)/$(mansubdir)8/ssh-sk-helper.8
507
508regress-prep:
509	$(MKDIR_P) `pwd`/regress/unittests/test_helper
510	$(MKDIR_P) `pwd`/regress/unittests/authopt
511	$(MKDIR_P) `pwd`/regress/unittests/bitmap
512	$(MKDIR_P) `pwd`/regress/unittests/conversion
513	$(MKDIR_P) `pwd`/regress/unittests/hostkeys
514	$(MKDIR_P) `pwd`/regress/unittests/kex
515	$(MKDIR_P) `pwd`/regress/unittests/match
516	$(MKDIR_P) `pwd`/regress/unittests/misc
517	$(MKDIR_P) `pwd`/regress/unittests/sshbuf
518	$(MKDIR_P) `pwd`/regress/unittests/sshkey
519	$(MKDIR_P) `pwd`/regress/unittests/sshsig
520	$(MKDIR_P) `pwd`/regress/unittests/utf8
521	$(MKDIR_P) `pwd`/regress/misc/sk-dummy
522	[ -f `pwd`/regress/Makefile ] || \
523	    ln -s `cd $(srcdir) && pwd`/regress/Makefile `pwd`/regress/Makefile
524
525REGRESSLIBS=libssh.a $(LIBCOMPAT)
526TESTLIBS=$(LIBS) $(CHANNELLIBS)
527
528regress/modpipe$(EXEEXT): $(srcdir)/regress/modpipe.c $(REGRESSLIBS)
529	$(CC) $(CFLAGS) $(CPPFLAGS) -o $@ $(srcdir)/regress/modpipe.c \
530	$(LDFLAGS) -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(TESTLIBS)
531
532regress/timestamp$(EXEEXT): $(srcdir)/regress/timestamp.c $(REGRESSLIBS)
533	$(CC) $(CFLAGS) $(CPPFLAGS) -o $@ $(srcdir)/regress/timestamp.c \
534	$(LDFLAGS) -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(TESTLIBS)
535
536regress/setuid-allowed$(EXEEXT): $(srcdir)/regress/setuid-allowed.c $(REGRESSLIBS)
537	$(CC) $(CFLAGS) $(CPPFLAGS) -o $@ $(srcdir)/regress/setuid-allowed.c \
538	$(LDFLAGS) -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(TESTLIBS)
539
540regress/netcat$(EXEEXT): $(srcdir)/regress/netcat.c $(REGRESSLIBS)
541	$(CC) $(CFLAGS) $(CPPFLAGS) -o $@ $(srcdir)/regress/netcat.c \
542	$(LDFLAGS) -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(TESTLIBS)
543
544regress/check-perm$(EXEEXT): $(srcdir)/regress/check-perm.c $(REGRESSLIBS)
545	$(CC) $(CFLAGS) $(CPPFLAGS) -o $@ $(srcdir)/regress/check-perm.c \
546	$(LDFLAGS) -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(TESTLIBS)
547
548regress/mkdtemp$(EXEEXT): $(srcdir)/regress/mkdtemp.c $(REGRESSLIBS)
549	$(CC) $(CFLAGS) $(CPPFLAGS) -o $@ $(srcdir)/regress/mkdtemp.c \
550	$(LDFLAGS) -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(TESTLIBS)
551
552UNITTESTS_TEST_HELPER_OBJS=\
553	regress/unittests/test_helper/test_helper.o \
554	regress/unittests/test_helper/fuzz.o
555
556regress/unittests/test_helper/libtest_helper.a: ${UNITTESTS_TEST_HELPER_OBJS}
557	$(AR) rv $@ $(UNITTESTS_TEST_HELPER_OBJS)
558	$(RANLIB) $@
559
560UNITTESTS_TEST_SSHBUF_OBJS=\
561	regress/unittests/sshbuf/tests.o \
562	regress/unittests/sshbuf/test_sshbuf.o \
563	regress/unittests/sshbuf/test_sshbuf_getput_basic.o \
564	regress/unittests/sshbuf/test_sshbuf_getput_crypto.o \
565	regress/unittests/sshbuf/test_sshbuf_misc.o \
566	regress/unittests/sshbuf/test_sshbuf_fuzz.o \
567	regress/unittests/sshbuf/test_sshbuf_getput_fuzz.o \
568	regress/unittests/sshbuf/test_sshbuf_fixed.o
569
570regress/unittests/sshbuf/test_sshbuf$(EXEEXT): ${UNITTESTS_TEST_SSHBUF_OBJS} \
571    regress/unittests/test_helper/libtest_helper.a libssh.a
572	$(LD) -o $@ $(LDFLAGS) $(UNITTESTS_TEST_SSHBUF_OBJS) \
573	    regress/unittests/test_helper/libtest_helper.a \
574	    -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(TESTLIBS)
575
576UNITTESTS_TEST_SSHKEY_OBJS=\
577	regress/unittests/sshkey/test_fuzz.o \
578	regress/unittests/sshkey/tests.o \
579	regress/unittests/sshkey/common.o \
580	regress/unittests/sshkey/test_file.o \
581	regress/unittests/sshkey/test_sshkey.o \
582	$(SKOBJS)
583
584regress/unittests/sshkey/test_sshkey$(EXEEXT): ${UNITTESTS_TEST_SSHKEY_OBJS} \
585    regress/unittests/test_helper/libtest_helper.a libssh.a
586	$(LD) -o $@ $(LDFLAGS) $(UNITTESTS_TEST_SSHKEY_OBJS) \
587	    regress/unittests/test_helper/libtest_helper.a \
588	    -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(TESTLIBS)
589
590UNITTESTS_TEST_SSHSIG_OBJS=\
591	sshsig.o \
592	regress/unittests/sshsig/tests.o \
593	$(SKOBJS)
594
595regress/unittests/sshsig/test_sshsig$(EXEEXT): ${UNITTESTS_TEST_SSHSIG_OBJS} \
596    regress/unittests/test_helper/libtest_helper.a libssh.a
597	$(LD) -o $@ $(LDFLAGS) $(UNITTESTS_TEST_SSHSIG_OBJS) \
598	    regress/unittests/test_helper/libtest_helper.a \
599	    -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(TESTLIBS)
600
601UNITTESTS_TEST_BITMAP_OBJS=\
602	regress/unittests/bitmap/tests.o
603
604regress/unittests/bitmap/test_bitmap$(EXEEXT): ${UNITTESTS_TEST_BITMAP_OBJS} \
605    regress/unittests/test_helper/libtest_helper.a libssh.a
606	$(LD) -o $@ $(LDFLAGS) $(UNITTESTS_TEST_BITMAP_OBJS) \
607	    regress/unittests/test_helper/libtest_helper.a \
608	    -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(TESTLIBS)
609
610UNITTESTS_TEST_AUTHOPT_OBJS=\
611	regress/unittests/authopt/tests.o \
612	auth-options.o \
613	$(SKOBJS)
614
615regress/unittests/authopt/test_authopt$(EXEEXT): \
616    ${UNITTESTS_TEST_AUTHOPT_OBJS} \
617    regress/unittests/test_helper/libtest_helper.a libssh.a
618	$(LD) -o $@ $(LDFLAGS) $(UNITTESTS_TEST_AUTHOPT_OBJS) \
619	    regress/unittests/test_helper/libtest_helper.a \
620	    -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(TESTLIBS)
621
622UNITTESTS_TEST_CONVERSION_OBJS=\
623	regress/unittests/conversion/tests.o
624
625regress/unittests/conversion/test_conversion$(EXEEXT): \
626    ${UNITTESTS_TEST_CONVERSION_OBJS} \
627    regress/unittests/test_helper/libtest_helper.a libssh.a
628	$(LD) -o $@ $(LDFLAGS) $(UNITTESTS_TEST_CONVERSION_OBJS) \
629	    regress/unittests/test_helper/libtest_helper.a \
630	    -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(TESTLIBS)
631
632UNITTESTS_TEST_KEX_OBJS=\
633	regress/unittests/kex/tests.o \
634	regress/unittests/kex/test_kex.o \
635	regress/unittests/kex/test_proposal.o \
636	$(SKOBJS)
637
638regress/unittests/kex/test_kex$(EXEEXT): ${UNITTESTS_TEST_KEX_OBJS} \
639    regress/unittests/test_helper/libtest_helper.a libssh.a
640	$(LD) -o $@ $(LDFLAGS) $(UNITTESTS_TEST_KEX_OBJS) \
641	    regress/unittests/test_helper/libtest_helper.a \
642	    -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(TESTLIBS)
643
644UNITTESTS_TEST_HOSTKEYS_OBJS=\
645	regress/unittests/hostkeys/tests.o \
646	regress/unittests/hostkeys/test_iterate.o \
647	$(SKOBJS)
648
649regress/unittests/hostkeys/test_hostkeys$(EXEEXT): \
650    ${UNITTESTS_TEST_HOSTKEYS_OBJS} \
651    regress/unittests/test_helper/libtest_helper.a libssh.a
652	$(LD) -o $@ $(LDFLAGS) $(UNITTESTS_TEST_HOSTKEYS_OBJS) \
653	    regress/unittests/test_helper/libtest_helper.a \
654	    -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(TESTLIBS)
655
656UNITTESTS_TEST_MATCH_OBJS=\
657	regress/unittests/match/tests.o
658
659regress/unittests/match/test_match$(EXEEXT): \
660    ${UNITTESTS_TEST_MATCH_OBJS} \
661    regress/unittests/test_helper/libtest_helper.a libssh.a
662	$(LD) -o $@ $(LDFLAGS) $(UNITTESTS_TEST_MATCH_OBJS) \
663	    regress/unittests/test_helper/libtest_helper.a \
664	    -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(TESTLIBS)
665
666UNITTESTS_TEST_MISC_OBJS=\
667	regress/unittests/misc/tests.o \
668	regress/unittests/misc/test_parse.o \
669	regress/unittests/misc/test_expand.o \
670	regress/unittests/misc/test_convtime.o \
671	regress/unittests/misc/test_argv.o \
672	regress/unittests/misc/test_strdelim.o \
673	regress/unittests/misc/test_hpdelim.o \
674	regress/unittests/misc/test_ptimeout.o
675
676regress/unittests/misc/test_misc$(EXEEXT): \
677    ${UNITTESTS_TEST_MISC_OBJS} \
678    regress/unittests/test_helper/libtest_helper.a libssh.a
679	$(LD) -o $@ $(LDFLAGS) $(UNITTESTS_TEST_MISC_OBJS) \
680	    regress/unittests/test_helper/libtest_helper.a \
681	    -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(TESTLIBS)
682
683UNITTESTS_TEST_UTF8_OBJS=\
684	regress/unittests/utf8/tests.o
685
686regress/unittests/utf8/test_utf8$(EXEEXT): \
687    ${UNITTESTS_TEST_UTF8_OBJS} \
688    regress/unittests/test_helper/libtest_helper.a libssh.a
689	$(LD) -o $@ $(LDFLAGS) $(UNITTESTS_TEST_UTF8_OBJS) \
690	    regress/unittests/test_helper/libtest_helper.a \
691	    -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(TESTLIBS)
692
693# These all need to be compiled -fPIC, so they are treated differently.
694SK_DUMMY_OBJS=\
695	regress/misc/sk-dummy/sk-dummy.lo \
696	regress/misc/sk-dummy/fatal.lo \
697	ed25519.lo hash.lo
698
699SK_DUMMY_LIBRARY=@SK_DUMMY_LIBRARY@
700
701.c.lo: Makefile.in config.h
702	$(CC) $(CFLAGS_NOPIE) $(PICFLAG) $(CPPFLAGS) -c $< -o $@
703
704regress/misc/sk-dummy/sk-dummy.so: $(SK_DUMMY_OBJS)
705	$(CC) $(CFLAGS) $(CPPFLAGS) $(PICFLAG) -shared -o $@ $(SK_DUMMY_OBJS) \
706	    -L. -Lopenbsd-compat -lopenbsd-compat $(LDFLAGS_NOPIE) $(TESTLIBS)
707
708regress-binaries: regress-prep $(LIBCOMPAT) \
709	regress/modpipe$(EXEEXT) \
710	regress/timestamp$(EXEEXT) \
711	regress/setuid-allowed$(EXEEXT) \
712	regress/netcat$(EXEEXT) \
713	regress/check-perm$(EXEEXT) \
714	regress/mkdtemp$(EXEEXT) \
715	$(SK_DUMMY_LIBRARY)
716
717regress-unit-binaries: regress-prep $(REGRESSLIBS) \
718	regress/unittests/authopt/test_authopt$(EXEEXT) \
719	regress/unittests/bitmap/test_bitmap$(EXEEXT) \
720	regress/unittests/conversion/test_conversion$(EXEEXT) \
721	regress/unittests/hostkeys/test_hostkeys$(EXEEXT) \
722	regress/unittests/kex/test_kex$(EXEEXT) \
723	regress/unittests/match/test_match$(EXEEXT) \
724	regress/unittests/misc/test_misc$(EXEEXT) \
725	regress/unittests/sshbuf/test_sshbuf$(EXEEXT) \
726	regress/unittests/sshkey/test_sshkey$(EXEEXT) \
727	regress/unittests/sshsig/test_sshsig$(EXEEXT) \
728	regress/unittests/utf8/test_utf8$(EXEEXT)
729
730tests:	file-tests t-exec interop-tests extra-tests unit
731	echo all tests passed
732
733unit: regress-unit-binaries
734	cd $(srcdir)/regress || exit $$?; \
735	$(MAKE) \
736		.CURDIR="$(abs_top_srcdir)/regress" \
737		.OBJDIR="$(BUILDDIR)/regress" \
738		OBJ="$(BUILDDIR)/regress" \
739		$@ && echo $@ tests passed
740
741interop-tests t-exec file-tests extra-tests: regress-prep regress-binaries $(TARGETS)
742	cd $(srcdir)/regress || exit $$?; \
743	EGREP='@EGREP@' \
744	OPENSSL_BIN='@OPENSSL_BIN@' \
745	$(MAKE) \
746		.CURDIR="$(abs_top_srcdir)/regress" \
747		.OBJDIR="$(BUILDDIR)/regress" \
748		BUILDDIR="$(BUILDDIR)" \
749		OBJ="$(BUILDDIR)/regress" \
750		PATH="$(BUILDDIR):$${PATH}" \
751		TEST_ENV=MALLOC_OPTIONS="@TEST_MALLOC_OPTIONS@" \
752		TEST_MALLOC_OPTIONS="@TEST_MALLOC_OPTIONS@" \
753		TEST_SSH_SCP="$(BUILDDIR)/scp" \
754		TEST_SSH_SSH="$(BUILDDIR)/ssh" \
755		TEST_SSH_SSHD="$(BUILDDIR)/sshd" \
756		TEST_SSH_SSHD_SESSION="$(BUILDDIR)/sshd-session" \
757		TEST_SSH_SSHAGENT="$(BUILDDIR)/ssh-agent" \
758		TEST_SSH_SSHADD="$(BUILDDIR)/ssh-add" \
759		TEST_SSH_SSHKEYGEN="$(BUILDDIR)/ssh-keygen" \
760		TEST_SSH_SSHPKCS11HELPER="$(BUILDDIR)/ssh-pkcs11-helper" \
761		TEST_SSH_SSHKEYSCAN="$(BUILDDIR)/ssh-keyscan" \
762		TEST_SSH_SFTP="$(BUILDDIR)/sftp" \
763		TEST_SSH_PKCS11_HELPER="$(BUILDDIR)/ssh-pkcs11-helper" \
764		TEST_SSH_SK_HELPER="$(BUILDDIR)/ssh-sk-helper" \
765		TEST_SSH_SFTPSERVER="$(BUILDDIR)/sftp-server" \
766		TEST_SSH_MODULI_FILE="$(abs_top_srcdir)/moduli" \
767		TEST_SSH_PLINK="@PLINK@" \
768		TEST_SSH_PUTTYGEN="@PUTTYGEN@" \
769		TEST_SSH_CONCH="@CONCH@" \
770		TEST_SSH_DROPBEAR="@DROPBEAR@" \
771		TEST_SSH_DROPBEARKEY="@DROPBEARKEY@" \
772		TEST_SSH_DROPBEARCONVERT="@DROPBEARCONVERT@" \
773		TEST_SSH_DBCLIENT="@DBCLIENT@" \
774		TEST_SSH_IPV6="@TEST_SSH_IPV6@" \
775		TEST_SSH_UTF8="@TEST_SSH_UTF8@" \
776		TEST_SHELL="$(TEST_SHELL)" \
777		EXEEXT="$(EXEEXT)" \
778		$@ && echo all $@ passed
779
780compat-tests: $(LIBCOMPAT)
781	(cd openbsd-compat/regress && $(MAKE))
782
783regressclean:
784	if [ -f regress/Makefile ] && [ -r regress/Makefile ]; then \
785		(cd regress && $(MAKE) clean) \
786	fi
787
788survey: survey.sh ssh
789	@$(SHELL) ./survey.sh > survey
790	@echo 'The survey results have been placed in the file "survey" in the'
791	@echo 'current directory.  Please review the file then send with'
792	@echo '"make send-survey".'
793
794send-survey:	survey
795	mail portable-survey@mindrot.org <survey
796
797package: $(CONFIGFILES) $(MANPAGES) $(TARGETS)
798	if [ "@MAKE_PACKAGE_SUPPORTED@" = yes ]; then \
799		sh buildpkg.sh; \
800	fi
801
802# @DEPEND@
803