[PATCH v3 0/6] meson: miscellaneous system detection fixes
- From
Eli Schwartz <eschwartz@gentoo.org>
- Date
- Apr 25, 2025, 05:25 UTC
- Message-ID
- <20250425053345.17288-1-eschwartz@gentoo.org>
- In-Reply-To
- <20250421175247.240971-1-eschwartz@gentoo.org>
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 implsmeson.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