Makefile: uses rsync(1), could this be optional?

From: Steffen Nurpmeso
Date: Sat Jan 15 2022 - 13:46:49 EST


Hello.

As a not-yet-tested low-quality Makefile suggestion, with modern
GNU tools and find(1)'s -printf, wouldn't the following code work
out gracefully in practice? (Not subscribed.)

Thanks for Linux!

--- Makefile.orig 2022-01-15 19:33:59.337393371 +0100
+++ Makefile 2022-01-15 19:34:07.447393217 +0100
@@ -1260,8 +1288,17 @@ export INSTALL_HDR_PATH = $(objtree)/usr
quiet_cmd_headers_install = INSTALL $(INSTALL_HDR_PATH)/include
cmd_headers_install = \
mkdir -p $(INSTALL_HDR_PATH); \
- rsync -mrl --include='*/' --include='*\.h' --exclude='*' \
- usr/include $(INSTALL_HDR_PATH)
+ if command -v rsync; then \
+ rsync -mrl --include='*/' --include='*\.h' --exclude='*' \
+ usr/include $(INSTALL_HDR_PATH);\
+ else \
+ cd usr;\
+ find include/ -type f -name '*.h' -printf '%f %h\n' |\
+ while read f d; do \
+ mkdir -p $(INSTALL_HDR_PATH)/$$d;\
+ cp -P $$d/$$f $(INSTALL_HDR_PATH)/$$d/$$f;\
+ done;\
+ fi

PHONY += headers_install
headers_install: headers

--steffen
|
|Der Kragenbaer, The moon bear,
|der holt sich munter he cheerfully and one by one
|einen nach dem anderen runter wa.ks himself off
|(By Robert Gernhardt)