diff --git a/make/install-files.mk b/make/install-files.mk index a8da9747..1b5fd67f 100644 --- a/make/install-files.mk +++ b/make/install-files.mk @@ -1,8 +1,12 @@ -LOCAL_FILES ?= $(filter-out CVS .git Makefile %.done, $(wildcard *)) -TARGET_DIR ?= $(PREFIX)/share -TARGET_MODE ?= 440 -TARGET_OWNER ?= root -TARGET_GROUP ?= root +LOCAL_FILES ?= $(filter-out CVS .git Makefile %.done, $(wildcard *)) +TARGET_DIR ?= $(PREFIX)/share +TARGET_MODE ?= 440 +TARGET_OWNER ?= root +TARGET_GROUP ?= root +TARGET_DIR_MODE ?= 770 +TARGET_DIR_OWNER ?= root +TARGET_DIR_GROUP ?= root +SOURCE_BASE ?= . include $(MODDIR)/make/defs.mk @@ -15,7 +19,13 @@ done.clean: rm -f *.done install.done: - mkdir -p $(TARGET_DIR) - $(INSTALL) -m $(TARGET_MODE) -o $(TARGET_OWNER) -g $(TARGET_GROUP) $(LOCAL_FILES) $(TARGET_DIR)/ + for f in $(SOURCE_FILES); do \ + relpath=`realpath $$f --relative-to $(SOURCE_BASE)` ;\ + if [ -d $$f ]; then \ + $(INSTALL) -d -D -m $(TARGET_DIR_MODE) -o $(TARGET_DIR_OWNER) -g $(TARGET_DIR_GROUP) $(TARGET_DIR)/$$relpath ;\ + else \ + $(INSTALL) -D -m $(TARGET_MODE) -o $(TARGET_OWNER) -g $(TARGET_GROUP) $$f $(TARGET_DIR)/$$relpath ;\ + fi ;\ + done touch $@