meson: Test for program_invocation_name
authorMatt Turner <mattst88@gmail.com>
Mon, 29 Jul 2019 20:51:55 +0000 (13:51 -0700)
committerMatt Turner <mattst88@gmail.com>
Tue, 30 Jul 2019 18:49:09 +0000 (11:49 -0700)
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>
meson.build
src/gallium/winsys/virgl/vtest/virgl_vtest_socket.c
src/util/u_process.c

index 8dc431cfc5bebba565ebcf31068c97fe19cac648..c9f96e7135d0320aeae9c5b15fa8158fd4138c10 100644 (file)
@@ -1035,6 +1035,13 @@ foreach f : ['strtof', 'mkostemp', 'posix_memalign', 'timespec_get', 'memfd_crea
   endif
 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
 if cc.links('''
     #define _GNU_SOURCE
index 58005df5595ec5ddbf3fe30a80d93ce5507bccc4..42a58a6dcc1350c6350b3bd38a2fca4c12bff902 100644 (file)
@@ -125,7 +125,7 @@ static int virgl_vtest_send_init(struct virgl_vtest_winsys *vws)
    ret = os_get_process_name(cmdline, 63);
    if (ret == FALSE)
       strcpy(cmdline, nstr);
-#if defined(__GLIBC__) || defined(__CYGWIN__)
+#if defined(HAVE_PROGRAM_INVOCATION_NAME)
    if (!strcmp(cmdline, "shader_runner")) {
       const char *name;
       /* hack to get better testname */
index 94c975df39610f1aec7354a5bbf668bdb33729a0..cbccf48ed016ce6bed794240126d3fcb4142471a 100644 (file)
 
 #undef GET_PROGRAM_NAME
 
-#if (defined(__GNU_LIBRARY__) || defined(__GLIBC__)) && !defined(__UCLIBC__)
-#    if !defined(__GLIBC__) || (__GLIBC__ < 2)
-/* These aren't declared in any libc5 header */
-extern char *program_invocation_name, *program_invocation_short_name;
-#    endif
+#if defined(__linux__) && defined(HAVE_PROGRAM_INVOCATION_NAME)
 static const char *
 __getProgramName()
 {
@@ -79,7 +75,7 @@ __getProgramName()
    return program_invocation_name;
 }
 #    define GET_PROGRAM_NAME() __getProgramName()
-#elif defined(__CYGWIN__)
+#elif defined(HAVE_PROGRAM_INVOCATION_NAME)
 #    define GET_PROGRAM_NAME() program_invocation_short_name
 #elif defined(__FreeBSD__) && (__FreeBSD__ >= 2)
 #    include <osreldate.h>