On Tue, 18 Mar 2025 10:44:46 GMT, Joachim Kern <[email protected]> wrote:
>> Ups, thank you for giving me the 'S'. But nevertheless if I make with
>> `make all LOG=info` an `$(info generate_export_list:
>> $(generate_export_list))` still shows an empty list
>
> I did not get the SetupExecute to function, even if I strip it down to a
> simple example
>
> $(eval $(call SetupExecute, generate_export_list, \
> INFO := Generating export list for static libs, \
> DEPS := /path/libjli.a, \
> OUTPUT_FILE := /path/libjli.a.exp, \
> COMMAND := $(AR) $(ARFLAGS) -w $$(patsubst %.exp, %, $$@) | $(GREP) -v
> '^.' | $(AWK) '{print $$$$1}' | $(SORT) -u >$$@, \
> ))
>
> $(java): $(STATIC_LIB_FILES) /path/libjli.a.exp
>
> I still get
> `gmake[3]: *** No rule to make target '/path/libjli.a.exp', needed by
> '/path2/java'. Stop.
> `
> Why does make not recognize, that the rule is in my
> `call SetupExecute, generate_export_list,`
> macro?
This is likely due to the missing subshell. There is an enhancement filed to
fix this automatically but it has unfortunately not been prioritized:
https://bugs.openjdk.org/browse/JDK-8233115
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/24062#discussion_r2000909674