mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-19 13:48:06 +00:00
dropbear: roll up recipes into mapping lists
this commit removes manual recipes for options and introduces mapping lists: - DB_OPT_COMMON holds option mappings which are common for all builds; - DB_OPT_CONFIG holds option mappings which are depend on config settings. DB_OPT_COMMON is space-separated list of 'words', each of them is in format: 'header_option|value' 'header_option' is added with value 'value' to 'localoptions.h'. if 'header_option' is preceded by two exclamation marks ('!!') then option is not added to 'localoptions.h' but replaced in 'sysoptions.h'. in short: option|value - add option to localoptions.h !!option|value - replace option in sysoptions.h DB_OPT_CONFIG is space-separated list of 'words', each of them is in format: 'header_option|config_variable|value_enabled|value_disabled' 'header_option' is handled likewise in DB_OPT_COMMON. if 'config_variable' is enabled (technically: not disabled) then 'header_option' is set to 'value_enabled' and 'value_disabled' otherwise. in short: option|config|enabled|disabled = add option to localoptions.h !!option|config|enabled|disabled = replace option in sysoptions.h option := (config) ? enabled : disabled If you're not sure that option's value doesn't have '|' within - add your recipe manually right after '$(Build/Configure/dropbear_headers)' and write some words about your decision. PS about two exclamation marks: early idea was to use one exclamation mark to denote such header options but then i thought single exclamation mark may be overlooked by mistake. Signed-off-by: Konstantin Demin <rockdrilla@gmail.com>
This commit is contained in:
parent
79d5c24724
commit
e1bd9645b6
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user