meson: Test for program_invocation_name

program_invocation_name and program_invocation_short_name are both GNU
extensions. I don't believe one can exist without the other, so only
check for program_invocation_name.

Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
This commit is contained in:
Matt Turner
2019-07-29 13:51:55 -07:00
parent 597bddad47
commit c9b86cf526
3 changed files with 10 additions and 7 deletions

View File

@@ -1035,6 +1035,13 @@ foreach f : ['strtof', 'mkostemp', 'posix_memalign', 'timespec_get', 'memfd_crea
endif endif
endforeach endforeach
if cc.has_header_symbol('errno.h', 'program_invocation_name',
args : '-D_GNU_SOURCE')
pre_args += '-DHAVE_PROGRAM_INVOCATION_NAME'
elif with_tools.contains('intel')
error('Intel tools require the program_invocation_name variable')
endif
# strtod locale support # strtod locale support
if cc.links(''' if cc.links('''
#define _GNU_SOURCE #define _GNU_SOURCE

View File

@@ -125,7 +125,7 @@ static int virgl_vtest_send_init(struct virgl_vtest_winsys *vws)
ret = os_get_process_name(cmdline, 63); ret = os_get_process_name(cmdline, 63);
if (ret == FALSE) if (ret == FALSE)
strcpy(cmdline, nstr); strcpy(cmdline, nstr);
#if defined(__GLIBC__) || defined(__CYGWIN__) #if defined(HAVE_PROGRAM_INVOCATION_NAME)
if (!strcmp(cmdline, "shader_runner")) { if (!strcmp(cmdline, "shader_runner")) {
const char *name; const char *name;
/* hack to get better testname */ /* hack to get better testname */

View File

@@ -32,11 +32,7 @@
#undef GET_PROGRAM_NAME #undef GET_PROGRAM_NAME
#if (defined(__GNU_LIBRARY__) || defined(__GLIBC__)) && !defined(__UCLIBC__) #if defined(__linux__) && defined(HAVE_PROGRAM_INVOCATION_NAME)
# if !defined(__GLIBC__) || (__GLIBC__ < 2)
/* These aren't declared in any libc5 header */
extern char *program_invocation_name, *program_invocation_short_name;
# endif
static const char * static const char *
__getProgramName() __getProgramName()
{ {
@@ -79,7 +75,7 @@ __getProgramName()
return program_invocation_name; return program_invocation_name;
} }
# define GET_PROGRAM_NAME() __getProgramName() # define GET_PROGRAM_NAME() __getProgramName()
#elif defined(__CYGWIN__) #elif defined(HAVE_PROGRAM_INVOCATION_NAME)
# define GET_PROGRAM_NAME() program_invocation_short_name # define GET_PROGRAM_NAME() program_invocation_short_name
#elif defined(__FreeBSD__) && (__FreeBSD__ >= 2) #elif defined(__FreeBSD__) && (__FreeBSD__ >= 2)
# include <osreldate.h> # include <osreldate.h>