diff options
-rw-r--r-- | package/network/services/dropbear/Makefile | 83 |
1 files changed, 59 insertions, 24 deletions
diff --git a/package/network/services/dropbear/Makefile b/package/network/services/dropbear/Makefile index 0a6e83ad01..5021c2aee1 100644 --- a/package/network/services/dropbear/Makefile +++ b/package/network/services/dropbear/Makefile @@ -96,41 +96,76 @@ CONFIGURE_ARGS += \ $(if $(CONFIG_DROPBEAR_ZLIB),,--disable-zlib) \ --enable-bundled-libtom +############################################################################## +# +# option|value - add option to localoptions.h +# !!option|value - replace option in sysoptions.h +# +############################################################################## + +# remove protocol idented software version number: +# - LOCAL_IDENT +# disable legacy/unsafe methods and unused functionality: +# - INETD_MODE +# - DROPBEAR_CLI_NETCAT +# - DROPBEAR_DSS +# - DO_MOTD +DB_OPT_COMMON = \ + DEFAULT_PATH|"$(TARGET_INIT_PATH)" \ + !!LOCAL_IDENT|"SSH-2.0-dropbear" \ + INETD_MODE|0 \ + DROPBEAR_CLI_NETCAT|0 \ + DROPBEAR_DSS|0 \ + DO_MOTD|0 \ + + +############################################################################## +# +# option|config|enabled|disabled = add option to localoptions.h +# !!option|config|enabled|disabled = replace option in sysoptions.h +# +# option := (config) ? enabled : disabled +# +############################################################################## + +DB_OPT_CONFIG = \ + DROPBEAR_CURVE25519|CONFIG_DROPBEAR_CURVE25519|1|0 \ + DROPBEAR_ED25519|CONFIG_DROPBEAR_ED25519|1|0 \ + DROPBEAR_CHACHA20POLY1305|CONFIG_DROPBEAR_CHACHA20POLY1305|1|0 \ + DROPBEAR_ECDSA|CONFIG_DROPBEAR_ECC|1|0 \ + DROPBEAR_ECDH|CONFIG_DROPBEAR_ECC|1|0 \ + !!DROPBEAR_ECC_384|CONFIG_DROPBEAR_ECC_FULL|1|0 \ + !!DROPBEAR_ECC_521|CONFIG_DROPBEAR_ECC_FULL|1|0 \ + + TARGET_CFLAGS += -DARGTYPE=3 -ffunction-sections -fdata-sections -flto TARGET_LDFLAGS += -Wl,--gc-sections -flto=jobserver db_opt_add =echo '\#define $(1) $(2)' >> $(PKG_BUILD_DIR)/localoptions.h db_opt_replace =$(ESED) 's,^(\#define $(1)) .*$$$$,\1 $(2),g' $(PKG_BUILD_DIR)/sysoptions.h +define Build/Configure/dropbear_headers + $(strip $(foreach s,$(DB_OPT_COMMON), \ + $(if $(filter !!%,$(word 1,$(subst |, ,$(s)))), \ + $(call db_opt_replace,$(patsubst !!%,%,$(word 1,$(subst |, ,$(s)))),$(word 2,$(subst |, ,$(s)))), \ + $(call db_opt_add,$(word 1,$(subst |, ,$(s))),$(word 2,$(subst |, ,$(s)))) \ + ) ; \ + )) + + $(strip $(foreach s,$(DB_OPT_CONFIG), \ + $(if $(filter !!%,$(word 1,$(subst |, ,$(s)))), \ + $(call db_opt_replace,$(patsubst !!%,%,$(word 1,$(subst |, ,$(s)))),$(if $($(word 2,$(subst |, ,$(s)))),$(word 3,$(subst |, ,$(s))),$(word 4,$(subst |, ,$(s))))), \ + $(call db_opt_add,$(word 1,$(subst |, ,$(s))),$(if $($(word 2,$(subst |, ,$(s)))),$(word 3,$(subst |, ,$(s))),$(word 4,$(subst |, ,$(s))))) \ + ) ; \ + )) +endef + define Build/Configure : > $(PKG_BUILD_DIR)/localoptions.h $(Build/Configure/Default) - $(call db_opt_add,DEFAULT_PATH,"$(TARGET_INIT_PATH)") - - # remove protocol idented software version number - $(call db_opt_replace,LOCAL_IDENT,"SSH-2.0-dropbear") - - # disable legacy/unsafe methods and unused functionality - $(foreach opt,INETD_MODE DROPBEAR_CLI_NETCAT DROPBEAR_DSS DO_MOTD, \ - $(call db_opt_add,$(opt),0) ; \ - ) - - $(call db_opt_add,DROPBEAR_CURVE25519,$(if $(CONFIG_DROPBEAR_CURVE25519),1,0)) - - $(call db_opt_add,DROPBEAR_ED25519,$(if $(CONFIG_DROPBEAR_ED25519),1,0)) - - $(call db_opt_add,DROPBEAR_CHACHA20POLY1305,$(if $(CONFIG_DROPBEAR_CHACHA20POLY1305),1,0)) - - $(foreach opt,DROPBEAR_ECDSA DROPBEAR_ECDH, \ - $(call db_opt_add,$(opt),$(if $(CONFIG_DROPBEAR_ECC),1,0)) ; \ - ) - - # enable nistp384 and nistp521 only if full ECC support was requested - $(foreach opt,DROPBEAR_ECC_384 DROPBEAR_ECC_521, \ - $(call db_opt_replace,$(opt),$(if $(CONFIG_DROPBEAR_ECC_FULL),1,0)) ; \ - ) + $(Build/Configure/dropbear_headers) # Enforce rebuild of svr-chansession.c rm -f $(PKG_BUILD_DIR)/svr-chansession.o |