I have added such a function as a loadable library before - you might consider that if you can't get it done another way.
https://github.com/tnmurphy/extramake look at hash.c. To try it : cd example && make -f example.mk > I called the function siphash24 because that's what I used - and its' definitely not cryptographic. I had similar needs such as generating unique target names from many inputs where I didn't want the target name to be of unlimited length or to have illegal characters. $(shell) was useless as it is far too slow. I would suggest having $(hash) and $(<hash-alg>) - because then people who care about the algorithm will be able to choose it. FYI loadable modules are quite cool: SOURCES:=proga.c progb.c > OBJECTS:=$(SOURCES:.c=.o) > > > include ../xtra.mk > XTRA_OUTPUTDIR:=. > XTRA_SOURCE:=.. > -load $(XTRA_OUTPUTDIR)/hash$(XTRA_EXT) > > LIBVERSION:=$(siphash24 $(SOURCES)) > LIBNAME:=prog_$(LIBVERSION).so > > $(LIBNAME): $(OBJECTS) > cc -o $@ $^ -shared > > $(OBJECTS) : %.o : %.c > cc -c -o $@ -fPIC $^ > > include ../hash.mk > The above will build the $(siphash24) function (if it's not there already) and then use it. On Wed, 1 Dec 2021 at 12:37, Edward Welbourne <edward.welbou...@qt.io> wrote: > rsbec...@nexbridge.com (1 December 2021 13:08) wrote: > > I would suggest that adding cryptography to GNU Make would limit its > > reach. There are jurisdictions where it is questionable to import > > software containing any cryptography. In addition, there are numerous > > tools for doing what you want. Something along the lines, for example, > > of: > > > > $(shell git hash-object obj) > > > > Is a simple function that is already supported by GNU Make without > > having to introduce cryptography. This would make a lot more sense to > > me to keep hashing out of GNU Make. > > +1. It also leaves it to the make file author to decide which hash > function to use. If make took charge of that decision, it would be > stuck with the hash selected for all time, since it would have no way of > knowing how the resulting hashes have been used by diverse different > make files. An individual project's make files can make the transition > from using one hash to another, since it knows how it's been using the > hashes and how to ensure a clean transition when it comes to change the > hash function used. > > Eddy. > >