[openwrt/openwrt] dropbear: roll up recipes into mapping lists
LEDE Commits
lede-commits at lists.infradead.org
Fri Dec 11 07:58:21 EST 2020
ynezz pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/e1bd9645b6aee8fc2ae3b56fb2c4332c4d792b89
commit e1bd9645b6aee8fc2ae3b56fb2c4332c4d792b89
Author: Konstantin Demin <rockdrilla at gmail.com>
AuthorDate: Wed Nov 25 06:12:41 2020 +0300
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 at gmail.com>
---
package/network/services/dropbear/Makefile | 83 +++++++++++++++++++++---------
1 file 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
More information about the lede-commits
mailing list