From patchwork Thu Aug 11 09:18:22 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?b?SsO8cmdlbiBHcm/Dnw==?= X-Patchwork-Id: 9274749 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id A3E6260231 for ; Thu, 11 Aug 2016 09:21:04 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 92D4928581 for ; Thu, 11 Aug 2016 09:21:04 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 87764285B3; Thu, 11 Aug 2016 09:21:04 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.2 required=2.0 tests=BAYES_00, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 723B728581 for ; Thu, 11 Aug 2016 09:21:02 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bXm8J-0002fz-I4; Thu, 11 Aug 2016 09:18:35 +0000 Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bXm8H-0002UM-8G; Thu, 11 Aug 2016 09:18:33 +0000 Received: from [85.158.137.68] by server-8.bemta-3.messagelabs.com id 62/30-10540-8E24CA75; Thu, 11 Aug 2016 09:18:32 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrFLMWRWlGSWpSXmKPExsVyuP0Ov+5zpzX hBvf2KFi8/bqE2eL7lslMDkwehz9cYQlgjGLNzEvKr0hgzTi6u4mxYH94xY/3Hg2Md7y6GDk5 JASMJN5O/MfUxcjFISSwkFHi8ItNzCAJNgFViQ3XT7GC2CICbhJfvs9iA7GZBSIk5nw4xQJiC wuYSfx8uBKshgWo/ubxHYwgNq+Ag8TlDVNYIBbISVyfOZ0JxOYEiq+Z/hHMFhKwl/gy5xLLBE buBYwMqxg1ilOLylKLdI2M9ZKKMtMzSnITM3N0DQ2M9XJTi4sT01NzEpOK9ZLzczcxAv1cz8D AuIOxb6/fIUZJDiYlUV7hmNXhQnxJ+SmVGYnFGfFFpTmpxYcYZTg4lCR4JzuuCRcSLEpNT61I y8wBBhxMWoKDR0mEdwlImre4IDG3ODMdInWKUVFKnNcfJCEAksgozYNrgwX5JUZZKWFeRgYGB iGegtSi3MwSVPlXjOIcjErCvKtApvBk5pXATX8FtJgJaPEJM7DFJYkIKakGxtCc/99+dv07lx b3YdueTQVrmZ/ZJne6bV6yNm3SnVMdUR80496cLatSvXvnWk7HmUb3+JOHTz5L/66cMDHnzh2 BDcJdXUfXeE7rf+n06OwLj84rJefKuQL+LXpR/j4s9NnlQ6WrZRW23labf1rm0/KXRssevUqt vKLQNWPNUrv0NCeDSLX5184osRRnJBpqMRcVJwIAtnNzbW0CAAA= X-Env-Sender: jgross@suse.com X-Msg-Ref: server-14.tower-31.messagelabs.com!1470907111!55078710!1 X-Originating-IP: [195.135.220.15] X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50 X-StarScan-Received: X-StarScan-Version: 8.77; banners=-,-,- X-VirusChecked: Checked Received: (qmail 61674 invoked from network); 11 Aug 2016 09:18:31 -0000 Received: from mx2.suse.de (HELO mx2.suse.de) (195.135.220.15) by server-14.tower-31.messagelabs.com with DHE-RSA-CAMELLIA256-SHA encrypted SMTP; 11 Aug 2016 09:18:31 -0000 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id 30053AC63; Thu, 11 Aug 2016 09:18:31 +0000 (UTC) From: Juergen Gross To: minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org Date: Thu, 11 Aug 2016 11:18:22 +0200 Message-Id: <1470907102-14656-20-git-send-email-jgross@suse.com> X-Mailer: git-send-email 2.6.6 In-Reply-To: <1470907102-14656-1-git-send-email-jgross@suse.com> References: <1470907102-14656-1-git-send-email-jgross@suse.com> Cc: Juergen Gross , samuel.thibault@ens-lyon.org, wei.liu2@citrix.com Subject: [Xen-devel] [PATCH v3 19/19] mini-os: repair build system X-BeenThere: xen-devel@lists.xen.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" X-Virus-Scanned: ClamAV using ClamSMTP The build system of Mini-OS is using different settings for arch/*/* than for the rest of the tree. The main reasons are that Config.mk is included only conditionally in the top level Makefile, while minios.mk isn't included by the arch Makefiles. Repairing this mess enables us to move the CONFIG_* handling to Config.mk enabling the arch sources to make use of those even if no MINIOS_CONFIG was specified by the caller. Most of the files under config were not used. Integrate the used ones into Config.mk and delete the rest. The CONFIG_* defines should be set for assembler sources, too. Signed-off-by: Juergen Gross Reviewed-by: Wei Liu Acked-by: Samuel Thibault --- Config.mk | 93 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ Makefile | 44 -------------------------- arch/x86/Makefile | 3 -- config/MiniOS.mk | 10 ------ config/StdGNU.mk | 47 ---------------------------- config/arm32.mk | 22 ------------- config/arm64.mk | 19 ------------ config/x86_32.mk | 20 ------------ config/x86_64.mk | 33 -------------------- minios.mk | 4 +-- 10 files changed, 95 insertions(+), 200 deletions(-) delete mode 100644 config/MiniOS.mk delete mode 100644 config/StdGNU.mk delete mode 100644 config/arm32.mk delete mode 100644 config/arm64.mk delete mode 100644 config/x86_32.mk delete mode 100644 config/x86_64.mk diff --git a/Config.mk b/Config.mk index 9d19cd7..8ab1a7e 100644 --- a/Config.mk +++ b/Config.mk @@ -23,6 +23,11 @@ cc-option = $(shell if test -z "`echo 'void*p=1;' | \ $(1) $(2) -S -o /dev/null -x c - 2>&1 | grep -- $(2) -`"; \ then echo "$(2)"; else echo "$(3)"; fi ;) +ifneq ($(MINIOS_CONFIG),) +EXTRA_DEPS += $(MINIOS_CONFIG) +include $(MINIOS_CONFIG) +endif + # Compatibility with Xen's stubdom build environment. If we are building # stubdom, some XEN_ variables are set, set MINIOS_ variables accordingly. # @@ -97,3 +102,91 @@ DEF_CPPFLAGS += -DHAVE_LWIP DEF_CPPFLAGS += -isystem $(LWIPDIR)/src/include DEF_CPPFLAGS += -isystem $(LWIPDIR)/src/include/ipv4 endif + +# Set tools +AS = $(CROSS_COMPILE)as +LD = $(CROSS_COMPILE)ld +ifeq ($(clang),y) +CC = $(CROSS_COMPILE)clang +LD_LTO = $(CROSS_COMPILE)llvm-ld +else +CC = $(CROSS_COMPILE)gcc +LD_LTO = $(CROSS_COMPILE)ld +endif +CPP = $(CC) -E +AR = $(CROSS_COMPILE)ar +RANLIB = $(CROSS_COMPILE)ranlib +NM = $(CROSS_COMPILE)nm +STRIP = $(CROSS_COMPILE)strip +OBJCOPY = $(CROSS_COMPILE)objcopy +OBJDUMP = $(CROSS_COMPILE)objdump +SIZEUTIL = $(CROSS_COMPILE)size + +# Allow git to be wrappered in the environment +GIT ?= git + +INSTALL = install +INSTALL_DIR = $(INSTALL) -d -m0755 -p +INSTALL_DATA = $(INSTALL) -m0644 -p +INSTALL_PROG = $(INSTALL) -m0755 -p + +BOOT_DIR ?= /boot + +SOCKET_LIBS = +UTIL_LIBS = -lutil +DLOPEN_LIBS = -ldl + +SONAME_LDFLAG = -soname +SHLIB_LDFLAGS = -shared + +ifneq ($(debug),y) +CFLAGS += -O2 -fomit-frame-pointer +else +# Less than -O1 produces bad code and large stack frames +CFLAGS += -O1 -fno-omit-frame-pointer +CFLAGS-$(gcc) += -fno-optimize-sibling-calls +endif + +ifeq ($(lto),y) +CFLAGS += -flto +LDFLAGS-$(clang) += -plugin LLVMgold.so +endif + +# Configuration defaults +CONFIG_START_NETWORK ?= y +CONFIG_SPARSE_BSS ?= y +CONFIG_QEMU_XS_ARGS ?= n +CONFIG_TEST ?= n +CONFIG_PCIFRONT ?= n +CONFIG_BLKFRONT ?= y +CONFIG_TPMFRONT ?= n +CONFIG_TPM_TIS ?= n +CONFIG_TPMBACK ?= n +CONFIG_NETFRONT ?= y +CONFIG_FBFRONT ?= y +CONFIG_KBDFRONT ?= y +CONFIG_CONSFRONT ?= y +CONFIG_XENBUS ?= y +CONFIG_XC ?=y +CONFIG_LWIP ?= $(lwip) +CONFIG_BALLOON ?= n + +# Export config items as compiler directives +DEFINES-$(CONFIG_START_NETWORK) += -DCONFIG_START_NETWORK +DEFINES-$(CONFIG_SPARSE_BSS) += -DCONFIG_SPARSE_BSS +DEFINES-$(CONFIG_QEMU_XS_ARGS) += -DCONFIG_QEMU_XS_ARGS +DEFINES-$(CONFIG_PCIFRONT) += -DCONFIG_PCIFRONT +DEFINES-$(CONFIG_BLKFRONT) += -DCONFIG_BLKFRONT +DEFINES-$(CONFIG_TPMFRONT) += -DCONFIG_TPMFRONT +DEFINES-$(CONFIG_TPM_TIS) += -DCONFIG_TPM_TIS +DEFINES-$(CONFIG_TPMBACK) += -DCONFIG_TPMBACK +DEFINES-$(CONFIG_NETFRONT) += -DCONFIG_NETFRONT +DEFINES-$(CONFIG_KBDFRONT) += -DCONFIG_KBDFRONT +DEFINES-$(CONFIG_FBFRONT) += -DCONFIG_FBFRONT +DEFINES-$(CONFIG_CONSFRONT) += -DCONFIG_CONSFRONT +DEFINES-$(CONFIG_XENBUS) += -DCONFIG_XENBUS +DEFINES-$(CONFIG_BALLOON) += -DCONFIG_BALLOON + +# Override settings for this OS +PTHREAD_LIBS = +nosharedlibs=y diff --git a/Makefile b/Makefile index f5b7011..5464e89 100644 --- a/Makefile +++ b/Makefile @@ -7,51 +7,7 @@ OBJ_DIR=$(CURDIR) TOPLEVEL_DIR=$(CURDIR) -ifeq ($(MINIOS_CONFIG),) include Config.mk -else -EXTRA_DEPS += $(MINIOS_CONFIG) -include $(MINIOS_CONFIG) -endif - -include $(MINIOS_ROOT)/config/MiniOS.mk - -# Configuration defaults -CONFIG_START_NETWORK ?= y -CONFIG_SPARSE_BSS ?= y -CONFIG_QEMU_XS_ARGS ?= n -CONFIG_TEST ?= n -CONFIG_PCIFRONT ?= n -CONFIG_BLKFRONT ?= y -CONFIG_TPMFRONT ?= n -CONFIG_TPM_TIS ?= n -CONFIG_TPMBACK ?= n -CONFIG_NETFRONT ?= y -CONFIG_FBFRONT ?= y -CONFIG_KBDFRONT ?= y -CONFIG_CONSFRONT ?= y -CONFIG_XENBUS ?= y -CONFIG_XC ?=y -CONFIG_LWIP ?= $(lwip) -CONFIG_BALLOON ?= n - -# Export config items as compiler directives -flags-$(CONFIG_START_NETWORK) += -DCONFIG_START_NETWORK -flags-$(CONFIG_SPARSE_BSS) += -DCONFIG_SPARSE_BSS -flags-$(CONFIG_QEMU_XS_ARGS) += -DCONFIG_QEMU_XS_ARGS -flags-$(CONFIG_PCIFRONT) += -DCONFIG_PCIFRONT -flags-$(CONFIG_BLKFRONT) += -DCONFIG_BLKFRONT -flags-$(CONFIG_TPMFRONT) += -DCONFIG_TPMFRONT -flags-$(CONFIG_TPM_TIS) += -DCONFIG_TPM_TIS -flags-$(CONFIG_TPMBACK) += -DCONFIG_TPMBACK -flags-$(CONFIG_NETFRONT) += -DCONFIG_NETFRONT -flags-$(CONFIG_KBDFRONT) += -DCONFIG_KBDFRONT -flags-$(CONFIG_FBFRONT) += -DCONFIG_FBFRONT -flags-$(CONFIG_CONSFRONT) += -DCONFIG_CONSFRONT -flags-$(CONFIG_XENBUS) += -DCONFIG_XENBUS -flags-$(CONFIG_BALLOON) += -DCONFIG_BALLOON - -DEF_CFLAGS += $(flags-y) # Symlinks and headers that must be created before building the C files GENERATED_HEADERS := include/list.h $(ARCH_LINKS) include/mini-os include/$(TARGET_ARCH_FAM)/mini-os diff --git a/arch/x86/Makefile b/arch/x86/Makefile index a46766c..0052b4c 100644 --- a/arch/x86/Makefile +++ b/arch/x86/Makefile @@ -6,9 +6,6 @@ TOPLEVEL_DIR = $(CURDIR)/../.. include ../../Config.mk -# include arch.mk has to be before mini-os.mk! - -include arch.mk include ../../minios.mk # Sources here are all *.c *.S without $(MINIOS_TARGET_ARCH).S diff --git a/config/MiniOS.mk b/config/MiniOS.mk deleted file mode 100644 index be542dc..0000000 --- a/config/MiniOS.mk +++ /dev/null @@ -1,10 +0,0 @@ -include $(MINIOS_ROOT)/config/StdGNU.mk -include $(MINIOS_ROOT)/Config.mk -CFLAGS += $(DEF_CFLAGS) $(ARCH_CFLAGS) -CPPFLAGS += $(DEF_CPPFLAGS) $(ARCH_CPPFLAGS) $(extra_incl) -ASFLAGS += $(DEF_ASFLAGS) $(ARCH_ASFLAGS) -LDFLAGS += $(DEF_LDFLAGS) $(ARCH_LDFLAGS) - -# Override settings for this OS -PTHREAD_LIBS = -nosharedlibs=y diff --git a/config/StdGNU.mk b/config/StdGNU.mk deleted file mode 100644 index 4efebe3..0000000 --- a/config/StdGNU.mk +++ /dev/null @@ -1,47 +0,0 @@ -AS = $(CROSS_COMPILE)as -LD = $(CROSS_COMPILE)ld -ifeq ($(clang),y) -CC = $(CROSS_COMPILE)clang -LD_LTO = $(CROSS_COMPILE)llvm-ld -else -CC = $(CROSS_COMPILE)gcc -LD_LTO = $(CROSS_COMPILE)ld -endif -CPP = $(CC) -E -AR = $(CROSS_COMPILE)ar -RANLIB = $(CROSS_COMPILE)ranlib -NM = $(CROSS_COMPILE)nm -STRIP = $(CROSS_COMPILE)strip -OBJCOPY = $(CROSS_COMPILE)objcopy -OBJDUMP = $(CROSS_COMPILE)objdump -SIZEUTIL = $(CROSS_COMPILE)size - -# Allow git to be wrappered in the environment -GIT ?= git - -INSTALL = install -INSTALL_DIR = $(INSTALL) -d -m0755 -p -INSTALL_DATA = $(INSTALL) -m0644 -p -INSTALL_PROG = $(INSTALL) -m0755 -p - -BOOT_DIR ?= /boot - -SOCKET_LIBS = -UTIL_LIBS = -lutil -DLOPEN_LIBS = -ldl - -SONAME_LDFLAG = -soname -SHLIB_LDFLAGS = -shared - -ifneq ($(debug),y) -CFLAGS += -O2 -fomit-frame-pointer -else -# Less than -O1 produces bad code and large stack frames -CFLAGS += -O1 -fno-omit-frame-pointer -CFLAGS-$(gcc) += -fno-optimize-sibling-calls -endif - -ifeq ($(lto),y) -CFLAGS += -flto -LDFLAGS-$(clang) += -plugin LLVMgold.so -endif diff --git a/config/arm32.mk b/config/arm32.mk deleted file mode 100644 index 4f83a63..0000000 --- a/config/arm32.mk +++ /dev/null @@ -1,22 +0,0 @@ -CONFIG_ARM := y -CONFIG_ARM_32 := y -CONFIG_ARM_$(XEN_OS) := y - -CONFIG_XEN_INSTALL_SUFFIX := - -# -march= -mcpu= - -# Explicitly specifiy 32-bit ARM ISA since toolchain default can be -mthumb: -CFLAGS += -marm - -HAS_PL011 := y -HAS_EXYNOS4210 := y -HAS_OMAP := y -HAS_NS16550 := y - -# Use only if calling $(LD) directly. -LDFLAGS_DIRECT += -EL - -CONFIG_LOAD_ADDRESS ?= 0x80000000 - -IOEMU_CPU_ARCH ?= arm diff --git a/config/arm64.mk b/config/arm64.mk deleted file mode 100644 index 6eafda2..0000000 --- a/config/arm64.mk +++ /dev/null @@ -1,19 +0,0 @@ -CONFIG_ARM := y -CONFIG_ARM_64 := y -CONFIG_ARM_$(XEN_OS) := y - -CONFIG_XEN_INSTALL_SUFFIX := - -CFLAGS += #-marm -march= -mcpu= etc - -HAS_PL011 := y -HAS_NS16550 := y - -# Use only if calling $(LD) directly. -LDFLAGS_DIRECT += -EL - -CONFIG_LOAD_ADDRESS ?= 0x80000000 - -IOEMU_CPU_ARCH ?= aarch64 - -EFI_DIR ?= /usr/lib64/efi diff --git a/config/x86_32.mk b/config/x86_32.mk deleted file mode 100644 index c2d785e..0000000 --- a/config/x86_32.mk +++ /dev/null @@ -1,20 +0,0 @@ -CONFIG_X86 := y -CONFIG_X86_32 := y -CONFIG_X86_$(XEN_OS) := y - -CONFIG_HVM := y -CONFIG_MIGRATE := y -CONFIG_XCUTILS := y - -HAS_MEM_ACCESS := y -HAS_MEM_PAGING := y -HAS_MEM_SHARING := y - -CFLAGS += -m32 -march=i686 - -# Use only if calling $(LD) directly. -LDFLAGS_DIRECT_OpenBSD = _obsd -LDFLAGS_DIRECT_FreeBSD = _fbsd -LDFLAGS_DIRECT += -melf_i386$(LDFLAGS_DIRECT_$(XEN_OS)) - -IOEMU_CPU_ARCH ?= i386 diff --git a/config/x86_64.mk b/config/x86_64.mk deleted file mode 100644 index bf104c2..0000000 --- a/config/x86_64.mk +++ /dev/null @@ -1,33 +0,0 @@ -CONFIG_X86 := y -CONFIG_X86_64 := y -CONFIG_X86_$(XEN_OS) := y - -CONFIG_COMPAT := y -CONFIG_HVM := y -CONFIG_MIGRATE := y -CONFIG_XCUTILS := y - -HAS_MEM_ACCESS := y -HAS_MEM_PAGING := y -HAS_MEM_SHARING := y - -CONFIG_XEN_INSTALL_SUFFIX := .gz - -CFLAGS += -m64 - -SunOS_LIBDIR = $(SunOS_LIBDIR_x86_64) - -EFI_DIR ?= /usr/lib64/efi - -# Use only if calling $(LD) directly. -ifeq ($(XEN_OS),OpenBSD) -LDFLAGS_DIRECT += -melf_x86_64_obsd -else -ifeq ($(XEN_OS),FreeBSD) -LDFLAGS_DIRECT += -melf_x86_64_fbsd -else -LDFLAGS_DIRECT += -melf_x86_64 -endif -endif - -IOEMU_CPU_ARCH ?= x86_64 diff --git a/minios.mk b/minios.mk index 89534f7..1d1cc99 100644 --- a/minios.mk +++ b/minios.mk @@ -32,9 +32,9 @@ DEF_CFLAGS += -D__INSIDE_MINIOS__ # Build the CFLAGS and ASFLAGS for compiling and assembling. # DEF_... flags are the common mini-os flags, # ARCH_... flags may be defined in arch/$(TARGET_ARCH_FAM/rules.mk -CFLAGS := $(DEF_CFLAGS) $(ARCH_CFLAGS) +CFLAGS := $(DEF_CFLAGS) $(ARCH_CFLAGS) $(DEFINES-y) CPPFLAGS := $(DEF_CPPFLAGS) $(ARCH_CPPFLAGS) -ASFLAGS := $(DEF_ASFLAGS) $(ARCH_ASFLAGS) +ASFLAGS := $(DEF_ASFLAGS) $(ARCH_ASFLAGS) $(DEFINES-y) LDFLAGS := $(DEF_LDFLAGS) $(ARCH_LDFLAGS) # Special build dependencies.