I'll take this up with bug-make. Thank you again for bringing it up.
GCC has this:
# write_entries_to_file - writes each entry in a list
# to the specified file. Entries are written in chunks of
# $(write_entries_to_file_split) to accomodate systems with
# severe command-line-length limitations.
# Parameters:
# $(1): variable containing entries to iterate over
# $(2): output file
write_entries_to_file_split = 50
write_entries_to_file = $(shell rm -f $(2) || :) $(shell touch $(2)) \
$(foreach range, \
$(shell i=1; while test $$i -le $(words $(1)); do \
echo $$i; i=`expr $$i + $(write_entries_to_file_split)`; done), \
$(shell echo $(wordlist $(range), \
$(shell expr $(range) + $(write_entries_to_file_split) - 1), $(1)) \
| tr ' ' '\n' >> $(2)))
Maybe you can unfunctionize it and do something like
write_entries_to_file = echo $(DISTFILES) | tr ' ' '\n' > DISTFILES.list
write_entries_to_file_split = 50
write_entries_to_file_gnu = $(shell :>dist.lst) \
$(foreach range, \
$(shell i=1; while test $$i -le $(words $(DISTFILES)); do \
echo $$i; i=`expr $$i + $(write_entries_to_file_split)`; done), \
$(shell echo $(wordlist $(range), \
$(shell expr $(range) + $(write_entries_to_file_split) - 1),
$(DISTFILES)) \
| tr ' ' '\n' >> dist.lst))
# Hoping non-GNU make does nothing with this??? Surely GNU make
# expands unknown function to nothing...
$(eval write_entries_to_file = $$(write_entries_to_file_gnu))
distdir: $(DISTFILES) dist.lst
...
dist_files=`cat dist.lst`
...
DISTFILES.list: Makefile
$(write_entries_to_file)
?
Paolo