This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.

It was created by configure, which was
generated by GNU Autoconf 2.64.  Invocation command line was

  $ /Users/gingold/Repositories/fsf/binutils-release.git/etc/configure --srcdir=.././etc --cache-file=./config.cache --with-gnu-as --with-gnu-ld --program-transform-name=s&^&i386-pc-linux-gnu-& --disable-option-checking --build=x86_64-apple-darwin15.3.0 --host=x86_64-apple-darwin15.3.0 --target=i386-pc-linux-gnu

## --------- ##
## Platform. ##
## --------- ##

hostname = dhcp-guest-231.act-europe.fr
uname -m = x86_64
uname -r = 15.3.0
uname -s = Darwin
uname -v = Darwin Kernel Version 15.3.0: Thu Dec 10 18:40:58 PST 2015; root:xnu-3248.30.4~1/RELEASE_X86_64

/usr/bin/uname -p = i386
/bin/uname -X     = unknown

/bin/arch              = unknown
/usr/bin/arch -k       = unknown
/usr/convex/getsysinfo = unknown
/usr/bin/hostinfo      = Mach kernel version:
	 Darwin Kernel Version 15.3.0: Thu Dec 10 18:40:58 PST 2015; root:xnu-3248.30.4~1/RELEASE_X86_64
Kernel configured for up to 8 processors.
4 processors are physically available.
8 processors are logically available.
Processor type: i486 (Intel 80486)
Processors active: 0 1 2 3 4 5 6 7
Primary memory available: 16.00 gigabytes
Default processor set: 306 tasks, 1354 threads, 8 processors
Load average: 2.92, Mach factor: 5.35
/bin/machine           = unknown
/usr/bin/oslevel       = unknown
/bin/universe          = unknown

PATH: /Users/gingold/Repositories/fsf/release-binutils/tools/bin
PATH: /opt/local/bin
PATH: /opt/local/sbin
PATH: /System/Library/Frameworks/Python.framework/Versions/Current/bin
PATH: /usr/local/bin
PATH: /usr/local/bin
PATH: /usr/bin
PATH: /bin
PATH: /usr/sbin
PATH: /sbin
PATH: /opt/X11/bin


## ----------- ##
## Core tests. ##
## ----------- ##

configure:1572: creating cache ./config.cache
configure:1683: checking for a BSD-compatible install
configure:1751: result: /usr/local/bin/install -c
configure:1850: updating cache ./config.cache
configure:1923: creating ./config.status

## ---------------------- ##
## Running config.status. ##
## ---------------------- ##

This file was extended by config.status, which was
generated by GNU Autoconf 2.64.  Invocation command line was

  CONFIG_FILES    = 
  CONFIG_HEADERS  = 
  CONFIG_LINKS    = 
  CONFIG_COMMANDS = 
  $ ./config.status 

on dhcp-guest-231.act-europe.fr

config.status:715: creating Makefile

## ---------------- ##
## Cache variables. ##
## ---------------- ##

ac_cv_env_build_alias_set=set
ac_cv_env_build_alias_value=x86_64-apple-darwin15.3.0
ac_cv_env_host_alias_set=set
ac_cv_env_host_alias_value=x86_64-apple-darwin15.3.0
ac_cv_env_target_alias_set=set
ac_cv_env_target_alias_value=i386-pc-linux-gnu
ac_cv_path_install='/usr/local/bin/install -c'

## ----------------- ##
## Output variables. ##
## ----------------- ##

DEFS='-DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\"'
ECHO_C='\c'
ECHO_N=''
ECHO_T=''
INSTALL_DATA='${INSTALL} -m 644'
INSTALL_PROGRAM='${INSTALL}'
INSTALL_SCRIPT='${INSTALL}'
LIBOBJS=''
LIBS=''
LTLIBOBJS=''
MAINT='#'
PACKAGE_BUGREPORT=''
PACKAGE_NAME=''
PACKAGE_STRING=''
PACKAGE_TARNAME=''
PACKAGE_URL=''
PACKAGE_VERSION=''
PATH_SEPARATOR=':'
SHELL='/bin/sh'
bindir='${exec_prefix}/bin'
build_alias='x86_64-apple-darwin15.3.0'
datadir='${datarootdir}'
datarootdir='${prefix}/share'
docdir='${datarootdir}/doc/${PACKAGE}'
dvidir='${docdir}'
exec_prefix='${prefix}'
host_alias='x86_64-apple-darwin15.3.0'
htmldir='${docdir}'
includedir='${prefix}/include'
infodir='${datarootdir}/info'
libdir='${exec_prefix}/lib'
libexecdir='${exec_prefix}/libexec'
localedir='${datarootdir}/locale'
localstatedir='${prefix}/var'
mandir='${datarootdir}/man'
oldincludedir='/usr/include'
pdfdir='${docdir}'
prefix='/usr/local'
program_transform_name='s&^&i386-pc-linux-gnu-&'
psdir='${docdir}'
sbindir='${exec_prefix}/sbin'
sharedstatedir='${prefix}/com'
sysconfdir='${prefix}/etc'
target_alias='i386-pc-linux-gnu'

## ----------- ##
## confdefs.h. ##
## ----------- ##

/* confdefs.h */
#define PACKAGE_NAME ""
#define PACKAGE_TARNAME ""
#define PACKAGE_VERSION ""
#define PACKAGE_STRING ""
#define PACKAGE_BUGREPORT ""
#define PACKAGE_URL ""

configure: exit 0
