On Wednesday 2025-09-24 19:05, Nate Bargmann wrote:

>make[1]: don't know how to make ./hamlibdatetime.h. Stop

Something wanted to make "./hamlibdatetime.h", but you only provide
a rule for "hamlibdatetime.h":

>hamlibdatetime.h: FORCE
>       @if test -x $(top_srcdir)/.git ; then \
>               echo "/* This date time is from the last non-merge commit to 
> Hamlib. */" > $(builddir)/$(@F).tmp ;\
>               echo "#define HAMLIBDATETIME "\"$$(TZ=UTC git 
> --git-dir=$(top_srcdir)/.git log --no-merges 
> --date='format-local:%Y-%m-%dT%H:%M:%SZ SHA=' --format='%cd' -n 1)$$(git 
> --git-dir=$(top_srcdir)/.git log --no-merges -n 1 | head -n 1 | cut -c8-13)\" 
>  >> $(builddir)/$(@F).tmp ;\

The distinction is important.

>BUILT_SOURCES = $(builddir)/hamlibdatetime.h

All targets are already relative to ${builddir},
so explicitly mentioning ${builddir} is wrong for
targets, and redundant in the recipe.

I'm unsure if $(@F) is even supported outside of GNU make.


>hamlibdatetime.h: FORCE
>       @if test -x $(top_srcdir)/.git ; then \
>               echo "/* This date time is from the last non-merge commit to 
> Hamlib. */" > $(builddir)/$(@F).tmp ;\
>               echo "#define HAMLIBDATETIME "\"$$(TZ=UTC git 
> --git-dir=$(top_srcdir)/.git log --no-merges 
> --date='format-local:%Y-%m-%dT%H:%M:%SZ SHA=' --format='%cd' -n 1)$$(git 
> --git-dir=$(top_srcdir)/.git log --no-merges -n 1 | head -n 1 | cut -c8-13)\" 
>  >> $(builddir)/$(@F).tmp ;\
>               diff -qN $(builddir)/$(@F).tmp $(builddir)/$(@F) ; test $$? -eq 
> 0 || { echo "Generating SCS header \"$(builddir)/$(@F)\"" ; mv -f 
> $(builddir)/$(@F).tmp $(builddir)/$(@F) ; } ;\
>               rm -f $(builddir)/$(@F).tmp ;\
>               touch -c $(top_srcdir)/src/version_dll.rc ;\
>       else \
>               test -f $(srcdir)/$(@F) || cp $(srcdir)/$(@F).in 
> $(srcdir)/$(@F) ;\
>       fi

Just write

BUILT_SOURCES = hamlibdatetime.h

        @if test -x $(top_srcdir)/.git ; then \
                echo "/* This date time is from the last non-merge commit to 
Hamlib. */" >$@.tmp ;\
                echo "#define HAMLIBDATETIME "\"$$(TZ=UTC git 
--git-dir=$(top_srcdir)/.git log --no-merges 
--date='format-local:%Y-%m-%dT%H:%M:%SZ SHA=' --format='%cd' -n 1)$$(git 
--git-dir=$(top_srcdir)/.git log --no-merges -n 1 | head -n 1 | cut -c8-13)\"  
>>$@.tmp ;\
                diff -qN $@.tmp $@; test $$? -eq 0 || { echo "Generating SCS 
header \"$@\"" ; mv -f $@.tmp $@; } ;\
                rm -f $@.tmp ;\
#don't!#        touch -c $(top_srcdir)/src/version_dll.rc ;\
        else \
#?!#            test -f $(srcdir)/$(@F) || cp $(srcdir)/$(@F).in 
$(srcdir)/$(@F) ;\
        fi

You should never modify content in ${srcdir} (it could be readonly after all),
so revise those two lines as well.



Reply via email to