aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meson.build117
1 files changed, 48 insertions, 69 deletions
diff --git a/meson.build b/meson.build
index 74b10d1a0c..e6e6883bad 100644
--- a/meson.build
+++ b/meson.build
@@ -1086,10 +1086,6 @@ if compiler.has_header('alloca.h')
libgit_c_args += '-DHAVE_ALLOCA_H'
endif
-if compiler.has_header('sys/sysinfo.h')
- libgit_c_args += '-DHAVE_SYSINFO'
-endif
-
# Windows has libgen.h and a basename implementation, but we still need our own
# implementation to threat things like drive prefixes specially.
if host_machine.system() == 'windows' or not compiler.has_header('libgen.h')
@@ -1112,18 +1108,22 @@ if host_machine.system() == 'windows'
networking_dependencies += winsock
endif
else
- libresolv = compiler.find_library('resolv', required: false)
- if libresolv.found()
- networking_dependencies += libresolv
- endif
+ networking_dependencies += [
+ compiler.find_library('nsl', required: false),
+ compiler.find_library('resolv', required: false),
+ compiler.find_library('socket', required: false),
+ ]
endif
libgit_dependencies += networking_dependencies
-foreach symbol : ['inet_ntop', 'inet_pton', 'strerror']
- if not compiler.has_function(symbol, dependencies: networking_dependencies)
- libgit_c_args += '-DNO_' + symbol.to_upper()
- endif
-endforeach
+if host_machine.system() != 'windows'
+ foreach symbol : ['inet_ntop', 'inet_pton', 'hstrerror']
+ if not compiler.has_function(symbol, dependencies: networking_dependencies)
+ libgit_c_args += '-DNO_' + symbol.to_upper()
+ libgit_sources += 'compat/' + symbol + '.c'
+ endif
+ endforeach
+endif
has_ipv6 = compiler.has_function('getaddrinfo', dependencies: networking_dependencies)
if not has_ipv6
@@ -1161,11 +1161,6 @@ 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'
@@ -1300,6 +1295,10 @@ if host_machine.system() != 'windows'
endif
endif
+if compiler.has_member('struct sysinfo', 'totalram', prefix: '#include <sys/sysinfo.h>')
+ libgit_c_args += '-DHAVE_SYSINFO'
+endif
+
if compiler.has_member('struct stat', 'st_mtimespec.tv_nsec', prefix: '#include <sys/stat.h>')
libgit_c_args += '-DUSE_ST_TIMESPEC'
elif not compiler.has_member('struct stat', 'st_mtim.tv_nsec', prefix: '#include <sys/stat.h>')
@@ -1318,23 +1317,41 @@ if not compiler.has_member('struct passwd', 'pw_gecos', prefix: '#include <pwd.h
libgit_c_args += '-DNO_GECOS_IN_PWENT'
endif
-if compiler.has_function('sync_file_range')
- libgit_c_args += '-DHAVE_SYNC_FILE_RANGE'
-endif
+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'
- libgit_sources += 'compat/strcasestr.c'
+if host_machine.system() == 'windows'
+ libgit_c_args += '-DUSE_WIN32_MMAP'
+else
+ checkfuncs += {
+ 'mmap' : ['mmap.c'],
+ # provided by compat/mingw.c.
+ 'unsetenv' : ['unsetenv.c'],
+ # provided by compat/mingw.c.
+ 'getpagesize' : [],
+ }
endif
-if not compiler.has_function('memmem')
- libgit_c_args += '-DNO_MEMMEM'
- libgit_sources += 'compat/memmem.c'
-endif
+foreach func, impls : checkfuncs
+ if not compiler.has_function(func)
+ libgit_c_args += '-DNO_' + func.to_upper()
+ foreach impl : impls
+ libgit_sources += 'compat/' + impl
+ endforeach
+ endif
+endforeach
-if not compiler.has_function('strlcpy')
- libgit_c_args += '-DNO_STRLCPY'
- libgit_sources += 'compat/strlcpy.c'
+if compiler.has_function('sync_file_range')
+ libgit_c_args += '-DHAVE_SYNC_FILE_RANGE'
endif
if not compiler.has_function('strdup')
@@ -1342,53 +1359,15 @@ 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
-
-if not compiler.has_function('setenv')
- libgit_c_args += '-DNO_SETENV'
- libgit_sources += 'compat/setenv.c'
-endif
-
if not compiler.has_function('qsort')
libgit_c_args += '-DINTERNAL_QSORT'
endif
libgit_sources += 'compat/qsort_s.c'
-# unsetenv is provided by compat/mingw.c.
-if host_machine.system() != 'windows' and not compiler.has_function('unsetenv')
- libgit_c_args += '-DNO_UNSETENV'
- libgit_sources += 'compat/unsetenv.c'
-endif
-
-if not compiler.has_function('mkdtemp')
- libgit_c_args += '-DNO_MKDTEMP'
- libgit_sources += 'compat/mkdtemp.c'
-endif
-
-if not compiler.has_function('initgroups')
- libgit_c_args += '-DNO_INITGROUPS'
-endif
-
if compiler.has_function('getdelim')
libgit_c_args += '-DHAVE_GETDELIM'
endif
-if host_machine.system() == 'windows'
- libgit_c_args += '-DUSE_WIN32_MMAP'
-elif not compiler.has_function('mmap')
- libgit_c_args += '-DNO_MMAP'
- libgit_sources += 'compat/mmap.c'
-endif
if compiler.has_function('clock_gettime')
libgit_c_args += '-DHAVE_CLOCK_GETTIME'