Principally motivated to handle an issue where these were failing to detect the system properly, on Solaris. Changes: v2: getpagesize check moved to !windows v3: style fixes, pass source files in Eli Schwartz (6): meson: simplify and parameterize various standard function checks meson: check for getpagesize before using it meson: do a full usage-based compile check for sysinfo meson: add a couple missing networking dependencies meson: fix typo in function check that prevented checking for hstrerror meson: only check for missing networking syms on non-Windows; add compat impls meson.build | 117 +++++++++++++++++++++------------------------------- 1 file changed, 48 insertions(+), 69 deletions(-) Range-diff against v2: 1: e137afaff2 ! 1: 037d2f8610 meson: simplify and parameterize various standard function checks @@ Commit message prefixes are used. ## meson.build ## +@@ meson.build: else + build_options_config.set('NO_UNIX_SOCKETS', '1') + endif + +-if not compiler.has_function('pread') +- libgit_c_args += '-DNO_PREAD' +- libgit_sources += 'compat/pread.c' +-endif +- + if host_machine.system() == 'darwin' + libgit_sources += 'compat/precompose_utf8.c' + libgit_c_args += '-DPRECOMPOSE_UNICODE' @@ meson.build: if not compiler.has_member('struct passwd', 'pw_gecos', prefix: '#include <pwd.h libgit_c_args += '-DNO_GECOS_IN_PWENT' endif @@ meson.build: if not compiler.has_member('struct passwd', 'pw_gecos', prefix: '#i -if compiler.has_function('sync_file_range') - libgit_c_args += '-DHAVE_SYNC_FILE_RANGE' -endif -+checkfuncs = [ -+ 'strcasestr', -+ 'memmem', -+ 'strlcpy', -+ # no compat -+ 'strtoull', -+ 'setenv', -+ 'mkdtemp', -+ # no compat -+ 'initgroups', -+] ++checkfuncs = { ++ 'strcasestr' : ['strcasestr.c'], ++ 'memmem' : ['memmem.c'], ++ 'strlcpy' : ['strlcpy.c'], ++ 'strtoull' : [], ++ 'setenv' : ['setenv.c'], ++ 'mkdtemp' : ['mkdtemp.c'], ++ 'initgroups' : [], ++ 'strtoumax' : ['strtoumax.c', 'strtoimax.c'], ++ 'pread' : ['pread.c'], ++} -if not compiler.has_function('strcasestr') - libgit_c_args += '-DNO_STRCASESTR' @@ meson.build: if not compiler.has_member('struct passwd', 'pw_gecos', prefix: '#i +if host_machine.system() == 'windows' + libgit_c_args += '-DUSE_WIN32_MMAP' +else -+ checkfuncs += [ -+ 'mmap', -+ # unsetenv is provided by compat/mingw.c. -+ 'unsetenv', -+ ] ++ checkfuncs += { ++ 'mmap' : ['mmap.c'], ++ # provided by compat/mingw.c. ++ 'unsetenv' : ['unsetenv.c'], ++ } endif -if not compiler.has_function('memmem') - libgit_c_args += '-DNO_MEMMEM' - libgit_sources += 'compat/memmem.c' -endif -+foreach func: checkfuncs ++foreach func, impls : checkfuncs + if not compiler.has_function(func) + libgit_c_args += '-DNO_' + func.to_upper() -+ impl = 'compat/' + func + '.c' -+ if fs.exists(impl) -+ libgit_sources += impl -+ endif ++ foreach impl : impls ++ libgit_sources += 'compat/' + impl ++ endforeach + endif +endforeach @@ meson.build: if not compiler.has_member('struct passwd', 'pw_gecos', prefix: '#i endif if not compiler.has_function('strdup') -@@ meson.build: if not compiler.has_function('strtoumax') - ] +@@ meson.build: if not compiler.has_function('strdup') + libgit_sources += 'compat/strdup.c' endif +-if not compiler.has_function('strtoumax') +- libgit_c_args += '-DNO_STRTOUMAX' +- libgit_sources += [ +- 'compat/strtoumax.c', +- 'compat/strtoimax.c', +- ] +-endif +- -if not compiler.has_function('strtoull') - libgit_c_args += '-DNO_STRTOULL' -endif 2: 3c4918a7b3 ! 2: 291ac2579f meson: check for getpagesize before using it @@ Commit message ## meson.build ## @@ meson.build: else - 'mmap', - # unsetenv is provided by compat/mingw.c. - 'unsetenv', -+ # no compat, is provided by compat/mingw.c -+ 'getpagesize', - ] + 'mmap' : ['mmap.c'], + # provided by compat/mingw.c. + 'unsetenv' : ['unsetenv.c'], ++ # provided by compat/mingw.c. ++ 'getpagesize' : [], + } endif 3: 2c19f04f3e = 3: 9af41a0c23 meson: do a full usage-based compile check for sysinfo 4: e62057094f = 4: 041859574f meson: add a couple missing networking dependencies 5: a6a7bdacd1 = 5: 6e20afb77f meson: fix typo in function check that prevented checking for hstrerror 6: 15f48b8991 = 6: a60c55bb02 meson: only check for missing networking syms on non-Windows; add compat impls -- 2.49.0