From 42d5533e6fab5e43fbb9408c1788705fb2a58f0b Mon Sep 17 00:00:00 2001 From: Minggui Cao Date: Thu, 7 May 2020 15:09:14 +0800 Subject: [PATCH] HV: makefile: to avoid duplicated build libs 1. improve makefile to avoid duplicated build libs when make in acrn-hypervisor/hypervisor directory to build HV only. 2. for debug/release library just select one makefile to build Tracked-On: #2412 Signed-off-by: Minggui Cao Reviewed-by: Binbin Wu --- hypervisor/Makefile | 51 +++++++++++++++++-------------------- hypervisor/debug/Makefile | 4 +-- hypervisor/release/Makefile | 4 +-- 3 files changed, 27 insertions(+), 32 deletions(-) diff --git a/hypervisor/Makefile b/hypervisor/Makefile index 99ffcdda2..a4efdd694 100644 --- a/hypervisor/Makefile +++ b/hypervisor/Makefile @@ -18,7 +18,6 @@ BASEDIR := $(shell pwd) HV_OBJDIR ?= $(CURDIR)/build HV_MODDIR ?= $(HV_OBJDIR)/modules HV_FILE := acrn -SUB_MAKEFILES := $(wildcard */Makefile) LIB_MOD = $(HV_MODDIR)/lib_mod.a BOOT_MOD = $(HV_MODDIR)/boot_mod.a @@ -354,13 +353,15 @@ MODULES += $(VP_TRUSTY_MOD) MODULES += $(VP_HCALL_MOD) ifeq ($(CONFIG_RELEASE),y) MODULES += $(LIB_RELEASE) +LIB_BUILD = $(LIB_RELEASE) +LIB_MK = release/Makefile else MODULES += $(LIB_DEBUG) +LIB_BUILD = $(LIB_DEBUG) +LIB_MK = debug/Makefile endif MODULES += $(SYS_INIT_MOD) -.PHONY: $(MODULES) - DISTCLEAN_OBJS := $(shell find $(BASEDIR) -name '*.o') VERSION := $(HV_OBJDIR)/include/version.h @@ -415,58 +416,52 @@ pre_build: $(PRE_BUILD_OBJS) header: $(VERSION) $(HV_OBJDIR)/$(HV_CONFIG_H) $(TARGET_ACPI_INFO_HEADER) .PHONY: lib-mod boot-mod hw-mod vp-base-mod vp-dm-mod vp-trusty-mod vp-hcall-mod sys-init-mod -lib-mod: $(LIB_C_OBJS) $(LIB_S_OBJS) +$(LIB_MOD): $(LIB_C_OBJS) $(LIB_S_OBJS) $(AR) $(ARFLAGS) $(LIB_MOD) $(LIB_C_OBJS) $(LIB_S_OBJS) -$(LIB_MOD): lib-mod +lib-mod: $(LIB_MOD) -boot-mod: $(BOOT_S_OBJS) $(BOOT_C_OBJS) +$(BOOT_MOD): $(BOOT_S_OBJS) $(BOOT_C_OBJS) $(AR) $(ARFLAGS) $(BOOT_MOD) $(BOOT_S_OBJS) $(BOOT_C_OBJS) -$(BOOT_MOD): boot-mod +boot-mod: $(BOOT_MOD) -hw-mod: $(HW_S_OBJS) $(HW_C_OBJS) +$(HW_MOD): $(HW_S_OBJS) $(HW_C_OBJS) $(AR) $(ARFLAGS) $(HW_MOD) $(HW_S_OBJS) $(HW_C_OBJS) -$(HW_MOD): hw-mod +hw-mod: $(HW_MOD) -vp-base-mod: $(VP_BASE_S_OBJS) $(VP_BASE_C_OBJS) +$(VP_BASE_MOD): $(VP_BASE_S_OBJS) $(VP_BASE_C_OBJS) $(AR) $(ARFLAGS) $(VP_BASE_MOD) $(VP_BASE_S_OBJS) $(VP_BASE_C_OBJS) -$(VP_BASE_MOD): vp-base-mod +vp-base-mod: $(VP_BASE_MOD) -vp-dm-mod: $(VP_DM_C_OBJS) +$(VP_DM_MOD): $(VP_DM_C_OBJS) $(AR) $(ARFLAGS) $(VP_DM_MOD) $(VP_DM_C_OBJS) -$(VP_DM_MOD): vp-dm-mod +vp-dm-mod: $(VP_DM_MOD) -vp-trusty-mod: $(VP_TRUSTY_C_OBJS) +$(VP_TRUSTY_MOD): $(VP_TRUSTY_C_OBJS) $(AR) $(ARFLAGS) $(VP_TRUSTY_MOD) $(VP_TRUSTY_C_OBJS) -$(VP_TRUSTY_MOD): vp-trusty-mod +vp-trusty-mod: $(VP_TRUSTY_MOD) -vp-hcall-mod: $(VP_HCALL_C_OBJS) +$(VP_HCALL_MOD): $(VP_HCALL_C_OBJS) $(AR) $(ARFLAGS) $(VP_HCALL_MOD) $(VP_HCALL_C_OBJS) -$(VP_HCALL_MOD): vp-hcall-mod +vp-hcall-mod: $(VP_HCALL_MOD) -sys-init-mod: $(SYS_INIT_C_OBJS) +$(SYS_INIT_MOD): $(SYS_INIT_C_OBJS) $(AR) $(ARFLAGS) $(SYS_INIT_MOD) $(SYS_INIT_C_OBJS) -$(SYS_INIT_MOD): sys-init-mod +sys-init-mod: $(SYS_INIT_MOD) .PHONY: lib -lib: $(SUB_MAKEFILES) -.PHONY: $(SUB_MAKEFILES) -$(SUB_MAKEFILES): header - for Makefile in $(SUB_MAKEFILES); do \ - $(MAKE) -f $$Makefile MKFL_NAME=$$Makefile; \ - done +$(LIB_BUILD): header + $(MAKE) -f $(LIB_MK) MKFL_NAME=$(LIB_MK) -$(LIB_RELEASE): lib - -$(LIB_DEBUG): lib +lib: $(LIB_BUILD) $(HV_OBJDIR)/$(HV_FILE).32.out: $(HV_OBJDIR)/$(HV_FILE).out $(OBJCOPY) -S --section-alignment=0x1000 -O elf32-i386 $< $@ diff --git a/hypervisor/debug/Makefile b/hypervisor/debug/Makefile index 306b00f0c..95d4a8832 100644 --- a/hypervisor/debug/Makefile +++ b/hypervisor/debug/Makefile @@ -7,10 +7,10 @@ SRCS += $(wildcard $(FILE_PATH)/*.c) OBJS += $(patsubst %.c,$(HV_OBJDIR)/%.o,$(SRCS)) .PHONY: default -default: lib +default: $(LIB_DEBUG) ifneq ($(CONFIG_RELEASE),y) -lib: $(OBJS) +$(LIB_DEBUG): $(OBJS) $(AR) $(ARFLAGS) $(LIB_DEBUG) $(OBJS) endif diff --git a/hypervisor/release/Makefile b/hypervisor/release/Makefile index 797d4ddc5..613a57161 100644 --- a/hypervisor/release/Makefile +++ b/hypervisor/release/Makefile @@ -7,10 +7,10 @@ SRCS += $(wildcard $(FILE_PATH)/*.c) OBJS += $(patsubst %.c,$(HV_OBJDIR)/%.o,$(SRCS)) .PHONY: default -default: lib +default: $(LIB_RELEASE) ifeq ($(CONFIG_RELEASE),y) -lib: $(OBJS) +$(LIB_RELEASE): $(OBJS) $(AR) $(ARFLAGS) $(LIB_RELEASE) $(OBJS) endif