dropbear: roll up recipes into mapping lists
[openwrt/staging/rmilecki.git] / package / network / services / dropbear / Makefile
index 0a6e83ad011df643e9205aaeb39b19d8fee72cba..5021c2aee16620ec4339b23184934952efcebad9 100644 (file)
@@ -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