From: Wei Liu Date: Tue, 13 Dec 2016 15:02:02 +0000 (+0000) Subject: build: prepend OBJ_DIR to linker script X-Git-Tag: xen-4.9.0-rc1.2~1 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=1e8e464febb32428c7651b0b585866e5ee5f786e;p=mini-os.git build: prepend OBJ_DIR to linker script After 5623e2d2 ("x86: use unified linker script") the linker script for x86 build is generated. But the special rule to generate linker script doesn't have OBJ_DIR prepended so in parallel build the same file is written multiple times. This is racy and would cause parallel build to fail. Fix this by prepending OBJ_DIR to the path of linker script. Change other variables where necessary. Signed-off-by: Wei Liu Reviewed-by: Juergen Gross Acked-by: Samuel Thibault --- diff --git a/Makefile b/Makefile index 1d2324c..74f2c31 100644 --- a/Makefile +++ b/Makefile @@ -24,7 +24,7 @@ include minios.mk LDLIBS := APP_LDLIBS := LDARCHLIB := -L$(OBJ_DIR)/$(TARGET_ARCH_DIR) -l$(ARCH_LIB_NAME) -LDFLAGS_FINAL := -T $(TARGET_ARCH_DIR)/minios-$(MINIOS_TARGET_ARCH).lds $(ARCH_LDFLAGS_FINAL) +LDFLAGS_FINAL := -T $(OBJ_DIR)/$(TARGET_ARCH_DIR)/minios-$(MINIOS_TARGET_ARCH).lds $(ARCH_LDFLAGS_FINAL) # Prefix for global API names. All other symbols are localised before # linking with EXTRA_OBJS. @@ -156,10 +156,10 @@ APP_O=$(OBJ_DIR)/$(TARGET)_app.o endif # Special rule for x86 for now -arch/x86/minios-x86%.lds: arch/x86/minios-x86.lds.S +$(OBJ_DIR)/arch/x86/minios-x86%.lds: arch/x86/minios-x86.lds.S $(CPP) $(ASFLAGS) -P $< -o $@ -$(OBJ_DIR)/$(TARGET): $(OBJS) $(APP_O) arch_lib $(TARGET_ARCH_DIR)/minios-$(MINIOS_TARGET_ARCH).lds +$(OBJ_DIR)/$(TARGET): $(OBJS) $(APP_O) arch_lib $(OBJ_DIR)/$(TARGET_ARCH_DIR)/minios-$(MINIOS_TARGET_ARCH).lds $(LD) -r $(LDFLAGS) $(HEAD_OBJ) $(APP_O) $(OBJS) $(LDARCHLIB) $(LDLIBS) -o $@.o $(OBJCOPY) -w -G $(GLOBAL_PREFIX)* -G _start $@.o $@.o $(LD) $(LDFLAGS) $(LDFLAGS_FINAL) $@.o $(EXTRA_OBJS) -o $@