Merge branch 'es/meson-cleanup'
Code clean-up for meson-based build infrastructure. * es/meson-cleanup: meson: only check for missing networking syms on non-Windows; add compat impls meson: fix typo in function check that prevented checking for hstrerror meson: add a couple missing networking dependencies meson: do a full usage-based compile check for sysinfo meson: check for getpagesize before using it meson: simplify and parameterize various standard function checks
This commit is contained in:
121
meson.build
121
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,77 +1317,57 @@ if not compiler.has_member('struct passwd', 'pw_gecos', prefix: '#include <pwd.h
|
||||
libgit_c_args += '-DNO_GECOS_IN_PWENT'
|
||||
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 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
|
||||
|
||||
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 compiler.has_function('sync_file_range')
|
||||
libgit_c_args += '-DHAVE_SYNC_FILE_RANGE'
|
||||
endif
|
||||
|
||||
if not compiler.has_function('strcasestr')
|
||||
libgit_c_args += '-DNO_STRCASESTR'
|
||||
libgit_sources += 'compat/strcasestr.c'
|
||||
endif
|
||||
|
||||
if not compiler.has_function('memmem')
|
||||
libgit_c_args += '-DNO_MEMMEM'
|
||||
libgit_sources += 'compat/memmem.c'
|
||||
endif
|
||||
|
||||
if not compiler.has_function('strlcpy')
|
||||
libgit_c_args += '-DNO_STRLCPY'
|
||||
libgit_sources += 'compat/strlcpy.c'
|
||||
endif
|
||||
|
||||
if not compiler.has_function('strdup')
|
||||
libgit_c_args += '-DOVERRIDE_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'
|
||||
|
||||
Reference in New Issue
Block a user