From: Sylvain Gault <sylvain.gault@gmail.com>

Date: Wed, 19 Feb 2014 05:18:14 +0100
Subject: [PATCH] make install: Don't overwrite up-to-date files

make install used to copy files unconditionnally to their destination.
However, if the destination is used by another Makefile, it will always
see modified files. "install" target now only update the files when they
need to.

Signed-off-by: Sylvain Gault <sylvain.gault@gmail.com>
Signed-off-by: Nigel Croxon <nigel.croxon@hp.com>
This commit is contained in:
Nigel Croxon 2014-03-14 13:47:39 -04:00
parent b32a578573
commit 06744d6927
3 changed files with 55 additions and 26 deletions

View File

@ -49,6 +49,19 @@ OBJS = $(FILES:%=%.o)
TARGETS = crt0-efi-$(ARCH).o libgnuefi.a
INSTALLTARGETS = $(TARGETS)
ifneq (,$(findstring FreeBSD,$(OS)))
ifeq ($(ARCH),x86_64)
INSTALLTARGETS += elf_$(ARCH)_fbsd_efi.lds
else
INSTALLTARGETS += elf_$(ARCH)_efi.lds
endif
else
INSTALLTARGETS += elf_$(ARCH)_efi.lds
endif
LIBDIRINSTALL = $(INSTALLROOT)/$(LIBDIR)
all: $(TARGETS)
libgnuefi.a: $(patsubst %,libgnuefi.a(%),$(OBJS))
@ -56,17 +69,14 @@ libgnuefi.a: $(patsubst %,libgnuefi.a(%),$(OBJS))
clean:
rm -f $(TARGETS) *~ *.o $(OBJS)
install:
mkdir -p $(INSTALLROOT)/$(LIBDIR)
$(INSTALL) -m 644 $(TARGETS) $(INSTALLROOT)/$(LIBDIR)
ifneq (,$(findstring FreeBSD,$(OS)))
ifeq ($(ARCH),x86_64)
$(INSTALL) -m 644 $(SRCDIR)/elf_$(ARCH)_fbsd_efi.lds $(INSTALLROOT)/$(LIBDIR)
else
$(INSTALL) -m 644 $(SRCDIR)/elf_$(ARCH)_efi.lds $(INSTALLROOT)/$(LIBDIR)
endif
else
$(INSTALL) -m 644 $(SRCDIR)/elf_$(ARCH)_efi.lds $(INSTALLROOT)/$(LIBDIR)
endif
$(LIBDIRINSTALL):
mkdir -p $@
.SECONDEXPANSION:
$(LIBDIRINSTALL)/%: % | $$(dir $$@)
$(INSTALL) -m 644 $< $(dir $@)
install: $(addprefix $(LIBDIRINSTALL)/,$(INSTALLTARGETS))
include $(SRCDIR)/../Make.rules

View File

@ -8,20 +8,32 @@ TOPDIR = $(SRCDIR)/..
CDIR=$(TOPDIR)/..
INCDIRINSTALL = $(INSTALLROOT)$(PREFIX)/include/efi
SRCHEADERS = $(wildcard $(SRCDIR)/*.h) \
$(wildcard $(SRCDIR)/protocol/*.h) \
$(wildcard $(SRCDIR)/$(ARCH)/*.h)
ifeq ($(ARCH),ia64)
SRCHEADERS += $(wildcard $(SRCDIR)/protocol/$(ARCH)/*.h)
endif
HEADERS = $(patsubst $(SRCDIR)/%,%,$(SRCHEADERS))
all:
clean:
install:
mkdir -p $(INSTALLROOT)$(PREFIX)/include/efi
mkdir -p $(INSTALLROOT)$(PREFIX)/include/efi/protocol
mkdir -p $(INSTALLROOT)$(PREFIX)/include/efi/$(ARCH)
$(INSTALL) -m 644 $(SRCDIR)/*.h $(INSTALLROOT)$(PREFIX)/include/efi
$(INSTALL) -m 644 $(SRCDIR)/protocol/*.h $(INSTALLROOT)$(PREFIX)/include/efi/protocol
$(INSTALL) -m 644 $(SRCDIR)/$(ARCH)/*.h $(INSTALLROOT)$(PREFIX)/include/efi/$(ARCH)
ifeq ($(ARCH),ia64)
mkdir -p $(INSTALLROOT)$(PREFIX)/include/efi/protocol/ia64
$(INSTALL) -m 644 $(SRCDIR)/protocol/ia64/*.h $(INSTALLROOT)$(PREFIX)/include/efi/protocol/ia64
endif
$(INCDIRINSTALL) \
$(INCDIRINSTALL)/protocol \
$(INCDIRINSTALL)/$(ARCH) \
$(INCDIRINSTALL)/protocol/$(ARCH):
mkdir -p $@
.SECONDEXPANSION:
$(INCDIRINSTALL)/%.h: %.h | $$(dir $$@)
$(INSTALL) -m 644 $< $(dir $@)
install: $(addprefix $(INCDIRINSTALL)/,$(HEADERS))
include $(SRCDIR)/../Make.rules

View File

@ -61,8 +61,11 @@ OBJS = $(FILES:%=%.o)
SUBDIRS = ia32 x86_64 ia64 runtime
LIBDIRINSTALL = $(INSTALLROOT)/$(LIBDIR)
all: libsubdirs libefi.a
.PHONY: libsubdirs
libsubdirs:
for sdir in $(SUBDIRS); do mkdir -p $$sdir; done
@ -71,9 +74,13 @@ libefi.a: $(patsubst %,libefi.a(%),$(OBJS))
clean:
rm -f libefi.a *~ $(OBJS) */*.o
install: libefi.a
mkdir -p $(INSTALLROOT)/$(LIBDIR)
$(INSTALL) -m 644 libefi.a $(INSTALLROOT)/$(LIBDIR)
$(LIBDIRINSTALL):
mkdir -p $@
$(LIBDIRINSTALL)/libefi.a: libefi.a | $(LIBDIRINSTALL)
$(INSTALL) -m 644 $< $(dir $@)
install: $(LIBDIRINSTALL)/libefi.a
include $(SRCDIR)/../Make.rules