jw-pkg/make/install-files.mk

53 lines
1.6 KiB
Makefile
Raw Normal View History

SOURCE_FILES ?= $(filter-out CVS .git Makefile %.done, $(wildcard *))
TARGET_DIR ?= $(PREFIX)/share
SOURCE_BASE ?= .
RELPATHS = $(foreach f,$(SOURCE_FILES),$(shell realpath -s --relative-to $(SOURCE_BASE) $f))
INSTALLED_FILES = $(addprefix $(TARGET_DIR)/,$(RELPATHS))
include $(MODDIR)/make/defs.mk
ifeq ($(DEVELOPMENT),true)
TARGET_OWNER ?= $(shell id -un)
TARGET_GROUP ?= $(shell id -gn)
else
TARGET_OWNER ?= root
TARGET_GROUP ?= root
endif
TARGET_DIR_OWNER ?= $(TARGET_OWNER)
TARGET_DIR_GROUP ?= $(TARGET_GROUP)
TARGET_MODE ?= 440
TARGET_DIR_MODE ?= 770
all:
install: install.done
clean: done.clean
distclean:
done.clean:
$(RM) -f *.done
$(TARGET_DIR)/%: $(SOURCE_BASE)/%
@if [ -d $< ]; then \
echo $(INSTALL) -d -D -m $(TARGET_DIR_MODE) -o $(TARGET_DIR_OWNER) -g $(TARGET_DIR_GROUP) $@ ;\
$(INSTALL) -d -D -m $(TARGET_DIR_MODE) -o $(TARGET_DIR_OWNER) -g $(TARGET_DIR_GROUP) $@ ;\
else \
echo $(INSTALL) -p -D -m $(TARGET_MODE) -o $(TARGET_OWNER) -g $(TARGET_GROUP) $< $@ ;\
$(INSTALL) -p -D -m $(TARGET_MODE) -o $(TARGET_OWNER) -g $(TARGET_GROUP) $< $@ ;\
fi
install.done: $(INSTALLED_FILES)
touch $@
# this used to work fine until an enormous $(SOURCE_FILES) was encountered
install-old.done:
for f in $(SOURCE_FILES); do \
relpath=`realpath -s --relative-to $(SOURCE_BASE) $$f` ;\
if [ -d $$f ]; then \
$(INSTALL) -d -D -m $(TARGET_DIR_MODE) -o $(TARGET_DIR_OWNER) -g $(TARGET_DIR_GROUP) $(TARGET_DIR)/$$relpath ;\
else \
$(INSTALL) -p -D -m $(TARGET_MODE) -o $(TARGET_OWNER) -g $(TARGET_GROUP) $$f $(TARGET_DIR)/$$relpath ;\
fi ;\
done
touch $@