]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
make install only rebuild binaries if they don't exist
authorYann Collet <cyan@fb.com>
Fri, 23 Oct 2020 23:46:49 +0000 (16:46 -0700)
committerYann Collet <cyan@fb.com>
Fri, 23 Oct 2020 23:46:49 +0000 (16:46 -0700)
Now `make` followed by `make install` doesn't rebuild binaries

also : only generated target directories if they don't already exist

lib/Makefile
programs/Makefile

index 39781ddd298249fb9cbf3e45d4a7dc066751eb64..a549b82bdb8a62a00b22aadae4dfafb03a201a1a 100644 (file)
@@ -320,11 +320,11 @@ lib : libzstd.a libzstd
 DEPFLAGS = -MT $@ -MMD -MP -MF
 
 $(ZSTD_DYNLIB_DIR)/%.o : %.c $(ZSTD_DYNLIB_DIR)/%.d | $(ZSTD_DYNLIB_DIR)
-       @echo $@
+       @echo CC $@
        $(COMPILE.c) $(DEPFLAGS) $(ZSTD_DYNLIB_DIR)/$*.d $(OUTPUT_OPTION) $<
 
 $(ZSTD_STATLIB_DIR)/%.o : %.c $(ZSTD_STATLIB_DIR)/%.d | $(ZSTD_STATLIB_DIR)
-       @echo $@
+       @echo CC $@
        $(COMPILE.c) $(DEPFLAGS) $(ZSTD_STATLIB_DIR)/$*.d $(OUTPUT_OPTION) $<
 
 MKDIR ?= mkdir
@@ -421,24 +421,28 @@ install: install-pc install-static install-shared install-includes
        @echo zstd static and shared library installed
 
 install-pc: libzstd.pc
-       $(INSTALL) -d -m 755 $(DESTDIR)$(PKGCONFIGDIR)/
+       [ -e $(DESTDIR)$(PKGCONFIGDIR) ] || $(INSTALL) -d -m 755 $(DESTDIR)$(PKGCONFIGDIR)/
        $(INSTALL_DATA) libzstd.pc $(DESTDIR)$(PKGCONFIGDIR)/
 
-install-static: libzstd.a
+install-static:
+       # only generate libzstd.a if it's not already present
+       [ -e libzstd.a ] || $(MAKE) libzstd.a-release
+       [ -e $(DESTDIR)$(LIBDIR) ] || $(INSTALL) -d -m 755 $(DESTDIR)$(LIBDIR)/
        @echo Installing static library
-       $(INSTALL) -d -m 755 $(DESTDIR)$(LIBDIR)/
        $(INSTALL_DATA) libzstd.a $(DESTDIR)$(LIBDIR)
 
-install-shared: libzstd
+install-shared:
+       # only generate libzstd.so if it's not already present
+       [ -e $(LIBZSTD) ] || $(MAKE) libzstd-release
+       [ -e $(DESTDIR)$(LIBDIR) ] || $(INSTALL) -d -m 755 $(DESTDIR)$(LIBDIR)/
        @echo Installing shared library
-       $(INSTALL) -d -m 755 $(DESTDIR)$(LIBDIR)/
        $(INSTALL_PROGRAM) $(LIBZSTD) $(DESTDIR)$(LIBDIR)
        ln -sf $(LIBZSTD) $(DESTDIR)$(LIBDIR)/libzstd.$(SHARED_EXT_MAJOR)
        ln -sf $(LIBZSTD) $(DESTDIR)$(LIBDIR)/libzstd.$(SHARED_EXT)
 
 install-includes:
+       [ -e $(DESTDIR)$(INCLUDEDIR) ] || $(INSTALL) -d -m 755 $(DESTDIR)$(INCLUDEDIR)/
        @echo Installing includes
-       $(INSTALL) -d -m 755 $(DESTDIR)$(INCLUDEDIR)/
        $(INSTALL_DATA) zstd.h $(DESTDIR)$(INCLUDEDIR)
        $(INSTALL_DATA) common/zstd_errors.h $(DESTDIR)$(INCLUDEDIR)
        $(INSTALL_DATA) dictBuilder/zdict.h $(DESTDIR)$(INCLUDEDIR)
index ce3c83ad0742d1b28ecd9d0ae1618f37fab68c9d..e9ba02cd5e476489007c97387db579c9c576e2e6 100644 (file)
@@ -206,6 +206,7 @@ $(BUILD_DIR)/zstd : $(ZSTD_OBJ)
        @echo "$(ZLIB_MSG)"
        @echo "$(LZMA_MSG)"
        @echo "$(LZ4_MSG)"
+       @echo LINK $@
        $(CC) $(FLAGS) $^ -o $@$(EXT) $(LDFLAGS)
 
 .PHONY: zstd  # must always be run
@@ -371,7 +372,7 @@ preview-man: clean-man man
 DEPFLAGS = -MT $@ -MMD -MP -MF
 
 $(BUILD_DIR)/%.o : %.c $(BUILD_DIR)/%.d | $(BUILD_DIR)
-       @echo $@
+       @echo CC $@
        $(COMPILE.c) $(DEPFLAGS) $(BUILD_DIR)/$*.d $(OUTPUT_OPTION) $<
 
 MKDIR ?= mkdir
@@ -449,9 +450,12 @@ INSTALL_DATA    ?= $(INSTALL) -m 644
 INSTALL_MAN     ?= $(INSTALL_DATA)
 
 .PHONY: install
-install: zstd
+install:
+       # generate zstd only if not already present
+       [ -e zstd ] || $(MAKE) zstd-release
+       [ -e $(DESTDIR)$(BINDIR) ] || $(INSTALL) -d -m 755 $(DESTDIR)$(BINDIR)/
+       [ -e $(DESTDIR)$(MAN1DIR) ] || $(INSTALL) -d -m 755 $(DESTDIR)$(MAN1DIR)/
        @echo Installing binaries
-       $(INSTALL) -d -m 755 $(DESTDIR)$(BINDIR)/ $(DESTDIR)$(MAN1DIR)/
        $(INSTALL_PROGRAM) zstd$(EXT) $(DESTDIR)$(BINDIR)/zstd$(EXT)
        ln -sf zstd$(EXT) $(DESTDIR)$(BINDIR)/zstdcat$(EXT)
        ln -sf zstd$(EXT) $(DESTDIR)$(BINDIR)/unzstd$(EXT)