]> rtime.felk.cvut.cz Git - coffee/buildroot.git/blob - package/pkg-virtual.mk
jquery-ui-themes: rename options to have proper prefix
[coffee/buildroot.git] / package / pkg-virtual.mk
1 ################################################################################
2 # Virtual package infrastructure
3 #
4 # This file implements an infrastructure that eases development of
5 # package .mk files for virtual packages. It should be used for all
6 # virtual packages.
7 #
8 # See the Buildroot documentation for details on the usage of this
9 # infrastructure
10 #
11 # In terms of implementation, this virtual infrastructure requires
12 # the .mk file to only call the 'virtual-package' macro.
13 #
14 ################################################################################
15
16
17 ################################################################################
18 # inner-virtual-package -- defines the dependency rules of the virtual
19 # package against its provider.
20 #
21 #  argument 1 is the lowercase package name
22 #  argument 2 is the uppercase package name, including a HOST_ prefix
23 #             for host packages
24 #  argument 3 is the uppercase package name, without the HOST_ prefix
25 #             for host packages
26 #  argument 4 is the type (target or host)
27 ################################################################################
28
29 # Note: putting this comment here rather than in the define block, otherwise
30 # make would try to expand the $(error ...) in the comment, which is not
31 # really what we want.
32 # We need to use second-expansion for the $(error ...) call, below,
33 # so it is not evaluated now, but as part of the generated make code.
34
35 define inner-virtual-package
36
37 # Ensure the virtual package has an implementation defined.
38 ifeq ($$(BR2_PACKAGE_HAS_$(2)),y)
39 ifeq ($$(call qstrip,$$(BR2_PACKAGE_PROVIDES_$(2))),)
40 $$(error No implementation selected for virtual package $(1). Configuration error)
41 endif
42 endif
43
44 # explicitly set these so we do not get confused by environment
45 # variables with the same names.
46 $(2)_VERSION =
47 $(2)_SOURCE =
48
49 $(2)_IS_VIRTUAL = YES
50
51 # Add dependency against the provider
52 # For a host package, there is no corresponding BR2_PACKAGE_PROVIDES_HOST_FOO,
53 # so we need to compute it from the target variant.
54 ifeq ($(4),target)
55 $(2)_DEPENDENCIES += $$(call qstrip,$$(BR2_PACKAGE_PROVIDES_$(2)))
56 else
57 ifeq ($$(call qstrip,$$(BR2_PACKAGE_PROVIDES_$(2))),)
58 # Inherit from target package BR2_PACKAGE_PROVIDES_FOO
59 $(2)_DEPENDENCIES += host-$$(call qstrip,$$(BR2_PACKAGE_PROVIDES_$(3)))
60 else
61 # BR2_PACKAGE_PROVIDES_HOST_<pkg> is explicitly defined
62 $(2)_DEPENDENCIES += $$(call qstrip,$$(BR2_PACKAGE_PROVIDES_$(2)))
63 endif
64 endif
65
66 # Call the generic package infrastructure to generate the necessary
67 # make targets
68 $(call inner-generic-package,$(1),$(2),$(3),$(4))
69
70 endef
71
72 ################################################################################
73 # virtual-package -- the target generator macro for virtual packages
74 ################################################################################
75
76 virtual-package = $(call inner-virtual-package,$(pkgname),$(call UPPERCASE,$(pkgname)),$(call UPPERCASE,$(pkgname)),target)
77 host-virtual-package = $(call inner-virtual-package,host-$(pkgname),$(call UPPERCASE,host-$(pkgname)),$(call UPPERCASE,$(pkgname)),host)