On 2017-04-11 18:56, Henning Schild wrote:
> Move it up one level so the hypervisor core can make use of it
> itself.
> 
> Signed-off-by: Henning Schild <[email protected]>
> 
> diff --git a/Kbuild b/Kbuild
> --- a/Kbuild
> +++ b/Kbuild
> @@ -1,7 +1,7 @@
>  #
>  # Jailhouse, a Linux-based partitioning hypervisor
>  #
> -# Copyright (c) Siemens AG, 2013-2015
> +# Copyright (c) Siemens AG, 2013-2017
>  #
>  # Authors:
>  #  Jan Kiszka <[email protected]>
> @@ -11,12 +11,40 @@
>  # the COPYING file in the top-level directory.
>  #
>  
> +define filechk_config_mk
> +(                                                                    \
> +     echo "\$$(foreach config,\$$(filter CONFIG_%,           \
> +             \$$(.VARIABLES)), \$$(eval undefine \$$(config)))";     \
> +     if [ -f $(src)/hypervisor/include/jailhouse/config.h ]; then    \
> +             sed -e "/^#define \([^[:space:]]*\)[[:space:]]*1/!d"    \
> +                 -e "s/^#define \([^[:space:]]*\)[[:space:]]*1/\1=y/"\
> +                     $(src)/hypervisor/include/jailhouse/config.h;   \
> +     fi                                                              \
> +)
> +endef
> +
> +$(obj)/hypervisor/include/generated/config.mk: $(src)/Makefile FORCE
> +     $(call filechk,config_mk)
> +
> +CONFIG_MK := $(obj)/hypervisor/include/generated/config.mk

I've just realized that you can make use of this variable also in
hypervisor/Makefile if you add

export CONFIG_MK

And then that makefile can re-export the var to the arch makefile as it
used to do it so far. Nicer than traversing via ../../...

> +
> +define filechk_version
> +     $(src)/scripts/gen_version_h $(src)/
> +endef
> +
> +$(obj)/hypervisor/include/generated/version.h: $(src)/Makefile FORCE
> +     $(call filechk,version)
> +
> +VERSION_H := $(obj)/hypervisor/include/generated/version.h
> +
> +FORCE:

Why this target, BTW?

> +
>  subdir-y := driver hypervisor configs inmates tools
>  
>  subdir-ccflags-y := -Werror
>  
> -# inmates build depends on generated config.mk of the hypervisor,
> -# and the driver needs version.h from there
> -$(obj)/inmates $(obj)/driver: $(obj)/hypervisor
> +# directory dependencies on generated files
> +$(obj)/driver $(obj)/hypervisor: $(VERSION_H)
> +$(obj)/hypervisor $(obj)/inmates $(obj)/driver: $(CONFIG_MK)
>  
> -clean-dirs := Documentation/generated
> +clean-dirs := Documentation/generated hypervisor/include/generated
> diff --git a/hypervisor/Makefile b/hypervisor/Makefile
> --- a/hypervisor/Makefile
> +++ b/hypervisor/Makefile
> @@ -1,7 +1,7 @@
>  #
>  # Jailhouse, a Linux-based partitioning hypervisor
>  #
> -# Copyright (c) Siemens AG, 2013-2016
> +# Copyright (c) Siemens AG, 2013-2017
>  # Copyright (c) Valentine Sinitsyn, 2014
>  #
>  # Authors:
> @@ -35,26 +35,7 @@ GCOV_PROFILE := n
>  CORE_OBJECTS = setup.o printk.o paging.o control.o lib.o mmio.o pci.o 
> ivshmem.o
>  CORE_OBJECTS += uart.o uart-8250.o
>  
> -define filechk_config_mk
> -(                                                                    \
> -     echo "\$$(foreach config,\$$(filter CONFIG_%,           \
> -             \$$(.VARIABLES)), \$$(eval undefine \$$(config)))";     \
> -     if [ -f $(src)/include/jailhouse/config.h ]; then               \
> -             sed -e "/^#define \([^[:space:]]*\)[[:space:]]*1/!d"    \
> -                 -e "s/^#define \([^[:space:]]*\)[[:space:]]*1/\1=y/" \
> -                     $(src)/include/jailhouse/config.h;              \
> -     fi                                                              \
> -)
> -endef
> -
> -$(obj)/include/generated/config.mk: Makefile FORCE
> -     $(call filechk,config_mk)
> -
> -define filechk_version
> -     $(src)/../scripts/gen_version_h $(src)/..
> -endef
> -
> -clean-dirs := include/generated arch/$(SRCARCH)/include/generated
> +clean-dirs := arch/$(SRCARCH)/include/generated
>  
>  define sed-y
>       "/^=>/{s:=>#\(.*\):/* \1 */:; \
> @@ -91,17 +72,13 @@ targets := $(defines-file) arch/$(SRCARC
>       $(Q)mkdir -p $(dir $@)
>       $(call cmd,defines)
>  
> -$(obj)/include/generated/version.h: $(src)/Makefile FORCE
> -     $(call filechk,version)
> -
>  $(foreach co,$(CORE_OBJECTS),\
>       $(eval $(obj)/$(co): $(obj)/$(defines-file)))
>  
>  $(obj)/setup.o: $(obj)/include/generated/version.h
>  
> -arch-builtin: $(obj)/$(defines-file) $(obj)/include/generated/config.mk FORCE
> -     $(Q)$(MAKE) $(build)=$(obj)/arch/$(SRCARCH) \
> -             CONFIG_MK=$(obj)/include/generated/config.mk
> +arch-builtin: $(obj)/$(defines-file) FORCE
> +     $(Q)$(MAKE) $(build)=$(obj)/arch/$(SRCARCH)

+ CONFIG_MK=$(CONFIG_MK), see above.

>  
>  always :=
>  
> diff --git a/hypervisor/arch/arm-common/Kbuild 
> b/hypervisor/arch/arm-common/Kbuild
> --- a/hypervisor/arch/arm-common/Kbuild
> +++ b/hypervisor/arch/arm-common/Kbuild
> @@ -1,7 +1,7 @@
>  #
>  # Jailhouse, a Linux-based partitioning hypervisor
>  #
> -# Copyright (c) Siemens AG, 2013-2016
> +# Copyright (c) Siemens AG, 2013-2017
>  #
>  # Authors:
>  #  Jan Kiszka <[email protected]>
> @@ -10,7 +10,7 @@
>  # the COPYING file in the top-level directory.
>  #
>  
> -include $(CONFIG_MK)
> +include $(obj)/../../include/generated/config.mk

And keep this.

>  
>  GCOV_PROFILE := n
>  
> diff --git a/hypervisor/arch/x86/Kbuild b/hypervisor/arch/x86/Kbuild
> --- a/hypervisor/arch/x86/Kbuild
> +++ b/hypervisor/arch/x86/Kbuild
> @@ -1,7 +1,7 @@
>  #
>  # Jailhouse, a Linux-based partitioning hypervisor
>  #
> -# Copyright (c) Siemens AG, 2013
> +# Copyright (c) Siemens AG, 2013-2017
>  # Copyright (c) Valentine Sinitsyn, 2014
>  #
>  # Authors:
> @@ -12,6 +12,8 @@
>  # the COPYING file in the top-level directory.
>  #
>  
> +include $(obj)/../../include/generated/config.mk
> +
>  GCOV_PROFILE := n
>  
>  BUILT_IN_OBJECTS := built-in-amd.o built-in-intel.o
> 

The x86 include isn't needed, right? But I agree that it's nicer to have
it for consistency reasons. Then I would just add it to
hypervisor/Makefile already in this patch and declare common availability.

Jan

-- 
Siemens AG, Corporate Technology, CT RDA ITP SES-DE
Corporate Competence Center Embedded Linux

-- 
You received this message because you are subscribed to the Google Groups 
"Jailhouse" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to