diff options
Diffstat (limited to 'core/mk/pkg-macros/include.mk')
-rw-r--r-- | core/mk/pkg-macros/include.mk | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/core/mk/pkg-macros/include.mk b/core/mk/pkg-macros/include.mk new file mode 100644 index 0000000..91be947 --- /dev/null +++ b/core/mk/pkg-macros/include.mk @@ -0,0 +1,94 @@ +################################################################################ +# Embtoolkit +# Copyright(C) 2014 Abdoulaye Walsimou GAYE. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# +################################################################################ +# +# \file include.mk +# \brief include.mk of Embtoolkit +# \author Abdoulaye Walsimou GAYE <awg@embtoolkit.org> +# \date January 2014 +################################################################################ + +# +# Macros to include a package in the build system +# $(1): pkgname => pkgname/pkgname.mk should exist (required) +# $(2): kconfig: package specific kconfig symbol name used in .kconfig +# This parameter is optional. +define embtk_include_pkg + $(eval $(call __embtk_include_pkg,$(1),$(2))) +endef +define __embtk_include_pkg + $(eval __embtk_inc_pkgname := $(or $(2),$(PKGV))) + $(eval __embtk_incmk := $(embtk_pkgincdir)/$(pkgv)/$(pkgv).mk) + $(eval __embtk_incinstalled-y := $(if $(wildcard $(__embtk_pkg_dotinstalled_f)),y)) + $(eval __embtk_incenabled-y := $(CONFIG_EMBTK_HAVE_$(__embtk_inc_pkgname))) + $(eval __embtk_incmk-y := $(if $(__embtk_incenabled-y)$(__embtk_incinstalled-y),y)) + # Is it necessary to include the .mk file? + $(eval __embtk_incmk-y := $(if $(findstring $(__embtk_incmk),$(MAKEFILE_LIST)),,$(__embtk_incmk-y))) + ifeq (x$(__embtk_incmk-y),xy) + include $(__embtk_incmk) + endif + ifeq (x$(__embtk_incenabled-y),xy) + ROOTFS_COMPONENTS-y += $(pkgv)_install + # also include old package kconfig entries if any + -include $(__embtk_pkg_dotkconfig_f) + else ifeq (x$(__embtk_incinstalled-y),xy) + ROOTFS_COMPONENTS- += $(pkgv)_install + endif + # Preset build system installed variable for this packages, if installed + ifeq (x$(__embtk_incinstalled-y),xy) + __embtk_$(pkgv)_installed = y + else + __embtk_$(pkgv)_installed = + endif + # preset some variables + $(eval __embtk_$(pkgv)_category := $(call __embtk_mk_uquote,$(or $(CONFIG_EMBTK_$(PKGV)_REFSPEC),$(CONFIG_EMBTK_$(PKGV)_CATEGORY)))) + $(eval __embtk_xpkg_category := $(lastword $(subst /,$(embtk_space),$(embtk_pkgincdir)))) + __embtk_$(pkgv)_category := $(or $(___embtk_$(pkgv)_category),$(__embtk_xpkg_category)) +endef + +define embtk_include_hostpkg + $(eval $(call __embtk_include_hostpkg,$(1),$(2))) +endef +define __embtk_include_hostpkg + $(eval __embtk_inc_pkgname := $(or $(2),$(PKGV))) + # Case where foo and foo_host are in the same .mk file + $(eval __embtk_incmk0 := $(embtk_pkgincdir)/$(pkgv)/$(pkgv).mk) + $(eval __embtk_incmk1 := $(embtk_pkgincdir)/$(patsubst %_host,%,$(pkgv))/$(patsubst %_host,%,$(pkgv)).mk) + $(eval __embtk_incmk := $(or $(wildcard $(__embtk_incmk0)),$(wildcard $(__embtk_incmk1)),$(wildcard $(__embtk_incmk0)))) + $(eval __embtk_incinstalled-y := $(if $(wildcard $(__embtk_pkg_dotinstalled_f)),y)) + $(eval __embtk_incenabled-y := $(CONFIG_EMBTK_HOST_HAVE_$(patsubst %_HOST,%,$(__embtk_inc_pkgname)))) + $(eval __embtk_incmk-y := $(if $(__embtk_incenabled-y)$(__embtk_incinstalled-y),y)) + # Is it necessary to include the .mk file? + $(eval __embtk_incmk-y := $(if $(findstring $(__embtk_incmk),$(MAKEFILE_LIST)),,$(__embtk_incmk-y))) + ifeq (x$(__embtk_incmk-y),xy) + include $(__embtk_incmk) + endif + ifeq (x$(__embtk_incenabled-y),xy) + HOSTTOOLS_COMPONENTS-y += $(pkgv)_install + # also include old package kconfig entries if any + -include $(__embtk_pkg_dotkconfig_f) + else ifeq (x$(__embtk_incinstalled-y),xy) + HOSTTOOLS_COMPONENTS- += $(pkgv)_install + endif + # Preset build system installed variable for this packages, if installed + ifeq (x$(__embtk_incinstalled-y),xy) + __embtk_$(pkgv)_installed = y + else + __embtk_$(pkgv)_installed = + endif +endef |