On Mon, Jan 13, 2025 at 09:59:53AM -0800, Junio C Hamano wrote: > Patrick Steinhardt <ps@xxxxxx> writes: > > +if csprng_backend in ['auto', 'arc4random'] and compiler.has_header_symbol('stdlib.h', 'arc4random_buf', required: csprng_backend == 'arc4random') > > libgit_c_args += '-DHAVE_ARC4RANDOM' > > -elif compiler.has_header_symbol('bsd/stdlib.h', 'arc4random_buf') > > + csprng_backend = 'arc4random' > > +elif csprng_backend in ['auto', 'arc4random_bsd'] and compiler.has_header_symbol('bsd/stdlib.h', 'arc4random_buf', required: csprng_backend == 'arc4random_bsd') > > libgit_c_args += '-DHAVE_ARC4RANDOM_BSD' > > -elif compiler.has_function('getrandom', prefix: '#include <sys/random.h>') > > + csprng_backend = 'arc4random_bsd' > > +elif csprng_backend in ['auto', 'getrandom'] and compiler.has_function('getrandom', prefix: '#include <sys/random.h>', required: csprng_backend == 'getrandom') > > libgit_c_args += '-DHAVE_GETRANDOM' > > -elif compiler.has_function('getentropy', prefix: '#include <unistd.h>') > > + csprng_backend = 'getrandom' > > +elif csprng_backend in ['auto', 'getentropy'] and compiler.has_function('getentropy', prefix: '#include <unistd.h>', required: csprng_backend == 'getentropy') > > libgit_c_args += '-DHAVE_GETENTROPY' > > -elif compiler.has_function('RtlGenRandom', prefix: '#include <windows.h>\n#include <ntsecapi.h>') > > + csprng_backend = 'getentropy' > > +elif csprng_backend in ['auto', 'rtlgenrandom'] and compiler.has_function('RtlGenRandom', prefix: '#include <windows.h>\n#include <ntsecapi.h>', required: csprng_backend == 'rtlgenrandom') > > libgit_c_args += '-DHAVE_RTLGENRANDOM' > > -elif openssl.found() > > + csprng_backend = 'rtlgenrandom' > > +elif csprng_backend in ['auto', 'openssl'] and openssl.found() > > libgit_c_args += '-DHAVE_OPENSSL_CSPRNG' > > + csprng_backend = 'openssl' > > +elif csprng_backend in ['auto', 'urandom'] > > + csprng_backend = 'urandom' > > +else > > + error('Unsupported CSPRNG backend: ' + csprng_backend) > > endif > > IIRC, the precedence order of CPP macros related to csprng backends > were chosen to reflect our preference for more secure and faster > ones over the ones that are less so. Does the above list recreate > the same order, and do we want to somehow make sure future > developers would not break that order without knowing our intention, > saying "when all things are equal, we should sort in alphabetical > order" or something? Yup, it's the exact same order as we have in our Makefile and as in "wrapper.c". And yes, good idea, I'll add a comment. Patrick