mbox series

[XEN,v9,00/30] xen: Build system improvements, now with out-of-tree build!

Message ID 20220125110103.3527686-1-anthony.perard@citrix.com (mailing list archive)
Headers show
Series xen: Build system improvements, now with out-of-tree build! | expand

Message

Anthony PERARD Jan. 25, 2022, 11 a.m. UTC
Patch series available in this git branch:
https://xenbits.xen.org/git-http/people/aperard/xen-unstable.git br.build-system-xen-v9

v9:
    One new patch (patch 3).
    Otherwise, detailed change logs in patches.

    Removed the rfc part about doing out-of-tree build without setting VPATH
    (which would have allowed mixed in-tree / out-of-tree builds).

v8:
    Mostly rework of v7. With many patch already applied.
    Some detail changes that are spread through many patches:
    - `make cloc` recipe should now work throughout the series, update of it is
      done in 3 patches.
    - new patch "build: fix enforce unique symbols for recent clang version"
      to fix an issue with clang.
    - introducing $(srctree) and $(objtree) earlier
    - introducing $(srcdir) as shortcut for $(srctree)/$(src)
    - introduce usage of -iquote instead of -I in some cases
    More detail change log can be found in patches notes.

    Also this v8 present a work-in-progress of the ability to do out-of-tree
    build without setting VPATH. This is presented as an alternative to force
    use of out-of-tree build. As the last patch show, it allows to build the
    xen-shim without the linkfarm and we don't need to make any other changes
    to any thing that build xen (osstest, distribution packages, xen.git, ...,
    and developers finger macros). The patches are only there as WIP / RFC as
    they were some concern about the usefulness and extra changes needed.
    We can decide whether those changes are good or if this is too much and we
    should force out-of-tree build for the hypervisor.

v7:
    Out-of-tree build!

    This mean many more patches. Everything after patch 27 is new.

    There's a few new patch before that, but otherwise are rework of v6.

Hi,

I have work toward building Xen (the hypervisor) with Linux's build system,
Kbuild.

The main reason for that is to be able to have out-of-tree build. It's annoying
when a build fail because of the pvshim. Other benefit is a much faster
rebuild, and `make clean` doesn't take ages, and better dependencies to figure
out what needs to be rebuild.

Cheers,

Anthony PERARD (30):
  build: set XEN_BUILD_EFI earlier
  build: avoid re-executing the main Makefile by introducing build.mk
  build: fix exported variable name CFLAGS_stack_boundary
  build: set ALL_OBJS in main Makefile; move prelink.o to main Makefile
  build: prepare to always invoke $(MAKE) from xen/, use $(obj)
  build: rework test/livepatch/Makefile
  build: rework cloc recipe
  build: fix enforce unique symbols for recent clang version
  build: build everything from the root dir, use obj=$subdir
  build: introduce if_changed_deps
  build: rename __LINKER__ to LINKER_SCRIPT
  build: hook kconfig into xen build system
  xen/tools/kconfig: fix build with -Wdeclaration-after-statement
  build: remove KBUILD_ specific from Makefile.host
  build: handle always-y and hostprogs-always-y
  build: start building the tools with the main makefiles
  build: add headers path to CFLAGS once for all archs
  build: generate x86's asm-macros.h with filechk
  build: clean-up "clean" rules of duplication
  build: rework "clean" to clean from the root dir
  build: use main rune to build host binary x86's mkelf32 and mkreloc
  build: rework coverage and ubsan CFLAGS handling
  build,x86: remove the need for build32.mk
  build: grab common EFI source files in arch specific dir
  build: replace $(BASEDIR) by $(objtree)
  build: replace $(BASEDIR) and use $(srctree)
  build: rework "headers*.chk" prerequisite in include/
  build: specify source tree in include/ for prerequisite
  build: shuffle main Makefile
  build: adding out-of-tree support to the xen build

 .gitignore                                   |   2 +
 xen/Kconfig                                  |   4 +-
 xen/Makefile                                 | 367 ++++++++++-------
 xen/Rules.mk                                 | 227 +++++++----
 xen/arch/arm/Makefile                        |  53 +--
 xen/arch/arm/arch.mk                         |   5 +-
 xen/arch/arm/efi/Makefile                    |   4 +-
 xen/arch/arm/include/asm/config.h            |   2 +-
 xen/arch/riscv/arch.mk                       |   2 -
 xen/arch/x86/Makefile                        | 204 ++++------
 xen/arch/x86/Rules.mk                        |   8 +-
 xen/arch/x86/arch.mk                         |  59 ++-
 xen/arch/x86/boot/Makefile                   |  57 ++-
 xen/arch/x86/boot/build32.mk                 |  40 --
 xen/arch/x86/efi/Makefile                    |  11 +-
 xen/build.mk                                 |  90 +++++
 xen/common/Makefile                          |  13 +-
 xen/common/efi/efi-common.mk                 |  16 +
 xen/common/libelf/Makefile                   |   4 +-
 xen/common/libfdt/Makefile                   |   8 +-
 xen/include/Makefile                         |  76 ++--
 xen/scripts/Kbuild.include                   |  69 +++-
 xen/scripts/Kconfig.include                  |   2 +-
 xen/scripts/Makefile.clean                   |  32 +-
 xen/{tools/kconfig => scripts}/Makefile.host |  37 +-
 xen/test/Makefile                            |   7 +-
 xen/test/livepatch/Makefile                  | 213 ++++------
 xen/tools/Makefile                           |  14 +-
 xen/tools/fixdep.c                           | 404 +++++++++++++++++++
 xen/tools/kconfig/Makefile                   |   3 +
 xen/tools/kconfig/Makefile.kconfig           | 106 -----
 xen/tools/kconfig/confdata.c                 |   2 +-
 xen/xsm/flask/Makefile                       |  43 +-
 xen/xsm/flask/policy/mkaccess_vector.sh      |   7 +-
 xen/xsm/flask/ss/Makefile                    |   3 +-
 35 files changed, 1371 insertions(+), 823 deletions(-)
 delete mode 100644 xen/arch/x86/boot/build32.mk
 create mode 100644 xen/build.mk
 create mode 100644 xen/common/efi/efi-common.mk
 rename xen/{tools/kconfig => scripts}/Makefile.host (85%)
 create mode 100644 xen/tools/fixdep.c
 delete mode 100644 xen/tools/kconfig/Makefile.kconfig