meson.build: define PATH_MAX where it's missing

PATH_MAX is not POSIX and can be missing on some systems, notably Windows (which
provides MAX_PATH instead tough) and Hurd. Let's define it to a sane value where
missing, i.e.  the one it's defined to in limits.h. Except on Windows where
we're limited to 260.

Fixes https://github.com/xkbcommon/libxkbcommon/issues/180

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
master
Peter Hutterer 2020-08-31 08:36:38 +10:00
parent 4b2a91431b
commit 4d0d509129
2 changed files with 8 additions and 3 deletions

View File

@ -124,6 +124,14 @@ else
endif endif
have_getopt_long = cc.has_header_symbol('getopt.h', 'getopt_long', have_getopt_long = cc.has_header_symbol('getopt.h', 'getopt_long',
prefix: '#define _GNU_SOURCE') prefix: '#define _GNU_SOURCE')
if not cc.has_header_symbol('limits.h', 'PATH_MAX', prefix: system_ext_define)
if host_machine.system() == 'windows'
# see https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file#maximum-path-length-limitation
configh_data.set('PATH_MAX', 260)
else
configh_data.set('PATH_MAX', 4096)
endif
endif
# Silence some security & deprecation warnings on MSVC # Silence some security & deprecation warnings on MSVC
# for some unix/C functions we use. # for some unix/C functions we use.

View File

@ -42,9 +42,6 @@
#ifdef _MSC_VER #ifdef _MSC_VER
#include <io.h> #include <io.h>
#include <windows.h> #include <windows.h>
#ifndef PATH_MAX
#define PATH_MAX MAX_PATH
#endif
#else #else
#include <unistd.h> #include <unistd.h>
#include <termios.h> #include <termios.h>