jw-pkg/make/install-files.mk
Jan Lindemann b2d6e6f554 Everywhere: Rename MODDIR -> JWBDIR
Rename the omnipresent MODDIR variable to JWBDIR, since that's more to the
point.

Signed-off-by: Jan Lindemann <jan@janware.com>
2019-06-29 21:34:18 +00:00

54 lines
1.8 KiB
Makefile

SOURCE_FILES ?= $(filter-out CVS .git $(LOCAL_MKFILES) %.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 $(JWBDIR)/make/defs.mk
include $(JWBDIR)/make/dev-utils.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 [ -L "$<" -o -f "$<" ]; then \
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) "$<" "$@" ;\
else \
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) "$@" ;\
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 $@