mirror of
https://github.com/clearml/dropbear
synced 2025-03-09 13:30:45 +00:00
Switching to the magical new Makefile, and new dbmulti style
--HG-- extra : convert_revision : 3f8efcdd56aab197d30a1ea81527c37dfee2f928
This commit is contained in:
parent
58baa046d2
commit
8b6ddcb066
69
Makefile.in
69
Makefile.in
@ -10,18 +10,17 @@
|
||||
# This makefile is quite evil.
|
||||
|
||||
ifndef PROGRAMS
|
||||
PROGRAMS="dropbear dbclient dropbearkey dropbearmulti"
|
||||
PROGRAMS=dropbear dbclient dropbearkey dropbearmulti
|
||||
endif
|
||||
|
||||
LTC=libtomcrypt/libtomcrypt.a
|
||||
LTM=libtommath/libtommath.a
|
||||
|
||||
COMMONOBJS=dbutil.o common-session.o packet.o common-algo.o buffer.o \
|
||||
common-kex.o dss.o bignum.o \
|
||||
signkey.o rsa.o random.o common-channel.o \
|
||||
common-chansession.o queue.o termcodes.o \
|
||||
loginrec.o atomicio.o tcpfwd-direct.o compat.o \
|
||||
tcpfwd-remote.o listener.o process-packet.o common-runopts.o
|
||||
COMMONOBJS=dbutil.o buffer.o \
|
||||
dss.o bignum.o \
|
||||
signkey.o rsa.o random.o \
|
||||
queue.o \
|
||||
atomicio.o compat.o
|
||||
|
||||
SVROBJS=svr-kex.o svr-algo.o svr-auth.o sshpty.o \
|
||||
svr-authpasswd.o svr-authpubkey.o svr-session.o svr-service.o \
|
||||
@ -30,9 +29,12 @@ SVROBJS=svr-kex.o svr-algo.o svr-auth.o sshpty.o \
|
||||
CLIOBJS=cli-algo.o cli-main.o cli-auth.o cli-authpasswd.o cli-kex.o \
|
||||
cli-session.o cli-service.o
|
||||
|
||||
DROPBEAROBJS=
|
||||
CLISVROBJS=common-session.o packet.o common-algo.o common-kex.o \
|
||||
common-channel.o common-chansession.o termcodes.o loginrec.o \
|
||||
tcpfwd-direct.o tcpfwd-remote.o listener.o process-packet.o \
|
||||
common-runopts.o
|
||||
|
||||
DROPBEARKEYOBJS=dropbearkey.o gendss.o genrsa.o
|
||||
KEYOBJS=dropbearkey.o gendss.o genrsa.o
|
||||
|
||||
CONVERTOBJS=dropbearconvert.o keyimport.o
|
||||
|
||||
@ -45,8 +47,8 @@ HEADERS=options.h dbutil.h session.h packet.h algo.h ssh.h buffer.h kex.h \
|
||||
loginrec.h atomicio.h x11fwd.h agentfwd.h tcpfwd-direct.h compat.h \
|
||||
tcpfwd-remote.h listener.h
|
||||
|
||||
dropbearobjs=$(COMMONOBJS) $(SVROBJS)
|
||||
dbclientobjs=$(COMMONOBJS) $(CLIOBJS)
|
||||
dropbearobjs=$(COMMONOBJS) $(CLISVROBJS) $(SVROBJS)
|
||||
dbclientobjs=$(COMMONOBJS) $(CLISVROBJS) $(CLIOBJS)
|
||||
dropbearkeyobjs=$(COMMONOBJS) $(KEYOBJS)
|
||||
dropbearconvertobjs=$(COMMONOBJS) $(CONVERTOBJS)
|
||||
scpobjs=$(SCPOBJS)
|
||||
@ -57,7 +59,7 @@ bindir=${exec_prefix}/bin
|
||||
sbindir=${exec_prefix}/sbin
|
||||
|
||||
CC=@CC@
|
||||
LD=@CC@
|
||||
LD=@LD@
|
||||
AR=@AR@
|
||||
RANLIB=@RANLIB@
|
||||
STRIP=@STRIP@
|
||||
@ -69,17 +71,15 @@ LDFLAGS=@LDFLAGS@
|
||||
EXEEXT=@EXEEXT@
|
||||
|
||||
# whether we're building client, server, or both for the common objects.
|
||||
space:= $(empty) $(empty)
|
||||
CLISVRFLAGS=
|
||||
# evilness so we detect 'dropbear' by itself as a word
|
||||
ifneq (,$(findstring $(space)dropbear$(space), $(space)$(PROGRAMS)$(space)))
|
||||
CLISVRFLAGS+= -DDROPBEAR_SERVER
|
||||
space:= $(empty) $(empty)
|
||||
ifneq (,$(strip $(foreach prog, $(PROGRAMS), $(findstring ZdropbearZ, Z$(prog)Z))))
|
||||
CFLAGS+= -DDROPBEAR_SERVER
|
||||
endif
|
||||
ifneq (,$(findstring $(space)dbclient$(space), $(space)$(PROGRAMS)$(space)))
|
||||
CLISVRFLAGS+= -DDROPBEAR_CLIENT
|
||||
ifneq (,$(strip $(foreach prog, $(PROGRAMS), $(findstring ZdbclientZ, Z$(prog)Z))))
|
||||
CFLAGS+= -DDROPBEAR_CLIENT
|
||||
endif
|
||||
|
||||
CFLAGS+=$(CLISVRFLAGS)
|
||||
|
||||
# these are exported so that libtomcrypt's makefile will use them
|
||||
export CC
|
||||
@ -108,12 +108,15 @@ endif
|
||||
#%: $(HEADERS) Makefile
|
||||
# TODO
|
||||
|
||||
all: $(TARGETS)
|
||||
|
||||
test:
|
||||
@echo Z$(sort $(foreach prog, $(PROGRAMS), $($(prog)objs)))Z
|
||||
|
||||
strip: $(TARGETS)
|
||||
$(STRIP) $(foreach prog, $(TARGETS), $(SPREFIX)$(prog)$(EXEEXT))
|
||||
$(STRIP) $(addsuffix $(EXEEXT), $(addprefix $(SPREFIX), $(TARGETS)))
|
||||
|
||||
|
||||
install: $(foreach prog, $(TARGETS), install$prog)
|
||||
install: $(addprefix install, $(TARGETS))
|
||||
|
||||
# dropbear should go in sbin, so it needs a seperate rule
|
||||
installdropbear: dropbear
|
||||
@ -128,33 +131,39 @@ install%: $*
|
||||
-chown root $(DESTDIR)$(sbindir)/$(SPREFIX)$*$(EXEEXT)
|
||||
-chgrp 0 $(DESTDIR)$(sbindir)/$(SPREFIX)$*$(EXEEXT)
|
||||
ifeq ($(MULTI), 1)
|
||||
@echo
|
||||
@echo "You must manually create links for $*"
|
||||
endif
|
||||
|
||||
|
||||
|
||||
# The actual binaries
|
||||
# for some reason the rule further down doesn't like $($@objs) as a prereq.
|
||||
dropbear: $(dropbearobjs)
|
||||
dbclient: $(dbclientobjs)
|
||||
dropbearkey: $(dropbearkeyobjs)
|
||||
dropbearconvert: $(dropbearconvertobjs)
|
||||
|
||||
dropbear dbclient dropbearkey dropbearconvert: $($($@objs)) $(HEADERS) \
|
||||
$(LTC) $(LTM)
|
||||
@echo $(CLISVRFLAGS)
|
||||
dropbear dbclient dropbearkey dropbearconvert: $(HEADERS) $(LTC) $(LTM)
|
||||
$(LD) $(LDFLAGS) -o $(SPREFIX)$@$(EXEEXT) $($@objs) $(LIBS)
|
||||
|
||||
|
||||
# scp doesn't use the libs so is special.
|
||||
scp: $(SCPOBJS) $(HEADERS)
|
||||
$(LD) $(LDFLAGS) -o $(SPREFIX)$@$(EXEEXT) $(SCPOBJS)
|
||||
|
||||
|
||||
MULTIOBJS=dbmulti.o
|
||||
# multi-binary compilation.
|
||||
MULTIOBJS=
|
||||
ifeq ($(MULTI),1)
|
||||
deftarget=multi
|
||||
MULTIOBJS=$(foreach prog, $(PROGRAMS), $($(prog)objs))
|
||||
MULTIOBJS=dbmulti.o $(sort $(foreach prog, $(PROGRAMS), $($(prog)objs)))
|
||||
CFLAGS+=$(addprefix -DDBMULTI_, $(PROGRAMS)) -DDROPBEAR_MULTI
|
||||
endif
|
||||
|
||||
testfoo:
|
||||
echo $(MULTIOBJS)
|
||||
|
||||
dropbearmulti: $(HEADERS) $(MULTIOBJS) $(LTC) $(LTM)
|
||||
$(LD) $(LDFLAGS) -o $(SPREFIX)$@$(EXEEXT) $(MULTIOBJS) $(LIBS)
|
||||
@echo
|
||||
@echo "You should now create symlinks to the programs you have included"
|
||||
@echo "ie 'ln -s dropbearmulti dropbear'"
|
||||
|
||||
|
21
dbmulti.c
21
dbmulti.c
@ -4,6 +4,7 @@
|
||||
int dropbear_main(int argc, char ** argv);
|
||||
int dropbearkey_main(int argc, char ** argv);
|
||||
int dropbearconvert_main(int argc, char ** argv);
|
||||
int scp_main(int argc, char ** argv);
|
||||
|
||||
int main(int argc, char ** argv) {
|
||||
|
||||
@ -13,33 +14,41 @@ int main(int argc, char ** argv) {
|
||||
/* figure which form we're being called as */
|
||||
progname = basename(argv[0]);
|
||||
|
||||
#ifdef DBMULTI_DROPBEAR
|
||||
#ifdef DBMULTI_dropbear
|
||||
if (strcmp(progname, "dropbear") == 0) {
|
||||
return dropbear_main(argc, argv);
|
||||
}
|
||||
#endif
|
||||
#ifdef DBMULTI_KEY
|
||||
#ifdef DBMULTI_dropbearkey
|
||||
if (strcmp(progname, "dropbearkey") == 0) {
|
||||
return dropbearkey_main(argc, argv);
|
||||
}
|
||||
#endif
|
||||
#ifdef DBMULTI_CONVERT
|
||||
#ifdef DBMULTI_dropbearconvert
|
||||
if (strcmp(progname, "dropbearconvert") == 0) {
|
||||
return dropbearconvert_main(argc, argv);
|
||||
}
|
||||
#endif
|
||||
#ifdef DBMULTI_scp
|
||||
if (strcmp(progname, "scp") == 0) {
|
||||
return scp_main(argc, argv);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
fprintf(stderr, "Dropbear multi-purpose version %s\n"
|
||||
"Make a symlink pointing at this binary with one of the following names:\n"
|
||||
#ifdef DBMULTI_DROPBEAR
|
||||
#ifdef DBMULTI_dropbear
|
||||
"'dropbear' - the Dropbear server\n"
|
||||
#endif
|
||||
#ifdef DBMULTI_KEY
|
||||
#ifdef DBMULTI_dropbearkey
|
||||
"'dropbearkey' - the key generator\n"
|
||||
#endif
|
||||
#ifdef DBMULTI_CONVERT
|
||||
#ifdef DBMULTI_dropbearconvert
|
||||
"'dropbearconvert' - the key converter\n"
|
||||
#endif
|
||||
#ifdef DBMULTI_scp
|
||||
"'scp' - secure copy\n"
|
||||
#endif
|
||||
,
|
||||
DROPBEAR_VERSION);
|
||||
|
@ -53,8 +53,8 @@ static void printhelp(char * progname) {
|
||||
"standard input or standard output.\n", progname);
|
||||
}
|
||||
|
||||
#if defined(DBMULTI_CONVERT) || !defined(DROPBEAR_MULTI)
|
||||
#if defined(DBMULTI_CONVERT) && defined(DROPBEAR_MULTI)
|
||||
#if defined(DBMULTI_dropbearconvert) || !defined(DROPBEAR_MULTI)
|
||||
#if defined(DBMULTI_dropbearconvert) && defined(DROPBEAR_MULTI)
|
||||
int dropbearconvert_main(int argc, char ** argv) {
|
||||
#else
|
||||
int main(int argc, char ** argv) {
|
||||
|
@ -80,8 +80,8 @@ static void printhelp(char * progname) {
|
||||
progname);
|
||||
}
|
||||
|
||||
#if defined(DBMULTI_KEY) || !defined(DROPBEAR_MULTI)
|
||||
#if defined(DBMULTI_KEY) && defined(DROPBEAR_MULTI)
|
||||
#if defined(DBMULTI_dropbearkey) || !defined(DROPBEAR_MULTI)
|
||||
#if defined(DBMULTI_dropbearkey) && defined(DROPBEAR_MULTI)
|
||||
int dropbearkey_main(int argc, char ** argv) {
|
||||
#else
|
||||
int main(int argc, char ** argv) {
|
||||
|
@ -36,8 +36,8 @@ static void sigintterm_handler(int fish);
|
||||
|
||||
static int childpipes[MAX_UNAUTH_CLIENTS];
|
||||
|
||||
#if defined(DBMULTI_DROPBEAR) || !defined(DROPBEAR_MULTI)
|
||||
#if defined(DBMULTI_DROPBEAR) && defined(DROPBEAR_MULTI)
|
||||
#if defined(DBMULTI_dropbear) || !defined(DROPBEAR_MULTI)
|
||||
#if defined(DBMULTI_dropbear) && defined(DROPBEAR_MULTI)
|
||||
int dropbear_main(int argc, char ** argv)
|
||||
#else
|
||||
int main(int argc, char ** argv)
|
Loading…
Reference in New Issue
Block a user