diff --git a/package/pkg-generic.mk b/package/pkg-generic.mk index 54de03da03..621fb91424 100644 --- a/package/pkg-generic.mk +++ b/package/pkg-generic.mk @@ -608,6 +608,76 @@ $(2)_REDISTRIBUTE ?= YES $(2)_REDIST_SOURCES_DIR = $$(REDIST_SOURCES_DIR_$$(call UPPERCASE,$(4)))/$$($(2)_BASENAME_RAW) +# If any of the _CPE_ID_* variables are set, we assume the CPE ID +# information is valid for this package. +ifneq ($$($(2)_CPE_ID_VENDOR)$$($(2)_CPE_ID_NAME)$$($(2)_CPE_ID_VERSION)$$($(2)_CPE_ID_VERSION_MINOR)$$($(2)_CPE_ID_PREFIX),) +$(2)_CPE_ID_VALID = YES +endif + +# When we're a host package, make sure to use the variables of the +# corresponding target package, if any. +ifneq ($$($(3)_CPE_ID_VENDOR)$$($(3)_CPE_ID_NAME)$$($(3)_CPE_ID_VERSION)$$($(3)_CPE_ID_VERSION_MINOR)$$($(3)_CPE_ID_PREFIX),) +$(2)_CPE_ID_VALID = YES +endif + +# If the CPE ID is valid for the target package so it is for the host +# package +ifndef $(2)_CPE_ID_VALID + ifdef $(3)_CPE_ID_VALID + $(2)_CPE_ID_VALID = $$($(3)_CPE_ID_VALID) + endif +endif + +ifeq ($$($(2)_CPE_ID_VALID),YES) + # CPE_ID_VENDOR + ifndef $(2)_CPE_ID_VENDOR + ifdef $(3)_CPE_ID_VENDOR + $(2)_CPE_ID_VENDOR = $$($(3)_CPE_ID_VENDOR) + else + $(2)_CPE_ID_VENDOR = $$($(2)_RAWNAME)_project + endif + endif + + # CPE_ID_NAME + ifndef $(2)_CPE_ID_NAME + ifdef $(3)_CPE_ID_NAME + $(2)_CPE_ID_NAME = $$($(3)_CPE_ID_NAME) + else + $(2)_CPE_ID_NAME = $$($(2)_RAWNAME) + endif + endif + + # CPE_ID_VERSION + ifndef $(2)_CPE_ID_VERSION + ifdef $(3)_CPE_ID_VERSION + $(2)_CPE_ID_VERSION = $$($(3)_CPE_ID_VERSION) + else + $(2)_CPE_ID_VERSION = $$($(2)_VERSION) + endif + endif + + # CPE_ID_VERSION_MINOR + ifndef $(2)_CPE_ID_VERSION_MINOR + ifdef $(3)_CPE_ID_VERSION_MINOR + $(2)_CPE_ID_VERSION_MINOR = $$($(3)_CPE_ID_VERSION_MINOR) + else + $(2)_CPE_ID_VERSION_MINOR = * + endif + endif + + # CPE_ID_PREFIX + ifndef $(2)_CPE_ID_PREFIX + ifdef $(3)_CPE_ID_PREFIX + $(2)_CPE_ID_PREFIX = $$($(3)_CPE_ID_PREFIX) + else + $(2)_CPE_ID_PREFIX = cpe:2.3:a + endif + endif + + # Calculate complete CPE ID + $(2)_CPE_ID = $$($(2)_CPE_ID_PREFIX):$$($(2)_CPE_ID_VENDOR):$$($(2)_CPE_ID_NAME):$$($(2)_CPE_ID_VERSION):$$($(2)_CPE_ID_VERSION_MINOR):*:*:*:*:*:* +endif # ifeq ($$($(2)_CPE_ID_VALID),YES) + # When a target package is a toolchain dependency set this variable to # 'NO' so the 'toolchain' dependency is not added to prevent a circular # dependency.