1# getprogname.m4 - check for getprogname or replacements for it 2 3# Copyright (C) 2016-2022 Free Software Foundation, Inc. 4# This file is free software; the Free Software Foundation 5# gives unlimited permission to copy and/or distribute it, 6# with or without modifications, as long as this notice is preserved. 7 8# serial 4 9 10AC_DEFUN([gl_FUNC_GETPROGNAME], 11[ 12 AC_CHECK_FUNCS_ONCE([getprogname getexecname]) 13 AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) 14 ac_found=0 15 AC_CHECK_DECLS([program_invocation_name], [ac_found=1], [], 16 [#include <errno.h>]) 17 AC_CHECK_DECLS([program_invocation_short_name], [ac_found=1], [], 18 [#include <errno.h>]) 19 AC_CHECK_DECLS([__argv], [ac_found=1], [], [#include <stdlib.h>]) 20 21 # Incur the cost of this test only if none of the above worked. 22 if test $ac_found = 0; then 23 # On OpenBSD 5.1, using the global __progname variable appears to be 24 # the only way to implement getprogname. 25 AC_CACHE_CHECK([whether __progname is defined in default libraries], 26 [gl_cv_var___progname], 27 [ 28 gl_cv_var___progname= 29 AC_LINK_IFELSE( 30 [AC_LANG_PROGRAM( 31 [[extern char *__progname;]], 32 [[return *__progname;]] 33 )], 34 [gl_cv_var___progname=yes] 35 ) 36 ] 37 ) 38 if test "$gl_cv_var___progname" = yes; then 39 AC_DEFINE([HAVE_VAR___PROGNAME], 1, 40 [Define if you have a global __progname variable]) 41 fi 42 fi 43]) 44