949 lines
28 KiB
Diff
949 lines
28 KiB
Diff
--- nvptx-tools/configure.ac
|
|
+++ nvptx-tools/configure.ac
|
|
@@ -51,6 +51,7 @@ LIBS="$LIBS -lcuda"
|
|
AC_CHECK_FUNCS([[cuGetErrorName] [cuGetErrorString]])
|
|
AC_CHECK_DECLS([[cuGetErrorName], [cuGetErrorString]],
|
|
[], [], [[#include <cuda.h>]])
|
|
+AC_CHECK_HEADERS(unistd.h sys/stat.h)
|
|
|
|
AC_MSG_CHECKING([for extra programs to build requiring -lcuda])
|
|
NVPTX_RUN=
|
|
--- nvptx-tools/include/libiberty.h
|
|
+++ nvptx-tools/include/libiberty.h
|
|
@@ -390,6 +390,17 @@ extern void hex_init (void);
|
|
/* Save files used for communication between processes. */
|
|
#define PEX_SAVE_TEMPS 0x4
|
|
|
|
+/* Max number of alloca bytes per call before we must switch to malloc.
|
|
+
|
|
+ ?? Swiped from gnulib's regex_internal.h header. Is this actually
|
|
+ the case? This number seems arbitrary, though sane.
|
|
+
|
|
+ The OS usually guarantees only one guard page at the bottom of the stack,
|
|
+ and a page size can be as small as 4096 bytes. So we cannot safely
|
|
+ allocate anything larger than 4096 bytes. Also care for the possibility
|
|
+ of a few compiler-allocated temporary stack slots. */
|
|
+#define MAX_ALLOCA_SIZE 4032
|
|
+
|
|
/* Prepare to execute one or more programs, with standard output of
|
|
each program fed to standard input of the next.
|
|
FLAGS As above.
|
|
--- nvptx-tools/nvptx-as.c
|
|
+++ nvptx-tools/nvptx-as.c
|
|
@@ -30,6 +30,9 @@
|
|
#include <string.h>
|
|
#include <wait.h>
|
|
#include <unistd.h>
|
|
+#ifdef HAVE_SYS_STAT_H
|
|
+#include <sys/stat.h>
|
|
+#endif
|
|
#include <errno.h>
|
|
#define obstack_chunk_alloc malloc
|
|
#define obstack_chunk_free free
|
|
@@ -42,6 +45,38 @@
|
|
|
|
#include "version.h"
|
|
|
|
+#ifndef R_OK
|
|
+#define R_OK 4
|
|
+#define W_OK 2
|
|
+#define X_OK 1
|
|
+#endif
|
|
+
|
|
+#ifndef DIR_SEPARATOR
|
|
+# define DIR_SEPARATOR '/'
|
|
+#endif
|
|
+
|
|
+#if defined (_WIN32) || defined (__MSDOS__) \
|
|
+ || defined (__DJGPP__) || defined (__OS2__)
|
|
+# define HAVE_DOS_BASED_FILE_SYSTEM
|
|
+# define HAVE_HOST_EXECUTABLE_SUFFIX
|
|
+# define HOST_EXECUTABLE_SUFFIX ".exe"
|
|
+# ifndef DIR_SEPARATOR_2
|
|
+# define DIR_SEPARATOR_2 '\\'
|
|
+# endif
|
|
+# define PATH_SEPARATOR ';'
|
|
+#else
|
|
+# define PATH_SEPARATOR ':'
|
|
+#endif
|
|
+
|
|
+#ifndef DIR_SEPARATOR_2
|
|
+# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
|
|
+#else
|
|
+# define IS_DIR_SEPARATOR(ch) \
|
|
+ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
|
|
+#endif
|
|
+
|
|
+#define DIR_UP ".."
|
|
+
|
|
static const char *outname = NULL;
|
|
|
|
static void __attribute__ ((format (printf, 1, 2)))
|
|
@@ -816,7 +851,7 @@ traverse (void **slot, void *data)
|
|
}
|
|
|
|
static void
|
|
-process (FILE *in, FILE *out)
|
|
+process (FILE *in, FILE *out, int verify, const char *outname)
|
|
{
|
|
symbol_table = htab_create (500, hash_string_hash, hash_string_eq,
|
|
NULL);
|
|
@@ -824,6 +859,18 @@ process (FILE *in, FILE *out)
|
|
const char *input = read_file (in);
|
|
Token *tok = tokenize (input);
|
|
|
|
+ /* By default, when ptxas is not in PATH, do minimalistic verification,
|
|
+ just require that the first non-comment directive is .version. */
|
|
+ if (verify < 0)
|
|
+ {
|
|
+ size_t i;
|
|
+ for (i = 0; tok[i].kind == K_comment; i++)
|
|
+ ;
|
|
+ if (tok[i].kind != K_dotted || !is_keyword (&tok[i], "version"))
|
|
+ fatal_error ("missing .version directive at start of file '%s'",
|
|
+ outname);
|
|
+ }
|
|
+
|
|
do
|
|
tok = parse_file (tok);
|
|
while (tok->kind);
|
|
@@ -897,9 +944,83 @@ fork_execute (const char *prog, char *const *argv)
|
|
do_wait (prog, pex);
|
|
}
|
|
|
|
+/* Determine if progname is available in PATH. */
|
|
+static bool
|
|
+program_available (const char *progname)
|
|
+{
|
|
+ char *temp = getenv ("PATH");
|
|
+ if (temp)
|
|
+ {
|
|
+ char *startp, *endp, *nstore, *alloc_ptr = NULL;
|
|
+ size_t prefixlen = strlen (temp) + 1;
|
|
+ size_t len;
|
|
+ if (prefixlen < 2)
|
|
+ prefixlen = 2;
|
|
+
|
|
+ len = prefixlen + strlen (progname) + 1;
|
|
+#ifdef HAVE_HOST_EXECUTABLE_SUFFIX
|
|
+ len += strlen (HOST_EXECUTABLE_SUFFIX);
|
|
+#endif
|
|
+ if (len < MAX_ALLOCA_SIZE)
|
|
+ nstore = (char *) alloca (len);
|
|
+ else
|
|
+ alloc_ptr = nstore = (char *) malloc (len);
|
|
+
|
|
+ startp = endp = temp;
|
|
+ while (1)
|
|
+ {
|
|
+ if (*endp == PATH_SEPARATOR || *endp == 0)
|
|
+ {
|
|
+ if (endp == startp)
|
|
+ {
|
|
+ nstore[0] = '.';
|
|
+ nstore[1] = DIR_SEPARATOR;
|
|
+ nstore[2] = '\0';
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ memcpy (nstore, startp, endp - startp);
|
|
+ if (! IS_DIR_SEPARATOR (endp[-1]))
|
|
+ {
|
|
+ nstore[endp - startp] = DIR_SEPARATOR;
|
|
+ nstore[endp - startp + 1] = 0;
|
|
+ }
|
|
+ else
|
|
+ nstore[endp - startp] = 0;
|
|
+ }
|
|
+ strcat (nstore, progname);
|
|
+ if (! access (nstore, X_OK)
|
|
+#ifdef HAVE_HOST_EXECUTABLE_SUFFIX
|
|
+ || ! access (strcat (nstore, HOST_EXECUTABLE_SUFFIX), X_OK)
|
|
+#endif
|
|
+ )
|
|
+ {
|
|
+#if defined (HAVE_SYS_STAT_H) && defined (S_ISREG)
|
|
+ struct stat st;
|
|
+ if (stat (nstore, &st) >= 0 && S_ISREG (st.st_mode))
|
|
+#endif
|
|
+ {
|
|
+ free (alloc_ptr);
|
|
+ return true;
|
|
+ }
|
|
+ }
|
|
+
|
|
+ if (*endp == 0)
|
|
+ break;
|
|
+ endp = startp = endp + 1;
|
|
+ }
|
|
+ else
|
|
+ endp++;
|
|
+ }
|
|
+ free (alloc_ptr);
|
|
+ }
|
|
+ return false;
|
|
+}
|
|
+
|
|
static struct option long_options[] = {
|
|
{"traditional-format", no_argument, 0, 0 },
|
|
{"save-temps", no_argument, 0, 0 },
|
|
+ {"verify", no_argument, 0, 0 },
|
|
{"no-verify", no_argument, 0, 0 },
|
|
{"help", no_argument, 0, 'h' },
|
|
{"version", no_argument, 0, 'V' },
|
|
@@ -912,7 +1033,7 @@ main (int argc, char **argv)
|
|
FILE *in = stdin;
|
|
FILE *out = stdout;
|
|
bool verbose __attribute__((unused)) = false;
|
|
- bool verify = true;
|
|
+ int verify = -1;
|
|
const char *smver = "sm_30";
|
|
|
|
int o;
|
|
@@ -923,7 +1044,9 @@ main (int argc, char **argv)
|
|
{
|
|
case 0:
|
|
if (option_index == 2)
|
|
- verify = false;
|
|
+ verify = 1;
|
|
+ else if (option_index == 3)
|
|
+ verify = 0;
|
|
break;
|
|
case 'v':
|
|
verbose = true;
|
|
@@ -948,7 +1071,9 @@ Usage: nvptx-none-as [option...] [asmfile]\n\
|
|
Options:\n\
|
|
-o FILE Write output to FILE\n\
|
|
-v Be verbose\n\
|
|
+ --verify Do verify output is acceptable to ptxas\n\
|
|
--no-verify Do not verify output is acceptable to ptxas\n\
|
|
+ --verify Do verify output is acceptable to ptxas\n\
|
|
--help Print this help and exit\n\
|
|
--version Print version number and exit\n\
|
|
\n\
|
|
@@ -983,11 +1108,17 @@ This program has absolutely no warranty.\n",
|
|
if (!in)
|
|
fatal_error ("cannot open input ptx file");
|
|
|
|
- process (in, out);
|
|
- if (outname)
|
|
+ if (outname == NULL)
|
|
+ verify = 0;
|
|
+ else if (verify == -1)
|
|
+ if (program_available ("ptxas"))
|
|
+ verify = 1;
|
|
+
|
|
+ process (in, out, verify, outname);
|
|
+ if (outname)
|
|
fclose (out);
|
|
|
|
- if (verify && outname)
|
|
+ if (verify > 0)
|
|
{
|
|
struct obstack argv_obstack;
|
|
obstack_init (&argv_obstack);
|
|
--- nvptx-tools/configure
|
|
+++ nvptx-tools/configure
|
|
@@ -168,7 +168,8 @@ test x\$exitcode = x0 || exit 1"
|
|
as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
|
|
as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
|
|
eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
|
|
- test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1"
|
|
+ test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
|
|
+test \$(( 1 + 1 )) = 2 || exit 1"
|
|
if (eval "$as_required") 2>/dev/null; then :
|
|
as_have_required=yes
|
|
else
|
|
@@ -552,11 +553,50 @@ PACKAGE_URL=
|
|
|
|
ac_unique_file="nvptx-tools"
|
|
ac_unique_file="nvptx-as.c"
|
|
+# Factoring default headers for most tests.
|
|
+ac_includes_default="\
|
|
+#include <stdio.h>
|
|
+#ifdef HAVE_SYS_TYPES_H
|
|
+# include <sys/types.h>
|
|
+#endif
|
|
+#ifdef HAVE_SYS_STAT_H
|
|
+# include <sys/stat.h>
|
|
+#endif
|
|
+#ifdef STDC_HEADERS
|
|
+# include <stdlib.h>
|
|
+# include <stddef.h>
|
|
+#else
|
|
+# ifdef HAVE_STDLIB_H
|
|
+# include <stdlib.h>
|
|
+# endif
|
|
+#endif
|
|
+#ifdef HAVE_STRING_H
|
|
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
|
|
+# include <memory.h>
|
|
+# endif
|
|
+# include <string.h>
|
|
+#endif
|
|
+#ifdef HAVE_STRINGS_H
|
|
+# include <strings.h>
|
|
+#endif
|
|
+#ifdef HAVE_INTTYPES_H
|
|
+# include <inttypes.h>
|
|
+#endif
|
|
+#ifdef HAVE_STDINT_H
|
|
+# include <stdint.h>
|
|
+#endif
|
|
+#ifdef HAVE_UNISTD_H
|
|
+# include <unistd.h>
|
|
+#endif"
|
|
+
|
|
enable_option_checking=no
|
|
ac_subst_vars='LTLIBOBJS
|
|
LIBOBJS
|
|
subdirs
|
|
NVPTX_RUN
|
|
+EGREP
|
|
+GREP
|
|
+CPP
|
|
CUDA_DRIVER_LDFLAGS
|
|
CUDA_DRIVER_CPPFLAGS
|
|
AR
|
|
@@ -635,7 +675,8 @@ LIBS
|
|
CPPFLAGS
|
|
CXX
|
|
CXXFLAGS
|
|
-CCC'
|
|
+CCC
|
|
+CPP'
|
|
ac_subdirs_all='libiberty'
|
|
|
|
# Initialize some variables set by options.
|
|
@@ -1267,6 +1308,7 @@ Some influential environment variables:
|
|
you have headers in a nonstandard directory <include dir>
|
|
CXX C++ compiler command
|
|
CXXFLAGS C++ compiler flags
|
|
+ CPP C preprocessor
|
|
|
|
Use these variables to override the choices made by `configure' or to help
|
|
it to find libraries and programs with nonstandard names/locations.
|
|
@@ -1575,6 +1617,203 @@ $as_echo "$ac_res" >&6; }
|
|
eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
|
|
|
|
} # ac_fn_c_check_decl
|
|
+
|
|
+# ac_fn_c_try_cpp LINENO
|
|
+# ----------------------
|
|
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
|
|
+ac_fn_c_try_cpp ()
|
|
+{
|
|
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
|
|
+ if { { ac_try="$ac_cpp conftest.$ac_ext"
|
|
+case "(($ac_try" in
|
|
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
|
|
+ *) ac_try_echo=$ac_try;;
|
|
+esac
|
|
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
|
|
+$as_echo "$ac_try_echo"; } >&5
|
|
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
|
|
+ ac_status=$?
|
|
+ if test -s conftest.err; then
|
|
+ grep -v '^ *+' conftest.err >conftest.er1
|
|
+ cat conftest.er1 >&5
|
|
+ mv -f conftest.er1 conftest.err
|
|
+ fi
|
|
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
|
|
+ test $ac_status = 0; } >/dev/null && {
|
|
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
|
|
+ test ! -s conftest.err
|
|
+ }; then :
|
|
+ ac_retval=0
|
|
+else
|
|
+ $as_echo "$as_me: failed program was:" >&5
|
|
+sed 's/^/| /' conftest.$ac_ext >&5
|
|
+
|
|
+ ac_retval=1
|
|
+fi
|
|
+ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
|
|
+ return $ac_retval
|
|
+
|
|
+} # ac_fn_c_try_cpp
|
|
+
|
|
+# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
|
|
+# -------------------------------------------------------
|
|
+# Tests whether HEADER exists, giving a warning if it cannot be compiled using
|
|
+# the include files in INCLUDES and setting the cache variable VAR
|
|
+# accordingly.
|
|
+ac_fn_c_check_header_mongrel ()
|
|
+{
|
|
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
|
|
+ if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
|
|
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
|
|
+$as_echo_n "checking for $2... " >&6; }
|
|
+if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
|
|
+ $as_echo_n "(cached) " >&6
|
|
+fi
|
|
+eval ac_res=\$$3
|
|
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
|
|
+$as_echo "$ac_res" >&6; }
|
|
+else
|
|
+ # Is the header compilable?
|
|
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
|
|
+$as_echo_n "checking $2 usability... " >&6; }
|
|
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
|
+/* end confdefs.h. */
|
|
+$4
|
|
+#include <$2>
|
|
+_ACEOF
|
|
+if ac_fn_c_try_compile "$LINENO"; then :
|
|
+ ac_header_compiler=yes
|
|
+else
|
|
+ ac_header_compiler=no
|
|
+fi
|
|
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
|
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
|
|
+$as_echo "$ac_header_compiler" >&6; }
|
|
+
|
|
+# Is the header present?
|
|
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
|
|
+$as_echo_n "checking $2 presence... " >&6; }
|
|
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
|
+/* end confdefs.h. */
|
|
+#include <$2>
|
|
+_ACEOF
|
|
+if ac_fn_c_try_cpp "$LINENO"; then :
|
|
+ ac_header_preproc=yes
|
|
+else
|
|
+ ac_header_preproc=no
|
|
+fi
|
|
+rm -f conftest.err conftest.$ac_ext
|
|
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
|
|
+$as_echo "$ac_header_preproc" >&6; }
|
|
+
|
|
+# So? What about this header?
|
|
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
|
|
+ yes:no: )
|
|
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
|
|
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
|
|
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
|
|
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
|
|
+ ;;
|
|
+ no:yes:* )
|
|
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
|
|
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
|
|
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5
|
|
+$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;}
|
|
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
|
|
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
|
|
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5
|
|
+$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;}
|
|
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
|
|
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
|
|
+ ;;
|
|
+esac
|
|
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
|
|
+$as_echo_n "checking for $2... " >&6; }
|
|
+if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
|
|
+ $as_echo_n "(cached) " >&6
|
|
+else
|
|
+ eval "$3=\$ac_header_compiler"
|
|
+fi
|
|
+eval ac_res=\$$3
|
|
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
|
|
+$as_echo "$ac_res" >&6; }
|
|
+fi
|
|
+ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
|
|
+
|
|
+} # ac_fn_c_check_header_mongrel
|
|
+
|
|
+# ac_fn_c_try_run LINENO
|
|
+# ----------------------
|
|
+# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
|
|
+# that executables *can* be run.
|
|
+ac_fn_c_try_run ()
|
|
+{
|
|
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
|
|
+ if { { ac_try="$ac_link"
|
|
+case "(($ac_try" in
|
|
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
|
|
+ *) ac_try_echo=$ac_try;;
|
|
+esac
|
|
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
|
|
+$as_echo "$ac_try_echo"; } >&5
|
|
+ (eval "$ac_link") 2>&5
|
|
+ ac_status=$?
|
|
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
|
|
+ test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
|
|
+ { { case "(($ac_try" in
|
|
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
|
|
+ *) ac_try_echo=$ac_try;;
|
|
+esac
|
|
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
|
|
+$as_echo "$ac_try_echo"; } >&5
|
|
+ (eval "$ac_try") 2>&5
|
|
+ ac_status=$?
|
|
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
|
|
+ test $ac_status = 0; }; }; then :
|
|
+ ac_retval=0
|
|
+else
|
|
+ $as_echo "$as_me: program exited with status $ac_status" >&5
|
|
+ $as_echo "$as_me: failed program was:" >&5
|
|
+sed 's/^/| /' conftest.$ac_ext >&5
|
|
+
|
|
+ ac_retval=$ac_status
|
|
+fi
|
|
+ rm -rf conftest.dSYM conftest_ipa8_conftest.oo
|
|
+ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
|
|
+ return $ac_retval
|
|
+
|
|
+} # ac_fn_c_try_run
|
|
+
|
|
+# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
|
|
+# -------------------------------------------------------
|
|
+# Tests whether HEADER exists and can be compiled using the include files in
|
|
+# INCLUDES, setting the cache variable VAR accordingly.
|
|
+ac_fn_c_check_header_compile ()
|
|
+{
|
|
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
|
|
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
|
|
+$as_echo_n "checking for $2... " >&6; }
|
|
+if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
|
|
+ $as_echo_n "(cached) " >&6
|
|
+else
|
|
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
|
+/* end confdefs.h. */
|
|
+$4
|
|
+#include <$2>
|
|
+_ACEOF
|
|
+if ac_fn_c_try_compile "$LINENO"; then :
|
|
+ eval "$3=yes"
|
|
+else
|
|
+ eval "$3=no"
|
|
+fi
|
|
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
|
+fi
|
|
+eval ac_res=\$$3
|
|
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
|
|
+$as_echo "$ac_res" >&6; }
|
|
+ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
|
|
+
|
|
+} # ac_fn_c_check_header_compile
|
|
cat >config.log <<_ACEOF
|
|
This file contains any messages produced by compilers while
|
|
running configure, to aid debugging if configure makes a mistake.
|
|
@@ -3284,6 +3523,418 @@ cat >>confdefs.h <<_ACEOF
|
|
#define HAVE_DECL_CUGETERRORSTRING $ac_have_decl
|
|
_ACEOF
|
|
|
|
+ac_ext=c
|
|
+ac_cpp='$CPP $CPPFLAGS'
|
|
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
|
|
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
|
|
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
|
|
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
|
|
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
|
|
+# On Suns, sometimes $CPP names a directory.
|
|
+if test -n "$CPP" && test -d "$CPP"; then
|
|
+ CPP=
|
|
+fi
|
|
+if test -z "$CPP"; then
|
|
+ if test "${ac_cv_prog_CPP+set}" = set; then :
|
|
+ $as_echo_n "(cached) " >&6
|
|
+else
|
|
+ # Double quotes because CPP needs to be expanded
|
|
+ for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
|
|
+ do
|
|
+ ac_preproc_ok=false
|
|
+for ac_c_preproc_warn_flag in '' yes
|
|
+do
|
|
+ # Use a header file that comes with gcc, so configuring glibc
|
|
+ # with a fresh cross-compiler works.
|
|
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
|
|
+ # <limits.h> exists even on freestanding compilers.
|
|
+ # On the NeXT, cc -E runs the code through the compiler's parser,
|
|
+ # not just through cpp. "Syntax error" is here to catch this case.
|
|
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
|
+/* end confdefs.h. */
|
|
+#ifdef __STDC__
|
|
+# include <limits.h>
|
|
+#else
|
|
+# include <assert.h>
|
|
+#endif
|
|
+ Syntax error
|
|
+_ACEOF
|
|
+if ac_fn_c_try_cpp "$LINENO"; then :
|
|
+
|
|
+else
|
|
+ # Broken: fails on valid input.
|
|
+continue
|
|
+fi
|
|
+rm -f conftest.err conftest.$ac_ext
|
|
+
|
|
+ # OK, works on sane cases. Now check whether nonexistent headers
|
|
+ # can be detected and how.
|
|
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
|
+/* end confdefs.h. */
|
|
+#include <ac_nonexistent.h>
|
|
+_ACEOF
|
|
+if ac_fn_c_try_cpp "$LINENO"; then :
|
|
+ # Broken: success on invalid input.
|
|
+continue
|
|
+else
|
|
+ # Passes both tests.
|
|
+ac_preproc_ok=:
|
|
+break
|
|
+fi
|
|
+rm -f conftest.err conftest.$ac_ext
|
|
+
|
|
+done
|
|
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
|
|
+rm -f conftest.err conftest.$ac_ext
|
|
+if $ac_preproc_ok; then :
|
|
+ break
|
|
+fi
|
|
+
|
|
+ done
|
|
+ ac_cv_prog_CPP=$CPP
|
|
+
|
|
+fi
|
|
+ CPP=$ac_cv_prog_CPP
|
|
+else
|
|
+ ac_cv_prog_CPP=$CPP
|
|
+fi
|
|
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
|
|
+$as_echo "$CPP" >&6; }
|
|
+ac_preproc_ok=false
|
|
+for ac_c_preproc_warn_flag in '' yes
|
|
+do
|
|
+ # Use a header file that comes with gcc, so configuring glibc
|
|
+ # with a fresh cross-compiler works.
|
|
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
|
|
+ # <limits.h> exists even on freestanding compilers.
|
|
+ # On the NeXT, cc -E runs the code through the compiler's parser,
|
|
+ # not just through cpp. "Syntax error" is here to catch this case.
|
|
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
|
+/* end confdefs.h. */
|
|
+#ifdef __STDC__
|
|
+# include <limits.h>
|
|
+#else
|
|
+# include <assert.h>
|
|
+#endif
|
|
+ Syntax error
|
|
+_ACEOF
|
|
+if ac_fn_c_try_cpp "$LINENO"; then :
|
|
+
|
|
+else
|
|
+ # Broken: fails on valid input.
|
|
+continue
|
|
+fi
|
|
+rm -f conftest.err conftest.$ac_ext
|
|
+
|
|
+ # OK, works on sane cases. Now check whether nonexistent headers
|
|
+ # can be detected and how.
|
|
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
|
+/* end confdefs.h. */
|
|
+#include <ac_nonexistent.h>
|
|
+_ACEOF
|
|
+if ac_fn_c_try_cpp "$LINENO"; then :
|
|
+ # Broken: success on invalid input.
|
|
+continue
|
|
+else
|
|
+ # Passes both tests.
|
|
+ac_preproc_ok=:
|
|
+break
|
|
+fi
|
|
+rm -f conftest.err conftest.$ac_ext
|
|
+
|
|
+done
|
|
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
|
|
+rm -f conftest.err conftest.$ac_ext
|
|
+if $ac_preproc_ok; then :
|
|
+
|
|
+else
|
|
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
|
|
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
|
|
+as_fn_error "C preprocessor \"$CPP\" fails sanity check
|
|
+See \`config.log' for more details." "$LINENO" 5; }
|
|
+fi
|
|
+
|
|
+ac_ext=c
|
|
+ac_cpp='$CPP $CPPFLAGS'
|
|
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
|
|
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
|
|
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
|
|
+
|
|
+
|
|
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
|
|
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
|
|
+if test "${ac_cv_path_GREP+set}" = set; then :
|
|
+ $as_echo_n "(cached) " >&6
|
|
+else
|
|
+ if test -z "$GREP"; then
|
|
+ ac_path_GREP_found=false
|
|
+ # Loop through the user's path and test for each of PROGNAME-LIST
|
|
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
|
|
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
|
|
+do
|
|
+ IFS=$as_save_IFS
|
|
+ test -z "$as_dir" && as_dir=.
|
|
+ for ac_prog in grep ggrep; do
|
|
+ for ac_exec_ext in '' $ac_executable_extensions; do
|
|
+ ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
|
|
+ { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
|
|
+# Check for GNU ac_path_GREP and select it if it is found.
|
|
+ # Check for GNU $ac_path_GREP
|
|
+case `"$ac_path_GREP" --version 2>&1` in
|
|
+*GNU*)
|
|
+ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
|
|
+*)
|
|
+ ac_count=0
|
|
+ $as_echo_n 0123456789 >"conftest.in"
|
|
+ while :
|
|
+ do
|
|
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
|
|
+ mv "conftest.tmp" "conftest.in"
|
|
+ cp "conftest.in" "conftest.nl"
|
|
+ $as_echo 'GREP' >> "conftest.nl"
|
|
+ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
|
|
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
|
|
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
|
|
+ if test $ac_count -gt ${ac_path_GREP_max-0}; then
|
|
+ # Best one so far, save it but keep looking for a better one
|
|
+ ac_cv_path_GREP="$ac_path_GREP"
|
|
+ ac_path_GREP_max=$ac_count
|
|
+ fi
|
|
+ # 10*(2^10) chars as input seems more than enough
|
|
+ test $ac_count -gt 10 && break
|
|
+ done
|
|
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
|
|
+esac
|
|
+
|
|
+ $ac_path_GREP_found && break 3
|
|
+ done
|
|
+ done
|
|
+ done
|
|
+IFS=$as_save_IFS
|
|
+ if test -z "$ac_cv_path_GREP"; then
|
|
+ as_fn_error "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
|
|
+ fi
|
|
+else
|
|
+ ac_cv_path_GREP=$GREP
|
|
+fi
|
|
+
|
|
+fi
|
|
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
|
|
+$as_echo "$ac_cv_path_GREP" >&6; }
|
|
+ GREP="$ac_cv_path_GREP"
|
|
+
|
|
+
|
|
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
|
|
+$as_echo_n "checking for egrep... " >&6; }
|
|
+if test "${ac_cv_path_EGREP+set}" = set; then :
|
|
+ $as_echo_n "(cached) " >&6
|
|
+else
|
|
+ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
|
|
+ then ac_cv_path_EGREP="$GREP -E"
|
|
+ else
|
|
+ if test -z "$EGREP"; then
|
|
+ ac_path_EGREP_found=false
|
|
+ # Loop through the user's path and test for each of PROGNAME-LIST
|
|
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
|
|
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
|
|
+do
|
|
+ IFS=$as_save_IFS
|
|
+ test -z "$as_dir" && as_dir=.
|
|
+ for ac_prog in egrep; do
|
|
+ for ac_exec_ext in '' $ac_executable_extensions; do
|
|
+ ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
|
|
+ { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
|
|
+# Check for GNU ac_path_EGREP and select it if it is found.
|
|
+ # Check for GNU $ac_path_EGREP
|
|
+case `"$ac_path_EGREP" --version 2>&1` in
|
|
+*GNU*)
|
|
+ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
|
|
+*)
|
|
+ ac_count=0
|
|
+ $as_echo_n 0123456789 >"conftest.in"
|
|
+ while :
|
|
+ do
|
|
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
|
|
+ mv "conftest.tmp" "conftest.in"
|
|
+ cp "conftest.in" "conftest.nl"
|
|
+ $as_echo 'EGREP' >> "conftest.nl"
|
|
+ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
|
|
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
|
|
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
|
|
+ if test $ac_count -gt ${ac_path_EGREP_max-0}; then
|
|
+ # Best one so far, save it but keep looking for a better one
|
|
+ ac_cv_path_EGREP="$ac_path_EGREP"
|
|
+ ac_path_EGREP_max=$ac_count
|
|
+ fi
|
|
+ # 10*(2^10) chars as input seems more than enough
|
|
+ test $ac_count -gt 10 && break
|
|
+ done
|
|
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
|
|
+esac
|
|
+
|
|
+ $ac_path_EGREP_found && break 3
|
|
+ done
|
|
+ done
|
|
+ done
|
|
+IFS=$as_save_IFS
|
|
+ if test -z "$ac_cv_path_EGREP"; then
|
|
+ as_fn_error "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
|
|
+ fi
|
|
+else
|
|
+ ac_cv_path_EGREP=$EGREP
|
|
+fi
|
|
+
|
|
+ fi
|
|
+fi
|
|
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
|
|
+$as_echo "$ac_cv_path_EGREP" >&6; }
|
|
+ EGREP="$ac_cv_path_EGREP"
|
|
+
|
|
+
|
|
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
|
|
+$as_echo_n "checking for ANSI C header files... " >&6; }
|
|
+if test "${ac_cv_header_stdc+set}" = set; then :
|
|
+ $as_echo_n "(cached) " >&6
|
|
+else
|
|
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
|
+/* end confdefs.h. */
|
|
+#include <stdlib.h>
|
|
+#include <stdarg.h>
|
|
+#include <string.h>
|
|
+#include <float.h>
|
|
+
|
|
+int
|
|
+main ()
|
|
+{
|
|
+
|
|
+ ;
|
|
+ return 0;
|
|
+}
|
|
+_ACEOF
|
|
+if ac_fn_c_try_compile "$LINENO"; then :
|
|
+ ac_cv_header_stdc=yes
|
|
+else
|
|
+ ac_cv_header_stdc=no
|
|
+fi
|
|
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
|
+
|
|
+if test $ac_cv_header_stdc = yes; then
|
|
+ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
|
|
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
|
+/* end confdefs.h. */
|
|
+#include <string.h>
|
|
+
|
|
+_ACEOF
|
|
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
|
|
+ $EGREP "memchr" >/dev/null 2>&1; then :
|
|
+
|
|
+else
|
|
+ ac_cv_header_stdc=no
|
|
+fi
|
|
+rm -f conftest*
|
|
+
|
|
+fi
|
|
+
|
|
+if test $ac_cv_header_stdc = yes; then
|
|
+ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
|
|
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
|
+/* end confdefs.h. */
|
|
+#include <stdlib.h>
|
|
+
|
|
+_ACEOF
|
|
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
|
|
+ $EGREP "free" >/dev/null 2>&1; then :
|
|
+
|
|
+else
|
|
+ ac_cv_header_stdc=no
|
|
+fi
|
|
+rm -f conftest*
|
|
+
|
|
+fi
|
|
+
|
|
+if test $ac_cv_header_stdc = yes; then
|
|
+ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
|
|
+ if test "$cross_compiling" = yes; then :
|
|
+ :
|
|
+else
|
|
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
|
+/* end confdefs.h. */
|
|
+#include <ctype.h>
|
|
+#include <stdlib.h>
|
|
+#if ((' ' & 0x0FF) == 0x020)
|
|
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
|
|
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
|
|
+#else
|
|
+# define ISLOWER(c) \
|
|
+ (('a' <= (c) && (c) <= 'i') \
|
|
+ || ('j' <= (c) && (c) <= 'r') \
|
|
+ || ('s' <= (c) && (c) <= 'z'))
|
|
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
|
|
+#endif
|
|
+
|
|
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
|
|
+int
|
|
+main ()
|
|
+{
|
|
+ int i;
|
|
+ for (i = 0; i < 256; i++)
|
|
+ if (XOR (islower (i), ISLOWER (i))
|
|
+ || toupper (i) != TOUPPER (i))
|
|
+ return 2;
|
|
+ return 0;
|
|
+}
|
|
+_ACEOF
|
|
+if ac_fn_c_try_run "$LINENO"; then :
|
|
+
|
|
+else
|
|
+ ac_cv_header_stdc=no
|
|
+fi
|
|
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
|
|
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
|
|
+fi
|
|
+
|
|
+fi
|
|
+fi
|
|
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
|
|
+$as_echo "$ac_cv_header_stdc" >&6; }
|
|
+if test $ac_cv_header_stdc = yes; then
|
|
+
|
|
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
|
|
+
|
|
+fi
|
|
+
|
|
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
|
|
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
|
|
+ inttypes.h stdint.h unistd.h
|
|
+do :
|
|
+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
|
|
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
|
|
+"
|
|
+eval as_val=\$$as_ac_Header
|
|
+ if test "x$as_val" = x""yes; then :
|
|
+ cat >>confdefs.h <<_ACEOF
|
|
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
|
|
+_ACEOF
|
|
+
|
|
+fi
|
|
+
|
|
+done
|
|
+
|
|
+
|
|
+for ac_header in unistd.h sys/stat.h
|
|
+do :
|
|
+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
|
|
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
|
|
+eval as_val=\$$as_ac_Header
|
|
+ if test "x$as_val" = x""yes; then :
|
|
+ cat >>confdefs.h <<_ACEOF
|
|
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
|
|
+_ACEOF
|
|
+
|
|
+fi
|
|
+
|
|
+done
|
|
+
|
|
|
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for extra programs to build requiring -lcuda" >&5
|
|
$as_echo_n "checking for extra programs to build requiring -lcuda... " >&6; }
|