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 --cache-file=./config.cache --with-gnu-as --with-gnu-ld --with-system-zlib --program-transform-name=s&^&i386-pc-linux-gnu-& --disable-option-checking --build=x86_64-apple-darwin14.0.0 --host=x86_64-apple-darwin14.0.0 --target=i386-pc-linux-gnu --srcdir=.././etc

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

hostname = ulanbator.act-europe.fr
uname -m = x86_64
uname -r = 14.0.0
uname -s = Darwin
uname -v = Darwin Kernel Version 14.0.0: Fri Sep 19 00:26:44 PDT 2014; root:xnu-2782.1.97~2/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 14.0.0: Fri Sep 19 00:26:44 PDT 2014; root:xnu-2782.1.97~2/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: 266 tasks, 1154 threads, 8 processors
Load average: 2.08, Mach factor: 5.91
/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
PATH: /usr/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 ulanbator.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-darwin14.0.0
ac_cv_env_host_alias_set=set
ac_cv_env_host_alias_value=x86_64-apple-darwin14.0.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-darwin14.0.0'
datadir='${datarootdir}'
datarootdir='${prefix}/share'
docdir='${datarootdir}/doc/${PACKAGE}'
dvidir='${docdir}'
exec_prefix='${prefix}'
host_alias='x86_64-apple-darwin14.0.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
