Changeset d0c91a6


Ignore:
Timestamp:
Jan 15, 2019, 4:16:15 PM (7 years ago)
Author:
Thierry Delisle <tdelisle@…>
Branches:
ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, no_list, persistent-indexer, pthread-emulation, qualifiedEnum
Children:
c802eb88
Parents:
5e49e47 (diff), c9aba81 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge branch 'master' into jenkins-sandbox

Files:
36 added
1 deleted
139 edited
52 moved

Legend:

Unmodified
Added
Removed
  • INSTALL

    r5e49e47 rd0c91a6  
    2222  it is important not to put quotes around the directory path; Cforall may
    2323  appear to build, but the installed version may not work properly.
    24 
    25 --with-backend-compiler=PROGRAM specifies the installed path of gcc.  It
    26   defaults to the first command named 'gcc' in the current PATH.
    27 
    28 cfa-cc itself is built with the version of g++ specified by the environment
    29 variable CXX.  If CXX is unset, cfa-cc is built using the first command named
    30 'g++' in the current PATH.
  • Jenkins/TestRegen

    r5e49e47 rd0c91a6  
    7070        //escapes the sandbox
    7171        //Also specify the compiler by hand
    72         sh "./configure CXX=clang++ --host=${arch} --with-backend-compiler=gcc-6 --prefix=${install_dir} --enable-silent-rules --quiet"
     72        sh "./configure CXX=clang++ CC=gcc-6 --host=${arch} --enable-silent-rules --quiet"
    7373
    7474        //Compile the project
    75         sh 'make -j 8 --no-print-directory install'
     75        sh 'make -j 8 --no-print-directory'
    7676
    7777        //Regenerate the desired tests
  • Jenkinsfile

    r5e49e47 rd0c91a6  
    118118                        }
    119119
    120                         sh "${SrcDir}/configure CXX=${Settings.Compiler.cpp_cc} ${Settings.Architecture.flags} ${targets} --with-backend-compiler=${Settings.Compiler.cfa_cc} --quiet"
     120                        sh "${SrcDir}/configure CXX=${Settings.Compiler.CXX} CC=${Settings.Compiler.CC} ${Settings.Architecture.flags} ${targets} --quiet"
    121121
    122122                        //Compile the project
     
    239239//Description of a compiler (Must be serializable since pipelines are persistent)
    240240class CC_Desc implements Serializable {
    241         public String cc_name
    242         public String cpp_cc
    243         public String cfa_cc
    244 
    245         CC_Desc(String cc_name, String cpp_cc, String cfa_cc) {
    246                 this.cc_name = cc_name
    247                 this.cpp_cc = cpp_cc
    248                 this.cfa_cc = cfa_cc
     241        public String name
     242        public String CXX
     243        public String CC
     244
     245        CC_Desc(String name, String CXX, String CC) {
     246                this.name = name
     247                this.CXX = CXX
     248                this.CC = CC
    249249        }
    250250}
     
    315315
    316316                def full = param.RunAllTests ? " (Full)" : ""
    317                 this.DescShort = "${ this.Compiler.cc_name }:${ this.Architecture.name }${full}"
    318 
    319                 this.DescLong = """Compiler              : ${ this.Compiler.cc_name } (${ this.Compiler.cpp_cc }/${ this.Compiler.cfa_cc })
     317                this.DescShort = "${ this.Compiler.name }:${ this.Architecture.name }${full}"
     318
     319                this.DescLong = """Compiler              : ${ this.Compiler.name } (${ this.Compiler.CXX }/${ this.Compiler.CC })
    320320Architecture            : ${ this.Architecture.name }
    321321Arc Flags               : ${ this.Architecture.flags }
  • Makefile.am

    r5e49e47 rd0c91a6  
    1616
    1717AUTOMAKE_OPTIONS = foreign    # do not require all the GNU file names
    18 BACKEND_CC = @BACKEND_CC@     # C compiler used to compile Cforall programs, versus C++ compiler used to build cfa command
     18ACLOCAL_AMFLAGS  = -I automake
    1919
    2020MAINTAINERCLEANFILES = lib/* bin/* tests/.deps/* tests/.out/*
  • Makefile.in

    r5e49e47 rd0c91a6  
    9494subdir = .
    9595ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
    96 am__aclocal_m4_deps = $(top_srcdir)/automake/cfa.m4 \
    97         $(top_srcdir)/configure.ac
     96am__aclocal_m4_deps = $(top_srcdir)/automake/libtool.m4 \
     97        $(top_srcdir)/automake/ltoptions.m4 \
     98        $(top_srcdir)/automake/ltsugar.m4 \
     99        $(top_srcdir)/automake/ltversion.m4 \
     100        $(top_srcdir)/automake/lt~obsolete.m4 \
     101        $(top_srcdir)/automake/cfa.m4 $(top_srcdir)/configure.ac
    98102am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
    99103        $(ACLOCAL_M4)
     
    198202        $(top_srcdir)/automake/config.sub \
    199203        $(top_srcdir)/automake/install-sh \
     204        $(top_srcdir)/automake/ltmain.sh \
    200205        $(top_srcdir)/automake/missing $(top_srcdir)/src/config.h.in \
    201206        INSTALL README automake/compile automake/config.guess \
    202207        automake/config.sub automake/depcomp automake/install-sh \
    203         automake/missing automake/ylwrap
     208        automake/ltmain.sh automake/missing automake/ylwrap
    204209DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
    205210distdir = $(PACKAGE)-$(VERSION)
     
    248253AMTAR = @AMTAR@
    249254AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
     255AR = @AR@
    250256AUTOCONF = @AUTOCONF@
    251257AUTOHEADER = @AUTOHEADER@
    252258AUTOMAKE = @AUTOMAKE@
    253259AWK = @AWK@
    254 BACKEND_CC = @BACKEND_CC@     # C compiler used to compile Cforall programs, versus C++ compiler used to build cfa command
    255260BUILD_IN_TREE_FLAGS = @BUILD_IN_TREE_FLAGS@
    256261CC = @CC@
     
    272277CPPFLAGS = @CPPFLAGS@
    273278CXX = @CXX@
     279CXXCPP = @CXXCPP@
    274280CXXDEPMODE = @CXXDEPMODE@
    275281CXXFLAGS = @CXXFLAGS@
     
    277283DEFS = @DEFS@
    278284DEPDIR = @DEPDIR@
     285DLLTOOL = @DLLTOOL@
    279286DRIVER_DIR = @DRIVER_DIR@
     287DSYMUTIL = @DSYMUTIL@
     288DUMPBIN = @DUMPBIN@
    280289ECHO_C = @ECHO_C@
    281290ECHO_N = @ECHO_N@
     
    283292EGREP = @EGREP@
    284293EXEEXT = @EXEEXT@
     294FGREP = @FGREP@
    285295GREP = @GREP@
    286296HOST_FLAGS = @HOST_FLAGS@
     
    290300INSTALL_SCRIPT = @INSTALL_SCRIPT@
    291301INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
     302LD = @LD@
    292303LDFLAGS = @LDFLAGS@
    293304LEX = @LEX@
     
    298309LIBOBJS = @LIBOBJS@
    299310LIBS = @LIBS@
     311LIBTOOL = @LIBTOOL@
     312LIPO = @LIPO@
     313LN_S = @LN_S@
    300314LTLIBOBJS = @LTLIBOBJS@
     315LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
    301316MAKEINFO = @MAKEINFO@
     317MANIFEST_TOOL = @MANIFEST_TOOL@
    302318MKDIR_P = @MKDIR_P@
     319NM = @NM@
     320NMEDIT = @NMEDIT@
     321OBJDUMP = @OBJDUMP@
    303322OBJEXT = @OBJEXT@
     323OTOOL = @OTOOL@
     324OTOOL64 = @OTOOL64@
    304325PACKAGE = @PACKAGE@
    305326PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
     
    311332PATH_SEPARATOR = @PATH_SEPARATOR@
    312333RANLIB = @RANLIB@
     334SED = @SED@
    313335SET_MAKE = @SET_MAKE@
    314336SHELL = @SHELL@
     
    322344abs_top_builddir = @abs_top_builddir@
    323345abs_top_srcdir = @abs_top_srcdir@
     346ac_ct_AR = @ac_ct_AR@
    324347ac_ct_CC = @ac_ct_CC@
    325348ac_ct_CXX = @ac_ct_CXX@
     349ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
    326350am__include = @am__include@
    327351am__leading_dot = @am__leading_dot@
     
    371395top_srcdir = @top_srcdir@
    372396AUTOMAKE_OPTIONS = foreign    # do not require all the GNU file names
     397ACLOCAL_AMFLAGS = -I automake
    373398MAINTAINERCLEANFILES = lib/* bin/* tests/.deps/* tests/.out/*
    374399SUBDIRS = driver src . @LIBCFA_TARGET_DIRS@
     
    428453distclean-hdr:
    429454        -rm -f config.h stamp-h1
     455
     456mostlyclean-libtool:
     457        -rm -f *.lo
     458
     459clean-libtool:
     460        -rm -rf .libs _libs
     461
     462distclean-libtool:
     463        -rm -f libtool config.lt
    430464install-man1: $(man1_MANS)
    431465        @$(NORMAL_INSTALL)
     
    803837clean: clean-recursive
    804838
    805 clean-am: clean-generic mostlyclean-am
     839clean-am: clean-generic clean-libtool mostlyclean-am
    806840
    807841distclean: distclean-recursive
    808842        -rm -f $(am__CONFIG_DISTCLEAN_FILES)
    809843        -rm -f Makefile
    810 distclean-am: clean-am distclean-generic distclean-hdr distclean-tags
     844distclean-am: clean-am distclean-generic distclean-hdr \
     845        distclean-libtool distclean-tags
    811846
    812847dvi: dvi-recursive
     
    858893mostlyclean: mostlyclean-recursive
    859894
    860 mostlyclean-am: mostlyclean-generic
     895mostlyclean-am: mostlyclean-generic mostlyclean-libtool
    861896
    862897pdf: pdf-recursive
     
    876911.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
    877912        am--refresh check check-am clean clean-cscope clean-generic \
    878         cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \
    879         dist-gzip dist-lzip dist-shar dist-tarZ dist-xz dist-zip \
    880         distcheck distclean distclean-generic distclean-hdr \
    881         distclean-tags distcleancheck distdir distuninstallcheck dvi \
    882         dvi-am html html-am info info-am install install-am \
    883         install-data install-data-am install-dvi install-dvi-am \
    884         install-exec install-exec-am install-html install-html-am \
    885         install-info install-info-am install-man install-man1 \
    886         install-pdf install-pdf-am install-ps install-ps-am \
    887         install-strip installcheck installcheck-am installdirs \
    888         installdirs-am maintainer-clean maintainer-clean-generic \
    889         mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \
    890         tags-am uninstall uninstall-am uninstall-man uninstall-man1
     913        clean-libtool cscope cscopelist-am ctags ctags-am dist \
     914        dist-all dist-bzip2 dist-gzip dist-lzip dist-shar dist-tarZ \
     915        dist-xz dist-zip distcheck distclean distclean-generic \
     916        distclean-hdr distclean-libtool distclean-tags distcleancheck \
     917        distdir distuninstallcheck dvi dvi-am html html-am info \
     918        info-am install install-am install-data install-data-am \
     919        install-dvi install-dvi-am install-exec install-exec-am \
     920        install-html install-html-am install-info install-info-am \
     921        install-man install-man1 install-pdf install-pdf-am install-ps \
     922        install-ps-am install-strip installcheck installcheck-am \
     923        installdirs installdirs-am maintainer-clean \
     924        maintainer-clean-generic mostlyclean mostlyclean-generic \
     925        mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
     926        uninstall-am uninstall-man uninstall-man1
    891927
    892928.PRECIOUS: Makefile
  • aclocal.m4

    r5e49e47 rd0c91a6  
    11711171]) # _AM_PROG_TAR
    11721172
     1173m4_include([automake/libtool.m4])
     1174m4_include([automake/ltoptions.m4])
     1175m4_include([automake/ltsugar.m4])
     1176m4_include([automake/ltversion.m4])
     1177m4_include([automake/lt~obsolete.m4])
  • automake/cfa.m4

    r5e49e47 rd0c91a6  
    7373                "arm"        ) cannon_arch_name="arm";;
    7474                "ARM"        ) cannon_arch_name="arm";;
     75                "armv7l"     ) cannon_arch_name="arm";;
    7576                *)
    7677                >&2 echo "Unkown architecture " $arch_name;
  • benchmark/Makefile.am

    r5e49e47 rd0c91a6  
    1616
    1717AUTOMAKE_OPTIONS = foreign    # do not require all the GNU file names
     18ACLOCAL_AMFLAGS  = -I automake
    1819
    1920# applies to both programs
    2021include $(top_srcdir)/src/cfa.make
    2122
    22 UPPCC = u++
    23 UPPCOMPILE = $(UPPCC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_UPPFLAGS) $(UPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_CFLAGS) $(CFLAGS)
     23
    2424
    2525AM_CFLAGS = -O2 -Wall -I$(srcdir) -lrt -pthread
     
    3535PRINT_FORMAT = %20s: #Comments needed for spacing
    3636
     37# Dummy hack tricks
    3738EXTRA_PROGRAMS = dummy # build but do not install
    38 
    3939dummy_SOURCES = dummyC.c dummyCXX.cpp
    4040
     
    4747.NOTPARALLEL:
    4848
    49 noinst_PROGRAMS =
    50 
     49## =========================================================================================================
    5150all : ctxswitch$(EXEEXT) mutex$(EXEEXT) signal$(EXEEXT) waitfor$(EXEEXT) creation$(EXEEXT)
    5251
     
    5857        @${STATS} .result.log
    5958        @echo "------------------------------------------------------"
    60         @rm -f a.out .result.log
     59        @rm -f a.out .result.log *.class
    6160
    6261%.runquiet :
     
    111110## =========================================================================================================
    112111loop$(EXEEXT):
    113         $(COMPILE) -DBENCH_N=5000000000 $(srcdir)/loop.c
     112        $(AM_V_CC)$(COMPILE) -DBENCH_N=5000000000 $(srcdir)/loop.c
    114113
    115114function$(EXEEXT):
    116         $(COMPILE) -DBENCH_N=5000000000 $(srcdir)/function.c
     115        $(AM_V_CC)$(COMPILE) -DBENCH_N=5000000000 $(srcdir)/function.c
    117116
    118117fetch_add$(EXEEXT):
    119         $(COMPILE) -DBENCH_N=500000000  $(srcdir)/fetch_add.c
     118        $(AM_V_CC)$(COMPILE) -DBENCH_N=500000000  $(srcdir)/fetch_add.c
    120119
    121120## =========================================================================================================
     
    140139
    141140ctxswitch-kos_fibre$(EXEEXT):
    142         @$(CXXCOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/kos_fibre.cpp  -I$(LIBFIBRE_DIR) -lfibre
     141        $(AM_V_CXX)$(CXXCOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/kos_fibre.cpp  -I$(LIBFIBRE_DIR) -lfibre
    143142
    144143ctxswitch-kos_fibre2$(EXEEXT):
    145         @$(CXXCOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/kos_fibre2.cpp -I$(LIBFIBRE_DIR) -lfibre
     144        $(AM_V_CXX)$(CXXCOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/kos_fibre2.cpp -I$(LIBFIBRE_DIR) -lfibre
    146145endif
    147146
     
    149148
    150149ctxswitch-pthread$(EXEEXT):
    151         @$(COMPILE)    -DBENCH_N=50000000 $(srcdir)/ctxswitch/pthreads.c
     150        $(AM_V_CC)$(COMPILE)    -DBENCH_N=50000000 $(srcdir)/ctxswitch/pthreads.c
    152151
    153152ctxswitch-cfa_coroutine$(EXEEXT):
    154         @$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/cfa_cor.cfa
     153        $(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/cfa_cor.cfa
    155154
    156155ctxswitch-cfa_thread$(EXEEXT):
    157         @$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/cfa_thrd.cfa
     156        $(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/cfa_thrd.cfa
    158157
    159158ctxswitch-cfa_thread2$(EXEEXT):
    160         @$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/cfa_thrd2.cfa
     159        $(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/cfa_thrd2.cfa
    161160
    162161ctxswitch-upp_coroutine$(EXEEXT):
    163         @$(UPPCOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/upp_cor.cc
     162        $(AM_V_UPP)$(UPPCOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/upp_cor.cc
    164163
    165164ctxswitch-upp_thread$(EXEEXT):
    166         @$(UPPCOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/upp_thrd.cc
     165        $(AM_V_UPP)$(UPPCOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/upp_thrd.cc
    167166
    168167ctxswitch-goroutine$(EXEEXT):
    169         @go build -o a.out $(srcdir)/ctxswitch/goroutine.go
     168        $(AM_V_GOC)go build -o a.out $(srcdir)/ctxswitch/goroutine.go
    170169
    171170ctxswitch-java_thread$(EXEEXT):
    172         @javac -d . $(srcdir)/ctxswitch/JavaThread.java
     171        $(AM_V_JAVAC)javac -d $(builddir) $(srcdir)/ctxswitch/JavaThread.java
    173172        @echo "#!/bin/sh" > a.out
    174173        @echo "java JavaThread" >> a.out
     
    188187
    189188mutex-pthread_lock$(EXEEXT):
    190         @$(COMPILE)    -DBENCH_N=50000000 $(srcdir)/mutex/pthreads.c
     189        $(AM_V_CC)$(COMPILE)    -DBENCH_N=50000000 $(srcdir)/mutex/pthreads.c
    191190
    192191mutex-upp$(EXEEXT):
    193         @$(UPPCOMPILE) -DBENCH_N=50000000 $(srcdir)/mutex/upp.cc
     192        $(AM_V_UPP)$(UPPCOMPILE) -DBENCH_N=50000000 $(srcdir)/mutex/upp.cc
    194193
    195194mutex-cfa1$(EXEEXT):
    196         @$(CFACOMPILE) -DBENCH_N=5000000  $(srcdir)/mutex/cfa1.cfa
     195        $(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=5000000  $(srcdir)/mutex/cfa1.cfa
    197196
    198197mutex-cfa2$(EXEEXT):
    199         @$(CFACOMPILE) -DBENCH_N=5000000  $(srcdir)/mutex/cfa2.cfa
     198        $(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=5000000  $(srcdir)/mutex/cfa2.cfa
    200199
    201200mutex-cfa4$(EXEEXT):
    202         @$(CFACOMPILE) -DBENCH_N=5000000  $(srcdir)/mutex/cfa4.cfa
     201        $(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=5000000  $(srcdir)/mutex/cfa4.cfa
    203202
    204203mutex-java_thread$(EXEEXT):
    205         @javac -d . $(srcdir)/mutex/JavaThread.java
     204        $(AM_V_JAVAC)javac -d $(builddir) $(srcdir)/mutex/JavaThread.java
    206205        @echo "#!/bin/sh" > a.out
    207206        @echo "java JavaThread" >> a.out
     
    218217
    219218signal-pthread_cond$(EXEEXT):
    220         @$(COMPILE)    -DBENCH_N=500000  $(srcdir)/schedint/pthreads.c
     219        $(AM_V_CC)$(COMPILE)    -DBENCH_N=500000  $(srcdir)/schedint/pthreads.c
    221220
    222221signal-upp$(EXEEXT):
    223         @$(UPPCOMPILE) -DBENCH_N=5000000 $(srcdir)/schedint/upp.cc
     222        $(AM_V_UPP)$(UPPCOMPILE) -DBENCH_N=5000000 $(srcdir)/schedint/upp.cc
    224223
    225224signal-cfa1$(EXEEXT):
    226         @$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedint/cfa1.cfa
     225        $(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedint/cfa1.cfa
    227226
    228227signal-cfa2$(EXEEXT):
    229         @$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedint/cfa2.cfa
     228        $(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedint/cfa2.cfa
    230229
    231230signal-cfa4$(EXEEXT):
    232         @$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedint/cfa4.cfa
     231        $(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedint/cfa4.cfa
    233232
    234233signal-java_thread$(EXEEXT):
    235         @javac -d . $(srcdir)/schedint/JavaThread.java
     234        $(AM_V_JAVAC)javac -d $(builddir) $(srcdir)/schedint/JavaThread.java
    236235        @echo "#!/bin/sh" > a.out
    237236        @echo "java JavaThread" >> a.out
     
    247246
    248247waitfor-upp$(EXEEXT):
    249         @$(UPPCOMPILE) -DBENCH_N=5000000 $(srcdir)/schedext/upp.cc
     248        $(AM_V_UPP)$(UPPCOMPILE) -DBENCH_N=5000000 $(srcdir)/schedext/upp.cc
    250249
    251250waitfor-cfa1$(EXEEXT):
    252         @$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedext/cfa1.cfa
     251        $(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedext/cfa1.cfa
    253252
    254253waitfor-cfa2$(EXEEXT):
    255         @$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedext/cfa2.cfa
     254        $(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedext/cfa2.cfa
    256255
    257256waitfor-cfa4$(EXEEXT):
    258         @$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedext/cfa4.cfa
     257        $(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedext/cfa4.cfa
    259258
    260259## =========================================================================================================
     
    270269
    271270creation-cfa_coroutine$(EXEEXT):
    272         @$(CFACOMPILE) -DBENCH_N=10000000 $(srcdir)/creation/cfa_cor.cfa
     271        $(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=10000000 $(srcdir)/creation/cfa_cor.cfa
    273272
    274273creation-cfa_coroutine_eager$(EXEEXT):
    275         @$(CFACOMPILE) -DBENCH_N=10000000 $(srcdir)/creation/cfa_cor.cfa -DEAGER
     274        $(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=10000000 $(srcdir)/creation/cfa_cor.cfa -DEAGER
    276275
    277276creation-cfa_thread$(EXEEXT):
    278         @$(CFACOMPILE) -DBENCH_N=10000000 $(srcdir)/creation/cfa_thrd.cfa
     277        $(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=10000000 $(srcdir)/creation/cfa_thrd.cfa
    279278
    280279creation-upp_coroutine$(EXEEXT):
    281         @$(UPPCOMPILE) -DBENCH_N=50000000 $(srcdir)/creation/upp_cor.cc
     280        $(AM_V_UPP)$(UPPCOMPILE) -DBENCH_N=50000000 $(srcdir)/creation/upp_cor.cc
    282281
    283282creation-upp_thread$(EXEEXT):
    284         @$(UPPCOMPILE) -DBENCH_N=50000000 $(srcdir)/creation/upp_thrd.cc
     283        $(AM_V_UPP)$(UPPCOMPILE) -DBENCH_N=50000000 $(srcdir)/creation/upp_thrd.cc
    285284
    286285creation-pthread$(EXEEXT):
    287         @$(COMPILE)    -DBENCH_N=250000   $(srcdir)/creation/pthreads.c
     286        $(AM_V_CC)$(COMPILE)    -DBENCH_N=250000   $(srcdir)/creation/pthreads.c
    288287
    289288creation-goroutine$(EXEEXT):
    290         @go build -o a.out $(srcdir)/creation/goroutine.go
     289        $(AM_V_GOC)go build -o a.out $(srcdir)/creation/goroutine.go
    291290
    292291creation-java_thread$(EXEEXT):
    293         @javac -d . $(srcdir)/creation/JavaThread.java
     292        $(AM_V_JAVAC)javac -d $(builddir) $(srcdir)/creation/JavaThread.java
    294293        @echo "#!/bin/sh" > a.out
    295294        @echo "java JavaThread" >> a.out
     
    312311
    313312compile-array$(EXEEXT):
    314         @$(CFACOMPILE) -fsyntax-only -w $(testdir)/array.cfa
     313        $(AM_V_CFA)$(CFACOMPILE) -fsyntax-only -w $(testdir)/array.cfa
    315314
    316315compile-attributes$(EXEEXT):
    317         @$(CFACOMPILE) -fsyntax-only -w $(testdir)/attributes.cfa
     316        $(AM_V_CFA)$(CFACOMPILE) -fsyntax-only -w $(testdir)/attributes.cfa
    318317
    319318compile-empty$(EXEEXT):
    320         @$(CFACOMPILE) -fsyntax-only -w $(srcdir)/compile/empty.cfa
     319        $(AM_V_CFA)$(CFACOMPILE) -fsyntax-only -w $(srcdir)/compile/empty.cfa
    321320
    322321compile-expression$(EXEEXT):
    323         @$(CFACOMPILE) -fsyntax-only -w $(testdir)/expression.cfa
     322        $(AM_V_CFA)$(CFACOMPILE) -fsyntax-only -w $(testdir)/expression.cfa
    324323
    325324compile-io$(EXEEXT):
    326         @$(CFACOMPILE) -fsyntax-only -w $(testdir)/io1.cfa
     325        $(AM_V_CFA)$(CFACOMPILE) -fsyntax-only -w $(testdir)/io1.cfa
    327326
    328327compile-monitor$(EXEEXT):
    329         @$(CFACOMPILE) -fsyntax-only -w $(testdir)/concurrent/monitor.cfa
     328        $(AM_V_CFA)$(CFACOMPILE) -fsyntax-only -w $(testdir)/concurrent/monitor.cfa
    330329
    331330compile-operators$(EXEEXT):
    332         @$(CFACOMPILE) -fsyntax-only -w $(testdir)/operators.cfa
     331        $(AM_V_CFA)$(CFACOMPILE) -fsyntax-only -w $(testdir)/operators.cfa
    333332
    334333compile-thread$(EXEEXT):
    335         @$(CFACOMPILE) -fsyntax-only -w $(testdir)/concurrent/thread.cfa
     334        $(AM_V_CFA)$(CFACOMPILE) -fsyntax-only -w $(testdir)/concurrent/thread.cfa
    336335
    337336compile-typeof$(EXEEXT):
    338         @$(CFACOMPILE) -fsyntax-only -w $(testdir)/typeof.cfa
    339 
     337        $(AM_V_CFA)$(CFACOMPILE) -fsyntax-only -w $(testdir)/typeof.cfa
     338
  • benchmark/Makefile.in

    r5e49e47 rd0c91a6  
    1717######################## -*- Mode: Makefile-Automake -*- ######################
    1818###############################################################################
    19 
    2019VPATH = @srcdir@
    2120am__is_gnu_make = { \
     
    9392host_triplet = @host@
    9493EXTRA_PROGRAMS = dummy$(EXEEXT)
    95 noinst_PROGRAMS =
    9694@WITH_LIBFIBRE_TRUE@am__append_1 = \
    9795@WITH_LIBFIBRE_TRUE@    ctxswitch-kos_fibre.run  \
     
    10098subdir = benchmark
    10199ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
    102 am__aclocal_m4_deps = $(top_srcdir)/automake/cfa.m4 \
    103         $(top_srcdir)/configure.ac
     100am__aclocal_m4_deps = $(top_srcdir)/automake/libtool.m4 \
     101        $(top_srcdir)/automake/ltoptions.m4 \
     102        $(top_srcdir)/automake/ltsugar.m4 \
     103        $(top_srcdir)/automake/ltversion.m4 \
     104        $(top_srcdir)/automake/lt~obsolete.m4 \
     105        $(top_srcdir)/automake/cfa.m4 $(top_srcdir)/configure.ac
    104106am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
    105107        $(ACLOCAL_M4)
     
    109111CONFIG_CLEAN_FILES =
    110112CONFIG_CLEAN_VPATH_FILES =
    111 PROGRAMS = $(noinst_PROGRAMS)
    112113am_dummy_OBJECTS = dummyC.$(OBJEXT) dummyCXX.$(OBJEXT)
    113114dummy_OBJECTS = $(am_dummy_OBJECTS)
    114115dummy_LDADD = $(LDADD)
     116AM_V_lt = $(am__v_lt_@AM_V@)
     117am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
     118am__v_lt_0 = --silent
     119am__v_lt_1 =
    115120AM_V_P = $(am__v_P_@AM_V@)
    116121am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
     
    131136COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
    132137        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
     138LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
     139        $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
     140        $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
     141        $(AM_CFLAGS) $(CFLAGS)
    133142AM_V_CC = $(am__v_CC_@AM_V@)
    134143am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
     
    136145am__v_CC_1 =
    137146CCLD = $(CC)
    138 LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
     147LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
     148        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
     149        $(AM_LDFLAGS) $(LDFLAGS) -o $@
    139150AM_V_CCLD = $(am__v_CCLD_@AM_V@)
    140151am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
     
    143154CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
    144155        $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
     156LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
     157        $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
     158        $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
     159        $(AM_CXXFLAGS) $(CXXFLAGS)
    145160AM_V_CXX = $(am__v_CXX_@AM_V@)
    146161am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
     
    148163am__v_CXX_1 =
    149164CXXLD = $(CXX)
    150 CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
    151         -o $@
     165CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
     166        $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
     167        $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
    152168AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
    153169am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
     
    187203AMTAR = @AMTAR@
    188204AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
     205AR = @AR@
    189206AUTOCONF = @AUTOCONF@
    190207AUTOHEADER = @AUTOHEADER@
    191208AUTOMAKE = @AUTOMAKE@
    192209AWK = @AWK@
    193 BACKEND_CC = @BACKEND_CC@
    194210BUILD_IN_TREE_FLAGS = @BUILD_IN_TREE_FLAGS@
    195211CC = @CC@
     
    211227CPPFLAGS = @CPPFLAGS@
    212228CXX = @CXX@
     229CXXCPP = @CXXCPP@
    213230CXXDEPMODE = @CXXDEPMODE@
    214231CXXFLAGS = @CXXFLAGS@
     
    216233DEFS = @DEFS@
    217234DEPDIR = @DEPDIR@
     235DLLTOOL = @DLLTOOL@
    218236DRIVER_DIR = @DRIVER_DIR@
     237DSYMUTIL = @DSYMUTIL@
     238DUMPBIN = @DUMPBIN@
    219239ECHO_C = @ECHO_C@
    220240ECHO_N = @ECHO_N@
     
    222242EGREP = @EGREP@
    223243EXEEXT = @EXEEXT@
     244FGREP = @FGREP@
    224245GREP = @GREP@
    225246HOST_FLAGS = @HOST_FLAGS@
     
    229250INSTALL_SCRIPT = @INSTALL_SCRIPT@
    230251INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
     252LD = @LD@
    231253LDFLAGS = @LDFLAGS@
    232254LEX = @LEX@
     
    237259LIBOBJS = @LIBOBJS@
    238260LIBS = @LIBS@
     261LIBTOOL = @LIBTOOL@
     262LIPO = @LIPO@
     263LN_S = @LN_S@
    239264LTLIBOBJS = @LTLIBOBJS@
     265LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
    240266MAKEINFO = @MAKEINFO@
     267MANIFEST_TOOL = @MANIFEST_TOOL@
    241268MKDIR_P = @MKDIR_P@
     269NM = @NM@
     270NMEDIT = @NMEDIT@
     271OBJDUMP = @OBJDUMP@
    242272OBJEXT = @OBJEXT@
     273OTOOL = @OTOOL@
     274OTOOL64 = @OTOOL64@
    243275PACKAGE = @PACKAGE@
    244276PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
     
    250282PATH_SEPARATOR = @PATH_SEPARATOR@
    251283RANLIB = @RANLIB@
     284SED = @SED@
    252285SET_MAKE = @SET_MAKE@
    253286SHELL = @SHELL@
     
    261294abs_top_builddir = @abs_top_builddir@
    262295abs_top_srcdir = @abs_top_srcdir@
     296ac_ct_AR = @ac_ct_AR@
    263297ac_ct_CC = @ac_ct_CC@
    264298ac_ct_CXX = @ac_ct_CXX@
     299ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
    265300am__include = @am__include@
    266301am__leading_dot = @am__leading_dot@
     
    310345top_srcdir = @top_srcdir@
    311346AUTOMAKE_OPTIONS = foreign    # do not require all the GNU file names
     347ACLOCAL_AMFLAGS = -I automake
    312348CFACOMPILE = $(CFACC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CFAFLAGS) $(CFAFLAGS) $(AM_CFLAGS) $(CFLAGS)
    313349LTCFACOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
     
    320356am__v_CFA_0 = @echo "  CFA     " $@;
    321357am__v_CFA_1 =
    322 
    323 # applies to both programs
     358AM_V_JAVAC = $(am__v_JAVAC_@AM_V@)
     359am__v_JAVAC_ = $(am__v_JAVAC_@AM_DEFAULT_V@)
     360am__v_JAVAC_0 = @echo "  JAVAC   " $@;
     361am__v_JAVAC_1 =
     362AM_V_GOC = $(am__v_GOC_@AM_V@)
     363am__v_GOC_ = $(am__v_GOC_@AM_DEFAULT_V@)
     364am__v_GOC_0 = @echo "  GOC     " $@;
     365am__v_GOC_1 =
    324366UPPCC = u++
    325367UPPCOMPILE = $(UPPCC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_UPPFLAGS) $(UPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_CFLAGS) $(CFLAGS)
     368AM_V_UPP = $(am__v_UPP_@AM_V@)
     369am__v_UPP_ = $(am__v_UPP_@AM_DEFAULT_V@)
     370am__v_UPP_0 = @echo "  UPP     " $@;
     371am__v_UPP_1 =
     372
     373# applies to both programs
    326374AM_CFLAGS = -O2 -Wall -I$(srcdir) -lrt -pthread
    327375AM_CFAFLAGS = -quiet -in-tree -nodebug
     
    377425$(am__aclocal_m4_deps):
    378426
    379 clean-noinstPROGRAMS:
    380         -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
    381 
    382427dummy$(EXEEXT): $(dummy_OBJECTS) $(dummy_DEPENDENCIES) $(EXTRA_dummy_DEPENDENCIES)
    383428        @rm -f dummy$(EXEEXT)
     
    409454@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
    410455
     456.c.lo:
     457@am__fastdepCC_TRUE@    $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
     458@am__fastdepCC_TRUE@    $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
     459@am__fastdepCC_TRUE@    $(am__mv) $$depbase.Tpo $$depbase.Plo
     460@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
     461@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     462@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
     463
    411464.cpp.o:
    412465@am__fastdepCXX_TRUE@   $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
     
    424477@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    425478@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
     479
     480.cpp.lo:
     481@am__fastdepCXX_TRUE@   $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
     482@am__fastdepCXX_TRUE@   $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
     483@am__fastdepCXX_TRUE@   $(am__mv) $$depbase.Tpo $$depbase.Plo
     484@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
     485@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     486@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
     487
     488mostlyclean-libtool:
     489        -rm -f *.lo
     490
     491clean-libtool:
     492        -rm -rf .libs _libs
    426493
    427494ID: $(am__tagged_files)
     
    509576check-am: all-am
    510577check: check-am
    511 all-am: Makefile $(PROGRAMS)
     578all-am: Makefile
    512579installdirs:
    513580install: install-am
     
    543610clean: clean-am
    544611
    545 clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am
     612clean-am: clean-generic clean-libtool mostlyclean-am
    546613
    547614distclean: distclean-am
     
    598665mostlyclean: mostlyclean-am
    599666
    600 mostlyclean-am: mostlyclean-compile mostlyclean-generic
     667mostlyclean-am: mostlyclean-compile mostlyclean-generic \
     668        mostlyclean-libtool
    601669
    602670pdf: pdf-am
     
    613681
    614682.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
    615         clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \
    616         distclean-compile distclean-generic distclean-tags distdir dvi \
    617         dvi-am html html-am info info-am install install-am \
    618         install-data install-data-am install-dvi install-dvi-am \
    619         install-exec install-exec-am install-html install-html-am \
    620         install-info install-info-am install-man install-pdf \
    621         install-pdf-am install-ps install-ps-am install-strip \
    622         installcheck installcheck-am installdirs maintainer-clean \
    623         maintainer-clean-generic mostlyclean mostlyclean-compile \
    624         mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \
    625         uninstall-am
     683        clean-libtool cscopelist-am ctags ctags-am distclean \
     684        distclean-compile distclean-generic distclean-libtool \
     685        distclean-tags distdir dvi dvi-am html html-am info info-am \
     686        install install-am install-data install-data-am install-dvi \
     687        install-dvi-am install-exec install-exec-am install-html \
     688        install-html-am install-info install-info-am install-man \
     689        install-pdf install-pdf-am install-ps install-ps-am \
     690        install-strip installcheck installcheck-am installdirs \
     691        maintainer-clean maintainer-clean-generic mostlyclean \
     692        mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
     693        pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am
    626694
    627695.PRECIOUS: Makefile
     
    655723        @${STATS} .result.log
    656724        @echo "------------------------------------------------------"
    657         @rm -f a.out .result.log
     725        @rm -f a.out .result.log *.class
    658726
    659727%.runquiet :
     
    705773
    706774loop$(EXEEXT):
    707         $(COMPILE) -DBENCH_N=5000000000 $(srcdir)/loop.c
     775        $(AM_V_CC)$(COMPILE) -DBENCH_N=5000000000 $(srcdir)/loop.c
    708776
    709777function$(EXEEXT):
    710         $(COMPILE) -DBENCH_N=5000000000 $(srcdir)/function.c
     778        $(AM_V_CC)$(COMPILE) -DBENCH_N=5000000000 $(srcdir)/function.c
    711779
    712780fetch_add$(EXEEXT):
    713         $(COMPILE) -DBENCH_N=500000000  $(srcdir)/fetch_add.c
     781        $(AM_V_CC)$(COMPILE) -DBENCH_N=500000000  $(srcdir)/fetch_add.c
    714782
    715783@WITH_LIBFIBRE_TRUE@ctxswitch-kos_fibre$(EXEEXT):
    716 @WITH_LIBFIBRE_TRUE@    @$(CXXCOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/kos_fibre.cpp  -I$(LIBFIBRE_DIR) -lfibre
     784@WITH_LIBFIBRE_TRUE@    $(AM_V_CXX)$(CXXCOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/kos_fibre.cpp  -I$(LIBFIBRE_DIR) -lfibre
    717785
    718786@WITH_LIBFIBRE_TRUE@ctxswitch-kos_fibre2$(EXEEXT):
    719 @WITH_LIBFIBRE_TRUE@    @$(CXXCOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/kos_fibre2.cpp -I$(LIBFIBRE_DIR) -lfibre
     787@WITH_LIBFIBRE_TRUE@    $(AM_V_CXX)$(CXXCOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/kos_fibre2.cpp -I$(LIBFIBRE_DIR) -lfibre
    720788
    721789ctxswitch$(EXEEXT): $(CTXSWITCH_DEPEND)
    722790
    723791ctxswitch-pthread$(EXEEXT):
    724         @$(COMPILE)    -DBENCH_N=50000000 $(srcdir)/ctxswitch/pthreads.c
     792        $(AM_V_CC)$(COMPILE)    -DBENCH_N=50000000 $(srcdir)/ctxswitch/pthreads.c
    725793
    726794ctxswitch-cfa_coroutine$(EXEEXT):
    727         @$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/cfa_cor.cfa
     795        $(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/cfa_cor.cfa
    728796
    729797ctxswitch-cfa_thread$(EXEEXT):
    730         @$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/cfa_thrd.cfa
     798        $(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/cfa_thrd.cfa
    731799
    732800ctxswitch-cfa_thread2$(EXEEXT):
    733         @$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/cfa_thrd2.cfa
     801        $(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/cfa_thrd2.cfa
    734802
    735803ctxswitch-upp_coroutine$(EXEEXT):
    736         @$(UPPCOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/upp_cor.cc
     804        $(AM_V_UPP)$(UPPCOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/upp_cor.cc
    737805
    738806ctxswitch-upp_thread$(EXEEXT):
    739         @$(UPPCOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/upp_thrd.cc
     807        $(AM_V_UPP)$(UPPCOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/upp_thrd.cc
    740808
    741809ctxswitch-goroutine$(EXEEXT):
    742         @go build -o a.out $(srcdir)/ctxswitch/goroutine.go
     810        $(AM_V_GOC)go build -o a.out $(srcdir)/ctxswitch/goroutine.go
    743811
    744812ctxswitch-java_thread$(EXEEXT):
    745         @javac -d . $(srcdir)/ctxswitch/JavaThread.java
     813        $(AM_V_JAVAC)javac -d $(builddir) $(srcdir)/ctxswitch/JavaThread.java
    746814        @echo "#!/bin/sh" > a.out
    747815        @echo "java JavaThread" >> a.out
     
    760828
    761829mutex-pthread_lock$(EXEEXT):
    762         @$(COMPILE)    -DBENCH_N=50000000 $(srcdir)/mutex/pthreads.c
     830        $(AM_V_CC)$(COMPILE)    -DBENCH_N=50000000 $(srcdir)/mutex/pthreads.c
    763831
    764832mutex-upp$(EXEEXT):
    765         @$(UPPCOMPILE) -DBENCH_N=50000000 $(srcdir)/mutex/upp.cc
     833        $(AM_V_UPP)$(UPPCOMPILE) -DBENCH_N=50000000 $(srcdir)/mutex/upp.cc
    766834
    767835mutex-cfa1$(EXEEXT):
    768         @$(CFACOMPILE) -DBENCH_N=5000000  $(srcdir)/mutex/cfa1.cfa
     836        $(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=5000000  $(srcdir)/mutex/cfa1.cfa
    769837
    770838mutex-cfa2$(EXEEXT):
    771         @$(CFACOMPILE) -DBENCH_N=5000000  $(srcdir)/mutex/cfa2.cfa
     839        $(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=5000000  $(srcdir)/mutex/cfa2.cfa
    772840
    773841mutex-cfa4$(EXEEXT):
    774         @$(CFACOMPILE) -DBENCH_N=5000000  $(srcdir)/mutex/cfa4.cfa
     842        $(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=5000000  $(srcdir)/mutex/cfa4.cfa
    775843
    776844mutex-java_thread$(EXEEXT):
    777         @javac -d . $(srcdir)/mutex/JavaThread.java
     845        $(AM_V_JAVAC)javac -d $(builddir) $(srcdir)/mutex/JavaThread.java
    778846        @echo "#!/bin/sh" > a.out
    779847        @echo "java JavaThread" >> a.out
     
    789857
    790858signal-pthread_cond$(EXEEXT):
    791         @$(COMPILE)    -DBENCH_N=500000  $(srcdir)/schedint/pthreads.c
     859        $(AM_V_CC)$(COMPILE)    -DBENCH_N=500000  $(srcdir)/schedint/pthreads.c
    792860
    793861signal-upp$(EXEEXT):
    794         @$(UPPCOMPILE) -DBENCH_N=5000000 $(srcdir)/schedint/upp.cc
     862        $(AM_V_UPP)$(UPPCOMPILE) -DBENCH_N=5000000 $(srcdir)/schedint/upp.cc
    795863
    796864signal-cfa1$(EXEEXT):
    797         @$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedint/cfa1.cfa
     865        $(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedint/cfa1.cfa
    798866
    799867signal-cfa2$(EXEEXT):
    800         @$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedint/cfa2.cfa
     868        $(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedint/cfa2.cfa
    801869
    802870signal-cfa4$(EXEEXT):
    803         @$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedint/cfa4.cfa
     871        $(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedint/cfa4.cfa
    804872
    805873signal-java_thread$(EXEEXT):
    806         @javac -d . $(srcdir)/schedint/JavaThread.java
     874        $(AM_V_JAVAC)javac -d $(builddir) $(srcdir)/schedint/JavaThread.java
    807875        @echo "#!/bin/sh" > a.out
    808876        @echo "java JavaThread" >> a.out
     
    816884
    817885waitfor-upp$(EXEEXT):
    818         @$(UPPCOMPILE) -DBENCH_N=5000000 $(srcdir)/schedext/upp.cc
     886        $(AM_V_UPP)$(UPPCOMPILE) -DBENCH_N=5000000 $(srcdir)/schedext/upp.cc
    819887
    820888waitfor-cfa1$(EXEEXT):
    821         @$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedext/cfa1.cfa
     889        $(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedext/cfa1.cfa
    822890
    823891waitfor-cfa2$(EXEEXT):
    824         @$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedext/cfa2.cfa
     892        $(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedext/cfa2.cfa
    825893
    826894waitfor-cfa4$(EXEEXT):
    827         @$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedext/cfa4.cfa
     895        $(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedext/cfa4.cfa
    828896
    829897creation$(EXEEXT) :\
     
    838906
    839907creation-cfa_coroutine$(EXEEXT):
    840         @$(CFACOMPILE) -DBENCH_N=10000000 $(srcdir)/creation/cfa_cor.cfa
     908        $(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=10000000 $(srcdir)/creation/cfa_cor.cfa
    841909
    842910creation-cfa_coroutine_eager$(EXEEXT):
    843         @$(CFACOMPILE) -DBENCH_N=10000000 $(srcdir)/creation/cfa_cor.cfa -DEAGER
     911        $(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=10000000 $(srcdir)/creation/cfa_cor.cfa -DEAGER
    844912
    845913creation-cfa_thread$(EXEEXT):
    846         @$(CFACOMPILE) -DBENCH_N=10000000 $(srcdir)/creation/cfa_thrd.cfa
     914        $(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=10000000 $(srcdir)/creation/cfa_thrd.cfa
    847915
    848916creation-upp_coroutine$(EXEEXT):
    849         @$(UPPCOMPILE) -DBENCH_N=50000000 $(srcdir)/creation/upp_cor.cc
     917        $(AM_V_UPP)$(UPPCOMPILE) -DBENCH_N=50000000 $(srcdir)/creation/upp_cor.cc
    850918
    851919creation-upp_thread$(EXEEXT):
    852         @$(UPPCOMPILE) -DBENCH_N=50000000 $(srcdir)/creation/upp_thrd.cc
     920        $(AM_V_UPP)$(UPPCOMPILE) -DBENCH_N=50000000 $(srcdir)/creation/upp_thrd.cc
    853921
    854922creation-pthread$(EXEEXT):
    855         @$(COMPILE)    -DBENCH_N=250000   $(srcdir)/creation/pthreads.c
     923        $(AM_V_CC)$(COMPILE)    -DBENCH_N=250000   $(srcdir)/creation/pthreads.c
    856924
    857925creation-goroutine$(EXEEXT):
    858         @go build -o a.out $(srcdir)/creation/goroutine.go
     926        $(AM_V_GOC)go build -o a.out $(srcdir)/creation/goroutine.go
    859927
    860928creation-java_thread$(EXEEXT):
    861         @javac -d . $(srcdir)/creation/JavaThread.java
     929        $(AM_V_JAVAC)javac -d $(builddir) $(srcdir)/creation/JavaThread.java
    862930        @echo "#!/bin/sh" > a.out
    863931        @echo "java JavaThread" >> a.out
     
    875943
    876944compile-array$(EXEEXT):
    877         @$(CFACOMPILE) -fsyntax-only -w $(testdir)/array.cfa
     945        $(AM_V_CFA)$(CFACOMPILE) -fsyntax-only -w $(testdir)/array.cfa
    878946
    879947compile-attributes$(EXEEXT):
    880         @$(CFACOMPILE) -fsyntax-only -w $(testdir)/attributes.cfa
     948        $(AM_V_CFA)$(CFACOMPILE) -fsyntax-only -w $(testdir)/attributes.cfa
    881949
    882950compile-empty$(EXEEXT):
    883         @$(CFACOMPILE) -fsyntax-only -w $(srcdir)/compile/empty.cfa
     951        $(AM_V_CFA)$(CFACOMPILE) -fsyntax-only -w $(srcdir)/compile/empty.cfa
    884952
    885953compile-expression$(EXEEXT):
    886         @$(CFACOMPILE) -fsyntax-only -w $(testdir)/expression.cfa
     954        $(AM_V_CFA)$(CFACOMPILE) -fsyntax-only -w $(testdir)/expression.cfa
    887955
    888956compile-io$(EXEEXT):
    889         @$(CFACOMPILE) -fsyntax-only -w $(testdir)/io1.cfa
     957        $(AM_V_CFA)$(CFACOMPILE) -fsyntax-only -w $(testdir)/io1.cfa
    890958
    891959compile-monitor$(EXEEXT):
    892         @$(CFACOMPILE) -fsyntax-only -w $(testdir)/concurrent/monitor.cfa
     960        $(AM_V_CFA)$(CFACOMPILE) -fsyntax-only -w $(testdir)/concurrent/monitor.cfa
    893961
    894962compile-operators$(EXEEXT):
    895         @$(CFACOMPILE) -fsyntax-only -w $(testdir)/operators.cfa
     963        $(AM_V_CFA)$(CFACOMPILE) -fsyntax-only -w $(testdir)/operators.cfa
    896964
    897965compile-thread$(EXEEXT):
    898         @$(CFACOMPILE) -fsyntax-only -w $(testdir)/concurrent/thread.cfa
     966        $(AM_V_CFA)$(CFACOMPILE) -fsyntax-only -w $(testdir)/concurrent/thread.cfa
    899967
    900968compile-typeof$(EXEEXT):
    901         @$(CFACOMPILE) -fsyntax-only -w $(testdir)/typeof.cfa
     969        $(AM_V_CFA)$(CFACOMPILE) -fsyntax-only -w $(testdir)/typeof.cfa
    902970
    903971# Tell versions [3.59,3.63) of GNU make to not export all variables.
  • benchmark/Monitor.c

    r5e49e47 rd0c91a6  
    2929        EndTime = Time();
    3030
    31         sout | ( EndTime - StartTime ) / N | endl;
     31        sout | ( EndTime - StartTime ) / N;
    3232}
  • configure

    r5e49e47 rd0c91a6  
    199199  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
    200200  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
     201
     202  test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || (
     203    ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
     204    ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
     205    ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
     206    PATH=/empty FPATH=/empty; export PATH FPATH
     207    test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\
     208      || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1
    201209test \$(( 1 + 1 )) = 2 || exit 1"
    202210  if (eval "$as_required") 2>/dev/null; then :
     
    557565as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
    558566
     567SHELL=${CONFIG_SHELL-/bin/sh}
     568
    559569
    560570test -n "$DJDIR" || exec 7<&0 </dev/null
     
    626636LTLIBOBJS
    627637LIBOBJS
     638CFA_BACKEND_CC
    628639ALLOCA
     640WITH_LIBFIBRE_FALSE
     641WITH_LIBFIBRE_TRUE
     642CXXCPP
     643CPP
     644LT_SYS_LIBRARY_PATH
     645OTOOL64
     646OTOOL
     647LIPO
     648NMEDIT
     649DSYMUTIL
     650MANIFEST_TOOL
     651RANLIB
     652ac_ct_AR
     653AR
     654DLLTOOL
     655OBJDUMP
     656LN_S
     657NM
     658ac_ct_DUMPBIN
     659DUMPBIN
     660LD
     661FGREP
    629662EGREP
    630663GREP
    631 CPP
    632 WITH_LIBFIBRE_FALSE
    633 WITH_LIBFIBRE_TRUE
    634 RANLIB
     664SED
     665LIBTOOL
    635666LEXLIB
    636667LEX_OUTPUT_ROOT
     
    687718CFA_INCDIR
    688719CFA_PREFIX
    689 CFA_BACKEND_CC
    690 BACKEND_CC
    691720DOendif
    692721DOifskipcompile
     
    763792enable_silent_rules
    764793with_cfa_name
    765 with_backend_compiler
    766794with_target_hosts
    767795enable_dependency_tracking
     796enable_shared
     797enable_static
     798with_pic
     799enable_fast_install
     800with_aix_soname
     801with_gnu_ld
     802with_sysroot
     803enable_libtool_lock
    768804'
    769805      ac_precious_vars='build_alias
     
    782818YACC
    783819YFLAGS
    784 CPP'
     820LT_SYS_LIBRARY_PATH
     821CPP
     822CXXCPP'
    785823
    786824
     
    14181456  --disable-dependency-tracking
    14191457                          speeds up one-time build
     1458  --enable-shared[=PKGS]  build shared libraries [default=yes]
     1459  --enable-static[=PKGS]  build static libraries [default=yes]
     1460  --enable-fast-install[=PKGS]
     1461                          optimize for fast installation [default=yes]
     1462  --disable-libtool-lock  avoid locking (might break parallel builds)
    14201463
    14211464Optional Packages:
     
    14231466  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
    14241467  --with-cfa-name=NAME     NAME too which cfa will be installed
    1425   --with-backend-compiler=PROGRAM     PROGRAM that performs the final code compilation (must be gcc-compatible)
    14261468  --with-target-hosts=HOSTS     HOSTS comma seperated list of hosts to build for, format ARCH:debug|nodebug|nolib
     1469  --with-pic[=PKGS]       try to use only PIC/non-PIC objects [default=use
     1470                          both]
     1471  --with-aix-soname=aix|svr4|both
     1472                          shared library versioning (aka "SONAME") variant to
     1473                          provide on AIX, [default=aix].
     1474  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
     1475  --with-sysroot[=DIR]    Search for dependent libraries within DIR (or the
     1476                          compiler's sysroot if not specified).
    14271477
    14281478Some influential environment variables:
     
    14441494              This script will default YFLAGS to the empty string to avoid a
    14451495              default value of `-d' given by some make applications.
     1496  LT_SYS_LIBRARY_PATH
     1497              User-defined run-time library search path.
    14461498  CPP         C preprocessor
     1499  CXXCPP      C++ preprocessor
    14471500
    14481501Use these variables to override the choices made by `configure' or to help
     
    16481701} # ac_fn_c_try_link
    16491702
    1650 # ac_fn_c_check_type LINENO TYPE VAR INCLUDES
    1651 # -------------------------------------------
    1652 # Tests whether TYPE exists after having included INCLUDES, setting cache
    1653 # variable VAR accordingly.
    1654 ac_fn_c_check_type ()
     1703# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
     1704# -------------------------------------------------------
     1705# Tests whether HEADER exists and can be compiled using the include files in
     1706# INCLUDES, setting the cache variable VAR accordingly.
     1707ac_fn_c_check_header_compile ()
    16551708{
    16561709  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
     
    16601713  $as_echo_n "(cached) " >&6
    16611714else
    1662   eval "$3=no"
    16631715  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
    16641716/* end confdefs.h.  */
    16651717$4
    1666 int
    1667 main ()
    1668 {
    1669 if (sizeof ($2))
    1670          return 0;
    1671   ;
    1672   return 0;
    1673 }
     1718#include <$2>
    16741719_ACEOF
    16751720if ac_fn_c_try_compile "$LINENO"; then :
    1676   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
    1677 /* end confdefs.h.  */
    1678 $4
    1679 int
    1680 main ()
    1681 {
    1682 if (sizeof (($2)))
    1683             return 0;
    1684   ;
    1685   return 0;
    1686 }
    1687 _ACEOF
    1688 if ac_fn_c_try_compile "$LINENO"; then :
    1689 
    1690 else
    16911721  eval "$3=yes"
    1692 fi
    1693 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
     1722else
     1723  eval "$3=no"
    16941724fi
    16951725rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
     
    17001730  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
    17011731
    1702 } # ac_fn_c_check_type
     1732} # ac_fn_c_check_header_compile
    17031733
    17041734# ac_fn_c_try_cpp LINENO
     
    17811811} # ac_fn_c_try_run
    17821812
    1783 # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
    1784 # -------------------------------------------------------
    1785 # Tests whether HEADER exists and can be compiled using the include files in
    1786 # INCLUDES, setting the cache variable VAR accordingly.
    1787 ac_fn_c_check_header_compile ()
    1788 {
    1789   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
    1790   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
    1791 $as_echo_n "checking for $2... " >&6; }
    1792 if eval \${$3+:} false; then :
    1793   $as_echo_n "(cached) " >&6
    1794 else
    1795   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
    1796 /* end confdefs.h.  */
    1797 $4
    1798 #include <$2>
    1799 _ACEOF
    1800 if ac_fn_c_try_compile "$LINENO"; then :
    1801   eval "$3=yes"
    1802 else
    1803   eval "$3=no"
    1804 fi
    1805 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
    1806 fi
    1807 eval ac_res=\$$3
    1808                { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
    1809 $as_echo "$ac_res" >&6; }
    1810   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
    1811 
    1812 } # ac_fn_c_check_header_compile
    1813 
    18141813# ac_fn_c_check_func LINENO FUNC VAR
    18151814# ----------------------------------
     
    18781877
    18791878} # ac_fn_c_check_func
     1879
     1880# ac_fn_cxx_try_cpp LINENO
     1881# ------------------------
     1882# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
     1883ac_fn_cxx_try_cpp ()
     1884{
     1885  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
     1886  if { { ac_try="$ac_cpp conftest.$ac_ext"
     1887case "(($ac_try" in
     1888  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
     1889  *) ac_try_echo=$ac_try;;
     1890esac
     1891eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
     1892$as_echo "$ac_try_echo"; } >&5
     1893  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
     1894  ac_status=$?
     1895  if test -s conftest.err; then
     1896    grep -v '^ *+' conftest.err >conftest.er1
     1897    cat conftest.er1 >&5
     1898    mv -f conftest.er1 conftest.err
     1899  fi
     1900  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
     1901  test $ac_status = 0; } > conftest.i && {
     1902         test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
     1903         test ! -s conftest.err
     1904       }; then :
     1905  ac_retval=0
     1906else
     1907  $as_echo "$as_me: failed program was:" >&5
     1908sed 's/^/| /' conftest.$ac_ext >&5
     1909
     1910    ac_retval=1
     1911fi
     1912  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
     1913  as_fn_set_status $ac_retval
     1914
     1915} # ac_fn_cxx_try_cpp
     1916
     1917# ac_fn_cxx_try_link LINENO
     1918# -------------------------
     1919# Try to link conftest.$ac_ext, and return whether this succeeded.
     1920ac_fn_cxx_try_link ()
     1921{
     1922  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
     1923  rm -f conftest.$ac_objext conftest$ac_exeext
     1924  if { { ac_try="$ac_link"
     1925case "(($ac_try" in
     1926  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
     1927  *) ac_try_echo=$ac_try;;
     1928esac
     1929eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
     1930$as_echo "$ac_try_echo"; } >&5
     1931  (eval "$ac_link") 2>conftest.err
     1932  ac_status=$?
     1933  if test -s conftest.err; then
     1934    grep -v '^ *+' conftest.err >conftest.er1
     1935    cat conftest.er1 >&5
     1936    mv -f conftest.er1 conftest.err
     1937  fi
     1938  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
     1939  test $ac_status = 0; } && {
     1940         test -z "$ac_cxx_werror_flag" ||
     1941         test ! -s conftest.err
     1942       } && test -s conftest$ac_exeext && {
     1943         test "$cross_compiling" = yes ||
     1944         test -x conftest$ac_exeext
     1945       }; then :
     1946  ac_retval=0
     1947else
     1948  $as_echo "$as_me: failed program was:" >&5
     1949sed 's/^/| /' conftest.$ac_ext >&5
     1950
     1951        ac_retval=1
     1952fi
     1953  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
     1954  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
     1955  # interfere with the next link command; also delete a directory that is
     1956  # left behind by Apple's compiler.  We do this before executing the actions.
     1957  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
     1958  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
     1959  as_fn_set_status $ac_retval
     1960
     1961} # ac_fn_cxx_try_link
     1962
     1963# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
     1964# -------------------------------------------
     1965# Tests whether TYPE exists after having included INCLUDES, setting cache
     1966# variable VAR accordingly.
     1967ac_fn_c_check_type ()
     1968{
     1969  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
     1970  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
     1971$as_echo_n "checking for $2... " >&6; }
     1972if eval \${$3+:} false; then :
     1973  $as_echo_n "(cached) " >&6
     1974else
     1975  eval "$3=no"
     1976  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
     1977/* end confdefs.h.  */
     1978$4
     1979int
     1980main ()
     1981{
     1982if (sizeof ($2))
     1983         return 0;
     1984  ;
     1985  return 0;
     1986}
     1987_ACEOF
     1988if ac_fn_c_try_compile "$LINENO"; then :
     1989  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
     1990/* end confdefs.h.  */
     1991$4
     1992int
     1993main ()
     1994{
     1995if (sizeof (($2)))
     1996            return 0;
     1997  ;
     1998  return 0;
     1999}
     2000_ACEOF
     2001if ac_fn_c_try_compile "$LINENO"; then :
     2002
     2003else
     2004  eval "$3=yes"
     2005fi
     2006rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
     2007fi
     2008rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
     2009fi
     2010eval ac_res=\$$3
     2011               { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
     2012$as_echo "$ac_res" >&6; }
     2013  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
     2014
     2015} # ac_fn_c_check_type
    18802016
    18812017# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
     
    24802616
    24812617
     2618
    24822619#AC_CONFIG_SRCDIR([src/main.cc])
    24832620ac_config_headers="$ac_config_headers config.h:src/config.h.in"
     
    31663303
    31673304#==============================================================================
    3168 # backend compiler implementation
    3169 
    3170 # Check whether --with-backend-compiler was given.
    3171 if test "${with_backend_compiler+set}" = set; then :
    3172   withval=$with_backend_compiler; backendcompiler=$withval
    3173 else
    3174   backendcompiler=""
    3175 fi
    3176 
    3177 if test "x$backendcompiler" != "x"; then
    3178        BACKEND_CC=${backendcompiler}
    3179 else
    3180        # Extract the first word of "gcc", so it can be a program name with args.
    3181 set dummy gcc; ac_word=$2
    3182 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
    3183 $as_echo_n "checking for $ac_word... " >&6; }
    3184 if ${ac_cv_path_BACKEND_CC+:} false; then :
    3185   $as_echo_n "(cached) " >&6
    3186 else
    3187   case $BACKEND_CC in
    3188   [\\/]* | ?:[\\/]*)
    3189   ac_cv_path_BACKEND_CC="$BACKEND_CC" # Let the user override the test with a path.
    3190   ;;
    3191   *)
    3192   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
    3193 for as_dir in $PATH
    3194 do
    3195   IFS=$as_save_IFS
    3196   test -z "$as_dir" && as_dir=.
    3197     for ac_exec_ext in '' $ac_executable_extensions; do
    3198   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
    3199     ac_cv_path_BACKEND_CC="$as_dir/$ac_word$ac_exec_ext"
    3200     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
    3201     break 2
    3202   fi
    3203 done
    3204   done
    3205 IFS=$as_save_IFS
    3206 
    3207   ;;
    3208 esac
    3209 fi
    3210 BACKEND_CC=$ac_cv_path_BACKEND_CC
    3211 if test -n "$BACKEND_CC"; then
    3212   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BACKEND_CC" >&5
    3213 $as_echo "$BACKEND_CC" >&6; }
    3214 else
    3215   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
    3216 $as_echo "no" >&6; }
    3217 fi
    3218 
    3219        # check gcc installed
    3220        if test "x$BACKEND_CC" = "x"; then
    3221                as_fn_error $? "some version of gcc is needed. Get it at ftp://ftp.gnu.org" "$LINENO" 5
    3222                exit 1
    3223        fi
    3224 fi
    3225 
    3226 cat >>confdefs.h <<_ACEOF
    3227 #define CFA_BACKEND_CC "${BACKEND_CC}"
    3228 _ACEOF
    3229 
    3230 
    3231 
    3232 #==============================================================================
    32333305# Installation paths
    32343306
     
    34783550                "arm"        ) cannon_arch_name="arm";;
    34793551                "ARM"        ) cannon_arch_name="arm";;
     3552                "armv7l"     ) cannon_arch_name="arm";;
    34803553                *)
    34813554                >&2 echo "Unkown architecture " $arch_name;
     
    35183591                "arm"        ) cannon_arch_name="arm";;
    35193592                "ARM"        ) cannon_arch_name="arm";;
     3593                "armv7l"     ) cannon_arch_name="arm";;
    35203594                *)
    35213595                >&2 echo "Unkown architecture " $arch_name;
     
    53165390fi
    53175391if test "${LEX}" = "lex" ; then echo "Error: flex required." ; exit 1 ; fi
    5318 
    5319 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
    5320 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
    5321 set x ${MAKE-make}
    5322 ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
    5323 if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
     5392case `pwd` in
     5393  *\ * | *\     *)
     5394    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
     5395$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
     5396esac
     5397
     5398
     5399
     5400macro_version='2.4.6'
     5401macro_revision='2.4.6'
     5402
     5403
     5404
     5405
     5406
     5407
     5408
     5409
     5410
     5411
     5412
     5413
     5414
     5415ltmain=$ac_aux_dir/ltmain.sh
     5416
     5417# Backslashify metacharacters that are still active within
     5418# double-quoted strings.
     5419sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
     5420
     5421# Same as above, but do not quote variable references.
     5422double_quote_subst='s/\(["`\\]\)/\\\1/g'
     5423
     5424# Sed substitution to delay expansion of an escaped shell variable in a
     5425# double_quote_subst'ed string.
     5426delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
     5427
     5428# Sed substitution to delay expansion of an escaped single quote.
     5429delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
     5430
     5431# Sed substitution to avoid accidental globbing in evaled expressions
     5432no_glob_subst='s/\*/\\\*/g'
     5433
     5434ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
     5435ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
     5436ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
     5437
     5438{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
     5439$as_echo_n "checking how to print strings... " >&6; }
     5440# Test print first, because it will be a builtin if present.
     5441if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
     5442   test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
     5443  ECHO='print -r --'
     5444elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
     5445  ECHO='printf %s\n'
     5446else
     5447  # Use this function as a fallback that always works.
     5448  func_fallback_echo ()
     5449  {
     5450    eval 'cat <<_LTECHO_EOF
     5451$1
     5452_LTECHO_EOF'
     5453  }
     5454  ECHO='func_fallback_echo'
     5455fi
     5456
     5457# func_echo_all arg...
     5458# Invoke $ECHO with all args, space-separated.
     5459func_echo_all ()
     5460{
     5461    $ECHO ""
     5462}
     5463
     5464case $ECHO in
     5465  printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5
     5466$as_echo "printf" >&6; } ;;
     5467  print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5
     5468$as_echo "print -r" >&6; } ;;
     5469  *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5
     5470$as_echo "cat" >&6; } ;;
     5471esac
     5472
     5473
     5474
     5475
     5476
     5477
     5478
     5479
     5480
     5481
     5482
     5483
     5484
     5485
     5486{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
     5487$as_echo_n "checking for a sed that does not truncate output... " >&6; }
     5488if ${ac_cv_path_SED+:} false; then :
    53245489  $as_echo_n "(cached) " >&6
    53255490else
    5326   cat >conftest.make <<\_ACEOF
    5327 SHELL = /bin/sh
    5328 all:
    5329         @echo '@@@%%%=$(MAKE)=@@@%%%'
    5330 _ACEOF
    5331 # GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
    5332 case `${MAKE-make} -f conftest.make 2>/dev/null` in
    5333   *@@@%%%=?*=@@@%%%*)
    5334     eval ac_cv_prog_make_${ac_make}_set=yes;;
    5335   *)
    5336     eval ac_cv_prog_make_${ac_make}_set=no;;
    5337 esac
    5338 rm -f conftest.make
    5339 fi
    5340 if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
    5341   { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
    5342 $as_echo "yes" >&6; }
    5343   SET_MAKE=
    5344 else
    5345   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
    5346 $as_echo "no" >&6; }
    5347   SET_MAKE="MAKE=${MAKE-make}"
    5348 fi
    5349 
    5350 if test -n "$ac_tool_prefix"; then
    5351   # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
    5352 set dummy ${ac_tool_prefix}ranlib; ac_word=$2
    5353 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
    5354 $as_echo_n "checking for $ac_word... " >&6; }
    5355 if ${ac_cv_prog_RANLIB+:} false; then :
    5356   $as_echo_n "(cached) " >&6
    5357 else
    5358   if test -n "$RANLIB"; then
    5359   ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
    5360 else
    5361 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
     5491            ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
     5492     for ac_i in 1 2 3 4 5 6 7; do
     5493       ac_script="$ac_script$as_nl$ac_script"
     5494     done
     5495     echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
     5496     { ac_script=; unset ac_script;}
     5497     if test -z "$SED"; then
     5498  ac_path_SED_found=false
     5499  # Loop through the user's path and test for each of PROGNAME-LIST
     5500  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
    53625501for as_dir in $PATH
    53635502do
    53645503  IFS=$as_save_IFS
    53655504  test -z "$as_dir" && as_dir=.
     5505    for ac_prog in sed gsed; do
    53665506    for ac_exec_ext in '' $ac_executable_extensions; do
    5367   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
    5368     ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
    5369     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
    5370     break 2
    5371   fi
    5372 done
     5507      ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
     5508      as_fn_executable_p "$ac_path_SED" || continue
     5509# Check for GNU ac_path_SED and select it if it is found.
     5510  # Check for GNU $ac_path_SED
     5511case `"$ac_path_SED" --version 2>&1` in
     5512*GNU*)
     5513  ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
     5514*)
     5515  ac_count=0
     5516  $as_echo_n 0123456789 >"conftest.in"
     5517  while :
     5518  do
     5519    cat "conftest.in" "conftest.in" >"conftest.tmp"
     5520    mv "conftest.tmp" "conftest.in"
     5521    cp "conftest.in" "conftest.nl"
     5522    $as_echo '' >> "conftest.nl"
     5523    "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
     5524    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
     5525    as_fn_arith $ac_count + 1 && ac_count=$as_val
     5526    if test $ac_count -gt ${ac_path_SED_max-0}; then
     5527      # Best one so far, save it but keep looking for a better one
     5528      ac_cv_path_SED="$ac_path_SED"
     5529      ac_path_SED_max=$ac_count
     5530    fi
     5531    # 10*(2^10) chars as input seems more than enough
     5532    test $ac_count -gt 10 && break
     5533  done
     5534  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
     5535esac
     5536
     5537      $ac_path_SED_found && break 3
     5538    done
     5539  done
    53735540  done
    53745541IFS=$as_save_IFS
    5375 
    5376 fi
    5377 fi
    5378 RANLIB=$ac_cv_prog_RANLIB
    5379 if test -n "$RANLIB"; then
    5380   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
    5381 $as_echo "$RANLIB" >&6; }
    5382 else
    5383   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
    5384 $as_echo "no" >&6; }
    5385 fi
    5386 
    5387 
    5388 fi
    5389 if test -z "$ac_cv_prog_RANLIB"; then
    5390   ac_ct_RANLIB=$RANLIB
    5391   # Extract the first word of "ranlib", so it can be a program name with args.
    5392 set dummy ranlib; ac_word=$2
    5393 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
    5394 $as_echo_n "checking for $ac_word... " >&6; }
    5395 if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
    5396   $as_echo_n "(cached) " >&6
    5397 else
    5398   if test -n "$ac_ct_RANLIB"; then
    5399   ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
    5400 else
    5401 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
    5402 for as_dir in $PATH
    5403 do
    5404   IFS=$as_save_IFS
    5405   test -z "$as_dir" && as_dir=.
    5406     for ac_exec_ext in '' $ac_executable_extensions; do
    5407   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
    5408     ac_cv_prog_ac_ct_RANLIB="ranlib"
    5409     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
    5410     break 2
     5542  if test -z "$ac_cv_path_SED"; then
     5543    as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
    54115544  fi
    5412 done
    5413   done
    5414 IFS=$as_save_IFS
    5415 
    5416 fi
    5417 fi
    5418 ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
    5419 if test -n "$ac_ct_RANLIB"; then
    5420   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
    5421 $as_echo "$ac_ct_RANLIB" >&6; }
    5422 else
    5423   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
    5424 $as_echo "no" >&6; }
    5425 fi
    5426 
    5427   if test "x$ac_ct_RANLIB" = x; then
    5428     RANLIB=":"
    5429   else
    5430     case $cross_compiling:$ac_tool_warned in
    5431 yes:)
    5432 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
    5433 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
    5434 ac_tool_warned=yes ;;
    5435 esac
    5436     RANLIB=$ac_ct_RANLIB
    5437   fi
    5438 else
    5439   RANLIB="$ac_cv_prog_RANLIB"
    5440 fi
    5441 
    5442 
    5443 # Checks for libraries.
    5444 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fibre::yield in -lfibre" >&5
    5445 $as_echo_n "checking for Fibre::yield in -lfibre... " >&6; }
    5446 if ${ac_cv_lib_fibre_Fibre__yield+:} false; then :
    5447   $as_echo_n "(cached) " >&6
    5448 else
    5449   ac_check_lib_save_LIBS=$LIBS
    5450 LIBS="-lfibre  $LIBS"
    5451 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
    5452 /* end confdefs.h.  */
    5453 
    5454 /* Override any GCC internal prototype to avoid an error.
    5455    Use char because int might match the return type of a GCC
    5456    builtin and then its argument prototype would still apply.  */
    5457 #ifdef __cplusplus
    5458 extern "C"
    5459 #endif
    5460 char Fibre::yield ();
    5461 int
    5462 main ()
    5463 {
    5464 return Fibre::yield ();
    5465   ;
    5466   return 0;
    5467 }
    5468 _ACEOF
    5469 if ac_fn_c_try_link "$LINENO"; then :
    5470   ac_cv_lib_fibre_Fibre__yield=yes
    5471 else
    5472   ac_cv_lib_fibre_Fibre__yield=no
    5473 fi
    5474 rm -f core conftest.err conftest.$ac_objext \
    5475     conftest$ac_exeext conftest.$ac_ext
    5476 LIBS=$ac_check_lib_save_LIBS
    5477 fi
    5478 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_fibre_Fibre__yield" >&5
    5479 $as_echo "$ac_cv_lib_fibre_Fibre__yield" >&6; }
    5480 if test "x$ac_cv_lib_fibre_Fibre__yield" = xyes; then :
    5481   HAVE_LIBFIBRE=1
    5482 else
    5483   HAVE_LIBFIBRE=0
    5484 fi
    5485 
    5486  if test "$HAVE_LIBFIBRE" -eq 1; then
    5487   WITH_LIBFIBRE_TRUE=
    5488   WITH_LIBFIBRE_FALSE='#'
    5489 else
    5490   WITH_LIBFIBRE_TRUE='#'
    5491   WITH_LIBFIBRE_FALSE=
    5492 fi
    5493 
    5494 
    5495 # Checks for header files.
    5496 ac_ext=c
    5497 ac_cpp='$CPP $CPPFLAGS'
    5498 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
    5499 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
    5500 ac_compiler_gnu=$ac_cv_c_compiler_gnu
    5501 { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
    5502 $as_echo_n "checking how to run the C preprocessor... " >&6; }
    5503 # On Suns, sometimes $CPP names a directory.
    5504 if test -n "$CPP" && test -d "$CPP"; then
    5505   CPP=
    5506 fi
    5507 if test -z "$CPP"; then
    5508   if ${ac_cv_prog_CPP+:} false; then :
    5509   $as_echo_n "(cached) " >&6
    5510 else
    5511       # Double quotes because CPP needs to be expanded
    5512     for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
    5513     do
    5514       ac_preproc_ok=false
    5515 for ac_c_preproc_warn_flag in '' yes
    5516 do
    5517   # Use a header file that comes with gcc, so configuring glibc
    5518   # with a fresh cross-compiler works.
    5519   # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
    5520   # <limits.h> exists even on freestanding compilers.
    5521   # On the NeXT, cc -E runs the code through the compiler's parser,
    5522   # not just through cpp. "Syntax error" is here to catch this case.
    5523   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
    5524 /* end confdefs.h.  */
    5525 #ifdef __STDC__
    5526 # include <limits.h>
    5527 #else
    5528 # include <assert.h>
    5529 #endif
    5530                      Syntax error
    5531 _ACEOF
    5532 if ac_fn_c_try_cpp "$LINENO"; then :
    5533 
    5534 else
    5535   # Broken: fails on valid input.
    5536 continue
    5537 fi
    5538 rm -f conftest.err conftest.i conftest.$ac_ext
    5539 
    5540   # OK, works on sane cases.  Now check whether nonexistent headers
    5541   # can be detected and how.
    5542   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
    5543 /* end confdefs.h.  */
    5544 #include <ac_nonexistent.h>
    5545 _ACEOF
    5546 if ac_fn_c_try_cpp "$LINENO"; then :
    5547   # Broken: success on invalid input.
    5548 continue
    5549 else
    5550   # Passes both tests.
    5551 ac_preproc_ok=:
    5552 break
    5553 fi
    5554 rm -f conftest.err conftest.i conftest.$ac_ext
    5555 
    5556 done
    5557 # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
    5558 rm -f conftest.i conftest.err conftest.$ac_ext
    5559 if $ac_preproc_ok; then :
    5560   break
    5561 fi
    5562 
    5563     done
    5564     ac_cv_prog_CPP=$CPP
    5565 
    5566 fi
    5567   CPP=$ac_cv_prog_CPP
    5568 else
    5569   ac_cv_prog_CPP=$CPP
    5570 fi
    5571 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
    5572 $as_echo "$CPP" >&6; }
    5573 ac_preproc_ok=false
    5574 for ac_c_preproc_warn_flag in '' yes
    5575 do
    5576   # Use a header file that comes with gcc, so configuring glibc
    5577   # with a fresh cross-compiler works.
    5578   # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
    5579   # <limits.h> exists even on freestanding compilers.
    5580   # On the NeXT, cc -E runs the code through the compiler's parser,
    5581   # not just through cpp. "Syntax error" is here to catch this case.
    5582   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
    5583 /* end confdefs.h.  */
    5584 #ifdef __STDC__
    5585 # include <limits.h>
    5586 #else
    5587 # include <assert.h>
    5588 #endif
    5589                      Syntax error
    5590 _ACEOF
    5591 if ac_fn_c_try_cpp "$LINENO"; then :
    5592 
    5593 else
    5594   # Broken: fails on valid input.
    5595 continue
    5596 fi
    5597 rm -f conftest.err conftest.i conftest.$ac_ext
    5598 
    5599   # OK, works on sane cases.  Now check whether nonexistent headers
    5600   # can be detected and how.
    5601   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
    5602 /* end confdefs.h.  */
    5603 #include <ac_nonexistent.h>
    5604 _ACEOF
    5605 if ac_fn_c_try_cpp "$LINENO"; then :
    5606   # Broken: success on invalid input.
    5607 continue
    5608 else
    5609   # Passes both tests.
    5610 ac_preproc_ok=:
    5611 break
    5612 fi
    5613 rm -f conftest.err conftest.i conftest.$ac_ext
    5614 
    5615 done
    5616 # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
    5617 rm -f conftest.i conftest.err conftest.$ac_ext
    5618 if $ac_preproc_ok; then :
    5619 
    5620 else
    5621   { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
    5622 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
    5623 as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
    5624 See \`config.log' for more details" "$LINENO" 5; }
    5625 fi
    5626 
    5627 ac_ext=c
    5628 ac_cpp='$CPP $CPPFLAGS'
    5629 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
    5630 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
    5631 ac_compiler_gnu=$ac_cv_c_compiler_gnu
     5545else
     5546  ac_cv_path_SED=$SED
     5547fi
     5548
     5549fi
     5550{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
     5551$as_echo "$ac_cv_path_SED" >&6; }
     5552 SED="$ac_cv_path_SED"
     5553  rm -f conftest.sed
     5554
     5555test -z "$SED" && SED=sed
     5556Xsed="$SED -e 1s/^X//"
     5557
     5558
     5559
     5560
     5561
     5562
     5563
     5564
     5565
    56325566
    56335567
     
    57625696
    57635697
     5698{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
     5699$as_echo_n "checking for fgrep... " >&6; }
     5700if ${ac_cv_path_FGREP+:} false; then :
     5701  $as_echo_n "(cached) " >&6
     5702else
     5703  if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
     5704   then ac_cv_path_FGREP="$GREP -F"
     5705   else
     5706     if test -z "$FGREP"; then
     5707  ac_path_FGREP_found=false
     5708  # Loop through the user's path and test for each of PROGNAME-LIST
     5709  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
     5710for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
     5711do
     5712  IFS=$as_save_IFS
     5713  test -z "$as_dir" && as_dir=.
     5714    for ac_prog in fgrep; do
     5715    for ac_exec_ext in '' $ac_executable_extensions; do
     5716      ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
     5717      as_fn_executable_p "$ac_path_FGREP" || continue
     5718# Check for GNU ac_path_FGREP and select it if it is found.
     5719  # Check for GNU $ac_path_FGREP
     5720case `"$ac_path_FGREP" --version 2>&1` in
     5721*GNU*)
     5722  ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
     5723*)
     5724  ac_count=0
     5725  $as_echo_n 0123456789 >"conftest.in"
     5726  while :
     5727  do
     5728    cat "conftest.in" "conftest.in" >"conftest.tmp"
     5729    mv "conftest.tmp" "conftest.in"
     5730    cp "conftest.in" "conftest.nl"
     5731    $as_echo 'FGREP' >> "conftest.nl"
     5732    "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break
     5733    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
     5734    as_fn_arith $ac_count + 1 && ac_count=$as_val
     5735    if test $ac_count -gt ${ac_path_FGREP_max-0}; then
     5736      # Best one so far, save it but keep looking for a better one
     5737      ac_cv_path_FGREP="$ac_path_FGREP"
     5738      ac_path_FGREP_max=$ac_count
     5739    fi
     5740    # 10*(2^10) chars as input seems more than enough
     5741    test $ac_count -gt 10 && break
     5742  done
     5743  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
     5744esac
     5745
     5746      $ac_path_FGREP_found && break 3
     5747    done
     5748  done
     5749  done
     5750IFS=$as_save_IFS
     5751  if test -z "$ac_cv_path_FGREP"; then
     5752    as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
     5753  fi
     5754else
     5755  ac_cv_path_FGREP=$FGREP
     5756fi
     5757
     5758   fi
     5759fi
     5760{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
     5761$as_echo "$ac_cv_path_FGREP" >&6; }
     5762 FGREP="$ac_cv_path_FGREP"
     5763
     5764
     5765test -z "$GREP" && GREP=grep
     5766
     5767
     5768
     5769
     5770
     5771
     5772
     5773
     5774
     5775
     5776
     5777
     5778
     5779
     5780
     5781
     5782
     5783
     5784
     5785# Check whether --with-gnu-ld was given.
     5786if test "${with_gnu_ld+set}" = set; then :
     5787  withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes
     5788else
     5789  with_gnu_ld=no
     5790fi
     5791
     5792ac_prog=ld
     5793if test yes = "$GCC"; then
     5794  # Check if gcc -print-prog-name=ld gives a path.
     5795  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
     5796$as_echo_n "checking for ld used by $CC... " >&6; }
     5797  case $host in
     5798  *-*-mingw*)
     5799    # gcc leaves a trailing carriage return, which upsets mingw
     5800    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
     5801  *)
     5802    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
     5803  esac
     5804  case $ac_prog in
     5805    # Accept absolute paths.
     5806    [\\/]* | ?:[\\/]*)
     5807      re_direlt='/[^/][^/]*/\.\./'
     5808      # Canonicalize the pathname of ld
     5809      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
     5810      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
     5811        ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
     5812      done
     5813      test -z "$LD" && LD=$ac_prog
     5814      ;;
     5815  "")
     5816    # If it fails, then pretend we aren't using GCC.
     5817    ac_prog=ld
     5818    ;;
     5819  *)
     5820    # If it is relative, then search for the first ld in PATH.
     5821    with_gnu_ld=unknown
     5822    ;;
     5823  esac
     5824elif test yes = "$with_gnu_ld"; then
     5825  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
     5826$as_echo_n "checking for GNU ld... " >&6; }
     5827else
     5828  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
     5829$as_echo_n "checking for non-GNU ld... " >&6; }
     5830fi
     5831if ${lt_cv_path_LD+:} false; then :
     5832  $as_echo_n "(cached) " >&6
     5833else
     5834  if test -z "$LD"; then
     5835  lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
     5836  for ac_dir in $PATH; do
     5837    IFS=$lt_save_ifs
     5838    test -z "$ac_dir" && ac_dir=.
     5839    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
     5840      lt_cv_path_LD=$ac_dir/$ac_prog
     5841      # Check to see if the program is GNU ld.  I'd rather use --version,
     5842      # but apparently some variants of GNU ld only accept -v.
     5843      # Break only if it was the GNU/non-GNU ld that we prefer.
     5844      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
     5845      *GNU* | *'with BFD'*)
     5846        test no != "$with_gnu_ld" && break
     5847        ;;
     5848      *)
     5849        test yes != "$with_gnu_ld" && break
     5850        ;;
     5851      esac
     5852    fi
     5853  done
     5854  IFS=$lt_save_ifs
     5855else
     5856  lt_cv_path_LD=$LD # Let the user override the test with a path.
     5857fi
     5858fi
     5859
     5860LD=$lt_cv_path_LD
     5861if test -n "$LD"; then
     5862  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
     5863$as_echo "$LD" >&6; }
     5864else
     5865  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
     5866$as_echo "no" >&6; }
     5867fi
     5868test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
     5869{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
     5870$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
     5871if ${lt_cv_prog_gnu_ld+:} false; then :
     5872  $as_echo_n "(cached) " >&6
     5873else
     5874  # I'd rather use --version here, but apparently some GNU lds only accept -v.
     5875case `$LD -v 2>&1 </dev/null` in
     5876*GNU* | *'with BFD'*)
     5877  lt_cv_prog_gnu_ld=yes
     5878  ;;
     5879*)
     5880  lt_cv_prog_gnu_ld=no
     5881  ;;
     5882esac
     5883fi
     5884{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
     5885$as_echo "$lt_cv_prog_gnu_ld" >&6; }
     5886with_gnu_ld=$lt_cv_prog_gnu_ld
     5887
     5888
     5889
     5890
     5891
     5892
     5893
     5894
     5895
     5896{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
     5897$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
     5898if ${lt_cv_path_NM+:} false; then :
     5899  $as_echo_n "(cached) " >&6
     5900else
     5901  if test -n "$NM"; then
     5902  # Let the user override the test.
     5903  lt_cv_path_NM=$NM
     5904else
     5905  lt_nm_to_check=${ac_tool_prefix}nm
     5906  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
     5907    lt_nm_to_check="$lt_nm_to_check nm"
     5908  fi
     5909  for lt_tmp_nm in $lt_nm_to_check; do
     5910    lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
     5911    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
     5912      IFS=$lt_save_ifs
     5913      test -z "$ac_dir" && ac_dir=.
     5914      tmp_nm=$ac_dir/$lt_tmp_nm
     5915      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then
     5916        # Check to see if the nm accepts a BSD-compat flag.
     5917        # Adding the 'sed 1q' prevents false positives on HP-UX, which says:
     5918        #   nm: unknown option "B" ignored
     5919        # Tru64's nm complains that /dev/null is an invalid object file
     5920        # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty
     5921        case $build_os in
     5922        mingw*) lt_bad_file=conftest.nm/nofile ;;
     5923        *) lt_bad_file=/dev/null ;;
     5924        esac
     5925        case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in
     5926        *$lt_bad_file* | *'Invalid file or object type'*)
     5927          lt_cv_path_NM="$tmp_nm -B"
     5928          break 2
     5929          ;;
     5930        *)
     5931          case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
     5932          */dev/null*)
     5933            lt_cv_path_NM="$tmp_nm -p"
     5934            break 2
     5935            ;;
     5936          *)
     5937            lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
     5938            continue # so that we can try to find one that supports BSD flags
     5939            ;;
     5940          esac
     5941          ;;
     5942        esac
     5943      fi
     5944    done
     5945    IFS=$lt_save_ifs
     5946  done
     5947  : ${lt_cv_path_NM=no}
     5948fi
     5949fi
     5950{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
     5951$as_echo "$lt_cv_path_NM" >&6; }
     5952if test no != "$lt_cv_path_NM"; then
     5953  NM=$lt_cv_path_NM
     5954else
     5955  # Didn't find any BSD compatible name lister, look for dumpbin.
     5956  if test -n "$DUMPBIN"; then :
     5957    # Let the user override the test.
     5958  else
     5959    if test -n "$ac_tool_prefix"; then
     5960  for ac_prog in dumpbin "link -dump"
     5961  do
     5962    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
     5963set dummy $ac_tool_prefix$ac_prog; ac_word=$2
     5964{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
     5965$as_echo_n "checking for $ac_word... " >&6; }
     5966if ${ac_cv_prog_DUMPBIN+:} false; then :
     5967  $as_echo_n "(cached) " >&6
     5968else
     5969  if test -n "$DUMPBIN"; then
     5970  ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test.
     5971else
     5972as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
     5973for as_dir in $PATH
     5974do
     5975  IFS=$as_save_IFS
     5976  test -z "$as_dir" && as_dir=.
     5977    for ac_exec_ext in '' $ac_executable_extensions; do
     5978  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     5979    ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
     5980    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     5981    break 2
     5982  fi
     5983done
     5984  done
     5985IFS=$as_save_IFS
     5986
     5987fi
     5988fi
     5989DUMPBIN=$ac_cv_prog_DUMPBIN
     5990if test -n "$DUMPBIN"; then
     5991  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5
     5992$as_echo "$DUMPBIN" >&6; }
     5993else
     5994  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
     5995$as_echo "no" >&6; }
     5996fi
     5997
     5998
     5999    test -n "$DUMPBIN" && break
     6000  done
     6001fi
     6002if test -z "$DUMPBIN"; then
     6003  ac_ct_DUMPBIN=$DUMPBIN
     6004  for ac_prog in dumpbin "link -dump"
     6005do
     6006  # Extract the first word of "$ac_prog", so it can be a program name with args.
     6007set dummy $ac_prog; ac_word=$2
     6008{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
     6009$as_echo_n "checking for $ac_word... " >&6; }
     6010if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then :
     6011  $as_echo_n "(cached) " >&6
     6012else
     6013  if test -n "$ac_ct_DUMPBIN"; then
     6014  ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test.
     6015else
     6016as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
     6017for as_dir in $PATH
     6018do
     6019  IFS=$as_save_IFS
     6020  test -z "$as_dir" && as_dir=.
     6021    for ac_exec_ext in '' $ac_executable_extensions; do
     6022  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     6023    ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
     6024    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     6025    break 2
     6026  fi
     6027done
     6028  done
     6029IFS=$as_save_IFS
     6030
     6031fi
     6032fi
     6033ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN
     6034if test -n "$ac_ct_DUMPBIN"; then
     6035  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5
     6036$as_echo "$ac_ct_DUMPBIN" >&6; }
     6037else
     6038  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
     6039$as_echo "no" >&6; }
     6040fi
     6041
     6042
     6043  test -n "$ac_ct_DUMPBIN" && break
     6044done
     6045
     6046  if test "x$ac_ct_DUMPBIN" = x; then
     6047    DUMPBIN=":"
     6048  else
     6049    case $cross_compiling:$ac_tool_warned in
     6050yes:)
     6051{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
     6052$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
     6053ac_tool_warned=yes ;;
     6054esac
     6055    DUMPBIN=$ac_ct_DUMPBIN
     6056  fi
     6057fi
     6058
     6059    case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in
     6060    *COFF*)
     6061      DUMPBIN="$DUMPBIN -symbols -headers"
     6062      ;;
     6063    *)
     6064      DUMPBIN=:
     6065      ;;
     6066    esac
     6067  fi
     6068
     6069  if test : != "$DUMPBIN"; then
     6070    NM=$DUMPBIN
     6071  fi
     6072fi
     6073test -z "$NM" && NM=nm
     6074
     6075
     6076
     6077
     6078
     6079
     6080{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
     6081$as_echo_n "checking the name lister ($NM) interface... " >&6; }
     6082if ${lt_cv_nm_interface+:} false; then :
     6083  $as_echo_n "(cached) " >&6
     6084else
     6085  lt_cv_nm_interface="BSD nm"
     6086  echo "int some_variable = 0;" > conftest.$ac_ext
     6087  (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5)
     6088  (eval "$ac_compile" 2>conftest.err)
     6089  cat conftest.err >&5
     6090  (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
     6091  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
     6092  cat conftest.err >&5
     6093  (eval echo "\"\$as_me:$LINENO: output\"" >&5)
     6094  cat conftest.out >&5
     6095  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
     6096    lt_cv_nm_interface="MS dumpbin"
     6097  fi
     6098  rm -f conftest*
     6099fi
     6100{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
     6101$as_echo "$lt_cv_nm_interface" >&6; }
     6102
     6103{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
     6104$as_echo_n "checking whether ln -s works... " >&6; }
     6105LN_S=$as_ln_s
     6106if test "$LN_S" = "ln -s"; then
     6107  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
     6108$as_echo "yes" >&6; }
     6109else
     6110  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
     6111$as_echo "no, using $LN_S" >&6; }
     6112fi
     6113
     6114# find the maximum length of command line arguments
     6115{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5
     6116$as_echo_n "checking the maximum length of command line arguments... " >&6; }
     6117if ${lt_cv_sys_max_cmd_len+:} false; then :
     6118  $as_echo_n "(cached) " >&6
     6119else
     6120    i=0
     6121  teststring=ABCD
     6122
     6123  case $build_os in
     6124  msdosdjgpp*)
     6125    # On DJGPP, this test can blow up pretty badly due to problems in libc
     6126    # (any single argument exceeding 2000 bytes causes a buffer overrun
     6127    # during glob expansion).  Even if it were fixed, the result of this
     6128    # check would be larger than it should be.
     6129    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
     6130    ;;
     6131
     6132  gnu*)
     6133    # Under GNU Hurd, this test is not required because there is
     6134    # no limit to the length of command line arguments.
     6135    # Libtool will interpret -1 as no limit whatsoever
     6136    lt_cv_sys_max_cmd_len=-1;
     6137    ;;
     6138
     6139  cygwin* | mingw* | cegcc*)
     6140    # On Win9x/ME, this test blows up -- it succeeds, but takes
     6141    # about 5 minutes as the teststring grows exponentially.
     6142    # Worse, since 9x/ME are not pre-emptively multitasking,
     6143    # you end up with a "frozen" computer, even though with patience
     6144    # the test eventually succeeds (with a max line length of 256k).
     6145    # Instead, let's just punt: use the minimum linelength reported by
     6146    # all of the supported platforms: 8192 (on NT/2K/XP).
     6147    lt_cv_sys_max_cmd_len=8192;
     6148    ;;
     6149
     6150  mint*)
     6151    # On MiNT this can take a long time and run out of memory.
     6152    lt_cv_sys_max_cmd_len=8192;
     6153    ;;
     6154
     6155  amigaos*)
     6156    # On AmigaOS with pdksh, this test takes hours, literally.
     6157    # So we just punt and use a minimum line length of 8192.
     6158    lt_cv_sys_max_cmd_len=8192;
     6159    ;;
     6160
     6161  bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*)
     6162    # This has been around since 386BSD, at least.  Likely further.
     6163    if test -x /sbin/sysctl; then
     6164      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
     6165    elif test -x /usr/sbin/sysctl; then
     6166      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
     6167    else
     6168      lt_cv_sys_max_cmd_len=65536       # usable default for all BSDs
     6169    fi
     6170    # And add a safety zone
     6171    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
     6172    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
     6173    ;;
     6174
     6175  interix*)
     6176    # We know the value 262144 and hardcode it with a safety zone (like BSD)
     6177    lt_cv_sys_max_cmd_len=196608
     6178    ;;
     6179
     6180  os2*)
     6181    # The test takes a long time on OS/2.
     6182    lt_cv_sys_max_cmd_len=8192
     6183    ;;
     6184
     6185  osf*)
     6186    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
     6187    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
     6188    # nice to cause kernel panics so lets avoid the loop below.
     6189    # First set a reasonable default.
     6190    lt_cv_sys_max_cmd_len=16384
     6191    #
     6192    if test -x /sbin/sysconfig; then
     6193      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
     6194        *1*) lt_cv_sys_max_cmd_len=-1 ;;
     6195      esac
     6196    fi
     6197    ;;
     6198  sco3.2v5*)
     6199    lt_cv_sys_max_cmd_len=102400
     6200    ;;
     6201  sysv5* | sco5v6* | sysv4.2uw2*)
     6202    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
     6203    if test -n "$kargmax"; then
     6204      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[  ]//'`
     6205    else
     6206      lt_cv_sys_max_cmd_len=32768
     6207    fi
     6208    ;;
     6209  *)
     6210    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
     6211    if test -n "$lt_cv_sys_max_cmd_len" && \
     6212       test undefined != "$lt_cv_sys_max_cmd_len"; then
     6213      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
     6214      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
     6215    else
     6216      # Make teststring a little bigger before we do anything with it.
     6217      # a 1K string should be a reasonable start.
     6218      for i in 1 2 3 4 5 6 7 8; do
     6219        teststring=$teststring$teststring
     6220      done
     6221      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
     6222      # If test is not a shell built-in, we'll probably end up computing a
     6223      # maximum length that is only half of the actual maximum length, but
     6224      # we can't tell.
     6225      while { test X`env echo "$teststring$teststring" 2>/dev/null` \
     6226                 = "X$teststring$teststring"; } >/dev/null 2>&1 &&
     6227              test 17 != "$i" # 1/2 MB should be enough
     6228      do
     6229        i=`expr $i + 1`
     6230        teststring=$teststring$teststring
     6231      done
     6232      # Only check the string length outside the loop.
     6233      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
     6234      teststring=
     6235      # Add a significant safety factor because C++ compilers can tack on
     6236      # massive amounts of additional arguments before passing them to the
     6237      # linker.  It appears as though 1/2 is a usable value.
     6238      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
     6239    fi
     6240    ;;
     6241  esac
     6242
     6243fi
     6244
     6245if test -n "$lt_cv_sys_max_cmd_len"; then
     6246  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5
     6247$as_echo "$lt_cv_sys_max_cmd_len" >&6; }
     6248else
     6249  { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
     6250$as_echo "none" >&6; }
     6251fi
     6252max_cmd_len=$lt_cv_sys_max_cmd_len
     6253
     6254
     6255
     6256
     6257
     6258
     6259: ${CP="cp -f"}
     6260: ${MV="mv -f"}
     6261: ${RM="rm -f"}
     6262
     6263if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
     6264  lt_unset=unset
     6265else
     6266  lt_unset=false
     6267fi
     6268
     6269
     6270
     6271
     6272
     6273# test EBCDIC or ASCII
     6274case `echo X|tr X '\101'` in
     6275 A) # ASCII based system
     6276    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
     6277  lt_SP2NL='tr \040 \012'
     6278  lt_NL2SP='tr \015\012 \040\040'
     6279  ;;
     6280 *) # EBCDIC based system
     6281  lt_SP2NL='tr \100 \n'
     6282  lt_NL2SP='tr \r\n \100\100'
     6283  ;;
     6284esac
     6285
     6286
     6287
     6288
     6289
     6290
     6291
     6292
     6293
     6294{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
     6295$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
     6296if ${lt_cv_to_host_file_cmd+:} false; then :
     6297  $as_echo_n "(cached) " >&6
     6298else
     6299  case $host in
     6300  *-*-mingw* )
     6301    case $build in
     6302      *-*-mingw* ) # actually msys
     6303        lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
     6304        ;;
     6305      *-*-cygwin* )
     6306        lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
     6307        ;;
     6308      * ) # otherwise, assume *nix
     6309        lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
     6310        ;;
     6311    esac
     6312    ;;
     6313  *-*-cygwin* )
     6314    case $build in
     6315      *-*-mingw* ) # actually msys
     6316        lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
     6317        ;;
     6318      *-*-cygwin* )
     6319        lt_cv_to_host_file_cmd=func_convert_file_noop
     6320        ;;
     6321      * ) # otherwise, assume *nix
     6322        lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
     6323        ;;
     6324    esac
     6325    ;;
     6326  * ) # unhandled hosts (and "normal" native builds)
     6327    lt_cv_to_host_file_cmd=func_convert_file_noop
     6328    ;;
     6329esac
     6330
     6331fi
     6332
     6333to_host_file_cmd=$lt_cv_to_host_file_cmd
     6334{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
     6335$as_echo "$lt_cv_to_host_file_cmd" >&6; }
     6336
     6337
     6338
     6339
     6340
     6341{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
     6342$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
     6343if ${lt_cv_to_tool_file_cmd+:} false; then :
     6344  $as_echo_n "(cached) " >&6
     6345else
     6346  #assume ordinary cross tools, or native build.
     6347lt_cv_to_tool_file_cmd=func_convert_file_noop
     6348case $host in
     6349  *-*-mingw* )
     6350    case $build in
     6351      *-*-mingw* ) # actually msys
     6352        lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
     6353        ;;
     6354    esac
     6355    ;;
     6356esac
     6357
     6358fi
     6359
     6360to_tool_file_cmd=$lt_cv_to_tool_file_cmd
     6361{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
     6362$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
     6363
     6364
     6365
     6366
     6367
     6368{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
     6369$as_echo_n "checking for $LD option to reload object files... " >&6; }
     6370if ${lt_cv_ld_reload_flag+:} false; then :
     6371  $as_echo_n "(cached) " >&6
     6372else
     6373  lt_cv_ld_reload_flag='-r'
     6374fi
     6375{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5
     6376$as_echo "$lt_cv_ld_reload_flag" >&6; }
     6377reload_flag=$lt_cv_ld_reload_flag
     6378case $reload_flag in
     6379"" | " "*) ;;
     6380*) reload_flag=" $reload_flag" ;;
     6381esac
     6382reload_cmds='$LD$reload_flag -o $output$reload_objs'
     6383case $host_os in
     6384  cygwin* | mingw* | pw32* | cegcc*)
     6385    if test yes != "$GCC"; then
     6386      reload_cmds=false
     6387    fi
     6388    ;;
     6389  darwin*)
     6390    if test yes = "$GCC"; then
     6391      reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs'
     6392    else
     6393      reload_cmds='$LD$reload_flag -o $output$reload_objs'
     6394    fi
     6395    ;;
     6396esac
     6397
     6398
     6399
     6400
     6401
     6402
     6403
     6404
     6405
     6406if test -n "$ac_tool_prefix"; then
     6407  # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
     6408set dummy ${ac_tool_prefix}objdump; ac_word=$2
     6409{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
     6410$as_echo_n "checking for $ac_word... " >&6; }
     6411if ${ac_cv_prog_OBJDUMP+:} false; then :
     6412  $as_echo_n "(cached) " >&6
     6413else
     6414  if test -n "$OBJDUMP"; then
     6415  ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
     6416else
     6417as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
     6418for as_dir in $PATH
     6419do
     6420  IFS=$as_save_IFS
     6421  test -z "$as_dir" && as_dir=.
     6422    for ac_exec_ext in '' $ac_executable_extensions; do
     6423  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     6424    ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
     6425    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     6426    break 2
     6427  fi
     6428done
     6429  done
     6430IFS=$as_save_IFS
     6431
     6432fi
     6433fi
     6434OBJDUMP=$ac_cv_prog_OBJDUMP
     6435if test -n "$OBJDUMP"; then
     6436  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
     6437$as_echo "$OBJDUMP" >&6; }
     6438else
     6439  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
     6440$as_echo "no" >&6; }
     6441fi
     6442
     6443
     6444fi
     6445if test -z "$ac_cv_prog_OBJDUMP"; then
     6446  ac_ct_OBJDUMP=$OBJDUMP
     6447  # Extract the first word of "objdump", so it can be a program name with args.
     6448set dummy objdump; ac_word=$2
     6449{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
     6450$as_echo_n "checking for $ac_word... " >&6; }
     6451if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
     6452  $as_echo_n "(cached) " >&6
     6453else
     6454  if test -n "$ac_ct_OBJDUMP"; then
     6455  ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
     6456else
     6457as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
     6458for as_dir in $PATH
     6459do
     6460  IFS=$as_save_IFS
     6461  test -z "$as_dir" && as_dir=.
     6462    for ac_exec_ext in '' $ac_executable_extensions; do
     6463  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     6464    ac_cv_prog_ac_ct_OBJDUMP="objdump"
     6465    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     6466    break 2
     6467  fi
     6468done
     6469  done
     6470IFS=$as_save_IFS
     6471
     6472fi
     6473fi
     6474ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
     6475if test -n "$ac_ct_OBJDUMP"; then
     6476  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
     6477$as_echo "$ac_ct_OBJDUMP" >&6; }
     6478else
     6479  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
     6480$as_echo "no" >&6; }
     6481fi
     6482
     6483  if test "x$ac_ct_OBJDUMP" = x; then
     6484    OBJDUMP="false"
     6485  else
     6486    case $cross_compiling:$ac_tool_warned in
     6487yes:)
     6488{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
     6489$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
     6490ac_tool_warned=yes ;;
     6491esac
     6492    OBJDUMP=$ac_ct_OBJDUMP
     6493  fi
     6494else
     6495  OBJDUMP="$ac_cv_prog_OBJDUMP"
     6496fi
     6497
     6498test -z "$OBJDUMP" && OBJDUMP=objdump
     6499
     6500
     6501
     6502
     6503
     6504
     6505
     6506
     6507
     6508{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5
     6509$as_echo_n "checking how to recognize dependent libraries... " >&6; }
     6510if ${lt_cv_deplibs_check_method+:} false; then :
     6511  $as_echo_n "(cached) " >&6
     6512else
     6513  lt_cv_file_magic_cmd='$MAGIC_CMD'
     6514lt_cv_file_magic_test_file=
     6515lt_cv_deplibs_check_method='unknown'
     6516# Need to set the preceding variable on all platforms that support
     6517# interlibrary dependencies.
     6518# 'none' -- dependencies not supported.
     6519# 'unknown' -- same as none, but documents that we really don't know.
     6520# 'pass_all' -- all dependencies passed with no checks.
     6521# 'test_compile' -- check by making test program.
     6522# 'file_magic [[regex]]' -- check by looking for files in library path
     6523# that responds to the $file_magic_cmd with a given extended regex.
     6524# If you have 'file' or equivalent on your system and you're not sure
     6525# whether 'pass_all' will *always* work, you probably want this one.
     6526
     6527case $host_os in
     6528aix[4-9]*)
     6529  lt_cv_deplibs_check_method=pass_all
     6530  ;;
     6531
     6532beos*)
     6533  lt_cv_deplibs_check_method=pass_all
     6534  ;;
     6535
     6536bsdi[45]*)
     6537  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
     6538  lt_cv_file_magic_cmd='/usr/bin/file -L'
     6539  lt_cv_file_magic_test_file=/shlib/libc.so
     6540  ;;
     6541
     6542cygwin*)
     6543  # func_win32_libid is a shell function defined in ltmain.sh
     6544  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
     6545  lt_cv_file_magic_cmd='func_win32_libid'
     6546  ;;
     6547
     6548mingw* | pw32*)
     6549  # Base MSYS/MinGW do not provide the 'file' command needed by
     6550  # func_win32_libid shell function, so use a weaker test based on 'objdump',
     6551  # unless we find 'file', for example because we are cross-compiling.
     6552  if ( file / ) >/dev/null 2>&1; then
     6553    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
     6554    lt_cv_file_magic_cmd='func_win32_libid'
     6555  else
     6556    # Keep this pattern in sync with the one in func_win32_libid.
     6557    lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
     6558    lt_cv_file_magic_cmd='$OBJDUMP -f'
     6559  fi
     6560  ;;
     6561
     6562cegcc*)
     6563  # use the weaker test based on 'objdump'. See mingw*.
     6564  lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
     6565  lt_cv_file_magic_cmd='$OBJDUMP -f'
     6566  ;;
     6567
     6568darwin* | rhapsody*)
     6569  lt_cv_deplibs_check_method=pass_all
     6570  ;;
     6571
     6572freebsd* | dragonfly*)
     6573  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
     6574    case $host_cpu in
     6575    i*86 )
     6576      # Not sure whether the presence of OpenBSD here was a mistake.
     6577      # Let's accept both of them until this is cleared up.
     6578      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
     6579      lt_cv_file_magic_cmd=/usr/bin/file
     6580      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
     6581      ;;
     6582    esac
     6583  else
     6584    lt_cv_deplibs_check_method=pass_all
     6585  fi
     6586  ;;
     6587
     6588haiku*)
     6589  lt_cv_deplibs_check_method=pass_all
     6590  ;;
     6591
     6592hpux10.20* | hpux11*)
     6593  lt_cv_file_magic_cmd=/usr/bin/file
     6594  case $host_cpu in
     6595  ia64*)
     6596    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
     6597    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
     6598    ;;
     6599  hppa*64*)
     6600    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'
     6601    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
     6602    ;;
     6603  *)
     6604    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library'
     6605    lt_cv_file_magic_test_file=/usr/lib/libc.sl
     6606    ;;
     6607  esac
     6608  ;;
     6609
     6610interix[3-9]*)
     6611  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
     6612  lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
     6613  ;;
     6614
     6615irix5* | irix6* | nonstopux*)
     6616  case $LD in
     6617  *-32|*"-32 ") libmagic=32-bit;;
     6618  *-n32|*"-n32 ") libmagic=N32;;
     6619  *-64|*"-64 ") libmagic=64-bit;;
     6620  *) libmagic=never-match;;
     6621  esac
     6622  lt_cv_deplibs_check_method=pass_all
     6623  ;;
     6624
     6625# This must be glibc/ELF.
     6626linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
     6627  lt_cv_deplibs_check_method=pass_all
     6628  ;;
     6629
     6630netbsd* | netbsdelf*-gnu)
     6631  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
     6632    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
     6633  else
     6634    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
     6635  fi
     6636  ;;
     6637
     6638newos6*)
     6639  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
     6640  lt_cv_file_magic_cmd=/usr/bin/file
     6641  lt_cv_file_magic_test_file=/usr/lib/libnls.so
     6642  ;;
     6643
     6644*nto* | *qnx*)
     6645  lt_cv_deplibs_check_method=pass_all
     6646  ;;
     6647
     6648openbsd* | bitrig*)
     6649  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
     6650    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
     6651  else
     6652    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
     6653  fi
     6654  ;;
     6655
     6656osf3* | osf4* | osf5*)
     6657  lt_cv_deplibs_check_method=pass_all
     6658  ;;
     6659
     6660rdos*)
     6661  lt_cv_deplibs_check_method=pass_all
     6662  ;;
     6663
     6664solaris*)
     6665  lt_cv_deplibs_check_method=pass_all
     6666  ;;
     6667
     6668sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
     6669  lt_cv_deplibs_check_method=pass_all
     6670  ;;
     6671
     6672sysv4 | sysv4.3*)
     6673  case $host_vendor in
     6674  motorola)
     6675    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
     6676    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
     6677    ;;
     6678  ncr)
     6679    lt_cv_deplibs_check_method=pass_all
     6680    ;;
     6681  sequent)
     6682    lt_cv_file_magic_cmd='/bin/file'
     6683    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
     6684    ;;
     6685  sni)
     6686    lt_cv_file_magic_cmd='/bin/file'
     6687    lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
     6688    lt_cv_file_magic_test_file=/lib/libc.so
     6689    ;;
     6690  siemens)
     6691    lt_cv_deplibs_check_method=pass_all
     6692    ;;
     6693  pc)
     6694    lt_cv_deplibs_check_method=pass_all
     6695    ;;
     6696  esac
     6697  ;;
     6698
     6699tpf*)
     6700  lt_cv_deplibs_check_method=pass_all
     6701  ;;
     6702os2*)
     6703  lt_cv_deplibs_check_method=pass_all
     6704  ;;
     6705esac
     6706
     6707fi
     6708{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
     6709$as_echo "$lt_cv_deplibs_check_method" >&6; }
     6710
     6711file_magic_glob=
     6712want_nocaseglob=no
     6713if test "$build" = "$host"; then
     6714  case $host_os in
     6715  mingw* | pw32*)
     6716    if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
     6717      want_nocaseglob=yes
     6718    else
     6719      file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"`
     6720    fi
     6721    ;;
     6722  esac
     6723fi
     6724
     6725file_magic_cmd=$lt_cv_file_magic_cmd
     6726deplibs_check_method=$lt_cv_deplibs_check_method
     6727test -z "$deplibs_check_method" && deplibs_check_method=unknown
     6728
     6729
     6730
     6731
     6732
     6733
     6734
     6735
     6736
     6737
     6738
     6739
     6740
     6741
     6742
     6743
     6744
     6745
     6746
     6747
     6748
     6749
     6750if test -n "$ac_tool_prefix"; then
     6751  # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
     6752set dummy ${ac_tool_prefix}dlltool; ac_word=$2
     6753{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
     6754$as_echo_n "checking for $ac_word... " >&6; }
     6755if ${ac_cv_prog_DLLTOOL+:} false; then :
     6756  $as_echo_n "(cached) " >&6
     6757else
     6758  if test -n "$DLLTOOL"; then
     6759  ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
     6760else
     6761as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
     6762for as_dir in $PATH
     6763do
     6764  IFS=$as_save_IFS
     6765  test -z "$as_dir" && as_dir=.
     6766    for ac_exec_ext in '' $ac_executable_extensions; do
     6767  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     6768    ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
     6769    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     6770    break 2
     6771  fi
     6772done
     6773  done
     6774IFS=$as_save_IFS
     6775
     6776fi
     6777fi
     6778DLLTOOL=$ac_cv_prog_DLLTOOL
     6779if test -n "$DLLTOOL"; then
     6780  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
     6781$as_echo "$DLLTOOL" >&6; }
     6782else
     6783  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
     6784$as_echo "no" >&6; }
     6785fi
     6786
     6787
     6788fi
     6789if test -z "$ac_cv_prog_DLLTOOL"; then
     6790  ac_ct_DLLTOOL=$DLLTOOL
     6791  # Extract the first word of "dlltool", so it can be a program name with args.
     6792set dummy dlltool; ac_word=$2
     6793{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
     6794$as_echo_n "checking for $ac_word... " >&6; }
     6795if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
     6796  $as_echo_n "(cached) " >&6
     6797else
     6798  if test -n "$ac_ct_DLLTOOL"; then
     6799  ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
     6800else
     6801as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
     6802for as_dir in $PATH
     6803do
     6804  IFS=$as_save_IFS
     6805  test -z "$as_dir" && as_dir=.
     6806    for ac_exec_ext in '' $ac_executable_extensions; do
     6807  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     6808    ac_cv_prog_ac_ct_DLLTOOL="dlltool"
     6809    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     6810    break 2
     6811  fi
     6812done
     6813  done
     6814IFS=$as_save_IFS
     6815
     6816fi
     6817fi
     6818ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
     6819if test -n "$ac_ct_DLLTOOL"; then
     6820  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
     6821$as_echo "$ac_ct_DLLTOOL" >&6; }
     6822else
     6823  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
     6824$as_echo "no" >&6; }
     6825fi
     6826
     6827  if test "x$ac_ct_DLLTOOL" = x; then
     6828    DLLTOOL="false"
     6829  else
     6830    case $cross_compiling:$ac_tool_warned in
     6831yes:)
     6832{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
     6833$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
     6834ac_tool_warned=yes ;;
     6835esac
     6836    DLLTOOL=$ac_ct_DLLTOOL
     6837  fi
     6838else
     6839  DLLTOOL="$ac_cv_prog_DLLTOOL"
     6840fi
     6841
     6842test -z "$DLLTOOL" && DLLTOOL=dlltool
     6843
     6844
     6845
     6846
     6847
     6848
     6849
     6850
     6851
     6852
     6853{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
     6854$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
     6855if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
     6856  $as_echo_n "(cached) " >&6
     6857else
     6858  lt_cv_sharedlib_from_linklib_cmd='unknown'
     6859
     6860case $host_os in
     6861cygwin* | mingw* | pw32* | cegcc*)
     6862  # two different shell functions defined in ltmain.sh;
     6863  # decide which one to use based on capabilities of $DLLTOOL
     6864  case `$DLLTOOL --help 2>&1` in
     6865  *--identify-strict*)
     6866    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
     6867    ;;
     6868  *)
     6869    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
     6870    ;;
     6871  esac
     6872  ;;
     6873*)
     6874  # fallback: assume linklib IS sharedlib
     6875  lt_cv_sharedlib_from_linklib_cmd=$ECHO
     6876  ;;
     6877esac
     6878
     6879fi
     6880{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
     6881$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
     6882sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
     6883test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
     6884
     6885
     6886
     6887
     6888
     6889
     6890
     6891if test -n "$ac_tool_prefix"; then
     6892  for ac_prog in ar
     6893  do
     6894    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
     6895set dummy $ac_tool_prefix$ac_prog; ac_word=$2
     6896{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
     6897$as_echo_n "checking for $ac_word... " >&6; }
     6898if ${ac_cv_prog_AR+:} false; then :
     6899  $as_echo_n "(cached) " >&6
     6900else
     6901  if test -n "$AR"; then
     6902  ac_cv_prog_AR="$AR" # Let the user override the test.
     6903else
     6904as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
     6905for as_dir in $PATH
     6906do
     6907  IFS=$as_save_IFS
     6908  test -z "$as_dir" && as_dir=.
     6909    for ac_exec_ext in '' $ac_executable_extensions; do
     6910  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     6911    ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
     6912    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     6913    break 2
     6914  fi
     6915done
     6916  done
     6917IFS=$as_save_IFS
     6918
     6919fi
     6920fi
     6921AR=$ac_cv_prog_AR
     6922if test -n "$AR"; then
     6923  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
     6924$as_echo "$AR" >&6; }
     6925else
     6926  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
     6927$as_echo "no" >&6; }
     6928fi
     6929
     6930
     6931    test -n "$AR" && break
     6932  done
     6933fi
     6934if test -z "$AR"; then
     6935  ac_ct_AR=$AR
     6936  for ac_prog in ar
     6937do
     6938  # Extract the first word of "$ac_prog", so it can be a program name with args.
     6939set dummy $ac_prog; ac_word=$2
     6940{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
     6941$as_echo_n "checking for $ac_word... " >&6; }
     6942if ${ac_cv_prog_ac_ct_AR+:} false; then :
     6943  $as_echo_n "(cached) " >&6
     6944else
     6945  if test -n "$ac_ct_AR"; then
     6946  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
     6947else
     6948as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
     6949for as_dir in $PATH
     6950do
     6951  IFS=$as_save_IFS
     6952  test -z "$as_dir" && as_dir=.
     6953    for ac_exec_ext in '' $ac_executable_extensions; do
     6954  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     6955    ac_cv_prog_ac_ct_AR="$ac_prog"
     6956    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     6957    break 2
     6958  fi
     6959done
     6960  done
     6961IFS=$as_save_IFS
     6962
     6963fi
     6964fi
     6965ac_ct_AR=$ac_cv_prog_ac_ct_AR
     6966if test -n "$ac_ct_AR"; then
     6967  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
     6968$as_echo "$ac_ct_AR" >&6; }
     6969else
     6970  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
     6971$as_echo "no" >&6; }
     6972fi
     6973
     6974
     6975  test -n "$ac_ct_AR" && break
     6976done
     6977
     6978  if test "x$ac_ct_AR" = x; then
     6979    AR="false"
     6980  else
     6981    case $cross_compiling:$ac_tool_warned in
     6982yes:)
     6983{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
     6984$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
     6985ac_tool_warned=yes ;;
     6986esac
     6987    AR=$ac_ct_AR
     6988  fi
     6989fi
     6990
     6991: ${AR=ar}
     6992: ${AR_FLAGS=cru}
     6993
     6994
     6995
     6996
     6997
     6998
     6999
     7000
     7001
     7002
     7003
     7004{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
     7005$as_echo_n "checking for archiver @FILE support... " >&6; }
     7006if ${lt_cv_ar_at_file+:} false; then :
     7007  $as_echo_n "(cached) " >&6
     7008else
     7009  lt_cv_ar_at_file=no
     7010   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
     7011/* end confdefs.h.  */
     7012
     7013int
     7014main ()
     7015{
     7016
     7017  ;
     7018  return 0;
     7019}
     7020_ACEOF
     7021if ac_fn_c_try_compile "$LINENO"; then :
     7022  echo conftest.$ac_objext > conftest.lst
     7023      lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
     7024      { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
     7025  (eval $lt_ar_try) 2>&5
     7026  ac_status=$?
     7027  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
     7028  test $ac_status = 0; }
     7029      if test 0 -eq "$ac_status"; then
     7030        # Ensure the archiver fails upon bogus file names.
     7031        rm -f conftest.$ac_objext libconftest.a
     7032        { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
     7033  (eval $lt_ar_try) 2>&5
     7034  ac_status=$?
     7035  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
     7036  test $ac_status = 0; }
     7037        if test 0 -ne "$ac_status"; then
     7038          lt_cv_ar_at_file=@
     7039        fi
     7040      fi
     7041      rm -f conftest.* libconftest.a
     7042
     7043fi
     7044rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
     7045
     7046fi
     7047{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
     7048$as_echo "$lt_cv_ar_at_file" >&6; }
     7049
     7050if test no = "$lt_cv_ar_at_file"; then
     7051  archiver_list_spec=
     7052else
     7053  archiver_list_spec=$lt_cv_ar_at_file
     7054fi
     7055
     7056
     7057
     7058
     7059
     7060
     7061
     7062if test -n "$ac_tool_prefix"; then
     7063  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
     7064set dummy ${ac_tool_prefix}strip; ac_word=$2
     7065{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
     7066$as_echo_n "checking for $ac_word... " >&6; }
     7067if ${ac_cv_prog_STRIP+:} false; then :
     7068  $as_echo_n "(cached) " >&6
     7069else
     7070  if test -n "$STRIP"; then
     7071  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
     7072else
     7073as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
     7074for as_dir in $PATH
     7075do
     7076  IFS=$as_save_IFS
     7077  test -z "$as_dir" && as_dir=.
     7078    for ac_exec_ext in '' $ac_executable_extensions; do
     7079  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     7080    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
     7081    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     7082    break 2
     7083  fi
     7084done
     7085  done
     7086IFS=$as_save_IFS
     7087
     7088fi
     7089fi
     7090STRIP=$ac_cv_prog_STRIP
     7091if test -n "$STRIP"; then
     7092  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
     7093$as_echo "$STRIP" >&6; }
     7094else
     7095  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
     7096$as_echo "no" >&6; }
     7097fi
     7098
     7099
     7100fi
     7101if test -z "$ac_cv_prog_STRIP"; then
     7102  ac_ct_STRIP=$STRIP
     7103  # Extract the first word of "strip", so it can be a program name with args.
     7104set dummy strip; ac_word=$2
     7105{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
     7106$as_echo_n "checking for $ac_word... " >&6; }
     7107if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
     7108  $as_echo_n "(cached) " >&6
     7109else
     7110  if test -n "$ac_ct_STRIP"; then
     7111  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
     7112else
     7113as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
     7114for as_dir in $PATH
     7115do
     7116  IFS=$as_save_IFS
     7117  test -z "$as_dir" && as_dir=.
     7118    for ac_exec_ext in '' $ac_executable_extensions; do
     7119  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     7120    ac_cv_prog_ac_ct_STRIP="strip"
     7121    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     7122    break 2
     7123  fi
     7124done
     7125  done
     7126IFS=$as_save_IFS
     7127
     7128fi
     7129fi
     7130ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
     7131if test -n "$ac_ct_STRIP"; then
     7132  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
     7133$as_echo "$ac_ct_STRIP" >&6; }
     7134else
     7135  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
     7136$as_echo "no" >&6; }
     7137fi
     7138
     7139  if test "x$ac_ct_STRIP" = x; then
     7140    STRIP=":"
     7141  else
     7142    case $cross_compiling:$ac_tool_warned in
     7143yes:)
     7144{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
     7145$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
     7146ac_tool_warned=yes ;;
     7147esac
     7148    STRIP=$ac_ct_STRIP
     7149  fi
     7150else
     7151  STRIP="$ac_cv_prog_STRIP"
     7152fi
     7153
     7154test -z "$STRIP" && STRIP=:
     7155
     7156
     7157
     7158
     7159
     7160
     7161if test -n "$ac_tool_prefix"; then
     7162  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
     7163set dummy ${ac_tool_prefix}ranlib; ac_word=$2
     7164{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
     7165$as_echo_n "checking for $ac_word... " >&6; }
     7166if ${ac_cv_prog_RANLIB+:} false; then :
     7167  $as_echo_n "(cached) " >&6
     7168else
     7169  if test -n "$RANLIB"; then
     7170  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
     7171else
     7172as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
     7173for as_dir in $PATH
     7174do
     7175  IFS=$as_save_IFS
     7176  test -z "$as_dir" && as_dir=.
     7177    for ac_exec_ext in '' $ac_executable_extensions; do
     7178  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     7179    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
     7180    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     7181    break 2
     7182  fi
     7183done
     7184  done
     7185IFS=$as_save_IFS
     7186
     7187fi
     7188fi
     7189RANLIB=$ac_cv_prog_RANLIB
     7190if test -n "$RANLIB"; then
     7191  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
     7192$as_echo "$RANLIB" >&6; }
     7193else
     7194  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
     7195$as_echo "no" >&6; }
     7196fi
     7197
     7198
     7199fi
     7200if test -z "$ac_cv_prog_RANLIB"; then
     7201  ac_ct_RANLIB=$RANLIB
     7202  # Extract the first word of "ranlib", so it can be a program name with args.
     7203set dummy ranlib; ac_word=$2
     7204{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
     7205$as_echo_n "checking for $ac_word... " >&6; }
     7206if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
     7207  $as_echo_n "(cached) " >&6
     7208else
     7209  if test -n "$ac_ct_RANLIB"; then
     7210  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
     7211else
     7212as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
     7213for as_dir in $PATH
     7214do
     7215  IFS=$as_save_IFS
     7216  test -z "$as_dir" && as_dir=.
     7217    for ac_exec_ext in '' $ac_executable_extensions; do
     7218  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     7219    ac_cv_prog_ac_ct_RANLIB="ranlib"
     7220    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     7221    break 2
     7222  fi
     7223done
     7224  done
     7225IFS=$as_save_IFS
     7226
     7227fi
     7228fi
     7229ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
     7230if test -n "$ac_ct_RANLIB"; then
     7231  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
     7232$as_echo "$ac_ct_RANLIB" >&6; }
     7233else
     7234  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
     7235$as_echo "no" >&6; }
     7236fi
     7237
     7238  if test "x$ac_ct_RANLIB" = x; then
     7239    RANLIB=":"
     7240  else
     7241    case $cross_compiling:$ac_tool_warned in
     7242yes:)
     7243{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
     7244$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
     7245ac_tool_warned=yes ;;
     7246esac
     7247    RANLIB=$ac_ct_RANLIB
     7248  fi
     7249else
     7250  RANLIB="$ac_cv_prog_RANLIB"
     7251fi
     7252
     7253test -z "$RANLIB" && RANLIB=:
     7254
     7255
     7256
     7257
     7258
     7259
     7260# Determine commands to create old-style static archives.
     7261old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
     7262old_postinstall_cmds='chmod 644 $oldlib'
     7263old_postuninstall_cmds=
     7264
     7265if test -n "$RANLIB"; then
     7266  case $host_os in
     7267  bitrig* | openbsd*)
     7268    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
     7269    ;;
     7270  *)
     7271    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
     7272    ;;
     7273  esac
     7274  old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
     7275fi
     7276
     7277case $host_os in
     7278  darwin*)
     7279    lock_old_archive_extraction=yes ;;
     7280  *)
     7281    lock_old_archive_extraction=no ;;
     7282esac
     7283
     7284
     7285
     7286
     7287
     7288
     7289
     7290
     7291
     7292
     7293
     7294
     7295
     7296
     7297
     7298
     7299
     7300
     7301
     7302
     7303
     7304
     7305
     7306
     7307
     7308
     7309
     7310
     7311
     7312
     7313
     7314
     7315
     7316
     7317
     7318
     7319
     7320
     7321
     7322# If no C compiler was specified, use CC.
     7323LTCC=${LTCC-"$CC"}
     7324
     7325# If no C compiler flags were specified, use CFLAGS.
     7326LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
     7327
     7328# Allow CC to be a program name with arguments.
     7329compiler=$CC
     7330
     7331
     7332# Check for command to grab the raw symbol name followed by C symbol from nm.
     7333{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5
     7334$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; }
     7335if ${lt_cv_sys_global_symbol_pipe+:} false; then :
     7336  $as_echo_n "(cached) " >&6
     7337else
     7338
     7339# These are sane defaults that work on at least a few old systems.
     7340# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
     7341
     7342# Character class describing NM global symbol codes.
     7343symcode='[BCDEGRST]'
     7344
     7345# Regexp to match symbols that can be accessed directly from C.
     7346sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
     7347
     7348# Define system-specific variables.
     7349case $host_os in
     7350aix*)
     7351  symcode='[BCDT]'
     7352  ;;
     7353cygwin* | mingw* | pw32* | cegcc*)
     7354  symcode='[ABCDGISTW]'
     7355  ;;
     7356hpux*)
     7357  if test ia64 = "$host_cpu"; then
     7358    symcode='[ABCDEGRST]'
     7359  fi
     7360  ;;
     7361irix* | nonstopux*)
     7362  symcode='[BCDEGRST]'
     7363  ;;
     7364osf*)
     7365  symcode='[BCDEGQRST]'
     7366  ;;
     7367solaris*)
     7368  symcode='[BDRT]'
     7369  ;;
     7370sco3.2v5*)
     7371  symcode='[DT]'
     7372  ;;
     7373sysv4.2uw2*)
     7374  symcode='[DT]'
     7375  ;;
     7376sysv5* | sco5v6* | unixware* | OpenUNIX*)
     7377  symcode='[ABDT]'
     7378  ;;
     7379sysv4)
     7380  symcode='[DFNSTU]'
     7381  ;;
     7382esac
     7383
     7384# If we're using GNU nm, then use its standard symbol codes.
     7385case `$NM -V 2>&1` in
     7386*GNU* | *'with BFD'*)
     7387  symcode='[ABCDGIRSTW]' ;;
     7388esac
     7389
     7390if test "$lt_cv_nm_interface" = "MS dumpbin"; then
     7391  # Gets list of data symbols to import.
     7392  lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'"
     7393  # Adjust the below global symbol transforms to fixup imported variables.
     7394  lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'"
     7395  lt_c_name_hook=" -e 's/^I .* \(.*\)$/  {\"\1\", (void *) 0},/p'"
     7396  lt_c_name_lib_hook="\
     7397  -e 's/^I .* \(lib.*\)$/  {\"\1\", (void *) 0},/p'\
     7398  -e 's/^I .* \(.*\)$/  {\"lib\1\", (void *) 0},/p'"
     7399else
     7400  # Disable hooks by default.
     7401  lt_cv_sys_global_symbol_to_import=
     7402  lt_cdecl_hook=
     7403  lt_c_name_hook=
     7404  lt_c_name_lib_hook=
     7405fi
     7406
     7407# Transform an extracted symbol line into a proper C declaration.
     7408# Some systems (esp. on ia64) link data and code symbols differently,
     7409# so use this general approach.
     7410lt_cv_sys_global_symbol_to_cdecl="sed -n"\
     7411$lt_cdecl_hook\
     7412" -e 's/^T .* \(.*\)$/extern int \1();/p'"\
     7413" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'"
     7414
     7415# Transform an extracted symbol line into symbol name and symbol address
     7416lt_cv_sys_global_symbol_to_c_name_address="sed -n"\
     7417$lt_c_name_hook\
     7418" -e 's/^: \(.*\) .*$/  {\"\1\", (void *) 0},/p'"\
     7419" -e 's/^$symcode$symcode* .* \(.*\)$/  {\"\1\", (void *) \&\1},/p'"
     7420
     7421# Transform an extracted symbol line into symbol name with lib prefix and
     7422# symbol address.
     7423lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\
     7424$lt_c_name_lib_hook\
     7425" -e 's/^: \(.*\) .*$/  {\"\1\", (void *) 0},/p'"\
     7426" -e 's/^$symcode$symcode* .* \(lib.*\)$/  {\"\1\", (void *) \&\1},/p'"\
     7427" -e 's/^$symcode$symcode* .* \(.*\)$/  {\"lib\1\", (void *) \&\1},/p'"
     7428
     7429# Handle CRLF in mingw tool chain
     7430opt_cr=
     7431case $build_os in
     7432mingw*)
     7433  opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
     7434  ;;
     7435esac
     7436
     7437# Try without a prefix underscore, then with it.
     7438for ac_symprfx in "" "_"; do
     7439
     7440  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
     7441  symxfrm="\\1 $ac_symprfx\\2 \\2"
     7442
     7443  # Write the raw and C identifiers.
     7444  if test "$lt_cv_nm_interface" = "MS dumpbin"; then
     7445    # Fake it for dumpbin and say T for any non-static function,
     7446    # D for any global variable and I for any imported variable.
     7447    # Also find C++ and __fastcall symbols from MSVC++,
     7448    # which start with @ or ?.
     7449    lt_cv_sys_global_symbol_pipe="$AWK '"\
     7450"     {last_section=section; section=\$ 3};"\
     7451"     /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
     7452"     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
     7453"     /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\
     7454"     /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\
     7455"     /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\
     7456"     \$ 0!~/External *\|/{next};"\
     7457"     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
     7458"     {if(hide[section]) next};"\
     7459"     {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\
     7460"     {split(\$ 0,a,/\||\r/); split(a[2],s)};"\
     7461"     s[1]~/^[@?]/{print f,s[1],s[1]; next};"\
     7462"     s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\
     7463"     ' prfx=^$ac_symprfx"
     7464  else
     7465    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[      ]\($symcode$symcode*\)[         ][      ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
     7466  fi
     7467  lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
     7468
     7469  # Check to see that the pipe works correctly.
     7470  pipe_works=no
     7471
     7472  rm -f conftest*
     7473  cat > conftest.$ac_ext <<_LT_EOF
     7474#ifdef __cplusplus
     7475extern "C" {
     7476#endif
     7477char nm_test_var;
     7478void nm_test_func(void);
     7479void nm_test_func(void){}
     7480#ifdef __cplusplus
     7481}
     7482#endif
     7483int main(){nm_test_var='a';nm_test_func();return(0);}
     7484_LT_EOF
     7485
     7486  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
     7487  (eval $ac_compile) 2>&5
     7488  ac_status=$?
     7489  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
     7490  test $ac_status = 0; }; then
     7491    # Now try to grab the symbols.
     7492    nlist=conftest.nm
     7493    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5
     7494  (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5
     7495  ac_status=$?
     7496  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
     7497  test $ac_status = 0; } && test -s "$nlist"; then
     7498      # Try sorting and uniquifying the output.
     7499      if sort "$nlist" | uniq > "$nlist"T; then
     7500        mv -f "$nlist"T "$nlist"
     7501      else
     7502        rm -f "$nlist"T
     7503      fi
     7504
     7505      # Make sure that we snagged all the symbols we need.
     7506      if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
     7507        if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
     7508          cat <<_LT_EOF > conftest.$ac_ext
     7509/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
     7510#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE
     7511/* DATA imports from DLLs on WIN32 can't be const, because runtime
     7512   relocations are performed -- see ld's documentation on pseudo-relocs.  */
     7513# define LT_DLSYM_CONST
     7514#elif defined __osf__
     7515/* This system does not cope well with relocations in const data.  */
     7516# define LT_DLSYM_CONST
     7517#else
     7518# define LT_DLSYM_CONST const
     7519#endif
     7520
     7521#ifdef __cplusplus
     7522extern "C" {
     7523#endif
     7524
     7525_LT_EOF
     7526          # Now generate the symbol file.
     7527          eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
     7528
     7529          cat <<_LT_EOF >> conftest.$ac_ext
     7530
     7531/* The mapping between symbol names and symbols.  */
     7532LT_DLSYM_CONST struct {
     7533  const char *name;
     7534  void       *address;
     7535}
     7536lt__PROGRAM__LTX_preloaded_symbols[] =
     7537{
     7538  { "@PROGRAM@", (void *) 0 },
     7539_LT_EOF
     7540          $SED "s/^$symcode$symcode* .* \(.*\)$/  {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
     7541          cat <<\_LT_EOF >> conftest.$ac_ext
     7542  {0, (void *) 0}
     7543};
     7544
     7545/* This works around a problem in FreeBSD linker */
     7546#ifdef FREEBSD_WORKAROUND
     7547static const void *lt_preloaded_setup() {
     7548  return lt__PROGRAM__LTX_preloaded_symbols;
     7549}
     7550#endif
     7551
     7552#ifdef __cplusplus
     7553}
     7554#endif
     7555_LT_EOF
     7556          # Now try linking the two files.
     7557          mv conftest.$ac_objext conftstm.$ac_objext
     7558          lt_globsym_save_LIBS=$LIBS
     7559          lt_globsym_save_CFLAGS=$CFLAGS
     7560          LIBS=conftstm.$ac_objext
     7561          CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
     7562          if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
     7563  (eval $ac_link) 2>&5
     7564  ac_status=$?
     7565  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
     7566  test $ac_status = 0; } && test -s conftest$ac_exeext; then
     7567            pipe_works=yes
     7568          fi
     7569          LIBS=$lt_globsym_save_LIBS
     7570          CFLAGS=$lt_globsym_save_CFLAGS
     7571        else
     7572          echo "cannot find nm_test_func in $nlist" >&5
     7573        fi
     7574      else
     7575        echo "cannot find nm_test_var in $nlist" >&5
     7576      fi
     7577    else
     7578      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
     7579    fi
     7580  else
     7581    echo "$progname: failed program was:" >&5
     7582    cat conftest.$ac_ext >&5
     7583  fi
     7584  rm -rf conftest* conftst*
     7585
     7586  # Do not use the global_symbol_pipe unless it works.
     7587  if test yes = "$pipe_works"; then
     7588    break
     7589  else
     7590    lt_cv_sys_global_symbol_pipe=
     7591  fi
     7592done
     7593
     7594fi
     7595
     7596if test -z "$lt_cv_sys_global_symbol_pipe"; then
     7597  lt_cv_sys_global_symbol_to_cdecl=
     7598fi
     7599if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
     7600  { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
     7601$as_echo "failed" >&6; }
     7602else
     7603  { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
     7604$as_echo "ok" >&6; }
     7605fi
     7606
     7607# Response file support.
     7608if test "$lt_cv_nm_interface" = "MS dumpbin"; then
     7609  nm_file_list_spec='@'
     7610elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
     7611  nm_file_list_spec='@'
     7612fi
     7613
     7614
     7615
     7616
     7617
     7618
     7619
     7620
     7621
     7622
     7623
     7624
     7625
     7626
     7627
     7628
     7629
     7630
     7631
     7632
     7633
     7634
     7635
     7636
     7637
     7638
     7639
     7640
     7641
     7642
     7643
     7644
     7645
     7646
     7647
     7648
     7649
     7650{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
     7651$as_echo_n "checking for sysroot... " >&6; }
     7652
     7653# Check whether --with-sysroot was given.
     7654if test "${with_sysroot+set}" = set; then :
     7655  withval=$with_sysroot;
     7656else
     7657  with_sysroot=no
     7658fi
     7659
     7660
     7661lt_sysroot=
     7662case $with_sysroot in #(
     7663 yes)
     7664   if test yes = "$GCC"; then
     7665     lt_sysroot=`$CC --print-sysroot 2>/dev/null`
     7666   fi
     7667   ;; #(
     7668 /*)
     7669   lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
     7670   ;; #(
     7671 no|'')
     7672   ;; #(
     7673 *)
     7674   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5
     7675$as_echo "$with_sysroot" >&6; }
     7676   as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
     7677   ;;
     7678esac
     7679
     7680 { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
     7681$as_echo "${lt_sysroot:-no}" >&6; }
     7682
     7683
     7684
     7685
     7686
     7687{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5
     7688$as_echo_n "checking for a working dd... " >&6; }
     7689if ${ac_cv_path_lt_DD+:} false; then :
     7690  $as_echo_n "(cached) " >&6
     7691else
     7692  printf 0123456789abcdef0123456789abcdef >conftest.i
     7693cat conftest.i conftest.i >conftest2.i
     7694: ${lt_DD:=$DD}
     7695if test -z "$lt_DD"; then
     7696  ac_path_lt_DD_found=false
     7697  # Loop through the user's path and test for each of PROGNAME-LIST
     7698  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
     7699for as_dir in $PATH
     7700do
     7701  IFS=$as_save_IFS
     7702  test -z "$as_dir" && as_dir=.
     7703    for ac_prog in dd; do
     7704    for ac_exec_ext in '' $ac_executable_extensions; do
     7705      ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext"
     7706      as_fn_executable_p "$ac_path_lt_DD" || continue
     7707if "$ac_path_lt_DD" bs=32 count=1 <conftest2.i >conftest.out 2>/dev/null; then
     7708  cmp -s conftest.i conftest.out \
     7709  && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=:
     7710fi
     7711      $ac_path_lt_DD_found && break 3
     7712    done
     7713  done
     7714  done
     7715IFS=$as_save_IFS
     7716  if test -z "$ac_cv_path_lt_DD"; then
     7717    :
     7718  fi
     7719else
     7720  ac_cv_path_lt_DD=$lt_DD
     7721fi
     7722
     7723rm -f conftest.i conftest2.i conftest.out
     7724fi
     7725{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5
     7726$as_echo "$ac_cv_path_lt_DD" >&6; }
     7727
     7728
     7729{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5
     7730$as_echo_n "checking how to truncate binary pipes... " >&6; }
     7731if ${lt_cv_truncate_bin+:} false; then :
     7732  $as_echo_n "(cached) " >&6
     7733else
     7734  printf 0123456789abcdef0123456789abcdef >conftest.i
     7735cat conftest.i conftest.i >conftest2.i
     7736lt_cv_truncate_bin=
     7737if "$ac_cv_path_lt_DD" bs=32 count=1 <conftest2.i >conftest.out 2>/dev/null; then
     7738  cmp -s conftest.i conftest.out \
     7739  && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1"
     7740fi
     7741rm -f conftest.i conftest2.i conftest.out
     7742test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"
     7743fi
     7744{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5
     7745$as_echo "$lt_cv_truncate_bin" >&6; }
     7746
     7747
     7748
     7749
     7750
     7751
     7752
     7753# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
     7754func_cc_basename ()
     7755{
     7756    for cc_temp in $*""; do
     7757      case $cc_temp in
     7758        compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
     7759        distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
     7760        \-*) ;;
     7761        *) break;;
     7762      esac
     7763    done
     7764    func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
     7765}
     7766
     7767# Check whether --enable-libtool-lock was given.
     7768if test "${enable_libtool_lock+set}" = set; then :
     7769  enableval=$enable_libtool_lock;
     7770fi
     7771
     7772test no = "$enable_libtool_lock" || enable_libtool_lock=yes
     7773
     7774# Some flags need to be propagated to the compiler or linker for good
     7775# libtool support.
     7776case $host in
     7777ia64-*-hpux*)
     7778  # Find out what ABI is being produced by ac_compile, and set mode
     7779  # options accordingly.
     7780  echo 'int i;' > conftest.$ac_ext
     7781  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
     7782  (eval $ac_compile) 2>&5
     7783  ac_status=$?
     7784  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
     7785  test $ac_status = 0; }; then
     7786    case `/usr/bin/file conftest.$ac_objext` in
     7787      *ELF-32*)
     7788        HPUX_IA64_MODE=32
     7789        ;;
     7790      *ELF-64*)
     7791        HPUX_IA64_MODE=64
     7792        ;;
     7793    esac
     7794  fi
     7795  rm -rf conftest*
     7796  ;;
     7797*-*-irix6*)
     7798  # Find out what ABI is being produced by ac_compile, and set linker
     7799  # options accordingly.
     7800  echo '#line '$LINENO' "configure"' > conftest.$ac_ext
     7801  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
     7802  (eval $ac_compile) 2>&5
     7803  ac_status=$?
     7804  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
     7805  test $ac_status = 0; }; then
     7806    if test yes = "$lt_cv_prog_gnu_ld"; then
     7807      case `/usr/bin/file conftest.$ac_objext` in
     7808        *32-bit*)
     7809          LD="${LD-ld} -melf32bsmip"
     7810          ;;
     7811        *N32*)
     7812          LD="${LD-ld} -melf32bmipn32"
     7813          ;;
     7814        *64-bit*)
     7815          LD="${LD-ld} -melf64bmip"
     7816        ;;
     7817      esac
     7818    else
     7819      case `/usr/bin/file conftest.$ac_objext` in
     7820        *32-bit*)
     7821          LD="${LD-ld} -32"
     7822          ;;
     7823        *N32*)
     7824          LD="${LD-ld} -n32"
     7825          ;;
     7826        *64-bit*)
     7827          LD="${LD-ld} -64"
     7828          ;;
     7829      esac
     7830    fi
     7831  fi
     7832  rm -rf conftest*
     7833  ;;
     7834
     7835mips64*-*linux*)
     7836  # Find out what ABI is being produced by ac_compile, and set linker
     7837  # options accordingly.
     7838  echo '#line '$LINENO' "configure"' > conftest.$ac_ext
     7839  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
     7840  (eval $ac_compile) 2>&5
     7841  ac_status=$?
     7842  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
     7843  test $ac_status = 0; }; then
     7844    emul=elf
     7845    case `/usr/bin/file conftest.$ac_objext` in
     7846      *32-bit*)
     7847        emul="${emul}32"
     7848        ;;
     7849      *64-bit*)
     7850        emul="${emul}64"
     7851        ;;
     7852    esac
     7853    case `/usr/bin/file conftest.$ac_objext` in
     7854      *MSB*)
     7855        emul="${emul}btsmip"
     7856        ;;
     7857      *LSB*)
     7858        emul="${emul}ltsmip"
     7859        ;;
     7860    esac
     7861    case `/usr/bin/file conftest.$ac_objext` in
     7862      *N32*)
     7863        emul="${emul}n32"
     7864        ;;
     7865    esac
     7866    LD="${LD-ld} -m $emul"
     7867  fi
     7868  rm -rf conftest*
     7869  ;;
     7870
     7871x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
     7872s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
     7873  # Find out what ABI is being produced by ac_compile, and set linker
     7874  # options accordingly.  Note that the listed cases only cover the
     7875  # situations where additional linker options are needed (such as when
     7876  # doing 32-bit compilation for a host where ld defaults to 64-bit, or
     7877  # vice versa); the common cases where no linker options are needed do
     7878  # not appear in the list.
     7879  echo 'int i;' > conftest.$ac_ext
     7880  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
     7881  (eval $ac_compile) 2>&5
     7882  ac_status=$?
     7883  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
     7884  test $ac_status = 0; }; then
     7885    case `/usr/bin/file conftest.o` in
     7886      *32-bit*)
     7887        case $host in
     7888          x86_64-*kfreebsd*-gnu)
     7889            LD="${LD-ld} -m elf_i386_fbsd"
     7890            ;;
     7891          x86_64-*linux*)
     7892            case `/usr/bin/file conftest.o` in
     7893              *x86-64*)
     7894                LD="${LD-ld} -m elf32_x86_64"
     7895                ;;
     7896              *)
     7897                LD="${LD-ld} -m elf_i386"
     7898                ;;
     7899            esac
     7900            ;;
     7901          powerpc64le-*linux*)
     7902            LD="${LD-ld} -m elf32lppclinux"
     7903            ;;
     7904          powerpc64-*linux*)
     7905            LD="${LD-ld} -m elf32ppclinux"
     7906            ;;
     7907          s390x-*linux*)
     7908            LD="${LD-ld} -m elf_s390"
     7909            ;;
     7910          sparc64-*linux*)
     7911            LD="${LD-ld} -m elf32_sparc"
     7912            ;;
     7913        esac
     7914        ;;
     7915      *64-bit*)
     7916        case $host in
     7917          x86_64-*kfreebsd*-gnu)
     7918            LD="${LD-ld} -m elf_x86_64_fbsd"
     7919            ;;
     7920          x86_64-*linux*)
     7921            LD="${LD-ld} -m elf_x86_64"
     7922            ;;
     7923          powerpcle-*linux*)
     7924            LD="${LD-ld} -m elf64lppc"
     7925            ;;
     7926          powerpc-*linux*)
     7927            LD="${LD-ld} -m elf64ppc"
     7928            ;;
     7929          s390*-*linux*|s390*-*tpf*)
     7930            LD="${LD-ld} -m elf64_s390"
     7931            ;;
     7932          sparc*-*linux*)
     7933            LD="${LD-ld} -m elf64_sparc"
     7934            ;;
     7935        esac
     7936        ;;
     7937    esac
     7938  fi
     7939  rm -rf conftest*
     7940  ;;
     7941
     7942*-*-sco3.2v5*)
     7943  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
     7944  SAVE_CFLAGS=$CFLAGS
     7945  CFLAGS="$CFLAGS -belf"
     7946  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5
     7947$as_echo_n "checking whether the C compiler needs -belf... " >&6; }
     7948if ${lt_cv_cc_needs_belf+:} false; then :
     7949  $as_echo_n "(cached) " >&6
     7950else
     7951  ac_ext=c
     7952ac_cpp='$CPP $CPPFLAGS'
     7953ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
     7954ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
     7955ac_compiler_gnu=$ac_cv_c_compiler_gnu
     7956
     7957     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
     7958/* end confdefs.h.  */
     7959
     7960int
     7961main ()
     7962{
     7963
     7964  ;
     7965  return 0;
     7966}
     7967_ACEOF
     7968if ac_fn_c_try_link "$LINENO"; then :
     7969  lt_cv_cc_needs_belf=yes
     7970else
     7971  lt_cv_cc_needs_belf=no
     7972fi
     7973rm -f core conftest.err conftest.$ac_objext \
     7974    conftest$ac_exeext conftest.$ac_ext
     7975     ac_ext=c
     7976ac_cpp='$CPP $CPPFLAGS'
     7977ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
     7978ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
     7979ac_compiler_gnu=$ac_cv_c_compiler_gnu
     7980
     7981fi
     7982{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
     7983$as_echo "$lt_cv_cc_needs_belf" >&6; }
     7984  if test yes != "$lt_cv_cc_needs_belf"; then
     7985    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
     7986    CFLAGS=$SAVE_CFLAGS
     7987  fi
     7988  ;;
     7989*-*solaris*)
     7990  # Find out what ABI is being produced by ac_compile, and set linker
     7991  # options accordingly.
     7992  echo 'int i;' > conftest.$ac_ext
     7993  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
     7994  (eval $ac_compile) 2>&5
     7995  ac_status=$?
     7996  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
     7997  test $ac_status = 0; }; then
     7998    case `/usr/bin/file conftest.o` in
     7999    *64-bit*)
     8000      case $lt_cv_prog_gnu_ld in
     8001      yes*)
     8002        case $host in
     8003        i?86-*-solaris*|x86_64-*-solaris*)
     8004          LD="${LD-ld} -m elf_x86_64"
     8005          ;;
     8006        sparc*-*-solaris*)
     8007          LD="${LD-ld} -m elf64_sparc"
     8008          ;;
     8009        esac
     8010        # GNU ld 2.21 introduced _sol2 emulations.  Use them if available.
     8011        if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
     8012          LD=${LD-ld}_sol2
     8013        fi
     8014        ;;
     8015      *)
     8016        if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
     8017          LD="${LD-ld} -64"
     8018        fi
     8019        ;;
     8020      esac
     8021      ;;
     8022    esac
     8023  fi
     8024  rm -rf conftest*
     8025  ;;
     8026esac
     8027
     8028need_locks=$enable_libtool_lock
     8029
     8030if test -n "$ac_tool_prefix"; then
     8031  # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
     8032set dummy ${ac_tool_prefix}mt; ac_word=$2
     8033{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
     8034$as_echo_n "checking for $ac_word... " >&6; }
     8035if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
     8036  $as_echo_n "(cached) " >&6
     8037else
     8038  if test -n "$MANIFEST_TOOL"; then
     8039  ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test.
     8040else
     8041as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
     8042for as_dir in $PATH
     8043do
     8044  IFS=$as_save_IFS
     8045  test -z "$as_dir" && as_dir=.
     8046    for ac_exec_ext in '' $ac_executable_extensions; do
     8047  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     8048    ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
     8049    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     8050    break 2
     8051  fi
     8052done
     8053  done
     8054IFS=$as_save_IFS
     8055
     8056fi
     8057fi
     8058MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
     8059if test -n "$MANIFEST_TOOL"; then
     8060  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
     8061$as_echo "$MANIFEST_TOOL" >&6; }
     8062else
     8063  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
     8064$as_echo "no" >&6; }
     8065fi
     8066
     8067
     8068fi
     8069if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
     8070  ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
     8071  # Extract the first word of "mt", so it can be a program name with args.
     8072set dummy mt; ac_word=$2
     8073{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
     8074$as_echo_n "checking for $ac_word... " >&6; }
     8075if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
     8076  $as_echo_n "(cached) " >&6
     8077else
     8078  if test -n "$ac_ct_MANIFEST_TOOL"; then
     8079  ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test.
     8080else
     8081as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
     8082for as_dir in $PATH
     8083do
     8084  IFS=$as_save_IFS
     8085  test -z "$as_dir" && as_dir=.
     8086    for ac_exec_ext in '' $ac_executable_extensions; do
     8087  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     8088    ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
     8089    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     8090    break 2
     8091  fi
     8092done
     8093  done
     8094IFS=$as_save_IFS
     8095
     8096fi
     8097fi
     8098ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
     8099if test -n "$ac_ct_MANIFEST_TOOL"; then
     8100  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
     8101$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
     8102else
     8103  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
     8104$as_echo "no" >&6; }
     8105fi
     8106
     8107  if test "x$ac_ct_MANIFEST_TOOL" = x; then
     8108    MANIFEST_TOOL=":"
     8109  else
     8110    case $cross_compiling:$ac_tool_warned in
     8111yes:)
     8112{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
     8113$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
     8114ac_tool_warned=yes ;;
     8115esac
     8116    MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
     8117  fi
     8118else
     8119  MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL"
     8120fi
     8121
     8122test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
     8123{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
     8124$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
     8125if ${lt_cv_path_mainfest_tool+:} false; then :
     8126  $as_echo_n "(cached) " >&6
     8127else
     8128  lt_cv_path_mainfest_tool=no
     8129  echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
     8130  $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
     8131  cat conftest.err >&5
     8132  if $GREP 'Manifest Tool' conftest.out > /dev/null; then
     8133    lt_cv_path_mainfest_tool=yes
     8134  fi
     8135  rm -f conftest*
     8136fi
     8137{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
     8138$as_echo "$lt_cv_path_mainfest_tool" >&6; }
     8139if test yes != "$lt_cv_path_mainfest_tool"; then
     8140  MANIFEST_TOOL=:
     8141fi
     8142
     8143
     8144
     8145
     8146
     8147
     8148  case $host_os in
     8149    rhapsody* | darwin*)
     8150    if test -n "$ac_tool_prefix"; then
     8151  # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args.
     8152set dummy ${ac_tool_prefix}dsymutil; ac_word=$2
     8153{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
     8154$as_echo_n "checking for $ac_word... " >&6; }
     8155if ${ac_cv_prog_DSYMUTIL+:} false; then :
     8156  $as_echo_n "(cached) " >&6
     8157else
     8158  if test -n "$DSYMUTIL"; then
     8159  ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test.
     8160else
     8161as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
     8162for as_dir in $PATH
     8163do
     8164  IFS=$as_save_IFS
     8165  test -z "$as_dir" && as_dir=.
     8166    for ac_exec_ext in '' $ac_executable_extensions; do
     8167  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     8168    ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
     8169    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     8170    break 2
     8171  fi
     8172done
     8173  done
     8174IFS=$as_save_IFS
     8175
     8176fi
     8177fi
     8178DSYMUTIL=$ac_cv_prog_DSYMUTIL
     8179if test -n "$DSYMUTIL"; then
     8180  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
     8181$as_echo "$DSYMUTIL" >&6; }
     8182else
     8183  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
     8184$as_echo "no" >&6; }
     8185fi
     8186
     8187
     8188fi
     8189if test -z "$ac_cv_prog_DSYMUTIL"; then
     8190  ac_ct_DSYMUTIL=$DSYMUTIL
     8191  # Extract the first word of "dsymutil", so it can be a program name with args.
     8192set dummy dsymutil; ac_word=$2
     8193{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
     8194$as_echo_n "checking for $ac_word... " >&6; }
     8195if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then :
     8196  $as_echo_n "(cached) " >&6
     8197else
     8198  if test -n "$ac_ct_DSYMUTIL"; then
     8199  ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test.
     8200else
     8201as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
     8202for as_dir in $PATH
     8203do
     8204  IFS=$as_save_IFS
     8205  test -z "$as_dir" && as_dir=.
     8206    for ac_exec_ext in '' $ac_executable_extensions; do
     8207  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     8208    ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
     8209    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     8210    break 2
     8211  fi
     8212done
     8213  done
     8214IFS=$as_save_IFS
     8215
     8216fi
     8217fi
     8218ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL
     8219if test -n "$ac_ct_DSYMUTIL"; then
     8220  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5
     8221$as_echo "$ac_ct_DSYMUTIL" >&6; }
     8222else
     8223  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
     8224$as_echo "no" >&6; }
     8225fi
     8226
     8227  if test "x$ac_ct_DSYMUTIL" = x; then
     8228    DSYMUTIL=":"
     8229  else
     8230    case $cross_compiling:$ac_tool_warned in
     8231yes:)
     8232{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
     8233$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
     8234ac_tool_warned=yes ;;
     8235esac
     8236    DSYMUTIL=$ac_ct_DSYMUTIL
     8237  fi
     8238else
     8239  DSYMUTIL="$ac_cv_prog_DSYMUTIL"
     8240fi
     8241
     8242    if test -n "$ac_tool_prefix"; then
     8243  # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args.
     8244set dummy ${ac_tool_prefix}nmedit; ac_word=$2
     8245{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
     8246$as_echo_n "checking for $ac_word... " >&6; }
     8247if ${ac_cv_prog_NMEDIT+:} false; then :
     8248  $as_echo_n "(cached) " >&6
     8249else
     8250  if test -n "$NMEDIT"; then
     8251  ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test.
     8252else
     8253as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
     8254for as_dir in $PATH
     8255do
     8256  IFS=$as_save_IFS
     8257  test -z "$as_dir" && as_dir=.
     8258    for ac_exec_ext in '' $ac_executable_extensions; do
     8259  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     8260    ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
     8261    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     8262    break 2
     8263  fi
     8264done
     8265  done
     8266IFS=$as_save_IFS
     8267
     8268fi
     8269fi
     8270NMEDIT=$ac_cv_prog_NMEDIT
     8271if test -n "$NMEDIT"; then
     8272  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5
     8273$as_echo "$NMEDIT" >&6; }
     8274else
     8275  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
     8276$as_echo "no" >&6; }
     8277fi
     8278
     8279
     8280fi
     8281if test -z "$ac_cv_prog_NMEDIT"; then
     8282  ac_ct_NMEDIT=$NMEDIT
     8283  # Extract the first word of "nmedit", so it can be a program name with args.
     8284set dummy nmedit; ac_word=$2
     8285{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
     8286$as_echo_n "checking for $ac_word... " >&6; }
     8287if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then :
     8288  $as_echo_n "(cached) " >&6
     8289else
     8290  if test -n "$ac_ct_NMEDIT"; then
     8291  ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test.
     8292else
     8293as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
     8294for as_dir in $PATH
     8295do
     8296  IFS=$as_save_IFS
     8297  test -z "$as_dir" && as_dir=.
     8298    for ac_exec_ext in '' $ac_executable_extensions; do
     8299  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     8300    ac_cv_prog_ac_ct_NMEDIT="nmedit"
     8301    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     8302    break 2
     8303  fi
     8304done
     8305  done
     8306IFS=$as_save_IFS
     8307
     8308fi
     8309fi
     8310ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT
     8311if test -n "$ac_ct_NMEDIT"; then
     8312  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5
     8313$as_echo "$ac_ct_NMEDIT" >&6; }
     8314else
     8315  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
     8316$as_echo "no" >&6; }
     8317fi
     8318
     8319  if test "x$ac_ct_NMEDIT" = x; then
     8320    NMEDIT=":"
     8321  else
     8322    case $cross_compiling:$ac_tool_warned in
     8323yes:)
     8324{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
     8325$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
     8326ac_tool_warned=yes ;;
     8327esac
     8328    NMEDIT=$ac_ct_NMEDIT
     8329  fi
     8330else
     8331  NMEDIT="$ac_cv_prog_NMEDIT"
     8332fi
     8333
     8334    if test -n "$ac_tool_prefix"; then
     8335  # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args.
     8336set dummy ${ac_tool_prefix}lipo; ac_word=$2
     8337{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
     8338$as_echo_n "checking for $ac_word... " >&6; }
     8339if ${ac_cv_prog_LIPO+:} false; then :
     8340  $as_echo_n "(cached) " >&6
     8341else
     8342  if test -n "$LIPO"; then
     8343  ac_cv_prog_LIPO="$LIPO" # Let the user override the test.
     8344else
     8345as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
     8346for as_dir in $PATH
     8347do
     8348  IFS=$as_save_IFS
     8349  test -z "$as_dir" && as_dir=.
     8350    for ac_exec_ext in '' $ac_executable_extensions; do
     8351  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     8352    ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
     8353    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     8354    break 2
     8355  fi
     8356done
     8357  done
     8358IFS=$as_save_IFS
     8359
     8360fi
     8361fi
     8362LIPO=$ac_cv_prog_LIPO
     8363if test -n "$LIPO"; then
     8364  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5
     8365$as_echo "$LIPO" >&6; }
     8366else
     8367  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
     8368$as_echo "no" >&6; }
     8369fi
     8370
     8371
     8372fi
     8373if test -z "$ac_cv_prog_LIPO"; then
     8374  ac_ct_LIPO=$LIPO
     8375  # Extract the first word of "lipo", so it can be a program name with args.
     8376set dummy lipo; ac_word=$2
     8377{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
     8378$as_echo_n "checking for $ac_word... " >&6; }
     8379if ${ac_cv_prog_ac_ct_LIPO+:} false; then :
     8380  $as_echo_n "(cached) " >&6
     8381else
     8382  if test -n "$ac_ct_LIPO"; then
     8383  ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test.
     8384else
     8385as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
     8386for as_dir in $PATH
     8387do
     8388  IFS=$as_save_IFS
     8389  test -z "$as_dir" && as_dir=.
     8390    for ac_exec_ext in '' $ac_executable_extensions; do
     8391  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     8392    ac_cv_prog_ac_ct_LIPO="lipo"
     8393    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     8394    break 2
     8395  fi
     8396done
     8397  done
     8398IFS=$as_save_IFS
     8399
     8400fi
     8401fi
     8402ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO
     8403if test -n "$ac_ct_LIPO"; then
     8404  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5
     8405$as_echo "$ac_ct_LIPO" >&6; }
     8406else
     8407  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
     8408$as_echo "no" >&6; }
     8409fi
     8410
     8411  if test "x$ac_ct_LIPO" = x; then
     8412    LIPO=":"
     8413  else
     8414    case $cross_compiling:$ac_tool_warned in
     8415yes:)
     8416{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
     8417$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
     8418ac_tool_warned=yes ;;
     8419esac
     8420    LIPO=$ac_ct_LIPO
     8421  fi
     8422else
     8423  LIPO="$ac_cv_prog_LIPO"
     8424fi
     8425
     8426    if test -n "$ac_tool_prefix"; then
     8427  # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args.
     8428set dummy ${ac_tool_prefix}otool; ac_word=$2
     8429{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
     8430$as_echo_n "checking for $ac_word... " >&6; }
     8431if ${ac_cv_prog_OTOOL+:} false; then :
     8432  $as_echo_n "(cached) " >&6
     8433else
     8434  if test -n "$OTOOL"; then
     8435  ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test.
     8436else
     8437as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
     8438for as_dir in $PATH
     8439do
     8440  IFS=$as_save_IFS
     8441  test -z "$as_dir" && as_dir=.
     8442    for ac_exec_ext in '' $ac_executable_extensions; do
     8443  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     8444    ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
     8445    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     8446    break 2
     8447  fi
     8448done
     8449  done
     8450IFS=$as_save_IFS
     8451
     8452fi
     8453fi
     8454OTOOL=$ac_cv_prog_OTOOL
     8455if test -n "$OTOOL"; then
     8456  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
     8457$as_echo "$OTOOL" >&6; }
     8458else
     8459  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
     8460$as_echo "no" >&6; }
     8461fi
     8462
     8463
     8464fi
     8465if test -z "$ac_cv_prog_OTOOL"; then
     8466  ac_ct_OTOOL=$OTOOL
     8467  # Extract the first word of "otool", so it can be a program name with args.
     8468set dummy otool; ac_word=$2
     8469{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
     8470$as_echo_n "checking for $ac_word... " >&6; }
     8471if ${ac_cv_prog_ac_ct_OTOOL+:} false; then :
     8472  $as_echo_n "(cached) " >&6
     8473else
     8474  if test -n "$ac_ct_OTOOL"; then
     8475  ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test.
     8476else
     8477as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
     8478for as_dir in $PATH
     8479do
     8480  IFS=$as_save_IFS
     8481  test -z "$as_dir" && as_dir=.
     8482    for ac_exec_ext in '' $ac_executable_extensions; do
     8483  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     8484    ac_cv_prog_ac_ct_OTOOL="otool"
     8485    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     8486    break 2
     8487  fi
     8488done
     8489  done
     8490IFS=$as_save_IFS
     8491
     8492fi
     8493fi
     8494ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL
     8495if test -n "$ac_ct_OTOOL"; then
     8496  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5
     8497$as_echo "$ac_ct_OTOOL" >&6; }
     8498else
     8499  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
     8500$as_echo "no" >&6; }
     8501fi
     8502
     8503  if test "x$ac_ct_OTOOL" = x; then
     8504    OTOOL=":"
     8505  else
     8506    case $cross_compiling:$ac_tool_warned in
     8507yes:)
     8508{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
     8509$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
     8510ac_tool_warned=yes ;;
     8511esac
     8512    OTOOL=$ac_ct_OTOOL
     8513  fi
     8514else
     8515  OTOOL="$ac_cv_prog_OTOOL"
     8516fi
     8517
     8518    if test -n "$ac_tool_prefix"; then
     8519  # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args.
     8520set dummy ${ac_tool_prefix}otool64; ac_word=$2
     8521{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
     8522$as_echo_n "checking for $ac_word... " >&6; }
     8523if ${ac_cv_prog_OTOOL64+:} false; then :
     8524  $as_echo_n "(cached) " >&6
     8525else
     8526  if test -n "$OTOOL64"; then
     8527  ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test.
     8528else
     8529as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
     8530for as_dir in $PATH
     8531do
     8532  IFS=$as_save_IFS
     8533  test -z "$as_dir" && as_dir=.
     8534    for ac_exec_ext in '' $ac_executable_extensions; do
     8535  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     8536    ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
     8537    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     8538    break 2
     8539  fi
     8540done
     8541  done
     8542IFS=$as_save_IFS
     8543
     8544fi
     8545fi
     8546OTOOL64=$ac_cv_prog_OTOOL64
     8547if test -n "$OTOOL64"; then
     8548  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5
     8549$as_echo "$OTOOL64" >&6; }
     8550else
     8551  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
     8552$as_echo "no" >&6; }
     8553fi
     8554
     8555
     8556fi
     8557if test -z "$ac_cv_prog_OTOOL64"; then
     8558  ac_ct_OTOOL64=$OTOOL64
     8559  # Extract the first word of "otool64", so it can be a program name with args.
     8560set dummy otool64; ac_word=$2
     8561{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
     8562$as_echo_n "checking for $ac_word... " >&6; }
     8563if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then :
     8564  $as_echo_n "(cached) " >&6
     8565else
     8566  if test -n "$ac_ct_OTOOL64"; then
     8567  ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test.
     8568else
     8569as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
     8570for as_dir in $PATH
     8571do
     8572  IFS=$as_save_IFS
     8573  test -z "$as_dir" && as_dir=.
     8574    for ac_exec_ext in '' $ac_executable_extensions; do
     8575  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     8576    ac_cv_prog_ac_ct_OTOOL64="otool64"
     8577    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     8578    break 2
     8579  fi
     8580done
     8581  done
     8582IFS=$as_save_IFS
     8583
     8584fi
     8585fi
     8586ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64
     8587if test -n "$ac_ct_OTOOL64"; then
     8588  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5
     8589$as_echo "$ac_ct_OTOOL64" >&6; }
     8590else
     8591  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
     8592$as_echo "no" >&6; }
     8593fi
     8594
     8595  if test "x$ac_ct_OTOOL64" = x; then
     8596    OTOOL64=":"
     8597  else
     8598    case $cross_compiling:$ac_tool_warned in
     8599yes:)
     8600{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
     8601$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
     8602ac_tool_warned=yes ;;
     8603esac
     8604    OTOOL64=$ac_ct_OTOOL64
     8605  fi
     8606else
     8607  OTOOL64="$ac_cv_prog_OTOOL64"
     8608fi
     8609
     8610
     8611
     8612
     8613
     8614
     8615
     8616
     8617
     8618
     8619
     8620
     8621
     8622
     8623
     8624
     8625
     8626
     8627
     8628
     8629
     8630
     8631
     8632
     8633
     8634
     8635
     8636    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
     8637$as_echo_n "checking for -single_module linker flag... " >&6; }
     8638if ${lt_cv_apple_cc_single_mod+:} false; then :
     8639  $as_echo_n "(cached) " >&6
     8640else
     8641  lt_cv_apple_cc_single_mod=no
     8642      if test -z "$LT_MULTI_MODULE"; then
     8643        # By default we will add the -single_module flag. You can override
     8644        # by either setting the environment variable LT_MULTI_MODULE
     8645        # non-empty at configure time, or by adding -multi_module to the
     8646        # link flags.
     8647        rm -rf libconftest.dylib*
     8648        echo "int foo(void){return 1;}" > conftest.c
     8649        echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
     8650-dynamiclib -Wl,-single_module conftest.c" >&5
     8651        $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
     8652          -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
     8653        _lt_result=$?
     8654        # If there is a non-empty error log, and "single_module"
     8655        # appears in it, assume the flag caused a linker warning
     8656        if test -s conftest.err && $GREP single_module conftest.err; then
     8657          cat conftest.err >&5
     8658        # Otherwise, if the output was created with a 0 exit code from
     8659        # the compiler, it worked.
     8660        elif test -f libconftest.dylib && test 0 = "$_lt_result"; then
     8661          lt_cv_apple_cc_single_mod=yes
     8662        else
     8663          cat conftest.err >&5
     8664        fi
     8665        rm -rf libconftest.dylib*
     8666        rm -f conftest.*
     8667      fi
     8668fi
     8669{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
     8670$as_echo "$lt_cv_apple_cc_single_mod" >&6; }
     8671
     8672    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
     8673$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
     8674if ${lt_cv_ld_exported_symbols_list+:} false; then :
     8675  $as_echo_n "(cached) " >&6
     8676else
     8677  lt_cv_ld_exported_symbols_list=no
     8678      save_LDFLAGS=$LDFLAGS
     8679      echo "_main" > conftest.sym
     8680      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
     8681      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
     8682/* end confdefs.h.  */
     8683
     8684int
     8685main ()
     8686{
     8687
     8688  ;
     8689  return 0;
     8690}
     8691_ACEOF
     8692if ac_fn_c_try_link "$LINENO"; then :
     8693  lt_cv_ld_exported_symbols_list=yes
     8694else
     8695  lt_cv_ld_exported_symbols_list=no
     8696fi
     8697rm -f core conftest.err conftest.$ac_objext \
     8698    conftest$ac_exeext conftest.$ac_ext
     8699        LDFLAGS=$save_LDFLAGS
     8700
     8701fi
     8702{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
     8703$as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
     8704
     8705    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
     8706$as_echo_n "checking for -force_load linker flag... " >&6; }
     8707if ${lt_cv_ld_force_load+:} false; then :
     8708  $as_echo_n "(cached) " >&6
     8709else
     8710  lt_cv_ld_force_load=no
     8711      cat > conftest.c << _LT_EOF
     8712int forced_loaded() { return 2;}
     8713_LT_EOF
     8714      echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5
     8715      $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
     8716      echo "$AR cru libconftest.a conftest.o" >&5
     8717      $AR cru libconftest.a conftest.o 2>&5
     8718      echo "$RANLIB libconftest.a" >&5
     8719      $RANLIB libconftest.a 2>&5
     8720      cat > conftest.c << _LT_EOF
     8721int main() { return 0;}
     8722_LT_EOF
     8723      echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5
     8724      $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
     8725      _lt_result=$?
     8726      if test -s conftest.err && $GREP force_load conftest.err; then
     8727        cat conftest.err >&5
     8728      elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then
     8729        lt_cv_ld_force_load=yes
     8730      else
     8731        cat conftest.err >&5
     8732      fi
     8733        rm -f conftest.err libconftest.a conftest conftest.c
     8734        rm -rf conftest.dSYM
     8735
     8736fi
     8737{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5
     8738$as_echo "$lt_cv_ld_force_load" >&6; }
     8739    case $host_os in
     8740    rhapsody* | darwin1.[012])
     8741      _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;;
     8742    darwin1.*)
     8743      _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
     8744    darwin*) # darwin 5.x on
     8745      # if running on 10.5 or later, the deployment target defaults
     8746      # to the OS version, if on x86, and 10.4, the deployment
     8747      # target defaults to 10.4. Don't you love it?
     8748      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
     8749        10.0,*86*-darwin8*|10.0,*-darwin[91]*)
     8750          _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
     8751        10.[012][,.]*)
     8752          _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
     8753        10.*)
     8754          _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
     8755      esac
     8756    ;;
     8757  esac
     8758    if test yes = "$lt_cv_apple_cc_single_mod"; then
     8759      _lt_dar_single_mod='$single_module'
     8760    fi
     8761    if test yes = "$lt_cv_ld_exported_symbols_list"; then
     8762      _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym'
     8763    else
     8764      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib'
     8765    fi
     8766    if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then
     8767      _lt_dsymutil='~$DSYMUTIL $lib || :'
     8768    else
     8769      _lt_dsymutil=
     8770    fi
     8771    ;;
     8772  esac
     8773
     8774# func_munge_path_list VARIABLE PATH
     8775# -----------------------------------
     8776# VARIABLE is name of variable containing _space_ separated list of
     8777# directories to be munged by the contents of PATH, which is string
     8778# having a format:
     8779# "DIR[:DIR]:"
     8780#       string "DIR[ DIR]" will be prepended to VARIABLE
     8781# ":DIR[:DIR]"
     8782#       string "DIR[ DIR]" will be appended to VARIABLE
     8783# "DIRP[:DIRP]::[DIRA:]DIRA"
     8784#       string "DIRP[ DIRP]" will be prepended to VARIABLE and string
     8785#       "DIRA[ DIRA]" will be appended to VARIABLE
     8786# "DIR[:DIR]"
     8787#       VARIABLE will be replaced by "DIR[ DIR]"
     8788func_munge_path_list ()
     8789{
     8790    case x$2 in
     8791    x)
     8792        ;;
     8793    *:)
     8794        eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\"
     8795        ;;
     8796    x:*)
     8797        eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\"
     8798        ;;
     8799    *::*)
     8800        eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\"
     8801        eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\"
     8802        ;;
     8803    *)
     8804        eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\"
     8805        ;;
     8806    esac
     8807}
     8808
     8809ac_ext=c
     8810ac_cpp='$CPP $CPPFLAGS'
     8811ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
     8812ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
     8813ac_compiler_gnu=$ac_cv_c_compiler_gnu
     8814{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
     8815$as_echo_n "checking how to run the C preprocessor... " >&6; }
     8816# On Suns, sometimes $CPP names a directory.
     8817if test -n "$CPP" && test -d "$CPP"; then
     8818  CPP=
     8819fi
     8820if test -z "$CPP"; then
     8821  if ${ac_cv_prog_CPP+:} false; then :
     8822  $as_echo_n "(cached) " >&6
     8823else
     8824      # Double quotes because CPP needs to be expanded
     8825    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
     8826    do
     8827      ac_preproc_ok=false
     8828for ac_c_preproc_warn_flag in '' yes
     8829do
     8830  # Use a header file that comes with gcc, so configuring glibc
     8831  # with a fresh cross-compiler works.
     8832  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
     8833  # <limits.h> exists even on freestanding compilers.
     8834  # On the NeXT, cc -E runs the code through the compiler's parser,
     8835  # not just through cpp. "Syntax error" is here to catch this case.
     8836  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
     8837/* end confdefs.h.  */
     8838#ifdef __STDC__
     8839# include <limits.h>
     8840#else
     8841# include <assert.h>
     8842#endif
     8843                     Syntax error
     8844_ACEOF
     8845if ac_fn_c_try_cpp "$LINENO"; then :
     8846
     8847else
     8848  # Broken: fails on valid input.
     8849continue
     8850fi
     8851rm -f conftest.err conftest.i conftest.$ac_ext
     8852
     8853  # OK, works on sane cases.  Now check whether nonexistent headers
     8854  # can be detected and how.
     8855  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
     8856/* end confdefs.h.  */
     8857#include <ac_nonexistent.h>
     8858_ACEOF
     8859if ac_fn_c_try_cpp "$LINENO"; then :
     8860  # Broken: success on invalid input.
     8861continue
     8862else
     8863  # Passes both tests.
     8864ac_preproc_ok=:
     8865break
     8866fi
     8867rm -f conftest.err conftest.i conftest.$ac_ext
     8868
     8869done
     8870# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
     8871rm -f conftest.i conftest.err conftest.$ac_ext
     8872if $ac_preproc_ok; then :
     8873  break
     8874fi
     8875
     8876    done
     8877    ac_cv_prog_CPP=$CPP
     8878
     8879fi
     8880  CPP=$ac_cv_prog_CPP
     8881else
     8882  ac_cv_prog_CPP=$CPP
     8883fi
     8884{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
     8885$as_echo "$CPP" >&6; }
     8886ac_preproc_ok=false
     8887for ac_c_preproc_warn_flag in '' yes
     8888do
     8889  # Use a header file that comes with gcc, so configuring glibc
     8890  # with a fresh cross-compiler works.
     8891  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
     8892  # <limits.h> exists even on freestanding compilers.
     8893  # On the NeXT, cc -E runs the code through the compiler's parser,
     8894  # not just through cpp. "Syntax error" is here to catch this case.
     8895  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
     8896/* end confdefs.h.  */
     8897#ifdef __STDC__
     8898# include <limits.h>
     8899#else
     8900# include <assert.h>
     8901#endif
     8902                     Syntax error
     8903_ACEOF
     8904if ac_fn_c_try_cpp "$LINENO"; then :
     8905
     8906else
     8907  # Broken: fails on valid input.
     8908continue
     8909fi
     8910rm -f conftest.err conftest.i conftest.$ac_ext
     8911
     8912  # OK, works on sane cases.  Now check whether nonexistent headers
     8913  # can be detected and how.
     8914  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
     8915/* end confdefs.h.  */
     8916#include <ac_nonexistent.h>
     8917_ACEOF
     8918if ac_fn_c_try_cpp "$LINENO"; then :
     8919  # Broken: success on invalid input.
     8920continue
     8921else
     8922  # Passes both tests.
     8923ac_preproc_ok=:
     8924break
     8925fi
     8926rm -f conftest.err conftest.i conftest.$ac_ext
     8927
     8928done
     8929# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
     8930rm -f conftest.i conftest.err conftest.$ac_ext
     8931if $ac_preproc_ok; then :
     8932
     8933else
     8934  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
     8935$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
     8936as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
     8937See \`config.log' for more details" "$LINENO" 5; }
     8938fi
     8939
     8940ac_ext=c
     8941ac_cpp='$CPP $CPPFLAGS'
     8942ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
     8943ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
     8944ac_compiler_gnu=$ac_cv_c_compiler_gnu
     8945
     8946
    57648947{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
    57658948$as_echo_n "checking for ANSI C header files... " >&6; }
     
    58919074
    58929075
     9076for ac_header in dlfcn.h
     9077do :
     9078  ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
     9079"
     9080if test "x$ac_cv_header_dlfcn_h" = xyes; then :
     9081  cat >>confdefs.h <<_ACEOF
     9082#define HAVE_DLFCN_H 1
     9083_ACEOF
     9084
     9085fi
     9086
     9087done
     9088
     9089
     9090
     9091
     9092func_stripname_cnf ()
     9093{
     9094  case $2 in
     9095  .*) func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%\\\\$2\$%%"`;;
     9096  *)  func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%$2\$%%"`;;
     9097  esac
     9098} # func_stripname_cnf
     9099
     9100
     9101
     9102
     9103
     9104# Set options
     9105
     9106
     9107
     9108        enable_dlopen=no
     9109
     9110
     9111  enable_win32_dll=no
     9112
     9113
     9114            # Check whether --enable-shared was given.
     9115if test "${enable_shared+set}" = set; then :
     9116  enableval=$enable_shared; p=${PACKAGE-default}
     9117    case $enableval in
     9118    yes) enable_shared=yes ;;
     9119    no) enable_shared=no ;;
     9120    *)
     9121      enable_shared=no
     9122      # Look at the argument we got.  We use all the common list separators.
     9123      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
     9124      for pkg in $enableval; do
     9125        IFS=$lt_save_ifs
     9126        if test "X$pkg" = "X$p"; then
     9127          enable_shared=yes
     9128        fi
     9129      done
     9130      IFS=$lt_save_ifs
     9131      ;;
     9132    esac
     9133else
     9134  enable_shared=yes
     9135fi
     9136
     9137
     9138
     9139
     9140
     9141
     9142
     9143
     9144
     9145  # Check whether --enable-static was given.
     9146if test "${enable_static+set}" = set; then :
     9147  enableval=$enable_static; p=${PACKAGE-default}
     9148    case $enableval in
     9149    yes) enable_static=yes ;;
     9150    no) enable_static=no ;;
     9151    *)
     9152     enable_static=no
     9153      # Look at the argument we got.  We use all the common list separators.
     9154      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
     9155      for pkg in $enableval; do
     9156        IFS=$lt_save_ifs
     9157        if test "X$pkg" = "X$p"; then
     9158          enable_static=yes
     9159        fi
     9160      done
     9161      IFS=$lt_save_ifs
     9162      ;;
     9163    esac
     9164else
     9165  enable_static=yes
     9166fi
     9167
     9168
     9169
     9170
     9171
     9172
     9173
     9174
     9175
     9176
     9177# Check whether --with-pic was given.
     9178if test "${with_pic+set}" = set; then :
     9179  withval=$with_pic; lt_p=${PACKAGE-default}
     9180    case $withval in
     9181    yes|no) pic_mode=$withval ;;
     9182    *)
     9183      pic_mode=default
     9184      # Look at the argument we got.  We use all the common list separators.
     9185      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
     9186      for lt_pkg in $withval; do
     9187        IFS=$lt_save_ifs
     9188        if test "X$lt_pkg" = "X$lt_p"; then
     9189          pic_mode=yes
     9190        fi
     9191      done
     9192      IFS=$lt_save_ifs
     9193      ;;
     9194    esac
     9195else
     9196  pic_mode=default
     9197fi
     9198
     9199
     9200
     9201
     9202
     9203
     9204
     9205
     9206  # Check whether --enable-fast-install was given.
     9207if test "${enable_fast_install+set}" = set; then :
     9208  enableval=$enable_fast_install; p=${PACKAGE-default}
     9209    case $enableval in
     9210    yes) enable_fast_install=yes ;;
     9211    no) enable_fast_install=no ;;
     9212    *)
     9213      enable_fast_install=no
     9214      # Look at the argument we got.  We use all the common list separators.
     9215      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
     9216      for pkg in $enableval; do
     9217        IFS=$lt_save_ifs
     9218        if test "X$pkg" = "X$p"; then
     9219          enable_fast_install=yes
     9220        fi
     9221      done
     9222      IFS=$lt_save_ifs
     9223      ;;
     9224    esac
     9225else
     9226  enable_fast_install=yes
     9227fi
     9228
     9229
     9230
     9231
     9232
     9233
     9234
     9235
     9236  shared_archive_member_spec=
     9237case $host,$enable_shared in
     9238power*-*-aix[5-9]*,yes)
     9239  { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5
     9240$as_echo_n "checking which variant of shared library versioning to provide... " >&6; }
     9241
     9242# Check whether --with-aix-soname was given.
     9243if test "${with_aix_soname+set}" = set; then :
     9244  withval=$with_aix_soname; case $withval in
     9245    aix|svr4|both)
     9246      ;;
     9247    *)
     9248      as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5
     9249      ;;
     9250    esac
     9251    lt_cv_with_aix_soname=$with_aix_soname
     9252else
     9253  if ${lt_cv_with_aix_soname+:} false; then :
     9254  $as_echo_n "(cached) " >&6
     9255else
     9256  lt_cv_with_aix_soname=aix
     9257fi
     9258
     9259    with_aix_soname=$lt_cv_with_aix_soname
     9260fi
     9261
     9262  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5
     9263$as_echo "$with_aix_soname" >&6; }
     9264  if test aix != "$with_aix_soname"; then
     9265    # For the AIX way of multilib, we name the shared archive member
     9266    # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o',
     9267    # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File.
     9268    # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag,
     9269    # the AIX toolchain works better with OBJECT_MODE set (default 32).
     9270    if test 64 = "${OBJECT_MODE-32}"; then
     9271      shared_archive_member_spec=shr_64
     9272    else
     9273      shared_archive_member_spec=shr
     9274    fi
     9275  fi
     9276  ;;
     9277*)
     9278  with_aix_soname=aix
     9279  ;;
     9280esac
     9281
     9282
     9283
     9284
     9285
     9286
     9287
     9288
     9289
     9290
     9291# This can be used to rebuild libtool when needed
     9292LIBTOOL_DEPS=$ltmain
     9293
     9294# Always use our own libtool.
     9295LIBTOOL='$(SHELL) $(top_builddir)/libtool'
     9296
     9297
     9298
     9299
     9300
     9301
     9302
     9303
     9304
     9305
     9306
     9307
     9308
     9309
     9310
     9311
     9312
     9313
     9314
     9315
     9316
     9317
     9318
     9319
     9320
     9321
     9322
     9323
     9324
     9325
     9326test -z "$LN_S" && LN_S="ln -s"
     9327
     9328
     9329
     9330
     9331
     9332
     9333
     9334
     9335
     9336
     9337
     9338
     9339
     9340
     9341if test -n "${ZSH_VERSION+set}"; then
     9342   setopt NO_GLOB_SUBST
     9343fi
     9344
     9345{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
     9346$as_echo_n "checking for objdir... " >&6; }
     9347if ${lt_cv_objdir+:} false; then :
     9348  $as_echo_n "(cached) " >&6
     9349else
     9350  rm -f .libs 2>/dev/null
     9351mkdir .libs 2>/dev/null
     9352if test -d .libs; then
     9353  lt_cv_objdir=.libs
     9354else
     9355  # MS-DOS does not allow filenames that begin with a dot.
     9356  lt_cv_objdir=_libs
     9357fi
     9358rmdir .libs 2>/dev/null
     9359fi
     9360{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5
     9361$as_echo "$lt_cv_objdir" >&6; }
     9362objdir=$lt_cv_objdir
     9363
     9364
     9365
     9366
     9367
     9368cat >>confdefs.h <<_ACEOF
     9369#define LT_OBJDIR "$lt_cv_objdir/"
     9370_ACEOF
     9371
     9372
     9373
     9374
     9375case $host_os in
     9376aix3*)
     9377  # AIX sometimes has problems with the GCC collect2 program.  For some
     9378  # reason, if we set the COLLECT_NAMES environment variable, the problems
     9379  # vanish in a puff of smoke.
     9380  if test set != "${COLLECT_NAMES+set}"; then
     9381    COLLECT_NAMES=
     9382    export COLLECT_NAMES
     9383  fi
     9384  ;;
     9385esac
     9386
     9387# Global variables:
     9388ofile=libtool
     9389can_build_shared=yes
     9390
     9391# All known linkers require a '.a' archive for static linking (except MSVC,
     9392# which needs '.lib').
     9393libext=a
     9394
     9395with_gnu_ld=$lt_cv_prog_gnu_ld
     9396
     9397old_CC=$CC
     9398old_CFLAGS=$CFLAGS
     9399
     9400# Set sane defaults for various variables
     9401test -z "$CC" && CC=cc
     9402test -z "$LTCC" && LTCC=$CC
     9403test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
     9404test -z "$LD" && LD=ld
     9405test -z "$ac_objext" && ac_objext=o
     9406
     9407func_cc_basename $compiler
     9408cc_basename=$func_cc_basename_result
     9409
     9410
     9411# Only perform the check for file, if the check method requires it
     9412test -z "$MAGIC_CMD" && MAGIC_CMD=file
     9413case $deplibs_check_method in
     9414file_magic*)
     9415  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
     9416    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5
     9417$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; }
     9418if ${lt_cv_path_MAGIC_CMD+:} false; then :
     9419  $as_echo_n "(cached) " >&6
     9420else
     9421  case $MAGIC_CMD in
     9422[\\/*] |  ?:[\\/]*)
     9423  lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path.
     9424  ;;
     9425*)
     9426  lt_save_MAGIC_CMD=$MAGIC_CMD
     9427  lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
     9428  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
     9429  for ac_dir in $ac_dummy; do
     9430    IFS=$lt_save_ifs
     9431    test -z "$ac_dir" && ac_dir=.
     9432    if test -f "$ac_dir/${ac_tool_prefix}file"; then
     9433      lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file"
     9434      if test -n "$file_magic_test_file"; then
     9435        case $deplibs_check_method in
     9436        "file_magic "*)
     9437          file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
     9438          MAGIC_CMD=$lt_cv_path_MAGIC_CMD
     9439          if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
     9440            $EGREP "$file_magic_regex" > /dev/null; then
     9441            :
     9442          else
     9443            cat <<_LT_EOF 1>&2
     9444
     9445*** Warning: the command libtool uses to detect shared libraries,
     9446*** $file_magic_cmd, produces output that libtool cannot recognize.
     9447*** The result is that libtool may fail to recognize shared libraries
     9448*** as such.  This will affect the creation of libtool libraries that
     9449*** depend on shared libraries, but programs linked with such libtool
     9450*** libraries will work regardless of this problem.  Nevertheless, you
     9451*** may want to report the problem to your system manager and/or to
     9452*** bug-libtool@gnu.org
     9453
     9454_LT_EOF
     9455          fi ;;
     9456        esac
     9457      fi
     9458      break
     9459    fi
     9460  done
     9461  IFS=$lt_save_ifs
     9462  MAGIC_CMD=$lt_save_MAGIC_CMD
     9463  ;;
     9464esac
     9465fi
     9466
     9467MAGIC_CMD=$lt_cv_path_MAGIC_CMD
     9468if test -n "$MAGIC_CMD"; then
     9469  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
     9470$as_echo "$MAGIC_CMD" >&6; }
     9471else
     9472  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
     9473$as_echo "no" >&6; }
     9474fi
     9475
     9476
     9477
     9478
     9479
     9480if test -z "$lt_cv_path_MAGIC_CMD"; then
     9481  if test -n "$ac_tool_prefix"; then
     9482    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5
     9483$as_echo_n "checking for file... " >&6; }
     9484if ${lt_cv_path_MAGIC_CMD+:} false; then :
     9485  $as_echo_n "(cached) " >&6
     9486else
     9487  case $MAGIC_CMD in
     9488[\\/*] |  ?:[\\/]*)
     9489  lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path.
     9490  ;;
     9491*)
     9492  lt_save_MAGIC_CMD=$MAGIC_CMD
     9493  lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
     9494  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
     9495  for ac_dir in $ac_dummy; do
     9496    IFS=$lt_save_ifs
     9497    test -z "$ac_dir" && ac_dir=.
     9498    if test -f "$ac_dir/file"; then
     9499      lt_cv_path_MAGIC_CMD=$ac_dir/"file"
     9500      if test -n "$file_magic_test_file"; then
     9501        case $deplibs_check_method in
     9502        "file_magic "*)
     9503          file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
     9504          MAGIC_CMD=$lt_cv_path_MAGIC_CMD
     9505          if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
     9506            $EGREP "$file_magic_regex" > /dev/null; then
     9507            :
     9508          else
     9509            cat <<_LT_EOF 1>&2
     9510
     9511*** Warning: the command libtool uses to detect shared libraries,
     9512*** $file_magic_cmd, produces output that libtool cannot recognize.
     9513*** The result is that libtool may fail to recognize shared libraries
     9514*** as such.  This will affect the creation of libtool libraries that
     9515*** depend on shared libraries, but programs linked with such libtool
     9516*** libraries will work regardless of this problem.  Nevertheless, you
     9517*** may want to report the problem to your system manager and/or to
     9518*** bug-libtool@gnu.org
     9519
     9520_LT_EOF
     9521          fi ;;
     9522        esac
     9523      fi
     9524      break
     9525    fi
     9526  done
     9527  IFS=$lt_save_ifs
     9528  MAGIC_CMD=$lt_save_MAGIC_CMD
     9529  ;;
     9530esac
     9531fi
     9532
     9533MAGIC_CMD=$lt_cv_path_MAGIC_CMD
     9534if test -n "$MAGIC_CMD"; then
     9535  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
     9536$as_echo "$MAGIC_CMD" >&6; }
     9537else
     9538  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
     9539$as_echo "no" >&6; }
     9540fi
     9541
     9542
     9543  else
     9544    MAGIC_CMD=:
     9545  fi
     9546fi
     9547
     9548  fi
     9549  ;;
     9550esac
     9551
     9552# Use C for the default configuration in the libtool script
     9553
     9554lt_save_CC=$CC
     9555ac_ext=c
     9556ac_cpp='$CPP $CPPFLAGS'
     9557ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
     9558ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
     9559ac_compiler_gnu=$ac_cv_c_compiler_gnu
     9560
     9561
     9562# Source file extension for C test sources.
     9563ac_ext=c
     9564
     9565# Object file extension for compiled C test sources.
     9566objext=o
     9567objext=$objext
     9568
     9569# Code to be used in simple compile tests
     9570lt_simple_compile_test_code="int some_variable = 0;"
     9571
     9572# Code to be used in simple link tests
     9573lt_simple_link_test_code='int main(){return(0);}'
     9574
     9575
     9576
     9577
     9578
     9579
     9580
     9581# If no C compiler was specified, use CC.
     9582LTCC=${LTCC-"$CC"}
     9583
     9584# If no C compiler flags were specified, use CFLAGS.
     9585LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
     9586
     9587# Allow CC to be a program name with arguments.
     9588compiler=$CC
     9589
     9590# Save the default compiler, since it gets overwritten when the other
     9591# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
     9592compiler_DEFAULT=$CC
     9593
     9594# save warnings/boilerplate of simple test code
     9595ac_outfile=conftest.$ac_objext
     9596echo "$lt_simple_compile_test_code" >conftest.$ac_ext
     9597eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
     9598_lt_compiler_boilerplate=`cat conftest.err`
     9599$RM conftest*
     9600
     9601ac_outfile=conftest.$ac_objext
     9602echo "$lt_simple_link_test_code" >conftest.$ac_ext
     9603eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
     9604_lt_linker_boilerplate=`cat conftest.err`
     9605$RM -r conftest*
     9606
     9607
     9608## CAVEAT EMPTOR:
     9609## There is no encapsulation within the following macros, do not change
     9610## the running order or otherwise move them around unless you know exactly
     9611## what you are doing...
     9612if test -n "$compiler"; then
     9613
     9614lt_prog_compiler_no_builtin_flag=
     9615
     9616if test yes = "$GCC"; then
     9617  case $cc_basename in
     9618  nvcc*)
     9619    lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;;
     9620  *)
     9621    lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;;
     9622  esac
     9623
     9624  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
     9625$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
     9626if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then :
     9627  $as_echo_n "(cached) " >&6
     9628else
     9629  lt_cv_prog_compiler_rtti_exceptions=no
     9630   ac_outfile=conftest.$ac_objext
     9631   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
     9632   lt_compiler_flag="-fno-rtti -fno-exceptions"  ## exclude from sc_useless_quotes_in_assignment
     9633   # Insert the option either (1) after the last *FLAGS variable, or
     9634   # (2) before a word containing "conftest.", or (3) at the end.
     9635   # Note that $ac_compile itself does not contain backslashes and begins
     9636   # with a dollar sign (not a hyphen), so the echo should work correctly.
     9637   # The option is referenced via a variable to avoid confusing sed.
     9638   lt_compile=`echo "$ac_compile" | $SED \
     9639   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
     9640   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
     9641   -e 's:$: $lt_compiler_flag:'`
     9642   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
     9643   (eval "$lt_compile" 2>conftest.err)
     9644   ac_status=$?
     9645   cat conftest.err >&5
     9646   echo "$as_me:$LINENO: \$? = $ac_status" >&5
     9647   if (exit $ac_status) && test -s "$ac_outfile"; then
     9648     # The compiler can only warn and ignore the option if not recognized
     9649     # So say no if there are warnings other than the usual output.
     9650     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
     9651     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
     9652     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
     9653       lt_cv_prog_compiler_rtti_exceptions=yes
     9654     fi
     9655   fi
     9656   $RM conftest*
     9657
     9658fi
     9659{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
     9660$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
     9661
     9662if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then
     9663    lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
     9664else
     9665    :
     9666fi
     9667
     9668fi
     9669
     9670
     9671
     9672
     9673
     9674
     9675  lt_prog_compiler_wl=
     9676lt_prog_compiler_pic=
     9677lt_prog_compiler_static=
     9678
     9679
     9680  if test yes = "$GCC"; then
     9681    lt_prog_compiler_wl='-Wl,'
     9682    lt_prog_compiler_static='-static'
     9683
     9684    case $host_os in
     9685      aix*)
     9686      # All AIX code is PIC.
     9687      if test ia64 = "$host_cpu"; then
     9688        # AIX 5 now supports IA64 processor
     9689        lt_prog_compiler_static='-Bstatic'
     9690      fi
     9691      lt_prog_compiler_pic='-fPIC'
     9692      ;;
     9693
     9694    amigaos*)
     9695      case $host_cpu in
     9696      powerpc)
     9697            # see comment about AmigaOS4 .so support
     9698            lt_prog_compiler_pic='-fPIC'
     9699        ;;
     9700      m68k)
     9701            # FIXME: we need at least 68020 code to build shared libraries, but
     9702            # adding the '-m68020' flag to GCC prevents building anything better,
     9703            # like '-m68040'.
     9704            lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
     9705        ;;
     9706      esac
     9707      ;;
     9708
     9709    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
     9710      # PIC is the default for these OSes.
     9711      ;;
     9712
     9713    mingw* | cygwin* | pw32* | os2* | cegcc*)
     9714      # This hack is so that the source file can tell whether it is being
     9715      # built for inclusion in a dll (and should export symbols for example).
     9716      # Although the cygwin gcc ignores -fPIC, still need this for old-style
     9717      # (--disable-auto-import) libraries
     9718      lt_prog_compiler_pic='-DDLL_EXPORT'
     9719      case $host_os in
     9720      os2*)
     9721        lt_prog_compiler_static='$wl-static'
     9722        ;;
     9723      esac
     9724      ;;
     9725
     9726    darwin* | rhapsody*)
     9727      # PIC is the default on this platform
     9728      # Common symbols not allowed in MH_DYLIB files
     9729      lt_prog_compiler_pic='-fno-common'
     9730      ;;
     9731
     9732    haiku*)
     9733      # PIC is the default for Haiku.
     9734      # The "-static" flag exists, but is broken.
     9735      lt_prog_compiler_static=
     9736      ;;
     9737
     9738    hpux*)
     9739      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
     9740      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
     9741      # sets the default TLS model and affects inlining.
     9742      case $host_cpu in
     9743      hppa*64*)
     9744        # +Z the default
     9745        ;;
     9746      *)
     9747        lt_prog_compiler_pic='-fPIC'
     9748        ;;
     9749      esac
     9750      ;;
     9751
     9752    interix[3-9]*)
     9753      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
     9754      # Instead, we relocate shared libraries at runtime.
     9755      ;;
     9756
     9757    msdosdjgpp*)
     9758      # Just because we use GCC doesn't mean we suddenly get shared libraries
     9759      # on systems that don't support them.
     9760      lt_prog_compiler_can_build_shared=no
     9761      enable_shared=no
     9762      ;;
     9763
     9764    *nto* | *qnx*)
     9765      # QNX uses GNU C++, but need to define -shared option too, otherwise
     9766      # it will coredump.
     9767      lt_prog_compiler_pic='-fPIC -shared'
     9768      ;;
     9769
     9770    sysv4*MP*)
     9771      if test -d /usr/nec; then
     9772        lt_prog_compiler_pic=-Kconform_pic
     9773      fi
     9774      ;;
     9775
     9776    *)
     9777      lt_prog_compiler_pic='-fPIC'
     9778      ;;
     9779    esac
     9780
     9781    case $cc_basename in
     9782    nvcc*) # Cuda Compiler Driver 2.2
     9783      lt_prog_compiler_wl='-Xlinker '
     9784      if test -n "$lt_prog_compiler_pic"; then
     9785        lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic"
     9786      fi
     9787      ;;
     9788    esac
     9789  else
     9790    # PORTME Check for flag to pass linker flags through the system compiler.
     9791    case $host_os in
     9792    aix*)
     9793      lt_prog_compiler_wl='-Wl,'
     9794      if test ia64 = "$host_cpu"; then
     9795        # AIX 5 now supports IA64 processor
     9796        lt_prog_compiler_static='-Bstatic'
     9797      else
     9798        lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
     9799      fi
     9800      ;;
     9801
     9802    darwin* | rhapsody*)
     9803      # PIC is the default on this platform
     9804      # Common symbols not allowed in MH_DYLIB files
     9805      lt_prog_compiler_pic='-fno-common'
     9806      case $cc_basename in
     9807      nagfor*)
     9808        # NAG Fortran compiler
     9809        lt_prog_compiler_wl='-Wl,-Wl,,'
     9810        lt_prog_compiler_pic='-PIC'
     9811        lt_prog_compiler_static='-Bstatic'
     9812        ;;
     9813      esac
     9814      ;;
     9815
     9816    mingw* | cygwin* | pw32* | os2* | cegcc*)
     9817      # This hack is so that the source file can tell whether it is being
     9818      # built for inclusion in a dll (and should export symbols for example).
     9819      lt_prog_compiler_pic='-DDLL_EXPORT'
     9820      case $host_os in
     9821      os2*)
     9822        lt_prog_compiler_static='$wl-static'
     9823        ;;
     9824      esac
     9825      ;;
     9826
     9827    hpux9* | hpux10* | hpux11*)
     9828      lt_prog_compiler_wl='-Wl,'
     9829      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
     9830      # not for PA HP-UX.
     9831      case $host_cpu in
     9832      hppa*64*|ia64*)
     9833        # +Z the default
     9834        ;;
     9835      *)
     9836        lt_prog_compiler_pic='+Z'
     9837        ;;
     9838      esac
     9839      # Is there a better lt_prog_compiler_static that works with the bundled CC?
     9840      lt_prog_compiler_static='$wl-a ${wl}archive'
     9841      ;;
     9842
     9843    irix5* | irix6* | nonstopux*)
     9844      lt_prog_compiler_wl='-Wl,'
     9845      # PIC (with -KPIC) is the default.
     9846      lt_prog_compiler_static='-non_shared'
     9847      ;;
     9848
     9849    linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
     9850      case $cc_basename in
     9851      # old Intel for x86_64, which still supported -KPIC.
     9852      ecc*)
     9853        lt_prog_compiler_wl='-Wl,'
     9854        lt_prog_compiler_pic='-KPIC'
     9855        lt_prog_compiler_static='-static'
     9856        ;;
     9857      # icc used to be incompatible with GCC.
     9858      # ICC 10 doesn't accept -KPIC any more.
     9859      icc* | ifort*)
     9860        lt_prog_compiler_wl='-Wl,'
     9861        lt_prog_compiler_pic='-fPIC'
     9862        lt_prog_compiler_static='-static'
     9863        ;;
     9864      # Lahey Fortran 8.1.
     9865      lf95*)
     9866        lt_prog_compiler_wl='-Wl,'
     9867        lt_prog_compiler_pic='--shared'
     9868        lt_prog_compiler_static='--static'
     9869        ;;
     9870      nagfor*)
     9871        # NAG Fortran compiler
     9872        lt_prog_compiler_wl='-Wl,-Wl,,'
     9873        lt_prog_compiler_pic='-PIC'
     9874        lt_prog_compiler_static='-Bstatic'
     9875        ;;
     9876      tcc*)
     9877        # Fabrice Bellard et al's Tiny C Compiler
     9878        lt_prog_compiler_wl='-Wl,'
     9879        lt_prog_compiler_pic='-fPIC'
     9880        lt_prog_compiler_static='-static'
     9881        ;;
     9882      pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
     9883        # Portland Group compilers (*not* the Pentium gcc compiler,
     9884        # which looks to be a dead project)
     9885        lt_prog_compiler_wl='-Wl,'
     9886        lt_prog_compiler_pic='-fpic'
     9887        lt_prog_compiler_static='-Bstatic'
     9888        ;;
     9889      ccc*)
     9890        lt_prog_compiler_wl='-Wl,'
     9891        # All Alpha code is PIC.
     9892        lt_prog_compiler_static='-non_shared'
     9893        ;;
     9894      xl* | bgxl* | bgf* | mpixl*)
     9895        # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
     9896        lt_prog_compiler_wl='-Wl,'
     9897        lt_prog_compiler_pic='-qpic'
     9898        lt_prog_compiler_static='-qstaticlink'
     9899        ;;
     9900      *)
     9901        case `$CC -V 2>&1 | sed 5q` in
     9902        *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*)
     9903          # Sun Fortran 8.3 passes all unrecognized flags to the linker
     9904          lt_prog_compiler_pic='-KPIC'
     9905          lt_prog_compiler_static='-Bstatic'
     9906          lt_prog_compiler_wl=''
     9907          ;;
     9908        *Sun\ F* | *Sun*Fortran*)
     9909          lt_prog_compiler_pic='-KPIC'
     9910          lt_prog_compiler_static='-Bstatic'
     9911          lt_prog_compiler_wl='-Qoption ld '
     9912          ;;
     9913        *Sun\ C*)
     9914          # Sun C 5.9
     9915          lt_prog_compiler_pic='-KPIC'
     9916          lt_prog_compiler_static='-Bstatic'
     9917          lt_prog_compiler_wl='-Wl,'
     9918          ;;
     9919        *Intel*\ [CF]*Compiler*)
     9920          lt_prog_compiler_wl='-Wl,'
     9921          lt_prog_compiler_pic='-fPIC'
     9922          lt_prog_compiler_static='-static'
     9923          ;;
     9924        *Portland\ Group*)
     9925          lt_prog_compiler_wl='-Wl,'
     9926          lt_prog_compiler_pic='-fpic'
     9927          lt_prog_compiler_static='-Bstatic'
     9928          ;;
     9929        esac
     9930        ;;
     9931      esac
     9932      ;;
     9933
     9934    newsos6)
     9935      lt_prog_compiler_pic='-KPIC'
     9936      lt_prog_compiler_static='-Bstatic'
     9937      ;;
     9938
     9939    *nto* | *qnx*)
     9940      # QNX uses GNU C++, but need to define -shared option too, otherwise
     9941      # it will coredump.
     9942      lt_prog_compiler_pic='-fPIC -shared'
     9943      ;;
     9944
     9945    osf3* | osf4* | osf5*)
     9946      lt_prog_compiler_wl='-Wl,'
     9947      # All OSF/1 code is PIC.
     9948      lt_prog_compiler_static='-non_shared'
     9949      ;;
     9950
     9951    rdos*)
     9952      lt_prog_compiler_static='-non_shared'
     9953      ;;
     9954
     9955    solaris*)
     9956      lt_prog_compiler_pic='-KPIC'
     9957      lt_prog_compiler_static='-Bstatic'
     9958      case $cc_basename in
     9959      f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
     9960        lt_prog_compiler_wl='-Qoption ld ';;
     9961      *)
     9962        lt_prog_compiler_wl='-Wl,';;
     9963      esac
     9964      ;;
     9965
     9966    sunos4*)
     9967      lt_prog_compiler_wl='-Qoption ld '
     9968      lt_prog_compiler_pic='-PIC'
     9969      lt_prog_compiler_static='-Bstatic'
     9970      ;;
     9971
     9972    sysv4 | sysv4.2uw2* | sysv4.3*)
     9973      lt_prog_compiler_wl='-Wl,'
     9974      lt_prog_compiler_pic='-KPIC'
     9975      lt_prog_compiler_static='-Bstatic'
     9976      ;;
     9977
     9978    sysv4*MP*)
     9979      if test -d /usr/nec; then
     9980        lt_prog_compiler_pic='-Kconform_pic'
     9981        lt_prog_compiler_static='-Bstatic'
     9982      fi
     9983      ;;
     9984
     9985    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
     9986      lt_prog_compiler_wl='-Wl,'
     9987      lt_prog_compiler_pic='-KPIC'
     9988      lt_prog_compiler_static='-Bstatic'
     9989      ;;
     9990
     9991    unicos*)
     9992      lt_prog_compiler_wl='-Wl,'
     9993      lt_prog_compiler_can_build_shared=no
     9994      ;;
     9995
     9996    uts4*)
     9997      lt_prog_compiler_pic='-pic'
     9998      lt_prog_compiler_static='-Bstatic'
     9999      ;;
     10000
     10001    *)
     10002      lt_prog_compiler_can_build_shared=no
     10003      ;;
     10004    esac
     10005  fi
     10006
     10007case $host_os in
     10008  # For platforms that do not support PIC, -DPIC is meaningless:
     10009  *djgpp*)
     10010    lt_prog_compiler_pic=
     10011    ;;
     10012  *)
     10013    lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
     10014    ;;
     10015esac
     10016
     10017{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
     10018$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
     10019if ${lt_cv_prog_compiler_pic+:} false; then :
     10020  $as_echo_n "(cached) " >&6
     10021else
     10022  lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
     10023fi
     10024{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
     10025$as_echo "$lt_cv_prog_compiler_pic" >&6; }
     10026lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
     10027
     10028#
     10029# Check to make sure the PIC flag actually works.
     10030#
     10031if test -n "$lt_prog_compiler_pic"; then
     10032  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
     10033$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; }
     10034if ${lt_cv_prog_compiler_pic_works+:} false; then :
     10035  $as_echo_n "(cached) " >&6
     10036else
     10037  lt_cv_prog_compiler_pic_works=no
     10038   ac_outfile=conftest.$ac_objext
     10039   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
     10040   lt_compiler_flag="$lt_prog_compiler_pic -DPIC"  ## exclude from sc_useless_quotes_in_assignment
     10041   # Insert the option either (1) after the last *FLAGS variable, or
     10042   # (2) before a word containing "conftest.", or (3) at the end.
     10043   # Note that $ac_compile itself does not contain backslashes and begins
     10044   # with a dollar sign (not a hyphen), so the echo should work correctly.
     10045   # The option is referenced via a variable to avoid confusing sed.
     10046   lt_compile=`echo "$ac_compile" | $SED \
     10047   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
     10048   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
     10049   -e 's:$: $lt_compiler_flag:'`
     10050   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
     10051   (eval "$lt_compile" 2>conftest.err)
     10052   ac_status=$?
     10053   cat conftest.err >&5
     10054   echo "$as_me:$LINENO: \$? = $ac_status" >&5
     10055   if (exit $ac_status) && test -s "$ac_outfile"; then
     10056     # The compiler can only warn and ignore the option if not recognized
     10057     # So say no if there are warnings other than the usual output.
     10058     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
     10059     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
     10060     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
     10061       lt_cv_prog_compiler_pic_works=yes
     10062     fi
     10063   fi
     10064   $RM conftest*
     10065
     10066fi
     10067{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5
     10068$as_echo "$lt_cv_prog_compiler_pic_works" >&6; }
     10069
     10070if test yes = "$lt_cv_prog_compiler_pic_works"; then
     10071    case $lt_prog_compiler_pic in
     10072     "" | " "*) ;;
     10073     *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
     10074     esac
     10075else
     10076    lt_prog_compiler_pic=
     10077     lt_prog_compiler_can_build_shared=no
     10078fi
     10079
     10080fi
     10081
     10082
     10083
     10084
     10085
     10086
     10087
     10088
     10089
     10090
     10091
     10092#
     10093# Check to make sure the static flag actually works.
     10094#
     10095wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
     10096{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
     10097$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
     10098if ${lt_cv_prog_compiler_static_works+:} false; then :
     10099  $as_echo_n "(cached) " >&6
     10100else
     10101  lt_cv_prog_compiler_static_works=no
     10102   save_LDFLAGS=$LDFLAGS
     10103   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
     10104   echo "$lt_simple_link_test_code" > conftest.$ac_ext
     10105   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
     10106     # The linker can only warn and ignore the option if not recognized
     10107     # So say no if there are warnings
     10108     if test -s conftest.err; then
     10109       # Append any errors to the config.log.
     10110       cat conftest.err 1>&5
     10111       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
     10112       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
     10113       if diff conftest.exp conftest.er2 >/dev/null; then
     10114         lt_cv_prog_compiler_static_works=yes
     10115       fi
     10116     else
     10117       lt_cv_prog_compiler_static_works=yes
     10118     fi
     10119   fi
     10120   $RM -r conftest*
     10121   LDFLAGS=$save_LDFLAGS
     10122
     10123fi
     10124{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5
     10125$as_echo "$lt_cv_prog_compiler_static_works" >&6; }
     10126
     10127if test yes = "$lt_cv_prog_compiler_static_works"; then
     10128    :
     10129else
     10130    lt_prog_compiler_static=
     10131fi
     10132
     10133
     10134
     10135
     10136
     10137
     10138
     10139  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
     10140$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
     10141if ${lt_cv_prog_compiler_c_o+:} false; then :
     10142  $as_echo_n "(cached) " >&6
     10143else
     10144  lt_cv_prog_compiler_c_o=no
     10145   $RM -r conftest 2>/dev/null
     10146   mkdir conftest
     10147   cd conftest
     10148   mkdir out
     10149   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
     10150
     10151   lt_compiler_flag="-o out/conftest2.$ac_objext"
     10152   # Insert the option either (1) after the last *FLAGS variable, or
     10153   # (2) before a word containing "conftest.", or (3) at the end.
     10154   # Note that $ac_compile itself does not contain backslashes and begins
     10155   # with a dollar sign (not a hyphen), so the echo should work correctly.
     10156   lt_compile=`echo "$ac_compile" | $SED \
     10157   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
     10158   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
     10159   -e 's:$: $lt_compiler_flag:'`
     10160   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
     10161   (eval "$lt_compile" 2>out/conftest.err)
     10162   ac_status=$?
     10163   cat out/conftest.err >&5
     10164   echo "$as_me:$LINENO: \$? = $ac_status" >&5
     10165   if (exit $ac_status) && test -s out/conftest2.$ac_objext
     10166   then
     10167     # The compiler can only warn and ignore the option if not recognized
     10168     # So say no if there are warnings
     10169     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
     10170     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
     10171     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
     10172       lt_cv_prog_compiler_c_o=yes
     10173     fi
     10174   fi
     10175   chmod u+w . 2>&5
     10176   $RM conftest*
     10177   # SGI C++ compiler will create directory out/ii_files/ for
     10178   # template instantiation
     10179   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
     10180   $RM out/* && rmdir out
     10181   cd ..
     10182   $RM -r conftest
     10183   $RM conftest*
     10184
     10185fi
     10186{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
     10187$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
     10188
     10189
     10190
     10191
     10192
     10193
     10194  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
     10195$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
     10196if ${lt_cv_prog_compiler_c_o+:} false; then :
     10197  $as_echo_n "(cached) " >&6
     10198else
     10199  lt_cv_prog_compiler_c_o=no
     10200   $RM -r conftest 2>/dev/null
     10201   mkdir conftest
     10202   cd conftest
     10203   mkdir out
     10204   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
     10205
     10206   lt_compiler_flag="-o out/conftest2.$ac_objext"
     10207   # Insert the option either (1) after the last *FLAGS variable, or
     10208   # (2) before a word containing "conftest.", or (3) at the end.
     10209   # Note that $ac_compile itself does not contain backslashes and begins
     10210   # with a dollar sign (not a hyphen), so the echo should work correctly.
     10211   lt_compile=`echo "$ac_compile" | $SED \
     10212   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
     10213   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
     10214   -e 's:$: $lt_compiler_flag:'`
     10215   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
     10216   (eval "$lt_compile" 2>out/conftest.err)
     10217   ac_status=$?
     10218   cat out/conftest.err >&5
     10219   echo "$as_me:$LINENO: \$? = $ac_status" >&5
     10220   if (exit $ac_status) && test -s out/conftest2.$ac_objext
     10221   then
     10222     # The compiler can only warn and ignore the option if not recognized
     10223     # So say no if there are warnings
     10224     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
     10225     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
     10226     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
     10227       lt_cv_prog_compiler_c_o=yes
     10228     fi
     10229   fi
     10230   chmod u+w . 2>&5
     10231   $RM conftest*
     10232   # SGI C++ compiler will create directory out/ii_files/ for
     10233   # template instantiation
     10234   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
     10235   $RM out/* && rmdir out
     10236   cd ..
     10237   $RM -r conftest
     10238   $RM conftest*
     10239
     10240fi
     10241{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
     10242$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
     10243
     10244
     10245
     10246
     10247hard_links=nottested
     10248if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then
     10249  # do not overwrite the value of need_locks provided by the user
     10250  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
     10251$as_echo_n "checking if we can lock with hard links... " >&6; }
     10252  hard_links=yes
     10253  $RM conftest*
     10254  ln conftest.a conftest.b 2>/dev/null && hard_links=no
     10255  touch conftest.a
     10256  ln conftest.a conftest.b 2>&5 || hard_links=no
     10257  ln conftest.a conftest.b 2>/dev/null && hard_links=no
     10258  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
     10259$as_echo "$hard_links" >&6; }
     10260  if test no = "$hard_links"; then
     10261    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5
     10262$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;}
     10263    need_locks=warn
     10264  fi
     10265else
     10266  need_locks=no
     10267fi
     10268
     10269
     10270
     10271
     10272
     10273
     10274  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
     10275$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
     10276
     10277  runpath_var=
     10278  allow_undefined_flag=
     10279  always_export_symbols=no
     10280  archive_cmds=
     10281  archive_expsym_cmds=
     10282  compiler_needs_object=no
     10283  enable_shared_with_static_runtimes=no
     10284  export_dynamic_flag_spec=
     10285  export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
     10286  hardcode_automatic=no
     10287  hardcode_direct=no
     10288  hardcode_direct_absolute=no
     10289  hardcode_libdir_flag_spec=
     10290  hardcode_libdir_separator=
     10291  hardcode_minus_L=no
     10292  hardcode_shlibpath_var=unsupported
     10293  inherit_rpath=no
     10294  link_all_deplibs=unknown
     10295  module_cmds=
     10296  module_expsym_cmds=
     10297  old_archive_from_new_cmds=
     10298  old_archive_from_expsyms_cmds=
     10299  thread_safe_flag_spec=
     10300  whole_archive_flag_spec=
     10301  # include_expsyms should be a list of space-separated symbols to be *always*
     10302  # included in the symbol list
     10303  include_expsyms=
     10304  # exclude_expsyms can be an extended regexp of symbols to exclude
     10305  # it will be wrapped by ' (' and ')$', so one must not match beginning or
     10306  # end of line.  Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc',
     10307  # as well as any symbol that contains 'd'.
     10308  exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
     10309  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
     10310  # platforms (ab)use it in PIC code, but their linkers get confused if
     10311  # the symbol is explicitly referenced.  Since portable code cannot
     10312  # rely on this symbol name, it's probably fine to never include it in
     10313  # preloaded symbol tables.
     10314  # Exclude shared library initialization/finalization symbols.
     10315  extract_expsyms_cmds=
     10316
     10317  case $host_os in
     10318  cygwin* | mingw* | pw32* | cegcc*)
     10319    # FIXME: the MSVC++ port hasn't been tested in a loooong time
     10320    # When not using gcc, we currently assume that we are using
     10321    # Microsoft Visual C++.
     10322    if test yes != "$GCC"; then
     10323      with_gnu_ld=no
     10324    fi
     10325    ;;
     10326  interix*)
     10327    # we just hope/assume this is gcc and not c89 (= MSVC++)
     10328    with_gnu_ld=yes
     10329    ;;
     10330  openbsd* | bitrig*)
     10331    with_gnu_ld=no
     10332    ;;
     10333  linux* | k*bsd*-gnu | gnu*)
     10334    link_all_deplibs=no
     10335    ;;
     10336  esac
     10337
     10338  ld_shlibs=yes
     10339
     10340  # On some targets, GNU ld is compatible enough with the native linker
     10341  # that we're better off using the native interface for both.
     10342  lt_use_gnu_ld_interface=no
     10343  if test yes = "$with_gnu_ld"; then
     10344    case $host_os in
     10345      aix*)
     10346        # The AIX port of GNU ld has always aspired to compatibility
     10347        # with the native linker.  However, as the warning in the GNU ld
     10348        # block says, versions before 2.19.5* couldn't really create working
     10349        # shared libraries, regardless of the interface used.
     10350        case `$LD -v 2>&1` in
     10351          *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
     10352          *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;;
     10353          *\ \(GNU\ Binutils\)\ [3-9]*) ;;
     10354          *)
     10355            lt_use_gnu_ld_interface=yes
     10356            ;;
     10357        esac
     10358        ;;
     10359      *)
     10360        lt_use_gnu_ld_interface=yes
     10361        ;;
     10362    esac
     10363  fi
     10364
     10365  if test yes = "$lt_use_gnu_ld_interface"; then
     10366    # If archive_cmds runs LD, not CC, wlarc should be empty
     10367    wlarc='$wl'
     10368
     10369    # Set some defaults for GNU ld with shared library support. These
     10370    # are reset later if shared libraries are not supported. Putting them
     10371    # here allows them to be overridden if necessary.
     10372    runpath_var=LD_RUN_PATH
     10373    hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
     10374    export_dynamic_flag_spec='$wl--export-dynamic'
     10375    # ancient GNU ld didn't support --whole-archive et. al.
     10376    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
     10377      whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
     10378    else
     10379      whole_archive_flag_spec=
     10380    fi
     10381    supports_anon_versioning=no
     10382    case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in
     10383      *GNU\ gold*) supports_anon_versioning=yes ;;
     10384      *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
     10385      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
     10386      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
     10387      *\ 2.11.*) ;; # other 2.11 versions
     10388      *) supports_anon_versioning=yes ;;
     10389    esac
     10390
     10391    # See if GNU ld supports shared libraries.
     10392    case $host_os in
     10393    aix[3-9]*)
     10394      # On AIX/PPC, the GNU linker is very broken
     10395      if test ia64 != "$host_cpu"; then
     10396        ld_shlibs=no
     10397        cat <<_LT_EOF 1>&2
     10398
     10399*** Warning: the GNU linker, at least up to release 2.19, is reported
     10400*** to be unable to reliably create shared libraries on AIX.
     10401*** Therefore, libtool is disabling shared libraries support.  If you
     10402*** really care for shared libraries, you may want to install binutils
     10403*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
     10404*** You will then need to restart the configuration process.
     10405
     10406_LT_EOF
     10407      fi
     10408      ;;
     10409
     10410    amigaos*)
     10411      case $host_cpu in
     10412      powerpc)
     10413            # see comment about AmigaOS4 .so support
     10414            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
     10415            archive_expsym_cmds=''
     10416        ;;
     10417      m68k)
     10418            archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
     10419            hardcode_libdir_flag_spec='-L$libdir'
     10420            hardcode_minus_L=yes
     10421        ;;
     10422      esac
     10423      ;;
     10424
     10425    beos*)
     10426      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
     10427        allow_undefined_flag=unsupported
     10428        # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
     10429        # support --undefined.  This deserves some investigation.  FIXME
     10430        archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
     10431      else
     10432        ld_shlibs=no
     10433      fi
     10434      ;;
     10435
     10436    cygwin* | mingw* | pw32* | cegcc*)
     10437      # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
     10438      # as there is no search path for DLLs.
     10439      hardcode_libdir_flag_spec='-L$libdir'
     10440      export_dynamic_flag_spec='$wl--export-all-symbols'
     10441      allow_undefined_flag=unsupported
     10442      always_export_symbols=no
     10443      enable_shared_with_static_runtimes=yes
     10444      export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
     10445      exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
     10446
     10447      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
     10448        archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
     10449        # If the export-symbols file already is a .def file, use it as
     10450        # is; otherwise, prepend EXPORTS...
     10451        archive_expsym_cmds='if   test DEF = "`$SED -n     -e '\''s/^[   ]*//'\''     -e '\''/^\(;.*\)*$/d'\''     -e '\''s/^\(EXPORTS\|LIBRARY\)\([     ].*\)*$/DEF/p'\''     -e q     $export_symbols`" ; then
     10452          cp $export_symbols $output_objdir/$soname.def;
     10453        else
     10454          echo EXPORTS > $output_objdir/$soname.def;
     10455          cat $export_symbols >> $output_objdir/$soname.def;
     10456        fi~
     10457        $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
     10458      else
     10459        ld_shlibs=no
     10460      fi
     10461      ;;
     10462
     10463    haiku*)
     10464      archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
     10465      link_all_deplibs=yes
     10466      ;;
     10467
     10468    os2*)
     10469      hardcode_libdir_flag_spec='-L$libdir'
     10470      hardcode_minus_L=yes
     10471      allow_undefined_flag=unsupported
     10472      shrext_cmds=.dll
     10473      archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
     10474        $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
     10475        $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
     10476        $ECHO EXPORTS >> $output_objdir/$libname.def~
     10477        emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~
     10478        $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
     10479        emximp -o $lib $output_objdir/$libname.def'
     10480      archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
     10481        $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
     10482        $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
     10483        $ECHO EXPORTS >> $output_objdir/$libname.def~
     10484        prefix_cmds="$SED"~
     10485        if test EXPORTS = "`$SED 1q $export_symbols`"; then
     10486          prefix_cmds="$prefix_cmds -e 1d";
     10487        fi~
     10488        prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~
     10489        cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~
     10490        $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
     10491        emximp -o $lib $output_objdir/$libname.def'
     10492      old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
     10493      enable_shared_with_static_runtimes=yes
     10494      ;;
     10495
     10496    interix[3-9]*)
     10497      hardcode_direct=no
     10498      hardcode_shlibpath_var=no
     10499      hardcode_libdir_flag_spec='$wl-rpath,$libdir'
     10500      export_dynamic_flag_spec='$wl-E'
     10501      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
     10502      # Instead, shared libraries are loaded at an image base (0x10000000 by
     10503      # default) and relocated if they conflict, which is a slow very memory
     10504      # consuming and fragmenting process.  To avoid this, we pick a random,
     10505      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
     10506      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
     10507      archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
     10508      archive_expsym_cmds='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
     10509      ;;
     10510
     10511    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
     10512      tmp_diet=no
     10513      if test linux-dietlibc = "$host_os"; then
     10514        case $cc_basename in
     10515          diet\ *) tmp_diet=yes;;       # linux-dietlibc with static linking (!diet-dyn)
     10516        esac
     10517      fi
     10518      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
     10519         && test no = "$tmp_diet"
     10520      then
     10521        tmp_addflag=' $pic_flag'
     10522        tmp_sharedflag='-shared'
     10523        case $cc_basename,$host_cpu in
     10524        pgcc*)                          # Portland Group C compiler
     10525          whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
     10526          tmp_addflag=' $pic_flag'
     10527          ;;
     10528        pgf77* | pgf90* | pgf95* | pgfortran*)
     10529                                        # Portland Group f77 and f90 compilers
     10530          whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
     10531          tmp_addflag=' $pic_flag -Mnomain' ;;
     10532        ecc*,ia64* | icc*,ia64*)        # Intel C compiler on ia64
     10533          tmp_addflag=' -i_dynamic' ;;
     10534        efc*,ia64* | ifort*,ia64*)      # Intel Fortran compiler on ia64
     10535          tmp_addflag=' -i_dynamic -nofor_main' ;;
     10536        ifc* | ifort*)                  # Intel Fortran compiler
     10537          tmp_addflag=' -nofor_main' ;;
     10538        lf95*)                          # Lahey Fortran 8.1
     10539          whole_archive_flag_spec=
     10540          tmp_sharedflag='--shared' ;;
     10541        nagfor*)                        # NAGFOR 5.3
     10542          tmp_sharedflag='-Wl,-shared' ;;
     10543        xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
     10544          tmp_sharedflag='-qmkshrobj'
     10545          tmp_addflag= ;;
     10546        nvcc*)  # Cuda Compiler Driver 2.2
     10547          whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
     10548          compiler_needs_object=yes
     10549          ;;
     10550        esac
     10551        case `$CC -V 2>&1 | sed 5q` in
     10552        *Sun\ C*)                       # Sun C 5.9
     10553          whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
     10554          compiler_needs_object=yes
     10555          tmp_sharedflag='-G' ;;
     10556        *Sun\ F*)                       # Sun Fortran 8.3
     10557          tmp_sharedflag='-G' ;;
     10558        esac
     10559        archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
     10560
     10561        if test yes = "$supports_anon_versioning"; then
     10562          archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
     10563            cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
     10564            echo "local: *; };" >> $output_objdir/$libname.ver~
     10565            $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib'
     10566        fi
     10567
     10568        case $cc_basename in
     10569        tcc*)
     10570          export_dynamic_flag_spec='-rdynamic'
     10571          ;;
     10572        xlf* | bgf* | bgxlf* | mpixlf*)
     10573          # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
     10574          whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
     10575          hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
     10576          archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
     10577          if test yes = "$supports_anon_versioning"; then
     10578            archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
     10579              cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
     10580              echo "local: *; };" >> $output_objdir/$libname.ver~
     10581              $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
     10582          fi
     10583          ;;
     10584        esac
     10585      else
     10586        ld_shlibs=no
     10587      fi
     10588      ;;
     10589
     10590    netbsd* | netbsdelf*-gnu)
     10591      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
     10592        archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
     10593        wlarc=
     10594      else
     10595        archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
     10596        archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
     10597      fi
     10598      ;;
     10599
     10600    solaris*)
     10601      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
     10602        ld_shlibs=no
     10603        cat <<_LT_EOF 1>&2
     10604
     10605*** Warning: The releases 2.8.* of the GNU linker cannot reliably
     10606*** create shared libraries on Solaris systems.  Therefore, libtool
     10607*** is disabling shared libraries support.  We urge you to upgrade GNU
     10608*** binutils to release 2.9.1 or newer.  Another option is to modify
     10609*** your PATH or compiler configuration so that the native linker is
     10610*** used, and then restart.
     10611
     10612_LT_EOF
     10613      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
     10614        archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
     10615        archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
     10616      else
     10617        ld_shlibs=no
     10618      fi
     10619      ;;
     10620
     10621    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
     10622      case `$LD -v 2>&1` in
     10623        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
     10624        ld_shlibs=no
     10625        cat <<_LT_EOF 1>&2
     10626
     10627*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot
     10628*** reliably create shared libraries on SCO systems.  Therefore, libtool
     10629*** is disabling shared libraries support.  We urge you to upgrade GNU
     10630*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
     10631*** your PATH or compiler configuration so that the native linker is
     10632*** used, and then restart.
     10633
     10634_LT_EOF
     10635        ;;
     10636        *)
     10637          # For security reasons, it is highly recommended that you always
     10638          # use absolute paths for naming shared libraries, and exclude the
     10639          # DT_RUNPATH tag from executables and libraries.  But doing so
     10640          # requires that you compile everything twice, which is a pain.
     10641          if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
     10642            hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
     10643            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
     10644            archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
     10645          else
     10646            ld_shlibs=no
     10647          fi
     10648        ;;
     10649      esac
     10650      ;;
     10651
     10652    sunos4*)
     10653      archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
     10654      wlarc=
     10655      hardcode_direct=yes
     10656      hardcode_shlibpath_var=no
     10657      ;;
     10658
     10659    *)
     10660      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
     10661        archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
     10662        archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
     10663      else
     10664        ld_shlibs=no
     10665      fi
     10666      ;;
     10667    esac
     10668
     10669    if test no = "$ld_shlibs"; then
     10670      runpath_var=
     10671      hardcode_libdir_flag_spec=
     10672      export_dynamic_flag_spec=
     10673      whole_archive_flag_spec=
     10674    fi
     10675  else
     10676    # PORTME fill in a description of your system's linker (not GNU ld)
     10677    case $host_os in
     10678    aix3*)
     10679      allow_undefined_flag=unsupported
     10680      always_export_symbols=yes
     10681      archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
     10682      # Note: this linker hardcodes the directories in LIBPATH if there
     10683      # are no directories specified by -L.
     10684      hardcode_minus_L=yes
     10685      if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then
     10686        # Neither direct hardcoding nor static linking is supported with a
     10687        # broken collect2.
     10688        hardcode_direct=unsupported
     10689      fi
     10690      ;;
     10691
     10692    aix[4-9]*)
     10693      if test ia64 = "$host_cpu"; then
     10694        # On IA64, the linker does run time linking by default, so we don't
     10695        # have to do anything special.
     10696        aix_use_runtimelinking=no
     10697        exp_sym_flag='-Bexport'
     10698        no_entry_flag=
     10699      else
     10700        # If we're using GNU nm, then we don't want the "-C" option.
     10701        # -C means demangle to GNU nm, but means don't demangle to AIX nm.
     10702        # Without the "-l" option, or with the "-B" option, AIX nm treats
     10703        # weak defined symbols like other global defined symbols, whereas
     10704        # GNU nm marks them as "W".
     10705        # While the 'weak' keyword is ignored in the Export File, we need
     10706        # it in the Import File for the 'aix-soname' feature, so we have
     10707        # to replace the "-B" option with "-P" for AIX nm.
     10708        if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
     10709          export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols'
     10710        else
     10711          export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols'
     10712        fi
     10713        aix_use_runtimelinking=no
     10714
     10715        # Test if we are trying to use run time linking or normal
     10716        # AIX style linking. If -brtl is somewhere in LDFLAGS, we
     10717        # have runtime linking enabled, and use it for executables.
     10718        # For shared libraries, we enable/disable runtime linking
     10719        # depending on the kind of the shared library created -
     10720        # when "with_aix_soname,aix_use_runtimelinking" is:
     10721        # "aix,no"   lib.a(lib.so.V) shared, rtl:no,  for executables
     10722        # "aix,yes"  lib.so          shared, rtl:yes, for executables
     10723        #            lib.a           static archive
     10724        # "both,no"  lib.so.V(shr.o) shared, rtl:yes
     10725        #            lib.a(lib.so.V) shared, rtl:no,  for executables
     10726        # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables
     10727        #            lib.a(lib.so.V) shared, rtl:no
     10728        # "svr4,*"   lib.so.V(shr.o) shared, rtl:yes, for executables
     10729        #            lib.a           static archive
     10730        case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
     10731          for ld_flag in $LDFLAGS; do
     10732          if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then
     10733            aix_use_runtimelinking=yes
     10734            break
     10735          fi
     10736          done
     10737          if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then
     10738            # With aix-soname=svr4, we create the lib.so.V shared archives only,
     10739            # so we don't have lib.a shared libs to link our executables.
     10740            # We have to force runtime linking in this case.
     10741            aix_use_runtimelinking=yes
     10742            LDFLAGS="$LDFLAGS -Wl,-brtl"
     10743          fi
     10744          ;;
     10745        esac
     10746
     10747        exp_sym_flag='-bexport'
     10748        no_entry_flag='-bnoentry'
     10749      fi
     10750
     10751      # When large executables or shared objects are built, AIX ld can
     10752      # have problems creating the table of contents.  If linking a library
     10753      # or program results in "error TOC overflow" add -mminimal-toc to
     10754      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
     10755      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
     10756
     10757      archive_cmds=''
     10758      hardcode_direct=yes
     10759      hardcode_direct_absolute=yes
     10760      hardcode_libdir_separator=':'
     10761      link_all_deplibs=yes
     10762      file_list_spec='$wl-f,'
     10763      case $with_aix_soname,$aix_use_runtimelinking in
     10764      aix,*) ;; # traditional, no import file
     10765      svr4,* | *,yes) # use import file
     10766        # The Import File defines what to hardcode.
     10767        hardcode_direct=no
     10768        hardcode_direct_absolute=no
     10769        ;;
     10770      esac
     10771
     10772      if test yes = "$GCC"; then
     10773        case $host_os in aix4.[012]|aix4.[012].*)
     10774        # We only want to do this on AIX 4.2 and lower, the check
     10775        # below for broken collect2 doesn't work under 4.3+
     10776          collect2name=`$CC -print-prog-name=collect2`
     10777          if test -f "$collect2name" &&
     10778           strings "$collect2name" | $GREP resolve_lib_name >/dev/null
     10779          then
     10780          # We have reworked collect2
     10781          :
     10782          else
     10783          # We have old collect2
     10784          hardcode_direct=unsupported
     10785          # It fails to find uninstalled libraries when the uninstalled
     10786          # path is not listed in the libpath.  Setting hardcode_minus_L
     10787          # to unsupported forces relinking
     10788          hardcode_minus_L=yes
     10789          hardcode_libdir_flag_spec='-L$libdir'
     10790          hardcode_libdir_separator=
     10791          fi
     10792          ;;
     10793        esac
     10794        shared_flag='-shared'
     10795        if test yes = "$aix_use_runtimelinking"; then
     10796          shared_flag="$shared_flag "'$wl-G'
     10797        fi
     10798        # Need to ensure runtime linking is disabled for the traditional
     10799        # shared library, or the linker may eventually find shared libraries
     10800        # /with/ Import File - we do not want to mix them.
     10801        shared_flag_aix='-shared'
     10802        shared_flag_svr4='-shared $wl-G'
     10803      else
     10804        # not using gcc
     10805        if test ia64 = "$host_cpu"; then
     10806        # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
     10807        # chokes on -Wl,-G. The following line is correct:
     10808          shared_flag='-G'
     10809        else
     10810          if test yes = "$aix_use_runtimelinking"; then
     10811            shared_flag='$wl-G'
     10812          else
     10813            shared_flag='$wl-bM:SRE'
     10814          fi
     10815          shared_flag_aix='$wl-bM:SRE'
     10816          shared_flag_svr4='$wl-G'
     10817        fi
     10818      fi
     10819
     10820      export_dynamic_flag_spec='$wl-bexpall'
     10821      # It seems that -bexpall does not export symbols beginning with
     10822      # underscore (_), so it is better to generate a list of symbols to export.
     10823      always_export_symbols=yes
     10824      if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then
     10825        # Warning - without using the other runtime loading flags (-brtl),
     10826        # -berok will link without error, but may produce a broken library.
     10827        allow_undefined_flag='-berok'
     10828        # Determine the default libpath from the value encoded in an
     10829        # empty executable.
     10830        if test set = "${lt_cv_aix_libpath+set}"; then
     10831  aix_libpath=$lt_cv_aix_libpath
     10832else
     10833  if ${lt_cv_aix_libpath_+:} false; then :
     10834  $as_echo_n "(cached) " >&6
     10835else
     10836  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
     10837/* end confdefs.h.  */
     10838
     10839int
     10840main ()
     10841{
     10842
     10843  ;
     10844  return 0;
     10845}
     10846_ACEOF
     10847if ac_fn_c_try_link "$LINENO"; then :
     10848
     10849  lt_aix_libpath_sed='
     10850      /Import File Strings/,/^$/ {
     10851          /^0/ {
     10852              s/^0  *\([^ ]*\) *$/\1/
     10853              p
     10854          }
     10855      }'
     10856  lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
     10857  # Check for a 64-bit object if we didn't find anything.
     10858  if test -z "$lt_cv_aix_libpath_"; then
     10859    lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
     10860  fi
     10861fi
     10862rm -f core conftest.err conftest.$ac_objext \
     10863    conftest$ac_exeext conftest.$ac_ext
     10864  if test -z "$lt_cv_aix_libpath_"; then
     10865    lt_cv_aix_libpath_=/usr/lib:/lib
     10866  fi
     10867
     10868fi
     10869
     10870  aix_libpath=$lt_cv_aix_libpath_
     10871fi
     10872
     10873        hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath"
     10874        archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag
     10875      else
     10876        if test ia64 = "$host_cpu"; then
     10877          hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib'
     10878          allow_undefined_flag="-z nodefs"
     10879          archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols"
     10880        else
     10881         # Determine the default libpath from the value encoded in an
     10882         # empty executable.
     10883         if test set = "${lt_cv_aix_libpath+set}"; then
     10884  aix_libpath=$lt_cv_aix_libpath
     10885else
     10886  if ${lt_cv_aix_libpath_+:} false; then :
     10887  $as_echo_n "(cached) " >&6
     10888else
     10889  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
     10890/* end confdefs.h.  */
     10891
     10892int
     10893main ()
     10894{
     10895
     10896  ;
     10897  return 0;
     10898}
     10899_ACEOF
     10900if ac_fn_c_try_link "$LINENO"; then :
     10901
     10902  lt_aix_libpath_sed='
     10903      /Import File Strings/,/^$/ {
     10904          /^0/ {
     10905              s/^0  *\([^ ]*\) *$/\1/
     10906              p
     10907          }
     10908      }'
     10909  lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
     10910  # Check for a 64-bit object if we didn't find anything.
     10911  if test -z "$lt_cv_aix_libpath_"; then
     10912    lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
     10913  fi
     10914fi
     10915rm -f core conftest.err conftest.$ac_objext \
     10916    conftest$ac_exeext conftest.$ac_ext
     10917  if test -z "$lt_cv_aix_libpath_"; then
     10918    lt_cv_aix_libpath_=/usr/lib:/lib
     10919  fi
     10920
     10921fi
     10922
     10923  aix_libpath=$lt_cv_aix_libpath_
     10924fi
     10925
     10926         hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath"
     10927          # Warning - without using the other run time loading flags,
     10928          # -berok will link without error, but may produce a broken library.
     10929          no_undefined_flag=' $wl-bernotok'
     10930          allow_undefined_flag=' $wl-berok'
     10931          if test yes = "$with_gnu_ld"; then
     10932            # We only use this code for GNU lds that support --whole-archive.
     10933            whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive'
     10934          else
     10935            # Exported symbols can be pulled into shared objects from archives
     10936            whole_archive_flag_spec='$convenience'
     10937          fi
     10938          archive_cmds_need_lc=yes
     10939          archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d'
     10940          # -brtl affects multiple linker settings, -berok does not and is overridden later
     10941          compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`'
     10942          if test svr4 != "$with_aix_soname"; then
     10943            # This is similar to how AIX traditionally builds its shared libraries.
     10944            archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname'
     10945          fi
     10946          if test aix != "$with_aix_soname"; then
     10947            archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp'
     10948          else
     10949            # used by -dlpreopen to get the symbols
     10950            archive_expsym_cmds="$archive_expsym_cmds"'~$MV  $output_objdir/$realname.d/$soname $output_objdir'
     10951          fi
     10952          archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d'
     10953        fi
     10954      fi
     10955      ;;
     10956
     10957    amigaos*)
     10958      case $host_cpu in
     10959      powerpc)
     10960            # see comment about AmigaOS4 .so support
     10961            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
     10962            archive_expsym_cmds=''
     10963        ;;
     10964      m68k)
     10965            archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
     10966            hardcode_libdir_flag_spec='-L$libdir'
     10967            hardcode_minus_L=yes
     10968        ;;
     10969      esac
     10970      ;;
     10971
     10972    bsdi[45]*)
     10973      export_dynamic_flag_spec=-rdynamic
     10974      ;;
     10975
     10976    cygwin* | mingw* | pw32* | cegcc*)
     10977      # When not using gcc, we currently assume that we are using
     10978      # Microsoft Visual C++.
     10979      # hardcode_libdir_flag_spec is actually meaningless, as there is
     10980      # no search path for DLLs.
     10981      case $cc_basename in
     10982      cl*)
     10983        # Native MSVC
     10984        hardcode_libdir_flag_spec=' '
     10985        allow_undefined_flag=unsupported
     10986        always_export_symbols=yes
     10987        file_list_spec='@'
     10988        # Tell ltmain to make .lib files, not .a files.
     10989        libext=lib
     10990        # Tell ltmain to make .dll files, not .so files.
     10991        shrext_cmds=.dll
     10992        # FIXME: Setting linknames here is a bad hack.
     10993        archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames='
     10994        archive_expsym_cmds='if   test DEF = "`$SED -n     -e '\''s/^[   ]*//'\''     -e '\''/^\(;.*\)*$/d'\''     -e '\''s/^\(EXPORTS\|LIBRARY\)\([     ].*\)*$/DEF/p'\''     -e q     $export_symbols`" ; then
     10995            cp "$export_symbols" "$output_objdir/$soname.def";
     10996            echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp";
     10997          else
     10998            $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp;
     10999          fi~
     11000          $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
     11001          linknames='
     11002        # The linker will not automatically build a static lib if we build a DLL.
     11003        # _LT_TAGVAR(old_archive_from_new_cmds, )='true'
     11004        enable_shared_with_static_runtimes=yes
     11005        exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
     11006        export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
     11007        # Don't use ranlib
     11008        old_postinstall_cmds='chmod 644 $oldlib'
     11009        postlink_cmds='lt_outputfile="@OUTPUT@"~
     11010          lt_tool_outputfile="@TOOL_OUTPUT@"~
     11011          case $lt_outputfile in
     11012            *.exe|*.EXE) ;;
     11013            *)
     11014              lt_outputfile=$lt_outputfile.exe
     11015              lt_tool_outputfile=$lt_tool_outputfile.exe
     11016              ;;
     11017          esac~
     11018          if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then
     11019            $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
     11020            $RM "$lt_outputfile.manifest";
     11021          fi'
     11022        ;;
     11023      *)
     11024        # Assume MSVC wrapper
     11025        hardcode_libdir_flag_spec=' '
     11026        allow_undefined_flag=unsupported
     11027        # Tell ltmain to make .lib files, not .a files.
     11028        libext=lib
     11029        # Tell ltmain to make .dll files, not .so files.
     11030        shrext_cmds=.dll
     11031        # FIXME: Setting linknames here is a bad hack.
     11032        archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
     11033        # The linker will automatically build a .lib file if we build a DLL.
     11034        old_archive_from_new_cmds='true'
     11035        # FIXME: Should let the user specify the lib program.
     11036        old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
     11037        enable_shared_with_static_runtimes=yes
     11038        ;;
     11039      esac
     11040      ;;
     11041
     11042    darwin* | rhapsody*)
     11043
     11044
     11045  archive_cmds_need_lc=no
     11046  hardcode_direct=no
     11047  hardcode_automatic=yes
     11048  hardcode_shlibpath_var=unsupported
     11049  if test yes = "$lt_cv_ld_force_load"; then
     11050    whole_archive_flag_spec='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
     11051
     11052  else
     11053    whole_archive_flag_spec=''
     11054  fi
     11055  link_all_deplibs=yes
     11056  allow_undefined_flag=$_lt_dar_allow_undefined
     11057  case $cc_basename in
     11058     ifort*|nagfor*) _lt_dar_can_shared=yes ;;
     11059     *) _lt_dar_can_shared=$GCC ;;
     11060  esac
     11061  if test yes = "$_lt_dar_can_shared"; then
     11062    output_verbose_link_cmd=func_echo_all
     11063    archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil"
     11064    module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil"
     11065    archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil"
     11066    module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil"
     11067
     11068  else
     11069  ld_shlibs=no
     11070  fi
     11071
     11072      ;;
     11073
     11074    dgux*)
     11075      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
     11076      hardcode_libdir_flag_spec='-L$libdir'
     11077      hardcode_shlibpath_var=no
     11078      ;;
     11079
     11080    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
     11081    # support.  Future versions do this automatically, but an explicit c++rt0.o
     11082    # does not break anything, and helps significantly (at the cost of a little
     11083    # extra space).
     11084    freebsd2.2*)
     11085      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
     11086      hardcode_libdir_flag_spec='-R$libdir'
     11087      hardcode_direct=yes
     11088      hardcode_shlibpath_var=no
     11089      ;;
     11090
     11091    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
     11092    freebsd2.*)
     11093      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
     11094      hardcode_direct=yes
     11095      hardcode_minus_L=yes
     11096      hardcode_shlibpath_var=no
     11097      ;;
     11098
     11099    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
     11100    freebsd* | dragonfly*)
     11101      archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
     11102      hardcode_libdir_flag_spec='-R$libdir'
     11103      hardcode_direct=yes
     11104      hardcode_shlibpath_var=no
     11105      ;;
     11106
     11107    hpux9*)
     11108      if test yes = "$GCC"; then
     11109        archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
     11110      else
     11111        archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
     11112      fi
     11113      hardcode_libdir_flag_spec='$wl+b $wl$libdir'
     11114      hardcode_libdir_separator=:
     11115      hardcode_direct=yes
     11116
     11117      # hardcode_minus_L: Not really in the search PATH,
     11118      # but as the default location of the library.
     11119      hardcode_minus_L=yes
     11120      export_dynamic_flag_spec='$wl-E'
     11121      ;;
     11122
     11123    hpux10*)
     11124      if test yes,no = "$GCC,$with_gnu_ld"; then
     11125        archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
     11126      else
     11127        archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
     11128      fi
     11129      if test no = "$with_gnu_ld"; then
     11130        hardcode_libdir_flag_spec='$wl+b $wl$libdir'
     11131        hardcode_libdir_separator=:
     11132        hardcode_direct=yes
     11133        hardcode_direct_absolute=yes
     11134        export_dynamic_flag_spec='$wl-E'
     11135        # hardcode_minus_L: Not really in the search PATH,
     11136        # but as the default location of the library.
     11137        hardcode_minus_L=yes
     11138      fi
     11139      ;;
     11140
     11141    hpux11*)
     11142      if test yes,no = "$GCC,$with_gnu_ld"; then
     11143        case $host_cpu in
     11144        hppa*64*)
     11145          archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
     11146          ;;
     11147        ia64*)
     11148          archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
     11149          ;;
     11150        *)
     11151          archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
     11152          ;;
     11153        esac
     11154      else
     11155        case $host_cpu in
     11156        hppa*64*)
     11157          archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
     11158          ;;
     11159        ia64*)
     11160          archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
     11161          ;;
     11162        *)
     11163
     11164          # Older versions of the 11.00 compiler do not understand -b yet
     11165          # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
     11166          { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5
     11167$as_echo_n "checking if $CC understands -b... " >&6; }
     11168if ${lt_cv_prog_compiler__b+:} false; then :
     11169  $as_echo_n "(cached) " >&6
     11170else
     11171  lt_cv_prog_compiler__b=no
     11172   save_LDFLAGS=$LDFLAGS
     11173   LDFLAGS="$LDFLAGS -b"
     11174   echo "$lt_simple_link_test_code" > conftest.$ac_ext
     11175   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
     11176     # The linker can only warn and ignore the option if not recognized
     11177     # So say no if there are warnings
     11178     if test -s conftest.err; then
     11179       # Append any errors to the config.log.
     11180       cat conftest.err 1>&5
     11181       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
     11182       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
     11183       if diff conftest.exp conftest.er2 >/dev/null; then
     11184         lt_cv_prog_compiler__b=yes
     11185       fi
     11186     else
     11187       lt_cv_prog_compiler__b=yes
     11188     fi
     11189   fi
     11190   $RM -r conftest*
     11191   LDFLAGS=$save_LDFLAGS
     11192
     11193fi
     11194{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5
     11195$as_echo "$lt_cv_prog_compiler__b" >&6; }
     11196
     11197if test yes = "$lt_cv_prog_compiler__b"; then
     11198    archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
     11199else
     11200    archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
     11201fi
     11202
     11203          ;;
     11204        esac
     11205      fi
     11206      if test no = "$with_gnu_ld"; then
     11207        hardcode_libdir_flag_spec='$wl+b $wl$libdir'
     11208        hardcode_libdir_separator=:
     11209
     11210        case $host_cpu in
     11211        hppa*64*|ia64*)
     11212          hardcode_direct=no
     11213          hardcode_shlibpath_var=no
     11214          ;;
     11215        *)
     11216          hardcode_direct=yes
     11217          hardcode_direct_absolute=yes
     11218          export_dynamic_flag_spec='$wl-E'
     11219
     11220          # hardcode_minus_L: Not really in the search PATH,
     11221          # but as the default location of the library.
     11222          hardcode_minus_L=yes
     11223          ;;
     11224        esac
     11225      fi
     11226      ;;
     11227
     11228    irix5* | irix6* | nonstopux*)
     11229      if test yes = "$GCC"; then
     11230        archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
     11231        # Try to use the -exported_symbol ld option, if it does not
     11232        # work, assume that -exports_file does not work either and
     11233        # implicitly export all symbols.
     11234        # This should be the same for all languages, so no per-tag cache variable.
     11235        { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
     11236$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
     11237if ${lt_cv_irix_exported_symbol+:} false; then :
     11238  $as_echo_n "(cached) " >&6
     11239else
     11240  save_LDFLAGS=$LDFLAGS
     11241           LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null"
     11242           cat confdefs.h - <<_ACEOF >conftest.$ac_ext
     11243/* end confdefs.h.  */
     11244int foo (void) { return 0; }
     11245_ACEOF
     11246if ac_fn_c_try_link "$LINENO"; then :
     11247  lt_cv_irix_exported_symbol=yes
     11248else
     11249  lt_cv_irix_exported_symbol=no
     11250fi
     11251rm -f core conftest.err conftest.$ac_objext \
     11252    conftest$ac_exeext conftest.$ac_ext
     11253           LDFLAGS=$save_LDFLAGS
     11254fi
     11255{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
     11256$as_echo "$lt_cv_irix_exported_symbol" >&6; }
     11257        if test yes = "$lt_cv_irix_exported_symbol"; then
     11258          archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib'
     11259        fi
     11260        link_all_deplibs=no
     11261      else
     11262        archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
     11263        archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib'
     11264      fi
     11265      archive_cmds_need_lc='no'
     11266      hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
     11267      hardcode_libdir_separator=:
     11268      inherit_rpath=yes
     11269      link_all_deplibs=yes
     11270      ;;
     11271
     11272    linux*)
     11273      case $cc_basename in
     11274      tcc*)
     11275        # Fabrice Bellard et al's Tiny C Compiler
     11276        ld_shlibs=yes
     11277        archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
     11278        ;;
     11279      esac
     11280      ;;
     11281
     11282    netbsd* | netbsdelf*-gnu)
     11283      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
     11284        archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
     11285      else
     11286        archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
     11287      fi
     11288      hardcode_libdir_flag_spec='-R$libdir'
     11289      hardcode_direct=yes
     11290      hardcode_shlibpath_var=no
     11291      ;;
     11292
     11293    newsos6)
     11294      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
     11295      hardcode_direct=yes
     11296      hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
     11297      hardcode_libdir_separator=:
     11298      hardcode_shlibpath_var=no
     11299      ;;
     11300
     11301    *nto* | *qnx*)
     11302      ;;
     11303
     11304    openbsd* | bitrig*)
     11305      if test -f /usr/libexec/ld.so; then
     11306        hardcode_direct=yes
     11307        hardcode_shlibpath_var=no
     11308        hardcode_direct_absolute=yes
     11309        if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
     11310          archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
     11311          archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols'
     11312          hardcode_libdir_flag_spec='$wl-rpath,$libdir'
     11313          export_dynamic_flag_spec='$wl-E'
     11314        else
     11315          archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
     11316          hardcode_libdir_flag_spec='$wl-rpath,$libdir'
     11317        fi
     11318      else
     11319        ld_shlibs=no
     11320      fi
     11321      ;;
     11322
     11323    os2*)
     11324      hardcode_libdir_flag_spec='-L$libdir'
     11325      hardcode_minus_L=yes
     11326      allow_undefined_flag=unsupported
     11327      shrext_cmds=.dll
     11328      archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
     11329        $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
     11330        $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
     11331        $ECHO EXPORTS >> $output_objdir/$libname.def~
     11332        emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~
     11333        $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
     11334        emximp -o $lib $output_objdir/$libname.def'
     11335      archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
     11336        $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
     11337        $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
     11338        $ECHO EXPORTS >> $output_objdir/$libname.def~
     11339        prefix_cmds="$SED"~
     11340        if test EXPORTS = "`$SED 1q $export_symbols`"; then
     11341          prefix_cmds="$prefix_cmds -e 1d";
     11342        fi~
     11343        prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~
     11344        cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~
     11345        $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
     11346        emximp -o $lib $output_objdir/$libname.def'
     11347      old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
     11348      enable_shared_with_static_runtimes=yes
     11349      ;;
     11350
     11351    osf3*)
     11352      if test yes = "$GCC"; then
     11353        allow_undefined_flag=' $wl-expect_unresolved $wl\*'
     11354        archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
     11355      else
     11356        allow_undefined_flag=' -expect_unresolved \*'
     11357        archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
     11358      fi
     11359      archive_cmds_need_lc='no'
     11360      hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
     11361      hardcode_libdir_separator=:
     11362      ;;
     11363
     11364    osf4* | osf5*)      # as osf3* with the addition of -msym flag
     11365      if test yes = "$GCC"; then
     11366        allow_undefined_flag=' $wl-expect_unresolved $wl\*'
     11367        archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
     11368        hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
     11369      else
     11370        allow_undefined_flag=' -expect_unresolved \*'
     11371        archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
     11372        archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
     11373          $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp'
     11374
     11375        # Both c and cxx compiler support -rpath directly
     11376        hardcode_libdir_flag_spec='-rpath $libdir'
     11377      fi
     11378      archive_cmds_need_lc='no'
     11379      hardcode_libdir_separator=:
     11380      ;;
     11381
     11382    solaris*)
     11383      no_undefined_flag=' -z defs'
     11384      if test yes = "$GCC"; then
     11385        wlarc='$wl'
     11386        archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
     11387        archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
     11388          $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
     11389      else
     11390        case `$CC -V 2>&1` in
     11391        *"Compilers 5.0"*)
     11392          wlarc=''
     11393          archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags'
     11394          archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
     11395            $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
     11396          ;;
     11397        *)
     11398          wlarc='$wl'
     11399          archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags'
     11400          archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
     11401            $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
     11402          ;;
     11403        esac
     11404      fi
     11405      hardcode_libdir_flag_spec='-R$libdir'
     11406      hardcode_shlibpath_var=no
     11407      case $host_os in
     11408      solaris2.[0-5] | solaris2.[0-5].*) ;;
     11409      *)
     11410        # The compiler driver will combine and reorder linker options,
     11411        # but understands '-z linker_flag'.  GCC discards it without '$wl',
     11412        # but is careful enough not to reorder.
     11413        # Supported since Solaris 2.6 (maybe 2.5.1?)
     11414        if test yes = "$GCC"; then
     11415          whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract'
     11416        else
     11417          whole_archive_flag_spec='-z allextract$convenience -z defaultextract'
     11418        fi
     11419        ;;
     11420      esac
     11421      link_all_deplibs=yes
     11422      ;;
     11423
     11424    sunos4*)
     11425      if test sequent = "$host_vendor"; then
     11426        # Use $CC to link under sequent, because it throws in some extra .o
     11427        # files that make .init and .fini sections work.
     11428        archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags'
     11429      else
     11430        archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
     11431      fi
     11432      hardcode_libdir_flag_spec='-L$libdir'
     11433      hardcode_direct=yes
     11434      hardcode_minus_L=yes
     11435      hardcode_shlibpath_var=no
     11436      ;;
     11437
     11438    sysv4)
     11439      case $host_vendor in
     11440        sni)
     11441          archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
     11442          hardcode_direct=yes # is this really true???
     11443        ;;
     11444        siemens)
     11445          ## LD is ld it makes a PLAMLIB
     11446          ## CC just makes a GrossModule.
     11447          archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
     11448          reload_cmds='$CC -r -o $output$reload_objs'
     11449          hardcode_direct=no
     11450        ;;
     11451        motorola)
     11452          archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
     11453          hardcode_direct=no #Motorola manual says yes, but my tests say they lie
     11454        ;;
     11455      esac
     11456      runpath_var='LD_RUN_PATH'
     11457      hardcode_shlibpath_var=no
     11458      ;;
     11459
     11460    sysv4.3*)
     11461      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
     11462      hardcode_shlibpath_var=no
     11463      export_dynamic_flag_spec='-Bexport'
     11464      ;;
     11465
     11466    sysv4*MP*)
     11467      if test -d /usr/nec; then
     11468        archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
     11469        hardcode_shlibpath_var=no
     11470        runpath_var=LD_RUN_PATH
     11471        hardcode_runpath_var=yes
     11472        ld_shlibs=yes
     11473      fi
     11474      ;;
     11475
     11476    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
     11477      no_undefined_flag='$wl-z,text'
     11478      archive_cmds_need_lc=no
     11479      hardcode_shlibpath_var=no
     11480      runpath_var='LD_RUN_PATH'
     11481
     11482      if test yes = "$GCC"; then
     11483        archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
     11484        archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
     11485      else
     11486        archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
     11487        archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
     11488      fi
     11489      ;;
     11490
     11491    sysv5* | sco3.2v5* | sco5v6*)
     11492      # Note: We CANNOT use -z defs as we might desire, because we do not
     11493      # link with -lc, and that would cause any symbols used from libc to
     11494      # always be unresolved, which means just about no library would
     11495      # ever link correctly.  If we're not using GNU ld we use -z text
     11496      # though, which does catch some bad symbols but isn't as heavy-handed
     11497      # as -z defs.
     11498      no_undefined_flag='$wl-z,text'
     11499      allow_undefined_flag='$wl-z,nodefs'
     11500      archive_cmds_need_lc=no
     11501      hardcode_shlibpath_var=no
     11502      hardcode_libdir_flag_spec='$wl-R,$libdir'
     11503      hardcode_libdir_separator=':'
     11504      link_all_deplibs=yes
     11505      export_dynamic_flag_spec='$wl-Bexport'
     11506      runpath_var='LD_RUN_PATH'
     11507
     11508      if test yes = "$GCC"; then
     11509        archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
     11510        archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
     11511      else
     11512        archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
     11513        archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
     11514      fi
     11515      ;;
     11516
     11517    uts4*)
     11518      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
     11519      hardcode_libdir_flag_spec='-L$libdir'
     11520      hardcode_shlibpath_var=no
     11521      ;;
     11522
     11523    *)
     11524      ld_shlibs=no
     11525      ;;
     11526    esac
     11527
     11528    if test sni = "$host_vendor"; then
     11529      case $host in
     11530      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
     11531        export_dynamic_flag_spec='$wl-Blargedynsym'
     11532        ;;
     11533      esac
     11534    fi
     11535  fi
     11536
     11537{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5
     11538$as_echo "$ld_shlibs" >&6; }
     11539test no = "$ld_shlibs" && can_build_shared=no
     11540
     11541with_gnu_ld=$with_gnu_ld
     11542
     11543
     11544
     11545
     11546
     11547
     11548
     11549
     11550
     11551
     11552
     11553
     11554
     11555
     11556
     11557#
     11558# Do we need to explicitly link libc?
     11559#
     11560case "x$archive_cmds_need_lc" in
     11561x|xyes)
     11562  # Assume -lc should be added
     11563  archive_cmds_need_lc=yes
     11564
     11565  if test yes,yes = "$GCC,$enable_shared"; then
     11566    case $archive_cmds in
     11567    *'~'*)
     11568      # FIXME: we may have to deal with multi-command sequences.
     11569      ;;
     11570    '$CC '*)
     11571      # Test whether the compiler implicitly links with -lc since on some
     11572      # systems, -lgcc has to come before -lc. If gcc already passes -lc
     11573      # to ld, don't add -lc before -lgcc.
     11574      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
     11575$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
     11576if ${lt_cv_archive_cmds_need_lc+:} false; then :
     11577  $as_echo_n "(cached) " >&6
     11578else
     11579  $RM conftest*
     11580        echo "$lt_simple_compile_test_code" > conftest.$ac_ext
     11581
     11582        if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
     11583  (eval $ac_compile) 2>&5
     11584  ac_status=$?
     11585  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
     11586  test $ac_status = 0; } 2>conftest.err; then
     11587          soname=conftest
     11588          lib=conftest
     11589          libobjs=conftest.$ac_objext
     11590          deplibs=
     11591          wl=$lt_prog_compiler_wl
     11592          pic_flag=$lt_prog_compiler_pic
     11593          compiler_flags=-v
     11594          linker_flags=-v
     11595          verstring=
     11596          output_objdir=.
     11597          libname=conftest
     11598          lt_save_allow_undefined_flag=$allow_undefined_flag
     11599          allow_undefined_flag=
     11600          if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
     11601  (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
     11602  ac_status=$?
     11603  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
     11604  test $ac_status = 0; }
     11605          then
     11606            lt_cv_archive_cmds_need_lc=no
     11607          else
     11608            lt_cv_archive_cmds_need_lc=yes
     11609          fi
     11610          allow_undefined_flag=$lt_save_allow_undefined_flag
     11611        else
     11612          cat conftest.err 1>&5
     11613        fi
     11614        $RM conftest*
     11615
     11616fi
     11617{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
     11618$as_echo "$lt_cv_archive_cmds_need_lc" >&6; }
     11619      archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc
     11620      ;;
     11621    esac
     11622  fi
     11623  ;;
     11624esac
     11625
     11626
     11627
     11628
     11629
     11630
     11631
     11632
     11633
     11634
     11635
     11636
     11637
     11638
     11639
     11640
     11641
     11642
     11643
     11644
     11645
     11646
     11647
     11648
     11649
     11650
     11651
     11652
     11653
     11654
     11655
     11656
     11657
     11658
     11659
     11660
     11661
     11662
     11663
     11664
     11665
     11666
     11667
     11668
     11669
     11670
     11671
     11672
     11673
     11674
     11675
     11676
     11677
     11678
     11679
     11680
     11681
     11682
     11683
     11684
     11685
     11686
     11687
     11688
     11689
     11690
     11691
     11692
     11693
     11694
     11695
     11696
     11697
     11698
     11699
     11700
     11701
     11702
     11703
     11704
     11705
     11706
     11707
     11708
     11709
     11710
     11711
     11712
     11713
     11714
     11715
     11716
     11717
     11718
     11719
     11720
     11721
     11722
     11723
     11724
     11725
     11726
     11727
     11728
     11729
     11730
     11731
     11732
     11733
     11734
     11735
     11736
     11737
     11738
     11739
     11740
     11741
     11742
     11743
     11744
     11745
     11746
     11747
     11748
     11749
     11750
     11751
     11752
     11753
     11754
     11755
     11756
     11757
     11758
     11759
     11760
     11761
     11762
     11763
     11764
     11765
     11766
     11767
     11768
     11769
     11770
     11771
     11772
     11773
     11774
     11775
     11776
     11777  { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
     11778$as_echo_n "checking dynamic linker characteristics... " >&6; }
     11779
     11780if test yes = "$GCC"; then
     11781  case $host_os in
     11782    darwin*) lt_awk_arg='/^libraries:/,/LR/' ;;
     11783    *) lt_awk_arg='/^libraries:/' ;;
     11784  esac
     11785  case $host_os in
     11786    mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;;
     11787    *) lt_sed_strip_eq='s|=/|/|g' ;;
     11788  esac
     11789  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
     11790  case $lt_search_path_spec in
     11791  *\;*)
     11792    # if the path contains ";" then we assume it to be the separator
     11793    # otherwise default to the standard path separator (i.e. ":") - it is
     11794    # assumed that no part of a normal pathname contains ";" but that should
     11795    # okay in the real world where ";" in dirpaths is itself problematic.
     11796    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
     11797    ;;
     11798  *)
     11799    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
     11800    ;;
     11801  esac
     11802  # Ok, now we have the path, separated by spaces, we can step through it
     11803  # and add multilib dir if necessary...
     11804  lt_tmp_lt_search_path_spec=
     11805  lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
     11806  # ...but if some path component already ends with the multilib dir we assume
     11807  # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer).
     11808  case "$lt_multi_os_dir; $lt_search_path_spec " in
     11809  "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*)
     11810    lt_multi_os_dir=
     11811    ;;
     11812  esac
     11813  for lt_sys_path in $lt_search_path_spec; do
     11814    if test -d "$lt_sys_path$lt_multi_os_dir"; then
     11815      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir"
     11816    elif test -n "$lt_multi_os_dir"; then
     11817      test -d "$lt_sys_path" && \
     11818        lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
     11819    fi
     11820  done
     11821  lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
     11822BEGIN {RS = " "; FS = "/|\n";} {
     11823  lt_foo = "";
     11824  lt_count = 0;
     11825  for (lt_i = NF; lt_i > 0; lt_i--) {
     11826    if ($lt_i != "" && $lt_i != ".") {
     11827      if ($lt_i == "..") {
     11828        lt_count++;
     11829      } else {
     11830        if (lt_count == 0) {
     11831          lt_foo = "/" $lt_i lt_foo;
     11832        } else {
     11833          lt_count--;
     11834        }
     11835      }
     11836    }
     11837  }
     11838  if (lt_foo != "") { lt_freq[lt_foo]++; }
     11839  if (lt_freq[lt_foo] == 1) { print lt_foo; }
     11840}'`
     11841  # AWK program above erroneously prepends '/' to C:/dos/paths
     11842  # for these hosts.
     11843  case $host_os in
     11844    mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
     11845      $SED 's|/\([A-Za-z]:\)|\1|g'` ;;
     11846  esac
     11847  sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
     11848else
     11849  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
     11850fi
     11851library_names_spec=
     11852libname_spec='lib$name'
     11853soname_spec=
     11854shrext_cmds=.so
     11855postinstall_cmds=
     11856postuninstall_cmds=
     11857finish_cmds=
     11858finish_eval=
     11859shlibpath_var=
     11860shlibpath_overrides_runpath=unknown
     11861version_type=none
     11862dynamic_linker="$host_os ld.so"
     11863sys_lib_dlsearch_path_spec="/lib /usr/lib"
     11864need_lib_prefix=unknown
     11865hardcode_into_libs=no
     11866
     11867# when you set need_version to no, make sure it does not cause -set_version
     11868# flags to be left without arguments
     11869need_version=unknown
     11870
     11871
     11872
     11873case $host_os in
     11874aix3*)
     11875  version_type=linux # correct to gnu/linux during the next big refactor
     11876  library_names_spec='$libname$release$shared_ext$versuffix $libname.a'
     11877  shlibpath_var=LIBPATH
     11878
     11879  # AIX 3 has no versioning support, so we append a major version to the name.
     11880  soname_spec='$libname$release$shared_ext$major'
     11881  ;;
     11882
     11883aix[4-9]*)
     11884  version_type=linux # correct to gnu/linux during the next big refactor
     11885  need_lib_prefix=no
     11886  need_version=no
     11887  hardcode_into_libs=yes
     11888  if test ia64 = "$host_cpu"; then
     11889    # AIX 5 supports IA64
     11890    library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext'
     11891    shlibpath_var=LD_LIBRARY_PATH
     11892  else
     11893    # With GCC up to 2.95.x, collect2 would create an import file
     11894    # for dependence libraries.  The import file would start with
     11895    # the line '#! .'.  This would cause the generated library to
     11896    # depend on '.', always an invalid library.  This was fixed in
     11897    # development snapshots of GCC prior to 3.0.
     11898    case $host_os in
     11899      aix4 | aix4.[01] | aix4.[01].*)
     11900      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
     11901           echo ' yes '
     11902           echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then
     11903        :
     11904      else
     11905        can_build_shared=no
     11906      fi
     11907      ;;
     11908    esac
     11909    # Using Import Files as archive members, it is possible to support
     11910    # filename-based versioning of shared library archives on AIX. While
     11911    # this would work for both with and without runtime linking, it will
     11912    # prevent static linking of such archives. So we do filename-based
     11913    # shared library versioning with .so extension only, which is used
     11914    # when both runtime linking and shared linking is enabled.
     11915    # Unfortunately, runtime linking may impact performance, so we do
     11916    # not want this to be the default eventually. Also, we use the
     11917    # versioned .so libs for executables only if there is the -brtl
     11918    # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only.
     11919    # To allow for filename-based versioning support, we need to create
     11920    # libNAME.so.V as an archive file, containing:
     11921    # *) an Import File, referring to the versioned filename of the
     11922    #    archive as well as the shared archive member, telling the
     11923    #    bitwidth (32 or 64) of that shared object, and providing the
     11924    #    list of exported symbols of that shared object, eventually
     11925    #    decorated with the 'weak' keyword
     11926    # *) the shared object with the F_LOADONLY flag set, to really avoid
     11927    #    it being seen by the linker.
     11928    # At run time we better use the real file rather than another symlink,
     11929    # but for link time we create the symlink libNAME.so -> libNAME.so.V
     11930
     11931    case $with_aix_soname,$aix_use_runtimelinking in
     11932    # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct
     11933    # soname into executable. Probably we can add versioning support to
     11934    # collect2, so additional links can be useful in future.
     11935    aix,yes) # traditional libtool
     11936      dynamic_linker='AIX unversionable lib.so'
     11937      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
     11938      # instead of lib<name>.a to let people know that these are not
     11939      # typical AIX shared libraries.
     11940      library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
     11941      ;;
     11942    aix,no) # traditional AIX only
     11943      dynamic_linker='AIX lib.a(lib.so.V)'
     11944      # We preserve .a as extension for shared libraries through AIX4.2
     11945      # and later when we are not doing run time linking.
     11946      library_names_spec='$libname$release.a $libname.a'
     11947      soname_spec='$libname$release$shared_ext$major'
     11948      ;;
     11949    svr4,*) # full svr4 only
     11950      dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)"
     11951      library_names_spec='$libname$release$shared_ext$major $libname$shared_ext'
     11952      # We do not specify a path in Import Files, so LIBPATH fires.
     11953      shlibpath_overrides_runpath=yes
     11954      ;;
     11955    *,yes) # both, prefer svr4
     11956      dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)"
     11957      library_names_spec='$libname$release$shared_ext$major $libname$shared_ext'
     11958      # unpreferred sharedlib libNAME.a needs extra handling
     11959      postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"'
     11960      postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"'
     11961      # We do not specify a path in Import Files, so LIBPATH fires.
     11962      shlibpath_overrides_runpath=yes
     11963      ;;
     11964    *,no) # both, prefer aix
     11965      dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)"
     11966      library_names_spec='$libname$release.a $libname.a'
     11967      soname_spec='$libname$release$shared_ext$major'
     11968      # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling
     11969      postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)'
     11970      postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"'
     11971      ;;
     11972    esac
     11973    shlibpath_var=LIBPATH
     11974  fi
     11975  ;;
     11976
     11977amigaos*)
     11978  case $host_cpu in
     11979  powerpc)
     11980    # Since July 2007 AmigaOS4 officially supports .so libraries.
     11981    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
     11982    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
     11983    ;;
     11984  m68k)
     11985    library_names_spec='$libname.ixlibrary $libname.a'
     11986    # Create ${libname}_ixlibrary.a entries in /sys/libs.
     11987    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
     11988    ;;
     11989  esac
     11990  ;;
     11991
     11992beos*)
     11993  library_names_spec='$libname$shared_ext'
     11994  dynamic_linker="$host_os ld.so"
     11995  shlibpath_var=LIBRARY_PATH
     11996  ;;
     11997
     11998bsdi[45]*)
     11999  version_type=linux # correct to gnu/linux during the next big refactor
     12000  need_version=no
     12001  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
     12002  soname_spec='$libname$release$shared_ext$major'
     12003  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
     12004  shlibpath_var=LD_LIBRARY_PATH
     12005  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
     12006  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
     12007  # the default ld.so.conf also contains /usr/contrib/lib and
     12008  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
     12009  # libtool to hard-code these into programs
     12010  ;;
     12011
     12012cygwin* | mingw* | pw32* | cegcc*)
     12013  version_type=windows
     12014  shrext_cmds=.dll
     12015  need_version=no
     12016  need_lib_prefix=no
     12017
     12018  case $GCC,$cc_basename in
     12019  yes,*)
     12020    # gcc
     12021    library_names_spec='$libname.dll.a'
     12022    # DLL is installed to $(libdir)/../bin by postinstall_cmds
     12023    postinstall_cmds='base_file=`basename \$file`~
     12024      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
     12025      dldir=$destdir/`dirname \$dlpath`~
     12026      test -d \$dldir || mkdir -p \$dldir~
     12027      $install_prog $dir/$dlname \$dldir/$dlname~
     12028      chmod a+x \$dldir/$dlname~
     12029      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
     12030        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
     12031      fi'
     12032    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
     12033      dlpath=$dir/\$dldll~
     12034       $RM \$dlpath'
     12035    shlibpath_overrides_runpath=yes
     12036
     12037    case $host_os in
     12038    cygwin*)
     12039      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
     12040      soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
     12041
     12042      sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"
     12043      ;;
     12044    mingw* | cegcc*)
     12045      # MinGW DLLs use traditional 'lib' prefix
     12046      soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
     12047      ;;
     12048    pw32*)
     12049      # pw32 DLLs use 'pw' prefix rather than 'lib'
     12050      library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
     12051      ;;
     12052    esac
     12053    dynamic_linker='Win32 ld.exe'
     12054    ;;
     12055
     12056  *,cl*)
     12057    # Native MSVC
     12058    libname_spec='$name'
     12059    soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
     12060    library_names_spec='$libname.dll.lib'
     12061
     12062    case $build_os in
     12063    mingw*)
     12064      sys_lib_search_path_spec=
     12065      lt_save_ifs=$IFS
     12066      IFS=';'
     12067      for lt_path in $LIB
     12068      do
     12069        IFS=$lt_save_ifs
     12070        # Let DOS variable expansion print the short 8.3 style file name.
     12071        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
     12072        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
     12073      done
     12074      IFS=$lt_save_ifs
     12075      # Convert to MSYS style.
     12076      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
     12077      ;;
     12078    cygwin*)
     12079      # Convert to unix form, then to dos form, then back to unix form
     12080      # but this time dos style (no spaces!) so that the unix form looks
     12081      # like /cygdrive/c/PROGRA~1:/cygdr...
     12082      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
     12083      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
     12084      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
     12085      ;;
     12086    *)
     12087      sys_lib_search_path_spec=$LIB
     12088      if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
     12089        # It is most probably a Windows format PATH.
     12090        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
     12091      else
     12092        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
     12093      fi
     12094      # FIXME: find the short name or the path components, as spaces are
     12095      # common. (e.g. "Program Files" -> "PROGRA~1")
     12096      ;;
     12097    esac
     12098
     12099    # DLL is installed to $(libdir)/../bin by postinstall_cmds
     12100    postinstall_cmds='base_file=`basename \$file`~
     12101      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
     12102      dldir=$destdir/`dirname \$dlpath`~
     12103      test -d \$dldir || mkdir -p \$dldir~
     12104      $install_prog $dir/$dlname \$dldir/$dlname'
     12105    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
     12106      dlpath=$dir/\$dldll~
     12107       $RM \$dlpath'
     12108    shlibpath_overrides_runpath=yes
     12109    dynamic_linker='Win32 link.exe'
     12110    ;;
     12111
     12112  *)
     12113    # Assume MSVC wrapper
     12114    library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib'
     12115    dynamic_linker='Win32 ld.exe'
     12116    ;;
     12117  esac
     12118  # FIXME: first we should search . and the directory the executable is in
     12119  shlibpath_var=PATH
     12120  ;;
     12121
     12122darwin* | rhapsody*)
     12123  dynamic_linker="$host_os dyld"
     12124  version_type=darwin
     12125  need_lib_prefix=no
     12126  need_version=no
     12127  library_names_spec='$libname$release$major$shared_ext $libname$shared_ext'
     12128  soname_spec='$libname$release$major$shared_ext'
     12129  shlibpath_overrides_runpath=yes
     12130  shlibpath_var=DYLD_LIBRARY_PATH
     12131  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
     12132
     12133  sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"
     12134  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
     12135  ;;
     12136
     12137dgux*)
     12138  version_type=linux # correct to gnu/linux during the next big refactor
     12139  need_lib_prefix=no
     12140  need_version=no
     12141  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
     12142  soname_spec='$libname$release$shared_ext$major'
     12143  shlibpath_var=LD_LIBRARY_PATH
     12144  ;;
     12145
     12146freebsd* | dragonfly*)
     12147  # DragonFly does not have aout.  When/if they implement a new
     12148  # versioning mechanism, adjust this.
     12149  if test -x /usr/bin/objformat; then
     12150    objformat=`/usr/bin/objformat`
     12151  else
     12152    case $host_os in
     12153    freebsd[23].*) objformat=aout ;;
     12154    *) objformat=elf ;;
     12155    esac
     12156  fi
     12157  version_type=freebsd-$objformat
     12158  case $version_type in
     12159    freebsd-elf*)
     12160      library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
     12161      soname_spec='$libname$release$shared_ext$major'
     12162      need_version=no
     12163      need_lib_prefix=no
     12164      ;;
     12165    freebsd-*)
     12166      library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
     12167      need_version=yes
     12168      ;;
     12169  esac
     12170  shlibpath_var=LD_LIBRARY_PATH
     12171  case $host_os in
     12172  freebsd2.*)
     12173    shlibpath_overrides_runpath=yes
     12174    ;;
     12175  freebsd3.[01]* | freebsdelf3.[01]*)
     12176    shlibpath_overrides_runpath=yes
     12177    hardcode_into_libs=yes
     12178    ;;
     12179  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
     12180  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
     12181    shlibpath_overrides_runpath=no
     12182    hardcode_into_libs=yes
     12183    ;;
     12184  *) # from 4.6 on, and DragonFly
     12185    shlibpath_overrides_runpath=yes
     12186    hardcode_into_libs=yes
     12187    ;;
     12188  esac
     12189  ;;
     12190
     12191haiku*)
     12192  version_type=linux # correct to gnu/linux during the next big refactor
     12193  need_lib_prefix=no
     12194  need_version=no
     12195  dynamic_linker="$host_os runtime_loader"
     12196  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
     12197  soname_spec='$libname$release$shared_ext$major'
     12198  shlibpath_var=LIBRARY_PATH
     12199  shlibpath_overrides_runpath=no
     12200  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
     12201  hardcode_into_libs=yes
     12202  ;;
     12203
     12204hpux9* | hpux10* | hpux11*)
     12205  # Give a soname corresponding to the major version so that dld.sl refuses to
     12206  # link against other versions.
     12207  version_type=sunos
     12208  need_lib_prefix=no
     12209  need_version=no
     12210  case $host_cpu in
     12211  ia64*)
     12212    shrext_cmds='.so'
     12213    hardcode_into_libs=yes
     12214    dynamic_linker="$host_os dld.so"
     12215    shlibpath_var=LD_LIBRARY_PATH
     12216    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
     12217    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
     12218    soname_spec='$libname$release$shared_ext$major'
     12219    if test 32 = "$HPUX_IA64_MODE"; then
     12220      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
     12221      sys_lib_dlsearch_path_spec=/usr/lib/hpux32
     12222    else
     12223      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
     12224      sys_lib_dlsearch_path_spec=/usr/lib/hpux64
     12225    fi
     12226    ;;
     12227  hppa*64*)
     12228    shrext_cmds='.sl'
     12229    hardcode_into_libs=yes
     12230    dynamic_linker="$host_os dld.sl"
     12231    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
     12232    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
     12233    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
     12234    soname_spec='$libname$release$shared_ext$major'
     12235    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
     12236    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
     12237    ;;
     12238  *)
     12239    shrext_cmds='.sl'
     12240    dynamic_linker="$host_os dld.sl"
     12241    shlibpath_var=SHLIB_PATH
     12242    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
     12243    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
     12244    soname_spec='$libname$release$shared_ext$major'
     12245    ;;
     12246  esac
     12247  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
     12248  postinstall_cmds='chmod 555 $lib'
     12249  # or fails outright, so override atomically:
     12250  install_override_mode=555
     12251  ;;
     12252
     12253interix[3-9]*)
     12254  version_type=linux # correct to gnu/linux during the next big refactor
     12255  need_lib_prefix=no
     12256  need_version=no
     12257  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
     12258  soname_spec='$libname$release$shared_ext$major'
     12259  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
     12260  shlibpath_var=LD_LIBRARY_PATH
     12261  shlibpath_overrides_runpath=no
     12262  hardcode_into_libs=yes
     12263  ;;
     12264
     12265irix5* | irix6* | nonstopux*)
     12266  case $host_os in
     12267    nonstopux*) version_type=nonstopux ;;
     12268    *)
     12269        if test yes = "$lt_cv_prog_gnu_ld"; then
     12270                version_type=linux # correct to gnu/linux during the next big refactor
     12271        else
     12272                version_type=irix
     12273        fi ;;
     12274  esac
     12275  need_lib_prefix=no
     12276  need_version=no
     12277  soname_spec='$libname$release$shared_ext$major'
     12278  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext'
     12279  case $host_os in
     12280  irix5* | nonstopux*)
     12281    libsuff= shlibsuff=
     12282    ;;
     12283  *)
     12284    case $LD in # libtool.m4 will add one of these switches to LD
     12285    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
     12286      libsuff= shlibsuff= libmagic=32-bit;;
     12287    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
     12288      libsuff=32 shlibsuff=N32 libmagic=N32;;
     12289    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
     12290      libsuff=64 shlibsuff=64 libmagic=64-bit;;
     12291    *) libsuff= shlibsuff= libmagic=never-match;;
     12292    esac
     12293    ;;
     12294  esac
     12295  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
     12296  shlibpath_overrides_runpath=no
     12297  sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff"
     12298  sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff"
     12299  hardcode_into_libs=yes
     12300  ;;
     12301
     12302# No shared lib support for Linux oldld, aout, or coff.
     12303linux*oldld* | linux*aout* | linux*coff*)
     12304  dynamic_linker=no
     12305  ;;
     12306
     12307linux*android*)
     12308  version_type=none # Android doesn't support versioned libraries.
     12309  need_lib_prefix=no
     12310  need_version=no
     12311  library_names_spec='$libname$release$shared_ext'
     12312  soname_spec='$libname$release$shared_ext'
     12313  finish_cmds=
     12314  shlibpath_var=LD_LIBRARY_PATH
     12315  shlibpath_overrides_runpath=yes
     12316
     12317  # This implies no fast_install, which is unacceptable.
     12318  # Some rework will be needed to allow for fast_install
     12319  # before this can be enabled.
     12320  hardcode_into_libs=yes
     12321
     12322  dynamic_linker='Android linker'
     12323  # Don't embed -rpath directories since the linker doesn't support them.
     12324  hardcode_libdir_flag_spec='-L$libdir'
     12325  ;;
     12326
     12327# This must be glibc/ELF.
     12328linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
     12329  version_type=linux # correct to gnu/linux during the next big refactor
     12330  need_lib_prefix=no
     12331  need_version=no
     12332  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
     12333  soname_spec='$libname$release$shared_ext$major'
     12334  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
     12335  shlibpath_var=LD_LIBRARY_PATH
     12336  shlibpath_overrides_runpath=no
     12337
     12338  # Some binutils ld are patched to set DT_RUNPATH
     12339  if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
     12340  $as_echo_n "(cached) " >&6
     12341else
     12342  lt_cv_shlibpath_overrides_runpath=no
     12343    save_LDFLAGS=$LDFLAGS
     12344    save_libdir=$libdir
     12345    eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \
     12346         LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\""
     12347    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
     12348/* end confdefs.h.  */
     12349
     12350int
     12351main ()
     12352{
     12353
     12354  ;
     12355  return 0;
     12356}
     12357_ACEOF
     12358if ac_fn_c_try_link "$LINENO"; then :
     12359  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
     12360  lt_cv_shlibpath_overrides_runpath=yes
     12361fi
     12362fi
     12363rm -f core conftest.err conftest.$ac_objext \
     12364    conftest$ac_exeext conftest.$ac_ext
     12365    LDFLAGS=$save_LDFLAGS
     12366    libdir=$save_libdir
     12367
     12368fi
     12369
     12370  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
     12371
     12372  # This implies no fast_install, which is unacceptable.
     12373  # Some rework will be needed to allow for fast_install
     12374  # before this can be enabled.
     12375  hardcode_into_libs=yes
     12376
     12377  # Ideally, we could use ldconfig to report *all* directores which are
     12378  # searched for libraries, however this is still not possible.  Aside from not
     12379  # being certain /sbin/ldconfig is available, command
     12380  # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64,
     12381  # even though it is searched at run-time.  Try to do the best guess by
     12382  # appending ld.so.conf contents (and includes) to the search path.
     12383  if test -f /etc/ld.so.conf; then
     12384    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[       ]*hwcap[        ]/d;s/[:,      ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
     12385    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
     12386  fi
     12387
     12388  # We used to test for /lib/ld.so.1 and disable shared libraries on
     12389  # powerpc, because MkLinux only supported shared libraries with the
     12390  # GNU dynamic linker.  Since this was broken with cross compilers,
     12391  # most powerpc-linux boxes support dynamic linking these days and
     12392  # people can always --disable-shared, the test was removed, and we
     12393  # assume the GNU/Linux dynamic linker is in use.
     12394  dynamic_linker='GNU/Linux ld.so'
     12395  ;;
     12396
     12397netbsdelf*-gnu)
     12398  version_type=linux
     12399  need_lib_prefix=no
     12400  need_version=no
     12401  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
     12402  soname_spec='${libname}${release}${shared_ext}$major'
     12403  shlibpath_var=LD_LIBRARY_PATH
     12404  shlibpath_overrides_runpath=no
     12405  hardcode_into_libs=yes
     12406  dynamic_linker='NetBSD ld.elf_so'
     12407  ;;
     12408
     12409netbsd*)
     12410  version_type=sunos
     12411  need_lib_prefix=no
     12412  need_version=no
     12413  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
     12414    library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
     12415    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
     12416    dynamic_linker='NetBSD (a.out) ld.so'
     12417  else
     12418    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
     12419    soname_spec='$libname$release$shared_ext$major'
     12420    dynamic_linker='NetBSD ld.elf_so'
     12421  fi
     12422  shlibpath_var=LD_LIBRARY_PATH
     12423  shlibpath_overrides_runpath=yes
     12424  hardcode_into_libs=yes
     12425  ;;
     12426
     12427newsos6)
     12428  version_type=linux # correct to gnu/linux during the next big refactor
     12429  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
     12430  shlibpath_var=LD_LIBRARY_PATH
     12431  shlibpath_overrides_runpath=yes
     12432  ;;
     12433
     12434*nto* | *qnx*)
     12435  version_type=qnx
     12436  need_lib_prefix=no
     12437  need_version=no
     12438  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
     12439  soname_spec='$libname$release$shared_ext$major'
     12440  shlibpath_var=LD_LIBRARY_PATH
     12441  shlibpath_overrides_runpath=no
     12442  hardcode_into_libs=yes
     12443  dynamic_linker='ldqnx.so'
     12444  ;;
     12445
     12446openbsd* | bitrig*)
     12447  version_type=sunos
     12448  sys_lib_dlsearch_path_spec=/usr/lib
     12449  need_lib_prefix=no
     12450  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
     12451    need_version=no
     12452  else
     12453    need_version=yes
     12454  fi
     12455  library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
     12456  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
     12457  shlibpath_var=LD_LIBRARY_PATH
     12458  shlibpath_overrides_runpath=yes
     12459  ;;
     12460
     12461os2*)
     12462  libname_spec='$name'
     12463  version_type=windows
     12464  shrext_cmds=.dll
     12465  need_version=no
     12466  need_lib_prefix=no
     12467  # OS/2 can only load a DLL with a base name of 8 characters or less.
     12468  soname_spec='`test -n "$os2dllname" && libname="$os2dllname";
     12469    v=$($ECHO $release$versuffix | tr -d .-);
     12470    n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _);
     12471    $ECHO $n$v`$shared_ext'
     12472  library_names_spec='${libname}_dll.$libext'
     12473  dynamic_linker='OS/2 ld.exe'
     12474  shlibpath_var=BEGINLIBPATH
     12475  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
     12476  sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
     12477  postinstall_cmds='base_file=`basename \$file`~
     12478    dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~
     12479    dldir=$destdir/`dirname \$dlpath`~
     12480    test -d \$dldir || mkdir -p \$dldir~
     12481    $install_prog $dir/$dlname \$dldir/$dlname~
     12482    chmod a+x \$dldir/$dlname~
     12483    if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
     12484      eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
     12485    fi'
     12486  postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~
     12487    dlpath=$dir/\$dldll~
     12488    $RM \$dlpath'
     12489  ;;
     12490
     12491osf3* | osf4* | osf5*)
     12492  version_type=osf
     12493  need_lib_prefix=no
     12494  need_version=no
     12495  soname_spec='$libname$release$shared_ext$major'
     12496  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
     12497  shlibpath_var=LD_LIBRARY_PATH
     12498  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
     12499  sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
     12500  ;;
     12501
     12502rdos*)
     12503  dynamic_linker=no
     12504  ;;
     12505
     12506solaris*)
     12507  version_type=linux # correct to gnu/linux during the next big refactor
     12508  need_lib_prefix=no
     12509  need_version=no
     12510  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
     12511  soname_spec='$libname$release$shared_ext$major'
     12512  shlibpath_var=LD_LIBRARY_PATH
     12513  shlibpath_overrides_runpath=yes
     12514  hardcode_into_libs=yes
     12515  # ldd complains unless libraries are executable
     12516  postinstall_cmds='chmod +x $lib'
     12517  ;;
     12518
     12519sunos4*)
     12520  version_type=sunos
     12521  library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
     12522  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
     12523  shlibpath_var=LD_LIBRARY_PATH
     12524  shlibpath_overrides_runpath=yes
     12525  if test yes = "$with_gnu_ld"; then
     12526    need_lib_prefix=no
     12527  fi
     12528  need_version=yes
     12529  ;;
     12530
     12531sysv4 | sysv4.3*)
     12532  version_type=linux # correct to gnu/linux during the next big refactor
     12533  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
     12534  soname_spec='$libname$release$shared_ext$major'
     12535  shlibpath_var=LD_LIBRARY_PATH
     12536  case $host_vendor in
     12537    sni)
     12538      shlibpath_overrides_runpath=no
     12539      need_lib_prefix=no
     12540      runpath_var=LD_RUN_PATH
     12541      ;;
     12542    siemens)
     12543      need_lib_prefix=no
     12544      ;;
     12545    motorola)
     12546      need_lib_prefix=no
     12547      need_version=no
     12548      shlibpath_overrides_runpath=no
     12549      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
     12550      ;;
     12551  esac
     12552  ;;
     12553
     12554sysv4*MP*)
     12555  if test -d /usr/nec; then
     12556    version_type=linux # correct to gnu/linux during the next big refactor
     12557    library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext'
     12558    soname_spec='$libname$shared_ext.$major'
     12559    shlibpath_var=LD_LIBRARY_PATH
     12560  fi
     12561  ;;
     12562
     12563sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
     12564  version_type=sco
     12565  need_lib_prefix=no
     12566  need_version=no
     12567  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext'
     12568  soname_spec='$libname$release$shared_ext$major'
     12569  shlibpath_var=LD_LIBRARY_PATH
     12570  shlibpath_overrides_runpath=yes
     12571  hardcode_into_libs=yes
     12572  if test yes = "$with_gnu_ld"; then
     12573    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
     12574  else
     12575    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
     12576    case $host_os in
     12577      sco3.2v5*)
     12578        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
     12579        ;;
     12580    esac
     12581  fi
     12582  sys_lib_dlsearch_path_spec='/usr/lib'
     12583  ;;
     12584
     12585tpf*)
     12586  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
     12587  version_type=linux # correct to gnu/linux during the next big refactor
     12588  need_lib_prefix=no
     12589  need_version=no
     12590  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
     12591  shlibpath_var=LD_LIBRARY_PATH
     12592  shlibpath_overrides_runpath=no
     12593  hardcode_into_libs=yes
     12594  ;;
     12595
     12596uts4*)
     12597  version_type=linux # correct to gnu/linux during the next big refactor
     12598  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
     12599  soname_spec='$libname$release$shared_ext$major'
     12600  shlibpath_var=LD_LIBRARY_PATH
     12601  ;;
     12602
     12603*)
     12604  dynamic_linker=no
     12605  ;;
     12606esac
     12607{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
     12608$as_echo "$dynamic_linker" >&6; }
     12609test no = "$dynamic_linker" && can_build_shared=no
     12610
     12611variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
     12612if test yes = "$GCC"; then
     12613  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
     12614fi
     12615
     12616if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then
     12617  sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec
     12618fi
     12619
     12620if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then
     12621  sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec
     12622fi
     12623
     12624# remember unaugmented sys_lib_dlsearch_path content for libtool script decls...
     12625configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec
     12626
     12627# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code
     12628func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH"
     12629
     12630# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool
     12631configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH
     12632
     12633
     12634
     12635
     12636
     12637
     12638
     12639
     12640
     12641
     12642
     12643
     12644
     12645
     12646
     12647
     12648
     12649
     12650
     12651
     12652
     12653
     12654
     12655
     12656
     12657
     12658
     12659
     12660
     12661
     12662
     12663
     12664
     12665
     12666
     12667
     12668
     12669
     12670
     12671
     12672
     12673
     12674
     12675
     12676
     12677
     12678
     12679
     12680
     12681
     12682
     12683
     12684
     12685
     12686
     12687
     12688
     12689
     12690
     12691
     12692
     12693
     12694
     12695
     12696
     12697
     12698
     12699
     12700
     12701
     12702
     12703
     12704
     12705
     12706
     12707
     12708
     12709
     12710
     12711
     12712
     12713
     12714
     12715
     12716
     12717
     12718
     12719
     12720
     12721
     12722
     12723
     12724
     12725
     12726
     12727
     12728
     12729  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
     12730$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
     12731hardcode_action=
     12732if test -n "$hardcode_libdir_flag_spec" ||
     12733   test -n "$runpath_var" ||
     12734   test yes = "$hardcode_automatic"; then
     12735
     12736  # We can hardcode non-existent directories.
     12737  if test no != "$hardcode_direct" &&
     12738     # If the only mechanism to avoid hardcoding is shlibpath_var, we
     12739     # have to relink, otherwise we might link with an installed library
     12740     # when we should be linking with a yet-to-be-installed one
     12741     ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" &&
     12742     test no != "$hardcode_minus_L"; then
     12743    # Linking always hardcodes the temporary library directory.
     12744    hardcode_action=relink
     12745  else
     12746    # We can link without hardcoding, and we can hardcode nonexisting dirs.
     12747    hardcode_action=immediate
     12748  fi
     12749else
     12750  # We cannot hardcode anything, or else we can only hardcode existing
     12751  # directories.
     12752  hardcode_action=unsupported
     12753fi
     12754{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5
     12755$as_echo "$hardcode_action" >&6; }
     12756
     12757if test relink = "$hardcode_action" ||
     12758   test yes = "$inherit_rpath"; then
     12759  # Fast installation is not supported
     12760  enable_fast_install=no
     12761elif test yes = "$shlibpath_overrides_runpath" ||
     12762     test no = "$enable_shared"; then
     12763  # Fast installation is not necessary
     12764  enable_fast_install=needless
     12765fi
     12766
     12767
     12768
     12769
     12770
     12771
     12772  if test yes != "$enable_dlopen"; then
     12773  enable_dlopen=unknown
     12774  enable_dlopen_self=unknown
     12775  enable_dlopen_self_static=unknown
     12776else
     12777  lt_cv_dlopen=no
     12778  lt_cv_dlopen_libs=
     12779
     12780  case $host_os in
     12781  beos*)
     12782    lt_cv_dlopen=load_add_on
     12783    lt_cv_dlopen_libs=
     12784    lt_cv_dlopen_self=yes
     12785    ;;
     12786
     12787  mingw* | pw32* | cegcc*)
     12788    lt_cv_dlopen=LoadLibrary
     12789    lt_cv_dlopen_libs=
     12790    ;;
     12791
     12792  cygwin*)
     12793    lt_cv_dlopen=dlopen
     12794    lt_cv_dlopen_libs=
     12795    ;;
     12796
     12797  darwin*)
     12798    # if libdl is installed we need to link against it
     12799    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
     12800$as_echo_n "checking for dlopen in -ldl... " >&6; }
     12801if ${ac_cv_lib_dl_dlopen+:} false; then :
     12802  $as_echo_n "(cached) " >&6
     12803else
     12804  ac_check_lib_save_LIBS=$LIBS
     12805LIBS="-ldl  $LIBS"
     12806cat confdefs.h - <<_ACEOF >conftest.$ac_ext
     12807/* end confdefs.h.  */
     12808
     12809/* Override any GCC internal prototype to avoid an error.
     12810   Use char because int might match the return type of a GCC
     12811   builtin and then its argument prototype would still apply.  */
     12812#ifdef __cplusplus
     12813extern "C"
     12814#endif
     12815char dlopen ();
     12816int
     12817main ()
     12818{
     12819return dlopen ();
     12820  ;
     12821  return 0;
     12822}
     12823_ACEOF
     12824if ac_fn_c_try_link "$LINENO"; then :
     12825  ac_cv_lib_dl_dlopen=yes
     12826else
     12827  ac_cv_lib_dl_dlopen=no
     12828fi
     12829rm -f core conftest.err conftest.$ac_objext \
     12830    conftest$ac_exeext conftest.$ac_ext
     12831LIBS=$ac_check_lib_save_LIBS
     12832fi
     12833{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
     12834$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
     12835if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
     12836  lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl
     12837else
     12838
     12839    lt_cv_dlopen=dyld
     12840    lt_cv_dlopen_libs=
     12841    lt_cv_dlopen_self=yes
     12842
     12843fi
     12844
     12845    ;;
     12846
     12847  tpf*)
     12848    # Don't try to run any link tests for TPF.  We know it's impossible
     12849    # because TPF is a cross-compiler, and we know how we open DSOs.
     12850    lt_cv_dlopen=dlopen
     12851    lt_cv_dlopen_libs=
     12852    lt_cv_dlopen_self=no
     12853    ;;
     12854
     12855  *)
     12856    ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load"
     12857if test "x$ac_cv_func_shl_load" = xyes; then :
     12858  lt_cv_dlopen=shl_load
     12859else
     12860  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
     12861$as_echo_n "checking for shl_load in -ldld... " >&6; }
     12862if ${ac_cv_lib_dld_shl_load+:} false; then :
     12863  $as_echo_n "(cached) " >&6
     12864else
     12865  ac_check_lib_save_LIBS=$LIBS
     12866LIBS="-ldld  $LIBS"
     12867cat confdefs.h - <<_ACEOF >conftest.$ac_ext
     12868/* end confdefs.h.  */
     12869
     12870/* Override any GCC internal prototype to avoid an error.
     12871   Use char because int might match the return type of a GCC
     12872   builtin and then its argument prototype would still apply.  */
     12873#ifdef __cplusplus
     12874extern "C"
     12875#endif
     12876char shl_load ();
     12877int
     12878main ()
     12879{
     12880return shl_load ();
     12881  ;
     12882  return 0;
     12883}
     12884_ACEOF
     12885if ac_fn_c_try_link "$LINENO"; then :
     12886  ac_cv_lib_dld_shl_load=yes
     12887else
     12888  ac_cv_lib_dld_shl_load=no
     12889fi
     12890rm -f core conftest.err conftest.$ac_objext \
     12891    conftest$ac_exeext conftest.$ac_ext
     12892LIBS=$ac_check_lib_save_LIBS
     12893fi
     12894{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
     12895$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
     12896if test "x$ac_cv_lib_dld_shl_load" = xyes; then :
     12897  lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld
     12898else
     12899  ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
     12900if test "x$ac_cv_func_dlopen" = xyes; then :
     12901  lt_cv_dlopen=dlopen
     12902else
     12903  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
     12904$as_echo_n "checking for dlopen in -ldl... " >&6; }
     12905if ${ac_cv_lib_dl_dlopen+:} false; then :
     12906  $as_echo_n "(cached) " >&6
     12907else
     12908  ac_check_lib_save_LIBS=$LIBS
     12909LIBS="-ldl  $LIBS"
     12910cat confdefs.h - <<_ACEOF >conftest.$ac_ext
     12911/* end confdefs.h.  */
     12912
     12913/* Override any GCC internal prototype to avoid an error.
     12914   Use char because int might match the return type of a GCC
     12915   builtin and then its argument prototype would still apply.  */
     12916#ifdef __cplusplus
     12917extern "C"
     12918#endif
     12919char dlopen ();
     12920int
     12921main ()
     12922{
     12923return dlopen ();
     12924  ;
     12925  return 0;
     12926}
     12927_ACEOF
     12928if ac_fn_c_try_link "$LINENO"; then :
     12929  ac_cv_lib_dl_dlopen=yes
     12930else
     12931  ac_cv_lib_dl_dlopen=no
     12932fi
     12933rm -f core conftest.err conftest.$ac_objext \
     12934    conftest$ac_exeext conftest.$ac_ext
     12935LIBS=$ac_check_lib_save_LIBS
     12936fi
     12937{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
     12938$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
     12939if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
     12940  lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl
     12941else
     12942  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
     12943$as_echo_n "checking for dlopen in -lsvld... " >&6; }
     12944if ${ac_cv_lib_svld_dlopen+:} false; then :
     12945  $as_echo_n "(cached) " >&6
     12946else
     12947  ac_check_lib_save_LIBS=$LIBS
     12948LIBS="-lsvld  $LIBS"
     12949cat confdefs.h - <<_ACEOF >conftest.$ac_ext
     12950/* end confdefs.h.  */
     12951
     12952/* Override any GCC internal prototype to avoid an error.
     12953   Use char because int might match the return type of a GCC
     12954   builtin and then its argument prototype would still apply.  */
     12955#ifdef __cplusplus
     12956extern "C"
     12957#endif
     12958char dlopen ();
     12959int
     12960main ()
     12961{
     12962return dlopen ();
     12963  ;
     12964  return 0;
     12965}
     12966_ACEOF
     12967if ac_fn_c_try_link "$LINENO"; then :
     12968  ac_cv_lib_svld_dlopen=yes
     12969else
     12970  ac_cv_lib_svld_dlopen=no
     12971fi
     12972rm -f core conftest.err conftest.$ac_objext \
     12973    conftest$ac_exeext conftest.$ac_ext
     12974LIBS=$ac_check_lib_save_LIBS
     12975fi
     12976{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
     12977$as_echo "$ac_cv_lib_svld_dlopen" >&6; }
     12978if test "x$ac_cv_lib_svld_dlopen" = xyes; then :
     12979  lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld
     12980else
     12981  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
     12982$as_echo_n "checking for dld_link in -ldld... " >&6; }
     12983if ${ac_cv_lib_dld_dld_link+:} false; then :
     12984  $as_echo_n "(cached) " >&6
     12985else
     12986  ac_check_lib_save_LIBS=$LIBS
     12987LIBS="-ldld  $LIBS"
     12988cat confdefs.h - <<_ACEOF >conftest.$ac_ext
     12989/* end confdefs.h.  */
     12990
     12991/* Override any GCC internal prototype to avoid an error.
     12992   Use char because int might match the return type of a GCC
     12993   builtin and then its argument prototype would still apply.  */
     12994#ifdef __cplusplus
     12995extern "C"
     12996#endif
     12997char dld_link ();
     12998int
     12999main ()
     13000{
     13001return dld_link ();
     13002  ;
     13003  return 0;
     13004}
     13005_ACEOF
     13006if ac_fn_c_try_link "$LINENO"; then :
     13007  ac_cv_lib_dld_dld_link=yes
     13008else
     13009  ac_cv_lib_dld_dld_link=no
     13010fi
     13011rm -f core conftest.err conftest.$ac_objext \
     13012    conftest$ac_exeext conftest.$ac_ext
     13013LIBS=$ac_check_lib_save_LIBS
     13014fi
     13015{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
     13016$as_echo "$ac_cv_lib_dld_dld_link" >&6; }
     13017if test "x$ac_cv_lib_dld_dld_link" = xyes; then :
     13018  lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld
     13019fi
     13020
     13021
     13022fi
     13023
     13024
     13025fi
     13026
     13027
     13028fi
     13029
     13030
     13031fi
     13032
     13033
     13034fi
     13035
     13036    ;;
     13037  esac
     13038
     13039  if test no = "$lt_cv_dlopen"; then
     13040    enable_dlopen=no
     13041  else
     13042    enable_dlopen=yes
     13043  fi
     13044
     13045  case $lt_cv_dlopen in
     13046  dlopen)
     13047    save_CPPFLAGS=$CPPFLAGS
     13048    test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
     13049
     13050    save_LDFLAGS=$LDFLAGS
     13051    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
     13052
     13053    save_LIBS=$LIBS
     13054    LIBS="$lt_cv_dlopen_libs $LIBS"
     13055
     13056    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
     13057$as_echo_n "checking whether a program can dlopen itself... " >&6; }
     13058if ${lt_cv_dlopen_self+:} false; then :
     13059  $as_echo_n "(cached) " >&6
     13060else
     13061          if test yes = "$cross_compiling"; then :
     13062  lt_cv_dlopen_self=cross
     13063else
     13064  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
     13065  lt_status=$lt_dlunknown
     13066  cat > conftest.$ac_ext <<_LT_EOF
     13067#line $LINENO "configure"
     13068#include "confdefs.h"
     13069
     13070#if HAVE_DLFCN_H
     13071#include <dlfcn.h>
     13072#endif
     13073
     13074#include <stdio.h>
     13075
     13076#ifdef RTLD_GLOBAL
     13077#  define LT_DLGLOBAL           RTLD_GLOBAL
     13078#else
     13079#  ifdef DL_GLOBAL
     13080#    define LT_DLGLOBAL         DL_GLOBAL
     13081#  else
     13082#    define LT_DLGLOBAL         0
     13083#  endif
     13084#endif
     13085
     13086/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
     13087   find out it does not work in some platform. */
     13088#ifndef LT_DLLAZY_OR_NOW
     13089#  ifdef RTLD_LAZY
     13090#    define LT_DLLAZY_OR_NOW            RTLD_LAZY
     13091#  else
     13092#    ifdef DL_LAZY
     13093#      define LT_DLLAZY_OR_NOW          DL_LAZY
     13094#    else
     13095#      ifdef RTLD_NOW
     13096#        define LT_DLLAZY_OR_NOW        RTLD_NOW
     13097#      else
     13098#        ifdef DL_NOW
     13099#          define LT_DLLAZY_OR_NOW      DL_NOW
     13100#        else
     13101#          define LT_DLLAZY_OR_NOW      0
     13102#        endif
     13103#      endif
     13104#    endif
     13105#  endif
     13106#endif
     13107
     13108/* When -fvisibility=hidden is used, assume the code has been annotated
     13109   correspondingly for the symbols needed.  */
     13110#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
     13111int fnord () __attribute__((visibility("default")));
     13112#endif
     13113
     13114int fnord () { return 42; }
     13115int main ()
     13116{
     13117  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
     13118  int status = $lt_dlunknown;
     13119
     13120  if (self)
     13121    {
     13122      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
     13123      else
     13124        {
     13125          if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
     13126          else puts (dlerror ());
     13127        }
     13128      /* dlclose (self); */
     13129    }
     13130  else
     13131    puts (dlerror ());
     13132
     13133  return status;
     13134}
     13135_LT_EOF
     13136  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
     13137  (eval $ac_link) 2>&5
     13138  ac_status=$?
     13139  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
     13140  test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then
     13141    (./conftest; exit; ) >&5 2>/dev/null
     13142    lt_status=$?
     13143    case x$lt_status in
     13144      x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
     13145      x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
     13146      x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;;
     13147    esac
     13148  else :
     13149    # compilation failed
     13150    lt_cv_dlopen_self=no
     13151  fi
     13152fi
     13153rm -fr conftest*
     13154
     13155
     13156fi
     13157{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
     13158$as_echo "$lt_cv_dlopen_self" >&6; }
     13159
     13160    if test yes = "$lt_cv_dlopen_self"; then
     13161      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
     13162      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
     13163$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; }
     13164if ${lt_cv_dlopen_self_static+:} false; then :
     13165  $as_echo_n "(cached) " >&6
     13166else
     13167          if test yes = "$cross_compiling"; then :
     13168  lt_cv_dlopen_self_static=cross
     13169else
     13170  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
     13171  lt_status=$lt_dlunknown
     13172  cat > conftest.$ac_ext <<_LT_EOF
     13173#line $LINENO "configure"
     13174#include "confdefs.h"
     13175
     13176#if HAVE_DLFCN_H
     13177#include <dlfcn.h>
     13178#endif
     13179
     13180#include <stdio.h>
     13181
     13182#ifdef RTLD_GLOBAL
     13183#  define LT_DLGLOBAL           RTLD_GLOBAL
     13184#else
     13185#  ifdef DL_GLOBAL
     13186#    define LT_DLGLOBAL         DL_GLOBAL
     13187#  else
     13188#    define LT_DLGLOBAL         0
     13189#  endif
     13190#endif
     13191
     13192/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
     13193   find out it does not work in some platform. */
     13194#ifndef LT_DLLAZY_OR_NOW
     13195#  ifdef RTLD_LAZY
     13196#    define LT_DLLAZY_OR_NOW            RTLD_LAZY
     13197#  else
     13198#    ifdef DL_LAZY
     13199#      define LT_DLLAZY_OR_NOW          DL_LAZY
     13200#    else
     13201#      ifdef RTLD_NOW
     13202#        define LT_DLLAZY_OR_NOW        RTLD_NOW
     13203#      else
     13204#        ifdef DL_NOW
     13205#          define LT_DLLAZY_OR_NOW      DL_NOW
     13206#        else
     13207#          define LT_DLLAZY_OR_NOW      0
     13208#        endif
     13209#      endif
     13210#    endif
     13211#  endif
     13212#endif
     13213
     13214/* When -fvisibility=hidden is used, assume the code has been annotated
     13215   correspondingly for the symbols needed.  */
     13216#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
     13217int fnord () __attribute__((visibility("default")));
     13218#endif
     13219
     13220int fnord () { return 42; }
     13221int main ()
     13222{
     13223  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
     13224  int status = $lt_dlunknown;
     13225
     13226  if (self)
     13227    {
     13228      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
     13229      else
     13230        {
     13231          if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
     13232          else puts (dlerror ());
     13233        }
     13234      /* dlclose (self); */
     13235    }
     13236  else
     13237    puts (dlerror ());
     13238
     13239  return status;
     13240}
     13241_LT_EOF
     13242  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
     13243  (eval $ac_link) 2>&5
     13244  ac_status=$?
     13245  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
     13246  test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then
     13247    (./conftest; exit; ) >&5 2>/dev/null
     13248    lt_status=$?
     13249    case x$lt_status in
     13250      x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
     13251      x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
     13252      x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;;
     13253    esac
     13254  else :
     13255    # compilation failed
     13256    lt_cv_dlopen_self_static=no
     13257  fi
     13258fi
     13259rm -fr conftest*
     13260
     13261
     13262fi
     13263{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
     13264$as_echo "$lt_cv_dlopen_self_static" >&6; }
     13265    fi
     13266
     13267    CPPFLAGS=$save_CPPFLAGS
     13268    LDFLAGS=$save_LDFLAGS
     13269    LIBS=$save_LIBS
     13270    ;;
     13271  esac
     13272
     13273  case $lt_cv_dlopen_self in
     13274  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
     13275  *) enable_dlopen_self=unknown ;;
     13276  esac
     13277
     13278  case $lt_cv_dlopen_self_static in
     13279  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
     13280  *) enable_dlopen_self_static=unknown ;;
     13281  esac
     13282fi
     13283
     13284
     13285
     13286
     13287
     13288
     13289
     13290
     13291
     13292
     13293
     13294
     13295
     13296
     13297
     13298
     13299
     13300striplib=
     13301old_striplib=
     13302{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
     13303$as_echo_n "checking whether stripping libraries is possible... " >&6; }
     13304if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
     13305  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
     13306  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
     13307  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
     13308$as_echo "yes" >&6; }
     13309else
     13310# FIXME - insert some real tests, host_os isn't really good enough
     13311  case $host_os in
     13312  darwin*)
     13313    if test -n "$STRIP"; then
     13314      striplib="$STRIP -x"
     13315      old_striplib="$STRIP -S"
     13316      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
     13317$as_echo "yes" >&6; }
     13318    else
     13319      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
     13320$as_echo "no" >&6; }
     13321    fi
     13322    ;;
     13323  *)
     13324    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
     13325$as_echo "no" >&6; }
     13326    ;;
     13327  esac
     13328fi
     13329
     13330
     13331
     13332
     13333
     13334
     13335
     13336
     13337
     13338
     13339
     13340
     13341  # Report what library types will actually be built
     13342  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
     13343$as_echo_n "checking if libtool supports shared libraries... " >&6; }
     13344  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
     13345$as_echo "$can_build_shared" >&6; }
     13346
     13347  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
     13348$as_echo_n "checking whether to build shared libraries... " >&6; }
     13349  test no = "$can_build_shared" && enable_shared=no
     13350
     13351  # On AIX, shared libraries and static libraries use the same namespace, and
     13352  # are all built from PIC.
     13353  case $host_os in
     13354  aix3*)
     13355    test yes = "$enable_shared" && enable_static=no
     13356    if test -n "$RANLIB"; then
     13357      archive_cmds="$archive_cmds~\$RANLIB \$lib"
     13358      postinstall_cmds='$RANLIB $lib'
     13359    fi
     13360    ;;
     13361
     13362  aix[4-9]*)
     13363    if test ia64 != "$host_cpu"; then
     13364      case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in
     13365      yes,aix,yes) ;;                   # shared object as lib.so file only
     13366      yes,svr4,*) ;;                    # shared object as lib.so archive member only
     13367      yes,*) enable_static=no ;;        # shared object in lib.a archive as well
     13368      esac
     13369    fi
     13370    ;;
     13371  esac
     13372  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
     13373$as_echo "$enable_shared" >&6; }
     13374
     13375  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
     13376$as_echo_n "checking whether to build static libraries... " >&6; }
     13377  # Make sure either enable_shared or enable_static is yes.
     13378  test yes = "$enable_shared" || enable_static=yes
     13379  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
     13380$as_echo "$enable_static" >&6; }
     13381
     13382
     13383
     13384
     13385fi
     13386ac_ext=c
     13387ac_cpp='$CPP $CPPFLAGS'
     13388ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
     13389ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
     13390ac_compiler_gnu=$ac_cv_c_compiler_gnu
     13391
     13392CC=$lt_save_CC
     13393
     13394      if test -n "$CXX" && ( test no != "$CXX" &&
     13395    ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) ||
     13396    (test g++ != "$CXX"))); then
     13397  ac_ext=cpp
     13398ac_cpp='$CXXCPP $CPPFLAGS'
     13399ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
     13400ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
     13401ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
     13402{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5
     13403$as_echo_n "checking how to run the C++ preprocessor... " >&6; }
     13404if test -z "$CXXCPP"; then
     13405  if ${ac_cv_prog_CXXCPP+:} false; then :
     13406  $as_echo_n "(cached) " >&6
     13407else
     13408      # Double quotes because CXXCPP needs to be expanded
     13409    for CXXCPP in "$CXX -E" "/lib/cpp"
     13410    do
     13411      ac_preproc_ok=false
     13412for ac_cxx_preproc_warn_flag in '' yes
     13413do
     13414  # Use a header file that comes with gcc, so configuring glibc
     13415  # with a fresh cross-compiler works.
     13416  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
     13417  # <limits.h> exists even on freestanding compilers.
     13418  # On the NeXT, cc -E runs the code through the compiler's parser,
     13419  # not just through cpp. "Syntax error" is here to catch this case.
     13420  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
     13421/* end confdefs.h.  */
     13422#ifdef __STDC__
     13423# include <limits.h>
     13424#else
     13425# include <assert.h>
     13426#endif
     13427                     Syntax error
     13428_ACEOF
     13429if ac_fn_cxx_try_cpp "$LINENO"; then :
     13430
     13431else
     13432  # Broken: fails on valid input.
     13433continue
     13434fi
     13435rm -f conftest.err conftest.i conftest.$ac_ext
     13436
     13437  # OK, works on sane cases.  Now check whether nonexistent headers
     13438  # can be detected and how.
     13439  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
     13440/* end confdefs.h.  */
     13441#include <ac_nonexistent.h>
     13442_ACEOF
     13443if ac_fn_cxx_try_cpp "$LINENO"; then :
     13444  # Broken: success on invalid input.
     13445continue
     13446else
     13447  # Passes both tests.
     13448ac_preproc_ok=:
     13449break
     13450fi
     13451rm -f conftest.err conftest.i conftest.$ac_ext
     13452
     13453done
     13454# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
     13455rm -f conftest.i conftest.err conftest.$ac_ext
     13456if $ac_preproc_ok; then :
     13457  break
     13458fi
     13459
     13460    done
     13461    ac_cv_prog_CXXCPP=$CXXCPP
     13462
     13463fi
     13464  CXXCPP=$ac_cv_prog_CXXCPP
     13465else
     13466  ac_cv_prog_CXXCPP=$CXXCPP
     13467fi
     13468{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5
     13469$as_echo "$CXXCPP" >&6; }
     13470ac_preproc_ok=false
     13471for ac_cxx_preproc_warn_flag in '' yes
     13472do
     13473  # Use a header file that comes with gcc, so configuring glibc
     13474  # with a fresh cross-compiler works.
     13475  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
     13476  # <limits.h> exists even on freestanding compilers.
     13477  # On the NeXT, cc -E runs the code through the compiler's parser,
     13478  # not just through cpp. "Syntax error" is here to catch this case.
     13479  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
     13480/* end confdefs.h.  */
     13481#ifdef __STDC__
     13482# include <limits.h>
     13483#else
     13484# include <assert.h>
     13485#endif
     13486                     Syntax error
     13487_ACEOF
     13488if ac_fn_cxx_try_cpp "$LINENO"; then :
     13489
     13490else
     13491  # Broken: fails on valid input.
     13492continue
     13493fi
     13494rm -f conftest.err conftest.i conftest.$ac_ext
     13495
     13496  # OK, works on sane cases.  Now check whether nonexistent headers
     13497  # can be detected and how.
     13498  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
     13499/* end confdefs.h.  */
     13500#include <ac_nonexistent.h>
     13501_ACEOF
     13502if ac_fn_cxx_try_cpp "$LINENO"; then :
     13503  # Broken: success on invalid input.
     13504continue
     13505else
     13506  # Passes both tests.
     13507ac_preproc_ok=:
     13508break
     13509fi
     13510rm -f conftest.err conftest.i conftest.$ac_ext
     13511
     13512done
     13513# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
     13514rm -f conftest.i conftest.err conftest.$ac_ext
     13515if $ac_preproc_ok; then :
     13516
     13517else
     13518  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
     13519$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
     13520as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check
     13521See \`config.log' for more details" "$LINENO" 5; }
     13522fi
     13523
     13524ac_ext=c
     13525ac_cpp='$CPP $CPPFLAGS'
     13526ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
     13527ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
     13528ac_compiler_gnu=$ac_cv_c_compiler_gnu
     13529
     13530else
     13531  _lt_caught_CXX_error=yes
     13532fi
     13533
     13534ac_ext=cpp
     13535ac_cpp='$CXXCPP $CPPFLAGS'
     13536ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
     13537ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
     13538ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
     13539
     13540archive_cmds_need_lc_CXX=no
     13541allow_undefined_flag_CXX=
     13542always_export_symbols_CXX=no
     13543archive_expsym_cmds_CXX=
     13544compiler_needs_object_CXX=no
     13545export_dynamic_flag_spec_CXX=
     13546hardcode_direct_CXX=no
     13547hardcode_direct_absolute_CXX=no
     13548hardcode_libdir_flag_spec_CXX=
     13549hardcode_libdir_separator_CXX=
     13550hardcode_minus_L_CXX=no
     13551hardcode_shlibpath_var_CXX=unsupported
     13552hardcode_automatic_CXX=no
     13553inherit_rpath_CXX=no
     13554module_cmds_CXX=
     13555module_expsym_cmds_CXX=
     13556link_all_deplibs_CXX=unknown
     13557old_archive_cmds_CXX=$old_archive_cmds
     13558reload_flag_CXX=$reload_flag
     13559reload_cmds_CXX=$reload_cmds
     13560no_undefined_flag_CXX=
     13561whole_archive_flag_spec_CXX=
     13562enable_shared_with_static_runtimes_CXX=no
     13563
     13564# Source file extension for C++ test sources.
     13565ac_ext=cpp
     13566
     13567# Object file extension for compiled C++ test sources.
     13568objext=o
     13569objext_CXX=$objext
     13570
     13571# No sense in running all these tests if we already determined that
     13572# the CXX compiler isn't working.  Some variables (like enable_shared)
     13573# are currently assumed to apply to all compilers on this platform,
     13574# and will be corrupted by setting them based on a non-working compiler.
     13575if test yes != "$_lt_caught_CXX_error"; then
     13576  # Code to be used in simple compile tests
     13577  lt_simple_compile_test_code="int some_variable = 0;"
     13578
     13579  # Code to be used in simple link tests
     13580  lt_simple_link_test_code='int main(int, char *[]) { return(0); }'
     13581
     13582  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
     13583
     13584
     13585
     13586
     13587
     13588
     13589# If no C compiler was specified, use CC.
     13590LTCC=${LTCC-"$CC"}
     13591
     13592# If no C compiler flags were specified, use CFLAGS.
     13593LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
     13594
     13595# Allow CC to be a program name with arguments.
     13596compiler=$CC
     13597
     13598
     13599  # save warnings/boilerplate of simple test code
     13600  ac_outfile=conftest.$ac_objext
     13601echo "$lt_simple_compile_test_code" >conftest.$ac_ext
     13602eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
     13603_lt_compiler_boilerplate=`cat conftest.err`
     13604$RM conftest*
     13605
     13606  ac_outfile=conftest.$ac_objext
     13607echo "$lt_simple_link_test_code" >conftest.$ac_ext
     13608eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
     13609_lt_linker_boilerplate=`cat conftest.err`
     13610$RM -r conftest*
     13611
     13612
     13613  # Allow CC to be a program name with arguments.
     13614  lt_save_CC=$CC
     13615  lt_save_CFLAGS=$CFLAGS
     13616  lt_save_LD=$LD
     13617  lt_save_GCC=$GCC
     13618  GCC=$GXX
     13619  lt_save_with_gnu_ld=$with_gnu_ld
     13620  lt_save_path_LD=$lt_cv_path_LD
     13621  if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
     13622    lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
     13623  else
     13624    $as_unset lt_cv_prog_gnu_ld
     13625  fi
     13626  if test -n "${lt_cv_path_LDCXX+set}"; then
     13627    lt_cv_path_LD=$lt_cv_path_LDCXX
     13628  else
     13629    $as_unset lt_cv_path_LD
     13630  fi
     13631  test -z "${LDCXX+set}" || LD=$LDCXX
     13632  CC=${CXX-"c++"}
     13633  CFLAGS=$CXXFLAGS
     13634  compiler=$CC
     13635  compiler_CXX=$CC
     13636  func_cc_basename $compiler
     13637cc_basename=$func_cc_basename_result
     13638
     13639
     13640  if test -n "$compiler"; then
     13641    # We don't want -fno-exception when compiling C++ code, so set the
     13642    # no_builtin_flag separately
     13643    if test yes = "$GXX"; then
     13644      lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin'
     13645    else
     13646      lt_prog_compiler_no_builtin_flag_CXX=
     13647    fi
     13648
     13649    if test yes = "$GXX"; then
     13650      # Set up default GNU C++ configuration
     13651
     13652
     13653
     13654# Check whether --with-gnu-ld was given.
     13655if test "${with_gnu_ld+set}" = set; then :
     13656  withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes
     13657else
     13658  with_gnu_ld=no
     13659fi
     13660
     13661ac_prog=ld
     13662if test yes = "$GCC"; then
     13663  # Check if gcc -print-prog-name=ld gives a path.
     13664  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
     13665$as_echo_n "checking for ld used by $CC... " >&6; }
     13666  case $host in
     13667  *-*-mingw*)
     13668    # gcc leaves a trailing carriage return, which upsets mingw
     13669    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
     13670  *)
     13671    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
     13672  esac
     13673  case $ac_prog in
     13674    # Accept absolute paths.
     13675    [\\/]* | ?:[\\/]*)
     13676      re_direlt='/[^/][^/]*/\.\./'
     13677      # Canonicalize the pathname of ld
     13678      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
     13679      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
     13680        ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
     13681      done
     13682      test -z "$LD" && LD=$ac_prog
     13683      ;;
     13684  "")
     13685    # If it fails, then pretend we aren't using GCC.
     13686    ac_prog=ld
     13687    ;;
     13688  *)
     13689    # If it is relative, then search for the first ld in PATH.
     13690    with_gnu_ld=unknown
     13691    ;;
     13692  esac
     13693elif test yes = "$with_gnu_ld"; then
     13694  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
     13695$as_echo_n "checking for GNU ld... " >&6; }
     13696else
     13697  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
     13698$as_echo_n "checking for non-GNU ld... " >&6; }
     13699fi
     13700if ${lt_cv_path_LD+:} false; then :
     13701  $as_echo_n "(cached) " >&6
     13702else
     13703  if test -z "$LD"; then
     13704  lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
     13705  for ac_dir in $PATH; do
     13706    IFS=$lt_save_ifs
     13707    test -z "$ac_dir" && ac_dir=.
     13708    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
     13709      lt_cv_path_LD=$ac_dir/$ac_prog
     13710      # Check to see if the program is GNU ld.  I'd rather use --version,
     13711      # but apparently some variants of GNU ld only accept -v.
     13712      # Break only if it was the GNU/non-GNU ld that we prefer.
     13713      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
     13714      *GNU* | *'with BFD'*)
     13715        test no != "$with_gnu_ld" && break
     13716        ;;
     13717      *)
     13718        test yes != "$with_gnu_ld" && break
     13719        ;;
     13720      esac
     13721    fi
     13722  done
     13723  IFS=$lt_save_ifs
     13724else
     13725  lt_cv_path_LD=$LD # Let the user override the test with a path.
     13726fi
     13727fi
     13728
     13729LD=$lt_cv_path_LD
     13730if test -n "$LD"; then
     13731  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
     13732$as_echo "$LD" >&6; }
     13733else
     13734  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
     13735$as_echo "no" >&6; }
     13736fi
     13737test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
     13738{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
     13739$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
     13740if ${lt_cv_prog_gnu_ld+:} false; then :
     13741  $as_echo_n "(cached) " >&6
     13742else
     13743  # I'd rather use --version here, but apparently some GNU lds only accept -v.
     13744case `$LD -v 2>&1 </dev/null` in
     13745*GNU* | *'with BFD'*)
     13746  lt_cv_prog_gnu_ld=yes
     13747  ;;
     13748*)
     13749  lt_cv_prog_gnu_ld=no
     13750  ;;
     13751esac
     13752fi
     13753{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
     13754$as_echo "$lt_cv_prog_gnu_ld" >&6; }
     13755with_gnu_ld=$lt_cv_prog_gnu_ld
     13756
     13757
     13758
     13759
     13760
     13761
     13762
     13763      # Check if GNU C++ uses GNU ld as the underlying linker, since the
     13764      # archiving commands below assume that GNU ld is being used.
     13765      if test yes = "$with_gnu_ld"; then
     13766        archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
     13767        archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
     13768
     13769        hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir'
     13770        export_dynamic_flag_spec_CXX='$wl--export-dynamic'
     13771
     13772        # If archive_cmds runs LD, not CC, wlarc should be empty
     13773        # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
     13774        #     investigate it a little bit more. (MM)
     13775        wlarc='$wl'
     13776
     13777        # ancient GNU ld didn't support --whole-archive et. al.
     13778        if eval "`$CC -print-prog-name=ld` --help 2>&1" |
     13779          $GREP 'no-whole-archive' > /dev/null; then
     13780          whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
     13781        else
     13782          whole_archive_flag_spec_CXX=
     13783        fi
     13784      else
     13785        with_gnu_ld=no
     13786        wlarc=
     13787
     13788        # A generic and very simple default shared library creation
     13789        # command for GNU C++ for the case where it uses the native
     13790        # linker, instead of GNU ld.  If possible, this setting should
     13791        # overridden to take advantage of the native linker features on
     13792        # the platform it is being used on.
     13793        archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
     13794      fi
     13795
     13796      # Commands to make compiler produce verbose output that lists
     13797      # what "hidden" libraries, object files and flags are used when
     13798      # linking a shared library.
     13799      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
     13800
     13801    else
     13802      GXX=no
     13803      with_gnu_ld=no
     13804      wlarc=
     13805    fi
     13806
     13807    # PORTME: fill in a description of your system's C++ link characteristics
     13808    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
     13809$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
     13810    ld_shlibs_CXX=yes
     13811    case $host_os in
     13812      aix3*)
     13813        # FIXME: insert proper C++ library support
     13814        ld_shlibs_CXX=no
     13815        ;;
     13816      aix[4-9]*)
     13817        if test ia64 = "$host_cpu"; then
     13818          # On IA64, the linker does run time linking by default, so we don't
     13819          # have to do anything special.
     13820          aix_use_runtimelinking=no
     13821          exp_sym_flag='-Bexport'
     13822          no_entry_flag=
     13823        else
     13824          aix_use_runtimelinking=no
     13825
     13826          # Test if we are trying to use run time linking or normal
     13827          # AIX style linking. If -brtl is somewhere in LDFLAGS, we
     13828          # have runtime linking enabled, and use it for executables.
     13829          # For shared libraries, we enable/disable runtime linking
     13830          # depending on the kind of the shared library created -
     13831          # when "with_aix_soname,aix_use_runtimelinking" is:
     13832          # "aix,no"   lib.a(lib.so.V) shared, rtl:no,  for executables
     13833          # "aix,yes"  lib.so          shared, rtl:yes, for executables
     13834          #            lib.a           static archive
     13835          # "both,no"  lib.so.V(shr.o) shared, rtl:yes
     13836          #            lib.a(lib.so.V) shared, rtl:no,  for executables
     13837          # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables
     13838          #            lib.a(lib.so.V) shared, rtl:no
     13839          # "svr4,*"   lib.so.V(shr.o) shared, rtl:yes, for executables
     13840          #            lib.a           static archive
     13841          case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
     13842            for ld_flag in $LDFLAGS; do
     13843              case $ld_flag in
     13844              *-brtl*)
     13845                aix_use_runtimelinking=yes
     13846                break
     13847                ;;
     13848              esac
     13849            done
     13850            if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then
     13851              # With aix-soname=svr4, we create the lib.so.V shared archives only,
     13852              # so we don't have lib.a shared libs to link our executables.
     13853              # We have to force runtime linking in this case.
     13854              aix_use_runtimelinking=yes
     13855              LDFLAGS="$LDFLAGS -Wl,-brtl"
     13856            fi
     13857            ;;
     13858          esac
     13859
     13860          exp_sym_flag='-bexport'
     13861          no_entry_flag='-bnoentry'
     13862        fi
     13863
     13864        # When large executables or shared objects are built, AIX ld can
     13865        # have problems creating the table of contents.  If linking a library
     13866        # or program results in "error TOC overflow" add -mminimal-toc to
     13867        # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
     13868        # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
     13869
     13870        archive_cmds_CXX=''
     13871        hardcode_direct_CXX=yes
     13872        hardcode_direct_absolute_CXX=yes
     13873        hardcode_libdir_separator_CXX=':'
     13874        link_all_deplibs_CXX=yes
     13875        file_list_spec_CXX='$wl-f,'
     13876        case $with_aix_soname,$aix_use_runtimelinking in
     13877        aix,*) ;;       # no import file
     13878        svr4,* | *,yes) # use import file
     13879          # The Import File defines what to hardcode.
     13880          hardcode_direct_CXX=no
     13881          hardcode_direct_absolute_CXX=no
     13882          ;;
     13883        esac
     13884
     13885        if test yes = "$GXX"; then
     13886          case $host_os in aix4.[012]|aix4.[012].*)
     13887          # We only want to do this on AIX 4.2 and lower, the check
     13888          # below for broken collect2 doesn't work under 4.3+
     13889          collect2name=`$CC -print-prog-name=collect2`
     13890          if test -f "$collect2name" &&
     13891             strings "$collect2name" | $GREP resolve_lib_name >/dev/null
     13892          then
     13893            # We have reworked collect2
     13894            :
     13895          else
     13896            # We have old collect2
     13897            hardcode_direct_CXX=unsupported
     13898            # It fails to find uninstalled libraries when the uninstalled
     13899            # path is not listed in the libpath.  Setting hardcode_minus_L
     13900            # to unsupported forces relinking
     13901            hardcode_minus_L_CXX=yes
     13902            hardcode_libdir_flag_spec_CXX='-L$libdir'
     13903            hardcode_libdir_separator_CXX=
     13904          fi
     13905          esac
     13906          shared_flag='-shared'
     13907          if test yes = "$aix_use_runtimelinking"; then
     13908            shared_flag=$shared_flag' $wl-G'
     13909          fi
     13910          # Need to ensure runtime linking is disabled for the traditional
     13911          # shared library, or the linker may eventually find shared libraries
     13912          # /with/ Import File - we do not want to mix them.
     13913          shared_flag_aix='-shared'
     13914          shared_flag_svr4='-shared $wl-G'
     13915        else
     13916          # not using gcc
     13917          if test ia64 = "$host_cpu"; then
     13918          # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
     13919          # chokes on -Wl,-G. The following line is correct:
     13920          shared_flag='-G'
     13921          else
     13922            if test yes = "$aix_use_runtimelinking"; then
     13923              shared_flag='$wl-G'
     13924            else
     13925              shared_flag='$wl-bM:SRE'
     13926            fi
     13927            shared_flag_aix='$wl-bM:SRE'
     13928            shared_flag_svr4='$wl-G'
     13929          fi
     13930        fi
     13931
     13932        export_dynamic_flag_spec_CXX='$wl-bexpall'
     13933        # It seems that -bexpall does not export symbols beginning with
     13934        # underscore (_), so it is better to generate a list of symbols to
     13935        # export.
     13936        always_export_symbols_CXX=yes
     13937        if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then
     13938          # Warning - without using the other runtime loading flags (-brtl),
     13939          # -berok will link without error, but may produce a broken library.
     13940          # The "-G" linker flag allows undefined symbols.
     13941          no_undefined_flag_CXX='-bernotok'
     13942          # Determine the default libpath from the value encoded in an empty
     13943          # executable.
     13944          if test set = "${lt_cv_aix_libpath+set}"; then
     13945  aix_libpath=$lt_cv_aix_libpath
     13946else
     13947  if ${lt_cv_aix_libpath__CXX+:} false; then :
     13948  $as_echo_n "(cached) " >&6
     13949else
     13950  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
     13951/* end confdefs.h.  */
     13952
     13953int
     13954main ()
     13955{
     13956
     13957  ;
     13958  return 0;
     13959}
     13960_ACEOF
     13961if ac_fn_cxx_try_link "$LINENO"; then :
     13962
     13963  lt_aix_libpath_sed='
     13964      /Import File Strings/,/^$/ {
     13965          /^0/ {
     13966              s/^0  *\([^ ]*\) *$/\1/
     13967              p
     13968          }
     13969      }'
     13970  lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
     13971  # Check for a 64-bit object if we didn't find anything.
     13972  if test -z "$lt_cv_aix_libpath__CXX"; then
     13973    lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
     13974  fi
     13975fi
     13976rm -f core conftest.err conftest.$ac_objext \
     13977    conftest$ac_exeext conftest.$ac_ext
     13978  if test -z "$lt_cv_aix_libpath__CXX"; then
     13979    lt_cv_aix_libpath__CXX=/usr/lib:/lib
     13980  fi
     13981
     13982fi
     13983
     13984  aix_libpath=$lt_cv_aix_libpath__CXX
     13985fi
     13986
     13987          hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath"
     13988
     13989          archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag
     13990        else
     13991          if test ia64 = "$host_cpu"; then
     13992            hardcode_libdir_flag_spec_CXX='$wl-R $libdir:/usr/lib:/lib'
     13993            allow_undefined_flag_CXX="-z nodefs"
     13994            archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols"
     13995          else
     13996            # Determine the default libpath from the value encoded in an
     13997            # empty executable.
     13998            if test set = "${lt_cv_aix_libpath+set}"; then
     13999  aix_libpath=$lt_cv_aix_libpath
     14000else
     14001  if ${lt_cv_aix_libpath__CXX+:} false; then :
     14002  $as_echo_n "(cached) " >&6
     14003else
     14004  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
     14005/* end confdefs.h.  */
     14006
     14007int
     14008main ()
     14009{
     14010
     14011  ;
     14012  return 0;
     14013}
     14014_ACEOF
     14015if ac_fn_cxx_try_link "$LINENO"; then :
     14016
     14017  lt_aix_libpath_sed='
     14018      /Import File Strings/,/^$/ {
     14019          /^0/ {
     14020              s/^0  *\([^ ]*\) *$/\1/
     14021              p
     14022          }
     14023      }'
     14024  lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
     14025  # Check for a 64-bit object if we didn't find anything.
     14026  if test -z "$lt_cv_aix_libpath__CXX"; then
     14027    lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
     14028  fi
     14029fi
     14030rm -f core conftest.err conftest.$ac_objext \
     14031    conftest$ac_exeext conftest.$ac_ext
     14032  if test -z "$lt_cv_aix_libpath__CXX"; then
     14033    lt_cv_aix_libpath__CXX=/usr/lib:/lib
     14034  fi
     14035
     14036fi
     14037
     14038  aix_libpath=$lt_cv_aix_libpath__CXX
     14039fi
     14040
     14041            hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath"
     14042            # Warning - without using the other run time loading flags,
     14043            # -berok will link without error, but may produce a broken library.
     14044            no_undefined_flag_CXX=' $wl-bernotok'
     14045            allow_undefined_flag_CXX=' $wl-berok'
     14046            if test yes = "$with_gnu_ld"; then
     14047              # We only use this code for GNU lds that support --whole-archive.
     14048              whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive'
     14049            else
     14050              # Exported symbols can be pulled into shared objects from archives
     14051              whole_archive_flag_spec_CXX='$convenience'
     14052            fi
     14053            archive_cmds_need_lc_CXX=yes
     14054            archive_expsym_cmds_CXX='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d'
     14055            # -brtl affects multiple linker settings, -berok does not and is overridden later
     14056            compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`'
     14057            if test svr4 != "$with_aix_soname"; then
     14058              # This is similar to how AIX traditionally builds its shared
     14059              # libraries. Need -bnortl late, we may have -brtl in LDFLAGS.
     14060              archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname'
     14061            fi
     14062            if test aix != "$with_aix_soname"; then
     14063              archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp'
     14064            else
     14065              # used by -dlpreopen to get the symbols
     14066              archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$MV  $output_objdir/$realname.d/$soname $output_objdir'
     14067            fi
     14068            archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$RM -r $output_objdir/$realname.d'
     14069          fi
     14070        fi
     14071        ;;
     14072
     14073      beos*)
     14074        if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
     14075          allow_undefined_flag_CXX=unsupported
     14076          # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
     14077          # support --undefined.  This deserves some investigation.  FIXME
     14078          archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
     14079        else
     14080          ld_shlibs_CXX=no
     14081        fi
     14082        ;;
     14083
     14084      chorus*)
     14085        case $cc_basename in
     14086          *)
     14087          # FIXME: insert proper C++ library support
     14088          ld_shlibs_CXX=no
     14089          ;;
     14090        esac
     14091        ;;
     14092
     14093      cygwin* | mingw* | pw32* | cegcc*)
     14094        case $GXX,$cc_basename in
     14095        ,cl* | no,cl*)
     14096          # Native MSVC
     14097          # hardcode_libdir_flag_spec is actually meaningless, as there is
     14098          # no search path for DLLs.
     14099          hardcode_libdir_flag_spec_CXX=' '
     14100          allow_undefined_flag_CXX=unsupported
     14101          always_export_symbols_CXX=yes
     14102          file_list_spec_CXX='@'
     14103          # Tell ltmain to make .lib files, not .a files.
     14104          libext=lib
     14105          # Tell ltmain to make .dll files, not .so files.
     14106          shrext_cmds=.dll
     14107          # FIXME: Setting linknames here is a bad hack.
     14108          archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames='
     14109          archive_expsym_cmds_CXX='if   test DEF = "`$SED -n     -e '\''s/^[     ]*//'\''     -e '\''/^\(;.*\)*$/d'\''     -e '\''s/^\(EXPORTS\|LIBRARY\)\([     ].*\)*$/DEF/p'\''     -e q     $export_symbols`" ; then
     14110              cp "$export_symbols" "$output_objdir/$soname.def";
     14111              echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp";
     14112            else
     14113              $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp;
     14114            fi~
     14115            $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
     14116            linknames='
     14117          # The linker will not automatically build a static lib if we build a DLL.
     14118          # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true'
     14119          enable_shared_with_static_runtimes_CXX=yes
     14120          # Don't use ranlib
     14121          old_postinstall_cmds_CXX='chmod 644 $oldlib'
     14122          postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~
     14123            lt_tool_outputfile="@TOOL_OUTPUT@"~
     14124            case $lt_outputfile in
     14125              *.exe|*.EXE) ;;
     14126              *)
     14127                lt_outputfile=$lt_outputfile.exe
     14128                lt_tool_outputfile=$lt_tool_outputfile.exe
     14129                ;;
     14130            esac~
     14131            func_to_tool_file "$lt_outputfile"~
     14132            if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then
     14133              $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
     14134              $RM "$lt_outputfile.manifest";
     14135            fi'
     14136          ;;
     14137        *)
     14138          # g++
     14139          # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless,
     14140          # as there is no search path for DLLs.
     14141          hardcode_libdir_flag_spec_CXX='-L$libdir'
     14142          export_dynamic_flag_spec_CXX='$wl--export-all-symbols'
     14143          allow_undefined_flag_CXX=unsupported
     14144          always_export_symbols_CXX=no
     14145          enable_shared_with_static_runtimes_CXX=yes
     14146
     14147          if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
     14148            archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
     14149            # If the export-symbols file already is a .def file, use it as
     14150            # is; otherwise, prepend EXPORTS...
     14151            archive_expsym_cmds_CXX='if   test DEF = "`$SED -n     -e '\''s/^[   ]*//'\''     -e '\''/^\(;.*\)*$/d'\''     -e '\''s/^\(EXPORTS\|LIBRARY\)\([     ].*\)*$/DEF/p'\''     -e q     $export_symbols`" ; then
     14152              cp $export_symbols $output_objdir/$soname.def;
     14153            else
     14154              echo EXPORTS > $output_objdir/$soname.def;
     14155              cat $export_symbols >> $output_objdir/$soname.def;
     14156            fi~
     14157            $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
     14158          else
     14159            ld_shlibs_CXX=no
     14160          fi
     14161          ;;
     14162        esac
     14163        ;;
     14164      darwin* | rhapsody*)
     14165
     14166
     14167  archive_cmds_need_lc_CXX=no
     14168  hardcode_direct_CXX=no
     14169  hardcode_automatic_CXX=yes
     14170  hardcode_shlibpath_var_CXX=unsupported
     14171  if test yes = "$lt_cv_ld_force_load"; then
     14172    whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
     14173
     14174  else
     14175    whole_archive_flag_spec_CXX=''
     14176  fi
     14177  link_all_deplibs_CXX=yes
     14178  allow_undefined_flag_CXX=$_lt_dar_allow_undefined
     14179  case $cc_basename in
     14180     ifort*|nagfor*) _lt_dar_can_shared=yes ;;
     14181     *) _lt_dar_can_shared=$GCC ;;
     14182  esac
     14183  if test yes = "$_lt_dar_can_shared"; then
     14184    output_verbose_link_cmd=func_echo_all
     14185    archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil"
     14186    module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil"
     14187    archive_expsym_cmds_CXX="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil"
     14188    module_expsym_cmds_CXX="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil"
     14189       if test yes != "$lt_cv_apple_cc_single_mod"; then
     14190      archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil"
     14191      archive_expsym_cmds_CXX="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil"
     14192    fi
     14193
     14194  else
     14195  ld_shlibs_CXX=no
     14196  fi
     14197
     14198        ;;
     14199
     14200      os2*)
     14201        hardcode_libdir_flag_spec_CXX='-L$libdir'
     14202        hardcode_minus_L_CXX=yes
     14203        allow_undefined_flag_CXX=unsupported
     14204        shrext_cmds=.dll
     14205        archive_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
     14206          $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
     14207          $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
     14208          $ECHO EXPORTS >> $output_objdir/$libname.def~
     14209          emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~
     14210          $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
     14211          emximp -o $lib $output_objdir/$libname.def'
     14212        archive_expsym_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
     14213          $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
     14214          $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
     14215          $ECHO EXPORTS >> $output_objdir/$libname.def~
     14216          prefix_cmds="$SED"~
     14217          if test EXPORTS = "`$SED 1q $export_symbols`"; then
     14218            prefix_cmds="$prefix_cmds -e 1d";
     14219          fi~
     14220          prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~
     14221          cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~
     14222          $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
     14223          emximp -o $lib $output_objdir/$libname.def'
     14224        old_archive_From_new_cmds_CXX='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
     14225        enable_shared_with_static_runtimes_CXX=yes
     14226        ;;
     14227
     14228      dgux*)
     14229        case $cc_basename in
     14230          ec++*)
     14231            # FIXME: insert proper C++ library support
     14232            ld_shlibs_CXX=no
     14233            ;;
     14234          ghcx*)
     14235            # Green Hills C++ Compiler
     14236            # FIXME: insert proper C++ library support
     14237            ld_shlibs_CXX=no
     14238            ;;
     14239          *)
     14240            # FIXME: insert proper C++ library support
     14241            ld_shlibs_CXX=no
     14242            ;;
     14243        esac
     14244        ;;
     14245
     14246      freebsd2.*)
     14247        # C++ shared libraries reported to be fairly broken before
     14248        # switch to ELF
     14249        ld_shlibs_CXX=no
     14250        ;;
     14251
     14252      freebsd-elf*)
     14253        archive_cmds_need_lc_CXX=no
     14254        ;;
     14255
     14256      freebsd* | dragonfly*)
     14257        # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
     14258        # conventions
     14259        ld_shlibs_CXX=yes
     14260        ;;
     14261
     14262      haiku*)
     14263        archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
     14264        link_all_deplibs_CXX=yes
     14265        ;;
     14266
     14267      hpux9*)
     14268        hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir'
     14269        hardcode_libdir_separator_CXX=:
     14270        export_dynamic_flag_spec_CXX='$wl-E'
     14271        hardcode_direct_CXX=yes
     14272        hardcode_minus_L_CXX=yes # Not in the search PATH,
     14273                                             # but as the default
     14274                                             # location of the library.
     14275
     14276        case $cc_basename in
     14277          CC*)
     14278            # FIXME: insert proper C++ library support
     14279            ld_shlibs_CXX=no
     14280            ;;
     14281          aCC*)
     14282            archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
     14283            # Commands to make compiler produce verbose output that lists
     14284            # what "hidden" libraries, object files and flags are used when
     14285            # linking a shared library.
     14286            #
     14287            # There doesn't appear to be a way to prevent this compiler from
     14288            # explicitly linking system object files so we need to strip them
     14289            # from the output so that they don't get included in the library
     14290            # dependencies.
     14291            output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
     14292            ;;
     14293          *)
     14294            if test yes = "$GXX"; then
     14295              archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
     14296            else
     14297              # FIXME: insert proper C++ library support
     14298              ld_shlibs_CXX=no
     14299            fi
     14300            ;;
     14301        esac
     14302        ;;
     14303
     14304      hpux10*|hpux11*)
     14305        if test no = "$with_gnu_ld"; then
     14306          hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir'
     14307          hardcode_libdir_separator_CXX=:
     14308
     14309          case $host_cpu in
     14310            hppa*64*|ia64*)
     14311              ;;
     14312            *)
     14313              export_dynamic_flag_spec_CXX='$wl-E'
     14314              ;;
     14315          esac
     14316        fi
     14317        case $host_cpu in
     14318          hppa*64*|ia64*)
     14319            hardcode_direct_CXX=no
     14320            hardcode_shlibpath_var_CXX=no
     14321            ;;
     14322          *)
     14323            hardcode_direct_CXX=yes
     14324            hardcode_direct_absolute_CXX=yes
     14325            hardcode_minus_L_CXX=yes # Not in the search PATH,
     14326                                                 # but as the default
     14327                                                 # location of the library.
     14328            ;;
     14329        esac
     14330
     14331        case $cc_basename in
     14332          CC*)
     14333            # FIXME: insert proper C++ library support
     14334            ld_shlibs_CXX=no
     14335            ;;
     14336          aCC*)
     14337            case $host_cpu in
     14338              hppa*64*)
     14339                archive_cmds_CXX='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
     14340                ;;
     14341              ia64*)
     14342                archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
     14343                ;;
     14344              *)
     14345                archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
     14346                ;;
     14347            esac
     14348            # Commands to make compiler produce verbose output that lists
     14349            # what "hidden" libraries, object files and flags are used when
     14350            # linking a shared library.
     14351            #
     14352            # There doesn't appear to be a way to prevent this compiler from
     14353            # explicitly linking system object files so we need to strip them
     14354            # from the output so that they don't get included in the library
     14355            # dependencies.
     14356            output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
     14357            ;;
     14358          *)
     14359            if test yes = "$GXX"; then
     14360              if test no = "$with_gnu_ld"; then
     14361                case $host_cpu in
     14362                  hppa*64*)
     14363                    archive_cmds_CXX='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
     14364                    ;;
     14365                  ia64*)
     14366                    archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
     14367                    ;;
     14368                  *)
     14369                    archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
     14370                    ;;
     14371                esac
     14372              fi
     14373            else
     14374              # FIXME: insert proper C++ library support
     14375              ld_shlibs_CXX=no
     14376            fi
     14377            ;;
     14378        esac
     14379        ;;
     14380
     14381      interix[3-9]*)
     14382        hardcode_direct_CXX=no
     14383        hardcode_shlibpath_var_CXX=no
     14384        hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir'
     14385        export_dynamic_flag_spec_CXX='$wl-E'
     14386        # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
     14387        # Instead, shared libraries are loaded at an image base (0x10000000 by
     14388        # default) and relocated if they conflict, which is a slow very memory
     14389        # consuming and fragmenting process.  To avoid this, we pick a random,
     14390        # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
     14391        # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
     14392        archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
     14393        archive_expsym_cmds_CXX='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
     14394        ;;
     14395      irix5* | irix6*)
     14396        case $cc_basename in
     14397          CC*)
     14398            # SGI C++
     14399            archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
     14400
     14401            # Archives containing C++ object files must be created using
     14402            # "CC -ar", where "CC" is the IRIX C++ compiler.  This is
     14403            # necessary to make sure instantiated templates are included
     14404            # in the archive.
     14405            old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs'
     14406            ;;
     14407          *)
     14408            if test yes = "$GXX"; then
     14409              if test no = "$with_gnu_ld"; then
     14410                archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
     14411              else
     14412                archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib'
     14413              fi
     14414            fi
     14415            link_all_deplibs_CXX=yes
     14416            ;;
     14417        esac
     14418        hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir'
     14419        hardcode_libdir_separator_CXX=:
     14420        inherit_rpath_CXX=yes
     14421        ;;
     14422
     14423      linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
     14424        case $cc_basename in
     14425          KCC*)
     14426            # Kuck and Associates, Inc. (KAI) C++ Compiler
     14427
     14428            # KCC will only create a shared library if the output file
     14429            # ends with ".so" (or ".sl" for HP-UX), so rename the library
     14430            # to its proper name (with version) after linking.
     14431            archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
     14432            archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib'
     14433            # Commands to make compiler produce verbose output that lists
     14434            # what "hidden" libraries, object files and flags are used when
     14435            # linking a shared library.
     14436            #
     14437            # There doesn't appear to be a way to prevent this compiler from
     14438            # explicitly linking system object files so we need to strip them
     14439            # from the output so that they don't get included in the library
     14440            # dependencies.
     14441            output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
     14442
     14443            hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir'
     14444            export_dynamic_flag_spec_CXX='$wl--export-dynamic'
     14445
     14446            # Archives containing C++ object files must be created using
     14447            # "CC -Bstatic", where "CC" is the KAI C++ compiler.
     14448            old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
     14449            ;;
     14450          icpc* | ecpc* )
     14451            # Intel C++
     14452            with_gnu_ld=yes
     14453            # version 8.0 and above of icpc choke on multiply defined symbols
     14454            # if we add $predep_objects and $postdep_objects, however 7.1 and
     14455            # earlier do not add the objects themselves.
     14456            case `$CC -V 2>&1` in
     14457              *"Version 7."*)
     14458                archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
     14459                archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
     14460                ;;
     14461              *)  # Version 8.0 or newer
     14462                tmp_idyn=
     14463                case $host_cpu in
     14464                  ia64*) tmp_idyn=' -i_dynamic';;
     14465                esac
     14466                archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
     14467                archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
     14468                ;;
     14469            esac
     14470            archive_cmds_need_lc_CXX=no
     14471            hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir'
     14472            export_dynamic_flag_spec_CXX='$wl--export-dynamic'
     14473            whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive'
     14474            ;;
     14475          pgCC* | pgcpp*)
     14476            # Portland Group C++ compiler
     14477            case `$CC -V` in
     14478            *pgCC\ [1-5].* | *pgcpp\ [1-5].*)
     14479              prelink_cmds_CXX='tpldir=Template.dir~
     14480               rm -rf $tpldir~
     14481               $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
     14482               compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
     14483              old_archive_cmds_CXX='tpldir=Template.dir~
     14484                rm -rf $tpldir~
     14485                $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
     14486                $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
     14487                $RANLIB $oldlib'
     14488              archive_cmds_CXX='tpldir=Template.dir~
     14489                rm -rf $tpldir~
     14490                $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
     14491                $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
     14492              archive_expsym_cmds_CXX='tpldir=Template.dir~
     14493                rm -rf $tpldir~
     14494                $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
     14495                $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
     14496              ;;
     14497            *) # Version 6 and above use weak symbols
     14498              archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
     14499              archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
     14500              ;;
     14501            esac
     14502
     14503            hardcode_libdir_flag_spec_CXX='$wl--rpath $wl$libdir'
     14504            export_dynamic_flag_spec_CXX='$wl--export-dynamic'
     14505            whole_archive_flag_spec_CXX='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
     14506            ;;
     14507          cxx*)
     14508            # Compaq C++
     14509            archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
     14510            archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname  -o $lib $wl-retain-symbols-file $wl$export_symbols'
     14511
     14512            runpath_var=LD_RUN_PATH
     14513            hardcode_libdir_flag_spec_CXX='-rpath $libdir'
     14514            hardcode_libdir_separator_CXX=:
     14515
     14516            # Commands to make compiler produce verbose output that lists
     14517            # what "hidden" libraries, object files and flags are used when
     14518            # linking a shared library.
     14519            #
     14520            # There doesn't appear to be a way to prevent this compiler from
     14521            # explicitly linking system object files so we need to strip them
     14522            # from the output so that they don't get included in the library
     14523            # dependencies.
     14524            output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed'
     14525            ;;
     14526          xl* | mpixl* | bgxl*)
     14527            # IBM XL 8.0 on PPC, with GNU ld
     14528            hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir'
     14529            export_dynamic_flag_spec_CXX='$wl--export-dynamic'
     14530            archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
     14531            if test yes = "$supports_anon_versioning"; then
     14532              archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~
     14533                cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
     14534                echo "local: *; };" >> $output_objdir/$libname.ver~
     14535                $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib'
     14536            fi
     14537            ;;
     14538          *)
     14539            case `$CC -V 2>&1 | sed 5q` in
     14540            *Sun\ C*)
     14541              # Sun C++ 5.9
     14542              no_undefined_flag_CXX=' -zdefs'
     14543              archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
     14544              archive_expsym_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols'
     14545              hardcode_libdir_flag_spec_CXX='-R$libdir'
     14546              whole_archive_flag_spec_CXX='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
     14547              compiler_needs_object_CXX=yes
     14548
     14549              # Not sure whether something based on
     14550              # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
     14551              # would be better.
     14552              output_verbose_link_cmd='func_echo_all'
     14553
     14554              # Archives containing C++ object files must be created using
     14555              # "CC -xar", where "CC" is the Sun C++ compiler.  This is
     14556              # necessary to make sure instantiated templates are included
     14557              # in the archive.
     14558              old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
     14559              ;;
     14560            esac
     14561            ;;
     14562        esac
     14563        ;;
     14564
     14565      lynxos*)
     14566        # FIXME: insert proper C++ library support
     14567        ld_shlibs_CXX=no
     14568        ;;
     14569
     14570      m88k*)
     14571        # FIXME: insert proper C++ library support
     14572        ld_shlibs_CXX=no
     14573        ;;
     14574
     14575      mvs*)
     14576        case $cc_basename in
     14577          cxx*)
     14578            # FIXME: insert proper C++ library support
     14579            ld_shlibs_CXX=no
     14580            ;;
     14581          *)
     14582            # FIXME: insert proper C++ library support
     14583            ld_shlibs_CXX=no
     14584            ;;
     14585        esac
     14586        ;;
     14587
     14588      netbsd*)
     14589        if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
     14590          archive_cmds_CXX='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
     14591          wlarc=
     14592          hardcode_libdir_flag_spec_CXX='-R$libdir'
     14593          hardcode_direct_CXX=yes
     14594          hardcode_shlibpath_var_CXX=no
     14595        fi
     14596        # Workaround some broken pre-1.5 toolchains
     14597        output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
     14598        ;;
     14599
     14600      *nto* | *qnx*)
     14601        ld_shlibs_CXX=yes
     14602        ;;
     14603
     14604      openbsd* | bitrig*)
     14605        if test -f /usr/libexec/ld.so; then
     14606          hardcode_direct_CXX=yes
     14607          hardcode_shlibpath_var_CXX=no
     14608          hardcode_direct_absolute_CXX=yes
     14609          archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
     14610          hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir'
     14611          if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then
     14612            archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib'
     14613            export_dynamic_flag_spec_CXX='$wl-E'
     14614            whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
     14615          fi
     14616          output_verbose_link_cmd=func_echo_all
     14617        else
     14618          ld_shlibs_CXX=no
     14619        fi
     14620        ;;
     14621
     14622      osf3* | osf4* | osf5*)
     14623        case $cc_basename in
     14624          KCC*)
     14625            # Kuck and Associates, Inc. (KAI) C++ Compiler
     14626
     14627            # KCC will only create a shared library if the output file
     14628            # ends with ".so" (or ".sl" for HP-UX), so rename the library
     14629            # to its proper name (with version) after linking.
     14630            archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
     14631
     14632            hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir'
     14633            hardcode_libdir_separator_CXX=:
     14634
     14635            # Archives containing C++ object files must be created using
     14636            # the KAI C++ compiler.
     14637            case $host in
     14638              osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;;
     14639              *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;;
     14640            esac
     14641            ;;
     14642          RCC*)
     14643            # Rational C++ 2.4.1
     14644            # FIXME: insert proper C++ library support
     14645            ld_shlibs_CXX=no
     14646            ;;
     14647          cxx*)
     14648            case $host in
     14649              osf3*)
     14650                allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*'
     14651                archive_cmds_CXX='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
     14652                hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir'
     14653                ;;
     14654              *)
     14655                allow_undefined_flag_CXX=' -expect_unresolved \*'
     14656                archive_cmds_CXX='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
     14657                archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
     14658                  echo "-hidden">> $lib.exp~
     14659                  $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp  `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~
     14660                  $RM $lib.exp'
     14661                hardcode_libdir_flag_spec_CXX='-rpath $libdir'
     14662                ;;
     14663            esac
     14664
     14665            hardcode_libdir_separator_CXX=:
     14666
     14667            # Commands to make compiler produce verbose output that lists
     14668            # what "hidden" libraries, object files and flags are used when
     14669            # linking a shared library.
     14670            #
     14671            # There doesn't appear to be a way to prevent this compiler from
     14672            # explicitly linking system object files so we need to strip them
     14673            # from the output so that they don't get included in the library
     14674            # dependencies.
     14675            output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
     14676            ;;
     14677          *)
     14678            if test yes,no = "$GXX,$with_gnu_ld"; then
     14679              allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*'
     14680              case $host in
     14681                osf3*)
     14682                  archive_cmds_CXX='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
     14683                  ;;
     14684                *)
     14685                  archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
     14686                  ;;
     14687              esac
     14688
     14689              hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir'
     14690              hardcode_libdir_separator_CXX=:
     14691
     14692              # Commands to make compiler produce verbose output that lists
     14693              # what "hidden" libraries, object files and flags are used when
     14694              # linking a shared library.
     14695              output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
     14696
     14697            else
     14698              # FIXME: insert proper C++ library support
     14699              ld_shlibs_CXX=no
     14700            fi
     14701            ;;
     14702        esac
     14703        ;;
     14704
     14705      psos*)
     14706        # FIXME: insert proper C++ library support
     14707        ld_shlibs_CXX=no
     14708        ;;
     14709
     14710      sunos4*)
     14711        case $cc_basename in
     14712          CC*)
     14713            # Sun C++ 4.x
     14714            # FIXME: insert proper C++ library support
     14715            ld_shlibs_CXX=no
     14716            ;;
     14717          lcc*)
     14718            # Lucid
     14719            # FIXME: insert proper C++ library support
     14720            ld_shlibs_CXX=no
     14721            ;;
     14722          *)
     14723            # FIXME: insert proper C++ library support
     14724            ld_shlibs_CXX=no
     14725            ;;
     14726        esac
     14727        ;;
     14728
     14729      solaris*)
     14730        case $cc_basename in
     14731          CC* | sunCC*)
     14732            # Sun C++ 4.2, 5.x and Centerline C++
     14733            archive_cmds_need_lc_CXX=yes
     14734            no_undefined_flag_CXX=' -zdefs'
     14735            archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
     14736            archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
     14737              $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
     14738
     14739            hardcode_libdir_flag_spec_CXX='-R$libdir'
     14740            hardcode_shlibpath_var_CXX=no
     14741            case $host_os in
     14742              solaris2.[0-5] | solaris2.[0-5].*) ;;
     14743              *)
     14744                # The compiler driver will combine and reorder linker options,
     14745                # but understands '-z linker_flag'.
     14746                # Supported since Solaris 2.6 (maybe 2.5.1?)
     14747                whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract'
     14748                ;;
     14749            esac
     14750            link_all_deplibs_CXX=yes
     14751
     14752            output_verbose_link_cmd='func_echo_all'
     14753
     14754            # Archives containing C++ object files must be created using
     14755            # "CC -xar", where "CC" is the Sun C++ compiler.  This is
     14756            # necessary to make sure instantiated templates are included
     14757            # in the archive.
     14758            old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
     14759            ;;
     14760          gcx*)
     14761            # Green Hills C++ Compiler
     14762            archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib'
     14763
     14764            # The C++ compiler must be used to create the archive.
     14765            old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
     14766            ;;
     14767          *)
     14768            # GNU C++ compiler with Solaris linker
     14769            if test yes,no = "$GXX,$with_gnu_ld"; then
     14770              no_undefined_flag_CXX=' $wl-z ${wl}defs'
     14771              if $CC --version | $GREP -v '^2\.7' > /dev/null; then
     14772                archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib'
     14773                archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
     14774                  $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
     14775
     14776                # Commands to make compiler produce verbose output that lists
     14777                # what "hidden" libraries, object files and flags are used when
     14778                # linking a shared library.
     14779                output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
     14780              else
     14781                # g++ 2.7 appears to require '-G' NOT '-shared' on this
     14782                # platform.
     14783                archive_cmds_CXX='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib'
     14784                archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
     14785                  $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
     14786
     14787                # Commands to make compiler produce verbose output that lists
     14788                # what "hidden" libraries, object files and flags are used when
     14789                # linking a shared library.
     14790                output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
     14791              fi
     14792
     14793              hardcode_libdir_flag_spec_CXX='$wl-R $wl$libdir'
     14794              case $host_os in
     14795                solaris2.[0-5] | solaris2.[0-5].*) ;;
     14796                *)
     14797                  whole_archive_flag_spec_CXX='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract'
     14798                  ;;
     14799              esac
     14800            fi
     14801            ;;
     14802        esac
     14803        ;;
     14804
     14805    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
     14806      no_undefined_flag_CXX='$wl-z,text'
     14807      archive_cmds_need_lc_CXX=no
     14808      hardcode_shlibpath_var_CXX=no
     14809      runpath_var='LD_RUN_PATH'
     14810
     14811      case $cc_basename in
     14812        CC*)
     14813          archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
     14814          archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
     14815          ;;
     14816        *)
     14817          archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
     14818          archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
     14819          ;;
     14820      esac
     14821      ;;
     14822
     14823      sysv5* | sco3.2v5* | sco5v6*)
     14824        # Note: We CANNOT use -z defs as we might desire, because we do not
     14825        # link with -lc, and that would cause any symbols used from libc to
     14826        # always be unresolved, which means just about no library would
     14827        # ever link correctly.  If we're not using GNU ld we use -z text
     14828        # though, which does catch some bad symbols but isn't as heavy-handed
     14829        # as -z defs.
     14830        no_undefined_flag_CXX='$wl-z,text'
     14831        allow_undefined_flag_CXX='$wl-z,nodefs'
     14832        archive_cmds_need_lc_CXX=no
     14833        hardcode_shlibpath_var_CXX=no
     14834        hardcode_libdir_flag_spec_CXX='$wl-R,$libdir'
     14835        hardcode_libdir_separator_CXX=':'
     14836        link_all_deplibs_CXX=yes
     14837        export_dynamic_flag_spec_CXX='$wl-Bexport'
     14838        runpath_var='LD_RUN_PATH'
     14839
     14840        case $cc_basename in
     14841          CC*)
     14842            archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
     14843            archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
     14844            old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~
     14845              '"$old_archive_cmds_CXX"
     14846            reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~
     14847              '"$reload_cmds_CXX"
     14848            ;;
     14849          *)
     14850            archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
     14851            archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
     14852            ;;
     14853        esac
     14854      ;;
     14855
     14856      tandem*)
     14857        case $cc_basename in
     14858          NCC*)
     14859            # NonStop-UX NCC 3.20
     14860            # FIXME: insert proper C++ library support
     14861            ld_shlibs_CXX=no
     14862            ;;
     14863          *)
     14864            # FIXME: insert proper C++ library support
     14865            ld_shlibs_CXX=no
     14866            ;;
     14867        esac
     14868        ;;
     14869
     14870      vxworks*)
     14871        # FIXME: insert proper C++ library support
     14872        ld_shlibs_CXX=no
     14873        ;;
     14874
     14875      *)
     14876        # FIXME: insert proper C++ library support
     14877        ld_shlibs_CXX=no
     14878        ;;
     14879    esac
     14880
     14881    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5
     14882$as_echo "$ld_shlibs_CXX" >&6; }
     14883    test no = "$ld_shlibs_CXX" && can_build_shared=no
     14884
     14885    GCC_CXX=$GXX
     14886    LD_CXX=$LD
     14887
     14888    ## CAVEAT EMPTOR:
     14889    ## There is no encapsulation within the following macros, do not change
     14890    ## the running order or otherwise move them around unless you know exactly
     14891    ## what you are doing...
     14892    # Dependencies to place before and after the object being linked:
     14893predep_objects_CXX=
     14894postdep_objects_CXX=
     14895predeps_CXX=
     14896postdeps_CXX=
     14897compiler_lib_search_path_CXX=
     14898
     14899cat > conftest.$ac_ext <<_LT_EOF
     14900class Foo
     14901{
     14902public:
     14903  Foo (void) { a = 0; }
     14904private:
     14905  int a;
     14906};
     14907_LT_EOF
     14908
     14909
     14910_lt_libdeps_save_CFLAGS=$CFLAGS
     14911case "$CC $CFLAGS " in #(
     14912*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
     14913*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
     14914*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;;
     14915esac
     14916
     14917if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
     14918  (eval $ac_compile) 2>&5
     14919  ac_status=$?
     14920  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
     14921  test $ac_status = 0; }; then
     14922  # Parse the compiler output and extract the necessary
     14923  # objects, libraries and library flags.
     14924
     14925  # Sentinel used to keep track of whether or not we are before
     14926  # the conftest object file.
     14927  pre_test_object_deps_done=no
     14928
     14929  for p in `eval "$output_verbose_link_cmd"`; do
     14930    case $prev$p in
     14931
     14932    -L* | -R* | -l*)
     14933       # Some compilers place space between "-{L,R}" and the path.
     14934       # Remove the space.
     14935       if test x-L = "$p" ||
     14936          test x-R = "$p"; then
     14937         prev=$p
     14938         continue
     14939       fi
     14940
     14941       # Expand the sysroot to ease extracting the directories later.
     14942       if test -z "$prev"; then
     14943         case $p in
     14944         -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;;
     14945         -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;;
     14946         -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;;
     14947         esac
     14948       fi
     14949       case $p in
     14950       =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
     14951       esac
     14952       if test no = "$pre_test_object_deps_done"; then
     14953         case $prev in
     14954         -L | -R)
     14955           # Internal compiler library paths should come after those
     14956           # provided the user.  The postdeps already come after the
     14957           # user supplied libs so there is no need to process them.
     14958           if test -z "$compiler_lib_search_path_CXX"; then
     14959             compiler_lib_search_path_CXX=$prev$p
     14960           else
     14961             compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} $prev$p"
     14962           fi
     14963           ;;
     14964         # The "-l" case would never come before the object being
     14965         # linked, so don't bother handling this case.
     14966         esac
     14967       else
     14968         if test -z "$postdeps_CXX"; then
     14969           postdeps_CXX=$prev$p
     14970         else
     14971           postdeps_CXX="${postdeps_CXX} $prev$p"
     14972         fi
     14973       fi
     14974       prev=
     14975       ;;
     14976
     14977    *.lto.$objext) ;; # Ignore GCC LTO objects
     14978    *.$objext)
     14979       # This assumes that the test object file only shows up
     14980       # once in the compiler output.
     14981       if test "$p" = "conftest.$objext"; then
     14982         pre_test_object_deps_done=yes
     14983         continue
     14984       fi
     14985
     14986       if test no = "$pre_test_object_deps_done"; then
     14987         if test -z "$predep_objects_CXX"; then
     14988           predep_objects_CXX=$p
     14989         else
     14990           predep_objects_CXX="$predep_objects_CXX $p"
     14991         fi
     14992       else
     14993         if test -z "$postdep_objects_CXX"; then
     14994           postdep_objects_CXX=$p
     14995         else
     14996           postdep_objects_CXX="$postdep_objects_CXX $p"
     14997         fi
     14998       fi
     14999       ;;
     15000
     15001    *) ;; # Ignore the rest.
     15002
     15003    esac
     15004  done
     15005
     15006  # Clean up.
     15007  rm -f a.out a.exe
     15008else
     15009  echo "libtool.m4: error: problem compiling CXX test program"
     15010fi
     15011
     15012$RM -f confest.$objext
     15013CFLAGS=$_lt_libdeps_save_CFLAGS
     15014
     15015# PORTME: override above test on systems where it is broken
     15016case $host_os in
     15017interix[3-9]*)
     15018  # Interix 3.5 installs completely hosed .la files for C++, so rather than
     15019  # hack all around it, let's just trust "g++" to DTRT.
     15020  predep_objects_CXX=
     15021  postdep_objects_CXX=
     15022  postdeps_CXX=
     15023  ;;
     15024esac
     15025
     15026
     15027case " $postdeps_CXX " in
     15028*" -lc "*) archive_cmds_need_lc_CXX=no ;;
     15029esac
     15030 compiler_lib_search_dirs_CXX=
     15031if test -n "${compiler_lib_search_path_CXX}"; then
     15032 compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | $SED -e 's! -L! !g' -e 's!^ !!'`
     15033fi
     15034
     15035
     15036
     15037
     15038
     15039
     15040
     15041
     15042
     15043
     15044
     15045
     15046
     15047
     15048
     15049
     15050
     15051
     15052
     15053
     15054
     15055
     15056
     15057
     15058
     15059
     15060
     15061
     15062
     15063
     15064
     15065    lt_prog_compiler_wl_CXX=
     15066lt_prog_compiler_pic_CXX=
     15067lt_prog_compiler_static_CXX=
     15068
     15069
     15070  # C++ specific cases for pic, static, wl, etc.
     15071  if test yes = "$GXX"; then
     15072    lt_prog_compiler_wl_CXX='-Wl,'
     15073    lt_prog_compiler_static_CXX='-static'
     15074
     15075    case $host_os in
     15076    aix*)
     15077      # All AIX code is PIC.
     15078      if test ia64 = "$host_cpu"; then
     15079        # AIX 5 now supports IA64 processor
     15080        lt_prog_compiler_static_CXX='-Bstatic'
     15081      fi
     15082      lt_prog_compiler_pic_CXX='-fPIC'
     15083      ;;
     15084
     15085    amigaos*)
     15086      case $host_cpu in
     15087      powerpc)
     15088            # see comment about AmigaOS4 .so support
     15089            lt_prog_compiler_pic_CXX='-fPIC'
     15090        ;;
     15091      m68k)
     15092            # FIXME: we need at least 68020 code to build shared libraries, but
     15093            # adding the '-m68020' flag to GCC prevents building anything better,
     15094            # like '-m68040'.
     15095            lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4'
     15096        ;;
     15097      esac
     15098      ;;
     15099
     15100    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
     15101      # PIC is the default for these OSes.
     15102      ;;
     15103    mingw* | cygwin* | os2* | pw32* | cegcc*)
     15104      # This hack is so that the source file can tell whether it is being
     15105      # built for inclusion in a dll (and should export symbols for example).
     15106      # Although the cygwin gcc ignores -fPIC, still need this for old-style
     15107      # (--disable-auto-import) libraries
     15108      lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
     15109      case $host_os in
     15110      os2*)
     15111        lt_prog_compiler_static_CXX='$wl-static'
     15112        ;;
     15113      esac
     15114      ;;
     15115    darwin* | rhapsody*)
     15116      # PIC is the default on this platform
     15117      # Common symbols not allowed in MH_DYLIB files
     15118      lt_prog_compiler_pic_CXX='-fno-common'
     15119      ;;
     15120    *djgpp*)
     15121      # DJGPP does not support shared libraries at all
     15122      lt_prog_compiler_pic_CXX=
     15123      ;;
     15124    haiku*)
     15125      # PIC is the default for Haiku.
     15126      # The "-static" flag exists, but is broken.
     15127      lt_prog_compiler_static_CXX=
     15128      ;;
     15129    interix[3-9]*)
     15130      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
     15131      # Instead, we relocate shared libraries at runtime.
     15132      ;;
     15133    sysv4*MP*)
     15134      if test -d /usr/nec; then
     15135        lt_prog_compiler_pic_CXX=-Kconform_pic
     15136      fi
     15137      ;;
     15138    hpux*)
     15139      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
     15140      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
     15141      # sets the default TLS model and affects inlining.
     15142      case $host_cpu in
     15143      hppa*64*)
     15144        ;;
     15145      *)
     15146        lt_prog_compiler_pic_CXX='-fPIC'
     15147        ;;
     15148      esac
     15149      ;;
     15150    *qnx* | *nto*)
     15151      # QNX uses GNU C++, but need to define -shared option too, otherwise
     15152      # it will coredump.
     15153      lt_prog_compiler_pic_CXX='-fPIC -shared'
     15154      ;;
     15155    *)
     15156      lt_prog_compiler_pic_CXX='-fPIC'
     15157      ;;
     15158    esac
     15159  else
     15160    case $host_os in
     15161      aix[4-9]*)
     15162        # All AIX code is PIC.
     15163        if test ia64 = "$host_cpu"; then
     15164          # AIX 5 now supports IA64 processor
     15165          lt_prog_compiler_static_CXX='-Bstatic'
     15166        else
     15167          lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp'
     15168        fi
     15169        ;;
     15170      chorus*)
     15171        case $cc_basename in
     15172        cxch68*)
     15173          # Green Hills C++ Compiler
     15174          # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
     15175          ;;
     15176        esac
     15177        ;;
     15178      mingw* | cygwin* | os2* | pw32* | cegcc*)
     15179        # This hack is so that the source file can tell whether it is being
     15180        # built for inclusion in a dll (and should export symbols for example).
     15181        lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
     15182        ;;
     15183      dgux*)
     15184        case $cc_basename in
     15185          ec++*)
     15186            lt_prog_compiler_pic_CXX='-KPIC'
     15187            ;;
     15188          ghcx*)
     15189            # Green Hills C++ Compiler
     15190            lt_prog_compiler_pic_CXX='-pic'
     15191            ;;
     15192          *)
     15193            ;;
     15194        esac
     15195        ;;
     15196      freebsd* | dragonfly*)
     15197        # FreeBSD uses GNU C++
     15198        ;;
     15199      hpux9* | hpux10* | hpux11*)
     15200        case $cc_basename in
     15201          CC*)
     15202            lt_prog_compiler_wl_CXX='-Wl,'
     15203            lt_prog_compiler_static_CXX='$wl-a ${wl}archive'
     15204            if test ia64 != "$host_cpu"; then
     15205              lt_prog_compiler_pic_CXX='+Z'
     15206            fi
     15207            ;;
     15208          aCC*)
     15209            lt_prog_compiler_wl_CXX='-Wl,'
     15210            lt_prog_compiler_static_CXX='$wl-a ${wl}archive'
     15211            case $host_cpu in
     15212            hppa*64*|ia64*)
     15213              # +Z the default
     15214              ;;
     15215            *)
     15216              lt_prog_compiler_pic_CXX='+Z'
     15217              ;;
     15218            esac
     15219            ;;
     15220          *)
     15221            ;;
     15222        esac
     15223        ;;
     15224      interix*)
     15225        # This is c89, which is MS Visual C++ (no shared libs)
     15226        # Anyone wants to do a port?
     15227        ;;
     15228      irix5* | irix6* | nonstopux*)
     15229        case $cc_basename in
     15230          CC*)
     15231            lt_prog_compiler_wl_CXX='-Wl,'
     15232            lt_prog_compiler_static_CXX='-non_shared'
     15233            # CC pic flag -KPIC is the default.
     15234            ;;
     15235          *)
     15236            ;;
     15237        esac
     15238        ;;
     15239      linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
     15240        case $cc_basename in
     15241          KCC*)
     15242            # KAI C++ Compiler
     15243            lt_prog_compiler_wl_CXX='--backend -Wl,'
     15244            lt_prog_compiler_pic_CXX='-fPIC'
     15245            ;;
     15246          ecpc* )
     15247            # old Intel C++ for x86_64, which still supported -KPIC.
     15248            lt_prog_compiler_wl_CXX='-Wl,'
     15249            lt_prog_compiler_pic_CXX='-KPIC'
     15250            lt_prog_compiler_static_CXX='-static'
     15251            ;;
     15252          icpc* )
     15253            # Intel C++, used to be incompatible with GCC.
     15254            # ICC 10 doesn't accept -KPIC any more.
     15255            lt_prog_compiler_wl_CXX='-Wl,'
     15256            lt_prog_compiler_pic_CXX='-fPIC'
     15257            lt_prog_compiler_static_CXX='-static'
     15258            ;;
     15259          pgCC* | pgcpp*)
     15260            # Portland Group C++ compiler
     15261            lt_prog_compiler_wl_CXX='-Wl,'
     15262            lt_prog_compiler_pic_CXX='-fpic'
     15263            lt_prog_compiler_static_CXX='-Bstatic'
     15264            ;;
     15265          cxx*)
     15266            # Compaq C++
     15267            # Make sure the PIC flag is empty.  It appears that all Alpha
     15268            # Linux and Compaq Tru64 Unix objects are PIC.
     15269            lt_prog_compiler_pic_CXX=
     15270            lt_prog_compiler_static_CXX='-non_shared'
     15271            ;;
     15272          xlc* | xlC* | bgxl[cC]* | mpixl[cC]*)
     15273            # IBM XL 8.0, 9.0 on PPC and BlueGene
     15274            lt_prog_compiler_wl_CXX='-Wl,'
     15275            lt_prog_compiler_pic_CXX='-qpic'
     15276            lt_prog_compiler_static_CXX='-qstaticlink'
     15277            ;;
     15278          *)
     15279            case `$CC -V 2>&1 | sed 5q` in
     15280            *Sun\ C*)
     15281              # Sun C++ 5.9
     15282              lt_prog_compiler_pic_CXX='-KPIC'
     15283              lt_prog_compiler_static_CXX='-Bstatic'
     15284              lt_prog_compiler_wl_CXX='-Qoption ld '
     15285              ;;
     15286            esac
     15287            ;;
     15288        esac
     15289        ;;
     15290      lynxos*)
     15291        ;;
     15292      m88k*)
     15293        ;;
     15294      mvs*)
     15295        case $cc_basename in
     15296          cxx*)
     15297            lt_prog_compiler_pic_CXX='-W c,exportall'
     15298            ;;
     15299          *)
     15300            ;;
     15301        esac
     15302        ;;
     15303      netbsd* | netbsdelf*-gnu)
     15304        ;;
     15305      *qnx* | *nto*)
     15306        # QNX uses GNU C++, but need to define -shared option too, otherwise
     15307        # it will coredump.
     15308        lt_prog_compiler_pic_CXX='-fPIC -shared'
     15309        ;;
     15310      osf3* | osf4* | osf5*)
     15311        case $cc_basename in
     15312          KCC*)
     15313            lt_prog_compiler_wl_CXX='--backend -Wl,'
     15314            ;;
     15315          RCC*)
     15316            # Rational C++ 2.4.1
     15317            lt_prog_compiler_pic_CXX='-pic'
     15318            ;;
     15319          cxx*)
     15320            # Digital/Compaq C++
     15321            lt_prog_compiler_wl_CXX='-Wl,'
     15322            # Make sure the PIC flag is empty.  It appears that all Alpha
     15323            # Linux and Compaq Tru64 Unix objects are PIC.
     15324            lt_prog_compiler_pic_CXX=
     15325            lt_prog_compiler_static_CXX='-non_shared'
     15326            ;;
     15327          *)
     15328            ;;
     15329        esac
     15330        ;;
     15331      psos*)
     15332        ;;
     15333      solaris*)
     15334        case $cc_basename in
     15335          CC* | sunCC*)
     15336            # Sun C++ 4.2, 5.x and Centerline C++
     15337            lt_prog_compiler_pic_CXX='-KPIC'
     15338            lt_prog_compiler_static_CXX='-Bstatic'
     15339            lt_prog_compiler_wl_CXX='-Qoption ld '
     15340            ;;
     15341          gcx*)
     15342            # Green Hills C++ Compiler
     15343            lt_prog_compiler_pic_CXX='-PIC'
     15344            ;;
     15345          *)
     15346            ;;
     15347        esac
     15348        ;;
     15349      sunos4*)
     15350        case $cc_basename in
     15351          CC*)
     15352            # Sun C++ 4.x
     15353            lt_prog_compiler_pic_CXX='-pic'
     15354            lt_prog_compiler_static_CXX='-Bstatic'
     15355            ;;
     15356          lcc*)
     15357            # Lucid
     15358            lt_prog_compiler_pic_CXX='-pic'
     15359            ;;
     15360          *)
     15361            ;;
     15362        esac
     15363        ;;
     15364      sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
     15365        case $cc_basename in
     15366          CC*)
     15367            lt_prog_compiler_wl_CXX='-Wl,'
     15368            lt_prog_compiler_pic_CXX='-KPIC'
     15369            lt_prog_compiler_static_CXX='-Bstatic'
     15370            ;;
     15371        esac
     15372        ;;
     15373      tandem*)
     15374        case $cc_basename in
     15375          NCC*)
     15376            # NonStop-UX NCC 3.20
     15377            lt_prog_compiler_pic_CXX='-KPIC'
     15378            ;;
     15379          *)
     15380            ;;
     15381        esac
     15382        ;;
     15383      vxworks*)
     15384        ;;
     15385      *)
     15386        lt_prog_compiler_can_build_shared_CXX=no
     15387        ;;
     15388    esac
     15389  fi
     15390
     15391case $host_os in
     15392  # For platforms that do not support PIC, -DPIC is meaningless:
     15393  *djgpp*)
     15394    lt_prog_compiler_pic_CXX=
     15395    ;;
     15396  *)
     15397    lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC"
     15398    ;;
     15399esac
     15400
     15401{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
     15402$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
     15403if ${lt_cv_prog_compiler_pic_CXX+:} false; then :
     15404  $as_echo_n "(cached) " >&6
     15405else
     15406  lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX
     15407fi
     15408{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5
     15409$as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; }
     15410lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX
     15411
     15412#
     15413# Check to make sure the PIC flag actually works.
     15414#
     15415if test -n "$lt_prog_compiler_pic_CXX"; then
     15416  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5
     15417$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; }
     15418if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then :
     15419  $as_echo_n "(cached) " >&6
     15420else
     15421  lt_cv_prog_compiler_pic_works_CXX=no
     15422   ac_outfile=conftest.$ac_objext
     15423   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
     15424   lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC"  ## exclude from sc_useless_quotes_in_assignment
     15425   # Insert the option either (1) after the last *FLAGS variable, or
     15426   # (2) before a word containing "conftest.", or (3) at the end.
     15427   # Note that $ac_compile itself does not contain backslashes and begins
     15428   # with a dollar sign (not a hyphen), so the echo should work correctly.
     15429   # The option is referenced via a variable to avoid confusing sed.
     15430   lt_compile=`echo "$ac_compile" | $SED \
     15431   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
     15432   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
     15433   -e 's:$: $lt_compiler_flag:'`
     15434   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
     15435   (eval "$lt_compile" 2>conftest.err)
     15436   ac_status=$?
     15437   cat conftest.err >&5
     15438   echo "$as_me:$LINENO: \$? = $ac_status" >&5
     15439   if (exit $ac_status) && test -s "$ac_outfile"; then
     15440     # The compiler can only warn and ignore the option if not recognized
     15441     # So say no if there are warnings other than the usual output.
     15442     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
     15443     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
     15444     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
     15445       lt_cv_prog_compiler_pic_works_CXX=yes
     15446     fi
     15447   fi
     15448   $RM conftest*
     15449
     15450fi
     15451{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5
     15452$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; }
     15453
     15454if test yes = "$lt_cv_prog_compiler_pic_works_CXX"; then
     15455    case $lt_prog_compiler_pic_CXX in
     15456     "" | " "*) ;;
     15457     *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;;
     15458     esac
     15459else
     15460    lt_prog_compiler_pic_CXX=
     15461     lt_prog_compiler_can_build_shared_CXX=no
     15462fi
     15463
     15464fi
     15465
     15466
     15467
     15468
     15469
     15470#
     15471# Check to make sure the static flag actually works.
     15472#
     15473wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\"
     15474{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
     15475$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
     15476if ${lt_cv_prog_compiler_static_works_CXX+:} false; then :
     15477  $as_echo_n "(cached) " >&6
     15478else
     15479  lt_cv_prog_compiler_static_works_CXX=no
     15480   save_LDFLAGS=$LDFLAGS
     15481   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
     15482   echo "$lt_simple_link_test_code" > conftest.$ac_ext
     15483   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
     15484     # The linker can only warn and ignore the option if not recognized
     15485     # So say no if there are warnings
     15486     if test -s conftest.err; then
     15487       # Append any errors to the config.log.
     15488       cat conftest.err 1>&5
     15489       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
     15490       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
     15491       if diff conftest.exp conftest.er2 >/dev/null; then
     15492         lt_cv_prog_compiler_static_works_CXX=yes
     15493       fi
     15494     else
     15495       lt_cv_prog_compiler_static_works_CXX=yes
     15496     fi
     15497   fi
     15498   $RM -r conftest*
     15499   LDFLAGS=$save_LDFLAGS
     15500
     15501fi
     15502{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5
     15503$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; }
     15504
     15505if test yes = "$lt_cv_prog_compiler_static_works_CXX"; then
     15506    :
     15507else
     15508    lt_prog_compiler_static_CXX=
     15509fi
     15510
     15511
     15512
     15513
     15514    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
     15515$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
     15516if ${lt_cv_prog_compiler_c_o_CXX+:} false; then :
     15517  $as_echo_n "(cached) " >&6
     15518else
     15519  lt_cv_prog_compiler_c_o_CXX=no
     15520   $RM -r conftest 2>/dev/null
     15521   mkdir conftest
     15522   cd conftest
     15523   mkdir out
     15524   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
     15525
     15526   lt_compiler_flag="-o out/conftest2.$ac_objext"
     15527   # Insert the option either (1) after the last *FLAGS variable, or
     15528   # (2) before a word containing "conftest.", or (3) at the end.
     15529   # Note that $ac_compile itself does not contain backslashes and begins
     15530   # with a dollar sign (not a hyphen), so the echo should work correctly.
     15531   lt_compile=`echo "$ac_compile" | $SED \
     15532   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
     15533   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
     15534   -e 's:$: $lt_compiler_flag:'`
     15535   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
     15536   (eval "$lt_compile" 2>out/conftest.err)
     15537   ac_status=$?
     15538   cat out/conftest.err >&5
     15539   echo "$as_me:$LINENO: \$? = $ac_status" >&5
     15540   if (exit $ac_status) && test -s out/conftest2.$ac_objext
     15541   then
     15542     # The compiler can only warn and ignore the option if not recognized
     15543     # So say no if there are warnings
     15544     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
     15545     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
     15546     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
     15547       lt_cv_prog_compiler_c_o_CXX=yes
     15548     fi
     15549   fi
     15550   chmod u+w . 2>&5
     15551   $RM conftest*
     15552   # SGI C++ compiler will create directory out/ii_files/ for
     15553   # template instantiation
     15554   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
     15555   $RM out/* && rmdir out
     15556   cd ..
     15557   $RM -r conftest
     15558   $RM conftest*
     15559
     15560fi
     15561{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5
     15562$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; }
     15563
     15564
     15565
     15566    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
     15567$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
     15568if ${lt_cv_prog_compiler_c_o_CXX+:} false; then :
     15569  $as_echo_n "(cached) " >&6
     15570else
     15571  lt_cv_prog_compiler_c_o_CXX=no
     15572   $RM -r conftest 2>/dev/null
     15573   mkdir conftest
     15574   cd conftest
     15575   mkdir out
     15576   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
     15577
     15578   lt_compiler_flag="-o out/conftest2.$ac_objext"
     15579   # Insert the option either (1) after the last *FLAGS variable, or
     15580   # (2) before a word containing "conftest.", or (3) at the end.
     15581   # Note that $ac_compile itself does not contain backslashes and begins
     15582   # with a dollar sign (not a hyphen), so the echo should work correctly.
     15583   lt_compile=`echo "$ac_compile" | $SED \
     15584   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
     15585   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
     15586   -e 's:$: $lt_compiler_flag:'`
     15587   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
     15588   (eval "$lt_compile" 2>out/conftest.err)
     15589   ac_status=$?
     15590   cat out/conftest.err >&5
     15591   echo "$as_me:$LINENO: \$? = $ac_status" >&5
     15592   if (exit $ac_status) && test -s out/conftest2.$ac_objext
     15593   then
     15594     # The compiler can only warn and ignore the option if not recognized
     15595     # So say no if there are warnings
     15596     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
     15597     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
     15598     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
     15599       lt_cv_prog_compiler_c_o_CXX=yes
     15600     fi
     15601   fi
     15602   chmod u+w . 2>&5
     15603   $RM conftest*
     15604   # SGI C++ compiler will create directory out/ii_files/ for
     15605   # template instantiation
     15606   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
     15607   $RM out/* && rmdir out
     15608   cd ..
     15609   $RM -r conftest
     15610   $RM conftest*
     15611
     15612fi
     15613{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5
     15614$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; }
     15615
     15616
     15617
     15618
     15619hard_links=nottested
     15620if test no = "$lt_cv_prog_compiler_c_o_CXX" && test no != "$need_locks"; then
     15621  # do not overwrite the value of need_locks provided by the user
     15622  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
     15623$as_echo_n "checking if we can lock with hard links... " >&6; }
     15624  hard_links=yes
     15625  $RM conftest*
     15626  ln conftest.a conftest.b 2>/dev/null && hard_links=no
     15627  touch conftest.a
     15628  ln conftest.a conftest.b 2>&5 || hard_links=no
     15629  ln conftest.a conftest.b 2>/dev/null && hard_links=no
     15630  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
     15631$as_echo "$hard_links" >&6; }
     15632  if test no = "$hard_links"; then
     15633    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5
     15634$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;}
     15635    need_locks=warn
     15636  fi
     15637else
     15638  need_locks=no
     15639fi
     15640
     15641
     15642
     15643    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
     15644$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
     15645
     15646  export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
     15647  exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
     15648  case $host_os in
     15649  aix[4-9]*)
     15650    # If we're using GNU nm, then we don't want the "-C" option.
     15651    # -C means demangle to GNU nm, but means don't demangle to AIX nm.
     15652    # Without the "-l" option, or with the "-B" option, AIX nm treats
     15653    # weak defined symbols like other global defined symbols, whereas
     15654    # GNU nm marks them as "W".
     15655    # While the 'weak' keyword is ignored in the Export File, we need
     15656    # it in the Import File for the 'aix-soname' feature, so we have
     15657    # to replace the "-B" option with "-P" for AIX nm.
     15658    if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
     15659      export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols'
     15660    else
     15661      export_symbols_cmds_CXX='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols'
     15662    fi
     15663    ;;
     15664  pw32*)
     15665    export_symbols_cmds_CXX=$ltdll_cmds
     15666    ;;
     15667  cygwin* | mingw* | cegcc*)
     15668    case $cc_basename in
     15669    cl*)
     15670      exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
     15671      ;;
     15672    *)
     15673      export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
     15674      exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
     15675      ;;
     15676    esac
     15677    ;;
     15678  linux* | k*bsd*-gnu | gnu*)
     15679    link_all_deplibs_CXX=no
     15680    ;;
     15681  *)
     15682    export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
     15683    ;;
     15684  esac
     15685
     15686{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5
     15687$as_echo "$ld_shlibs_CXX" >&6; }
     15688test no = "$ld_shlibs_CXX" && can_build_shared=no
     15689
     15690with_gnu_ld_CXX=$with_gnu_ld
     15691
     15692
     15693
     15694
     15695
     15696
     15697#
     15698# Do we need to explicitly link libc?
     15699#
     15700case "x$archive_cmds_need_lc_CXX" in
     15701x|xyes)
     15702  # Assume -lc should be added
     15703  archive_cmds_need_lc_CXX=yes
     15704
     15705  if test yes,yes = "$GCC,$enable_shared"; then
     15706    case $archive_cmds_CXX in
     15707    *'~'*)
     15708      # FIXME: we may have to deal with multi-command sequences.
     15709      ;;
     15710    '$CC '*)
     15711      # Test whether the compiler implicitly links with -lc since on some
     15712      # systems, -lgcc has to come before -lc. If gcc already passes -lc
     15713      # to ld, don't add -lc before -lgcc.
     15714      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
     15715$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
     15716if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then :
     15717  $as_echo_n "(cached) " >&6
     15718else
     15719  $RM conftest*
     15720        echo "$lt_simple_compile_test_code" > conftest.$ac_ext
     15721
     15722        if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
     15723  (eval $ac_compile) 2>&5
     15724  ac_status=$?
     15725  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
     15726  test $ac_status = 0; } 2>conftest.err; then
     15727          soname=conftest
     15728          lib=conftest
     15729          libobjs=conftest.$ac_objext
     15730          deplibs=
     15731          wl=$lt_prog_compiler_wl_CXX
     15732          pic_flag=$lt_prog_compiler_pic_CXX
     15733          compiler_flags=-v
     15734          linker_flags=-v
     15735          verstring=
     15736          output_objdir=.
     15737          libname=conftest
     15738          lt_save_allow_undefined_flag=$allow_undefined_flag_CXX
     15739          allow_undefined_flag_CXX=
     15740          if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
     15741  (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
     15742  ac_status=$?
     15743  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
     15744  test $ac_status = 0; }
     15745          then
     15746            lt_cv_archive_cmds_need_lc_CXX=no
     15747          else
     15748            lt_cv_archive_cmds_need_lc_CXX=yes
     15749          fi
     15750          allow_undefined_flag_CXX=$lt_save_allow_undefined_flag
     15751        else
     15752          cat conftest.err 1>&5
     15753        fi
     15754        $RM conftest*
     15755
     15756fi
     15757{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5
     15758$as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; }
     15759      archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX
     15760      ;;
     15761    esac
     15762  fi
     15763  ;;
     15764esac
     15765
     15766
     15767
     15768
     15769
     15770
     15771
     15772
     15773
     15774
     15775
     15776
     15777
     15778
     15779
     15780
     15781
     15782
     15783
     15784
     15785
     15786
     15787
     15788
     15789
     15790
     15791
     15792
     15793
     15794
     15795
     15796
     15797
     15798
     15799
     15800
     15801
     15802
     15803
     15804
     15805
     15806
     15807
     15808
     15809
     15810
     15811
     15812
     15813
     15814
     15815
     15816
     15817
     15818
     15819
     15820
     15821
     15822
     15823
     15824
     15825
     15826
     15827    { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
     15828$as_echo_n "checking dynamic linker characteristics... " >&6; }
     15829
     15830library_names_spec=
     15831libname_spec='lib$name'
     15832soname_spec=
     15833shrext_cmds=.so
     15834postinstall_cmds=
     15835postuninstall_cmds=
     15836finish_cmds=
     15837finish_eval=
     15838shlibpath_var=
     15839shlibpath_overrides_runpath=unknown
     15840version_type=none
     15841dynamic_linker="$host_os ld.so"
     15842sys_lib_dlsearch_path_spec="/lib /usr/lib"
     15843need_lib_prefix=unknown
     15844hardcode_into_libs=no
     15845
     15846# when you set need_version to no, make sure it does not cause -set_version
     15847# flags to be left without arguments
     15848need_version=unknown
     15849
     15850
     15851
     15852case $host_os in
     15853aix3*)
     15854  version_type=linux # correct to gnu/linux during the next big refactor
     15855  library_names_spec='$libname$release$shared_ext$versuffix $libname.a'
     15856  shlibpath_var=LIBPATH
     15857
     15858  # AIX 3 has no versioning support, so we append a major version to the name.
     15859  soname_spec='$libname$release$shared_ext$major'
     15860  ;;
     15861
     15862aix[4-9]*)
     15863  version_type=linux # correct to gnu/linux during the next big refactor
     15864  need_lib_prefix=no
     15865  need_version=no
     15866  hardcode_into_libs=yes
     15867  if test ia64 = "$host_cpu"; then
     15868    # AIX 5 supports IA64
     15869    library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext'
     15870    shlibpath_var=LD_LIBRARY_PATH
     15871  else
     15872    # With GCC up to 2.95.x, collect2 would create an import file
     15873    # for dependence libraries.  The import file would start with
     15874    # the line '#! .'.  This would cause the generated library to
     15875    # depend on '.', always an invalid library.  This was fixed in
     15876    # development snapshots of GCC prior to 3.0.
     15877    case $host_os in
     15878      aix4 | aix4.[01] | aix4.[01].*)
     15879      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
     15880           echo ' yes '
     15881           echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then
     15882        :
     15883      else
     15884        can_build_shared=no
     15885      fi
     15886      ;;
     15887    esac
     15888    # Using Import Files as archive members, it is possible to support
     15889    # filename-based versioning of shared library archives on AIX. While
     15890    # this would work for both with and without runtime linking, it will
     15891    # prevent static linking of such archives. So we do filename-based
     15892    # shared library versioning with .so extension only, which is used
     15893    # when both runtime linking and shared linking is enabled.
     15894    # Unfortunately, runtime linking may impact performance, so we do
     15895    # not want this to be the default eventually. Also, we use the
     15896    # versioned .so libs for executables only if there is the -brtl
     15897    # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only.
     15898    # To allow for filename-based versioning support, we need to create
     15899    # libNAME.so.V as an archive file, containing:
     15900    # *) an Import File, referring to the versioned filename of the
     15901    #    archive as well as the shared archive member, telling the
     15902    #    bitwidth (32 or 64) of that shared object, and providing the
     15903    #    list of exported symbols of that shared object, eventually
     15904    #    decorated with the 'weak' keyword
     15905    # *) the shared object with the F_LOADONLY flag set, to really avoid
     15906    #    it being seen by the linker.
     15907    # At run time we better use the real file rather than another symlink,
     15908    # but for link time we create the symlink libNAME.so -> libNAME.so.V
     15909
     15910    case $with_aix_soname,$aix_use_runtimelinking in
     15911    # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct
     15912    # soname into executable. Probably we can add versioning support to
     15913    # collect2, so additional links can be useful in future.
     15914    aix,yes) # traditional libtool
     15915      dynamic_linker='AIX unversionable lib.so'
     15916      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
     15917      # instead of lib<name>.a to let people know that these are not
     15918      # typical AIX shared libraries.
     15919      library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
     15920      ;;
     15921    aix,no) # traditional AIX only
     15922      dynamic_linker='AIX lib.a(lib.so.V)'
     15923      # We preserve .a as extension for shared libraries through AIX4.2
     15924      # and later when we are not doing run time linking.
     15925      library_names_spec='$libname$release.a $libname.a'
     15926      soname_spec='$libname$release$shared_ext$major'
     15927      ;;
     15928    svr4,*) # full svr4 only
     15929      dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)"
     15930      library_names_spec='$libname$release$shared_ext$major $libname$shared_ext'
     15931      # We do not specify a path in Import Files, so LIBPATH fires.
     15932      shlibpath_overrides_runpath=yes
     15933      ;;
     15934    *,yes) # both, prefer svr4
     15935      dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)"
     15936      library_names_spec='$libname$release$shared_ext$major $libname$shared_ext'
     15937      # unpreferred sharedlib libNAME.a needs extra handling
     15938      postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"'
     15939      postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"'
     15940      # We do not specify a path in Import Files, so LIBPATH fires.
     15941      shlibpath_overrides_runpath=yes
     15942      ;;
     15943    *,no) # both, prefer aix
     15944      dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)"
     15945      library_names_spec='$libname$release.a $libname.a'
     15946      soname_spec='$libname$release$shared_ext$major'
     15947      # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling
     15948      postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)'
     15949      postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"'
     15950      ;;
     15951    esac
     15952    shlibpath_var=LIBPATH
     15953  fi
     15954  ;;
     15955
     15956amigaos*)
     15957  case $host_cpu in
     15958  powerpc)
     15959    # Since July 2007 AmigaOS4 officially supports .so libraries.
     15960    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
     15961    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
     15962    ;;
     15963  m68k)
     15964    library_names_spec='$libname.ixlibrary $libname.a'
     15965    # Create ${libname}_ixlibrary.a entries in /sys/libs.
     15966    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
     15967    ;;
     15968  esac
     15969  ;;
     15970
     15971beos*)
     15972  library_names_spec='$libname$shared_ext'
     15973  dynamic_linker="$host_os ld.so"
     15974  shlibpath_var=LIBRARY_PATH
     15975  ;;
     15976
     15977bsdi[45]*)
     15978  version_type=linux # correct to gnu/linux during the next big refactor
     15979  need_version=no
     15980  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
     15981  soname_spec='$libname$release$shared_ext$major'
     15982  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
     15983  shlibpath_var=LD_LIBRARY_PATH
     15984  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
     15985  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
     15986  # the default ld.so.conf also contains /usr/contrib/lib and
     15987  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
     15988  # libtool to hard-code these into programs
     15989  ;;
     15990
     15991cygwin* | mingw* | pw32* | cegcc*)
     15992  version_type=windows
     15993  shrext_cmds=.dll
     15994  need_version=no
     15995  need_lib_prefix=no
     15996
     15997  case $GCC,$cc_basename in
     15998  yes,*)
     15999    # gcc
     16000    library_names_spec='$libname.dll.a'
     16001    # DLL is installed to $(libdir)/../bin by postinstall_cmds
     16002    postinstall_cmds='base_file=`basename \$file`~
     16003      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
     16004      dldir=$destdir/`dirname \$dlpath`~
     16005      test -d \$dldir || mkdir -p \$dldir~
     16006      $install_prog $dir/$dlname \$dldir/$dlname~
     16007      chmod a+x \$dldir/$dlname~
     16008      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
     16009        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
     16010      fi'
     16011    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
     16012      dlpath=$dir/\$dldll~
     16013       $RM \$dlpath'
     16014    shlibpath_overrides_runpath=yes
     16015
     16016    case $host_os in
     16017    cygwin*)
     16018      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
     16019      soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
     16020
     16021      ;;
     16022    mingw* | cegcc*)
     16023      # MinGW DLLs use traditional 'lib' prefix
     16024      soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
     16025      ;;
     16026    pw32*)
     16027      # pw32 DLLs use 'pw' prefix rather than 'lib'
     16028      library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
     16029      ;;
     16030    esac
     16031    dynamic_linker='Win32 ld.exe'
     16032    ;;
     16033
     16034  *,cl*)
     16035    # Native MSVC
     16036    libname_spec='$name'
     16037    soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
     16038    library_names_spec='$libname.dll.lib'
     16039
     16040    case $build_os in
     16041    mingw*)
     16042      sys_lib_search_path_spec=
     16043      lt_save_ifs=$IFS
     16044      IFS=';'
     16045      for lt_path in $LIB
     16046      do
     16047        IFS=$lt_save_ifs
     16048        # Let DOS variable expansion print the short 8.3 style file name.
     16049        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
     16050        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
     16051      done
     16052      IFS=$lt_save_ifs
     16053      # Convert to MSYS style.
     16054      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
     16055      ;;
     16056    cygwin*)
     16057      # Convert to unix form, then to dos form, then back to unix form
     16058      # but this time dos style (no spaces!) so that the unix form looks
     16059      # like /cygdrive/c/PROGRA~1:/cygdr...
     16060      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
     16061      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
     16062      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
     16063      ;;
     16064    *)
     16065      sys_lib_search_path_spec=$LIB
     16066      if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
     16067        # It is most probably a Windows format PATH.
     16068        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
     16069      else
     16070        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
     16071      fi
     16072      # FIXME: find the short name or the path components, as spaces are
     16073      # common. (e.g. "Program Files" -> "PROGRA~1")
     16074      ;;
     16075    esac
     16076
     16077    # DLL is installed to $(libdir)/../bin by postinstall_cmds
     16078    postinstall_cmds='base_file=`basename \$file`~
     16079      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
     16080      dldir=$destdir/`dirname \$dlpath`~
     16081      test -d \$dldir || mkdir -p \$dldir~
     16082      $install_prog $dir/$dlname \$dldir/$dlname'
     16083    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
     16084      dlpath=$dir/\$dldll~
     16085       $RM \$dlpath'
     16086    shlibpath_overrides_runpath=yes
     16087    dynamic_linker='Win32 link.exe'
     16088    ;;
     16089
     16090  *)
     16091    # Assume MSVC wrapper
     16092    library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib'
     16093    dynamic_linker='Win32 ld.exe'
     16094    ;;
     16095  esac
     16096  # FIXME: first we should search . and the directory the executable is in
     16097  shlibpath_var=PATH
     16098  ;;
     16099
     16100darwin* | rhapsody*)
     16101  dynamic_linker="$host_os dyld"
     16102  version_type=darwin
     16103  need_lib_prefix=no
     16104  need_version=no
     16105  library_names_spec='$libname$release$major$shared_ext $libname$shared_ext'
     16106  soname_spec='$libname$release$major$shared_ext'
     16107  shlibpath_overrides_runpath=yes
     16108  shlibpath_var=DYLD_LIBRARY_PATH
     16109  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
     16110
     16111  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
     16112  ;;
     16113
     16114dgux*)
     16115  version_type=linux # correct to gnu/linux during the next big refactor
     16116  need_lib_prefix=no
     16117  need_version=no
     16118  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
     16119  soname_spec='$libname$release$shared_ext$major'
     16120  shlibpath_var=LD_LIBRARY_PATH
     16121  ;;
     16122
     16123freebsd* | dragonfly*)
     16124  # DragonFly does not have aout.  When/if they implement a new
     16125  # versioning mechanism, adjust this.
     16126  if test -x /usr/bin/objformat; then
     16127    objformat=`/usr/bin/objformat`
     16128  else
     16129    case $host_os in
     16130    freebsd[23].*) objformat=aout ;;
     16131    *) objformat=elf ;;
     16132    esac
     16133  fi
     16134  version_type=freebsd-$objformat
     16135  case $version_type in
     16136    freebsd-elf*)
     16137      library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
     16138      soname_spec='$libname$release$shared_ext$major'
     16139      need_version=no
     16140      need_lib_prefix=no
     16141      ;;
     16142    freebsd-*)
     16143      library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
     16144      need_version=yes
     16145      ;;
     16146  esac
     16147  shlibpath_var=LD_LIBRARY_PATH
     16148  case $host_os in
     16149  freebsd2.*)
     16150    shlibpath_overrides_runpath=yes
     16151    ;;
     16152  freebsd3.[01]* | freebsdelf3.[01]*)
     16153    shlibpath_overrides_runpath=yes
     16154    hardcode_into_libs=yes
     16155    ;;
     16156  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
     16157  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
     16158    shlibpath_overrides_runpath=no
     16159    hardcode_into_libs=yes
     16160    ;;
     16161  *) # from 4.6 on, and DragonFly
     16162    shlibpath_overrides_runpath=yes
     16163    hardcode_into_libs=yes
     16164    ;;
     16165  esac
     16166  ;;
     16167
     16168haiku*)
     16169  version_type=linux # correct to gnu/linux during the next big refactor
     16170  need_lib_prefix=no
     16171  need_version=no
     16172  dynamic_linker="$host_os runtime_loader"
     16173  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
     16174  soname_spec='$libname$release$shared_ext$major'
     16175  shlibpath_var=LIBRARY_PATH
     16176  shlibpath_overrides_runpath=no
     16177  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
     16178  hardcode_into_libs=yes
     16179  ;;
     16180
     16181hpux9* | hpux10* | hpux11*)
     16182  # Give a soname corresponding to the major version so that dld.sl refuses to
     16183  # link against other versions.
     16184  version_type=sunos
     16185  need_lib_prefix=no
     16186  need_version=no
     16187  case $host_cpu in
     16188  ia64*)
     16189    shrext_cmds='.so'
     16190    hardcode_into_libs=yes
     16191    dynamic_linker="$host_os dld.so"
     16192    shlibpath_var=LD_LIBRARY_PATH
     16193    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
     16194    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
     16195    soname_spec='$libname$release$shared_ext$major'
     16196    if test 32 = "$HPUX_IA64_MODE"; then
     16197      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
     16198      sys_lib_dlsearch_path_spec=/usr/lib/hpux32
     16199    else
     16200      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
     16201      sys_lib_dlsearch_path_spec=/usr/lib/hpux64
     16202    fi
     16203    ;;
     16204  hppa*64*)
     16205    shrext_cmds='.sl'
     16206    hardcode_into_libs=yes
     16207    dynamic_linker="$host_os dld.sl"
     16208    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
     16209    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
     16210    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
     16211    soname_spec='$libname$release$shared_ext$major'
     16212    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
     16213    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
     16214    ;;
     16215  *)
     16216    shrext_cmds='.sl'
     16217    dynamic_linker="$host_os dld.sl"
     16218    shlibpath_var=SHLIB_PATH
     16219    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
     16220    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
     16221    soname_spec='$libname$release$shared_ext$major'
     16222    ;;
     16223  esac
     16224  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
     16225  postinstall_cmds='chmod 555 $lib'
     16226  # or fails outright, so override atomically:
     16227  install_override_mode=555
     16228  ;;
     16229
     16230interix[3-9]*)
     16231  version_type=linux # correct to gnu/linux during the next big refactor
     16232  need_lib_prefix=no
     16233  need_version=no
     16234  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
     16235  soname_spec='$libname$release$shared_ext$major'
     16236  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
     16237  shlibpath_var=LD_LIBRARY_PATH
     16238  shlibpath_overrides_runpath=no
     16239  hardcode_into_libs=yes
     16240  ;;
     16241
     16242irix5* | irix6* | nonstopux*)
     16243  case $host_os in
     16244    nonstopux*) version_type=nonstopux ;;
     16245    *)
     16246        if test yes = "$lt_cv_prog_gnu_ld"; then
     16247                version_type=linux # correct to gnu/linux during the next big refactor
     16248        else
     16249                version_type=irix
     16250        fi ;;
     16251  esac
     16252  need_lib_prefix=no
     16253  need_version=no
     16254  soname_spec='$libname$release$shared_ext$major'
     16255  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext'
     16256  case $host_os in
     16257  irix5* | nonstopux*)
     16258    libsuff= shlibsuff=
     16259    ;;
     16260  *)
     16261    case $LD in # libtool.m4 will add one of these switches to LD
     16262    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
     16263      libsuff= shlibsuff= libmagic=32-bit;;
     16264    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
     16265      libsuff=32 shlibsuff=N32 libmagic=N32;;
     16266    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
     16267      libsuff=64 shlibsuff=64 libmagic=64-bit;;
     16268    *) libsuff= shlibsuff= libmagic=never-match;;
     16269    esac
     16270    ;;
     16271  esac
     16272  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
     16273  shlibpath_overrides_runpath=no
     16274  sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff"
     16275  sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff"
     16276  hardcode_into_libs=yes
     16277  ;;
     16278
     16279# No shared lib support for Linux oldld, aout, or coff.
     16280linux*oldld* | linux*aout* | linux*coff*)
     16281  dynamic_linker=no
     16282  ;;
     16283
     16284linux*android*)
     16285  version_type=none # Android doesn't support versioned libraries.
     16286  need_lib_prefix=no
     16287  need_version=no
     16288  library_names_spec='$libname$release$shared_ext'
     16289  soname_spec='$libname$release$shared_ext'
     16290  finish_cmds=
     16291  shlibpath_var=LD_LIBRARY_PATH
     16292  shlibpath_overrides_runpath=yes
     16293
     16294  # This implies no fast_install, which is unacceptable.
     16295  # Some rework will be needed to allow for fast_install
     16296  # before this can be enabled.
     16297  hardcode_into_libs=yes
     16298
     16299  dynamic_linker='Android linker'
     16300  # Don't embed -rpath directories since the linker doesn't support them.
     16301  hardcode_libdir_flag_spec_CXX='-L$libdir'
     16302  ;;
     16303
     16304# This must be glibc/ELF.
     16305linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
     16306  version_type=linux # correct to gnu/linux during the next big refactor
     16307  need_lib_prefix=no
     16308  need_version=no
     16309  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
     16310  soname_spec='$libname$release$shared_ext$major'
     16311  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
     16312  shlibpath_var=LD_LIBRARY_PATH
     16313  shlibpath_overrides_runpath=no
     16314
     16315  # Some binutils ld are patched to set DT_RUNPATH
     16316  if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
     16317  $as_echo_n "(cached) " >&6
     16318else
     16319  lt_cv_shlibpath_overrides_runpath=no
     16320    save_LDFLAGS=$LDFLAGS
     16321    save_libdir=$libdir
     16322    eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \
     16323         LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\""
     16324    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
     16325/* end confdefs.h.  */
     16326
     16327int
     16328main ()
     16329{
     16330
     16331  ;
     16332  return 0;
     16333}
     16334_ACEOF
     16335if ac_fn_cxx_try_link "$LINENO"; then :
     16336  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
     16337  lt_cv_shlibpath_overrides_runpath=yes
     16338fi
     16339fi
     16340rm -f core conftest.err conftest.$ac_objext \
     16341    conftest$ac_exeext conftest.$ac_ext
     16342    LDFLAGS=$save_LDFLAGS
     16343    libdir=$save_libdir
     16344
     16345fi
     16346
     16347  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
     16348
     16349  # This implies no fast_install, which is unacceptable.
     16350  # Some rework will be needed to allow for fast_install
     16351  # before this can be enabled.
     16352  hardcode_into_libs=yes
     16353
     16354  # Ideally, we could use ldconfig to report *all* directores which are
     16355  # searched for libraries, however this is still not possible.  Aside from not
     16356  # being certain /sbin/ldconfig is available, command
     16357  # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64,
     16358  # even though it is searched at run-time.  Try to do the best guess by
     16359  # appending ld.so.conf contents (and includes) to the search path.
     16360  if test -f /etc/ld.so.conf; then
     16361    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[       ]*hwcap[        ]/d;s/[:,      ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
     16362    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
     16363  fi
     16364
     16365  # We used to test for /lib/ld.so.1 and disable shared libraries on
     16366  # powerpc, because MkLinux only supported shared libraries with the
     16367  # GNU dynamic linker.  Since this was broken with cross compilers,
     16368  # most powerpc-linux boxes support dynamic linking these days and
     16369  # people can always --disable-shared, the test was removed, and we
     16370  # assume the GNU/Linux dynamic linker is in use.
     16371  dynamic_linker='GNU/Linux ld.so'
     16372  ;;
     16373
     16374netbsdelf*-gnu)
     16375  version_type=linux
     16376  need_lib_prefix=no
     16377  need_version=no
     16378  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
     16379  soname_spec='${libname}${release}${shared_ext}$major'
     16380  shlibpath_var=LD_LIBRARY_PATH
     16381  shlibpath_overrides_runpath=no
     16382  hardcode_into_libs=yes
     16383  dynamic_linker='NetBSD ld.elf_so'
     16384  ;;
     16385
     16386netbsd*)
     16387  version_type=sunos
     16388  need_lib_prefix=no
     16389  need_version=no
     16390  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
     16391    library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
     16392    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
     16393    dynamic_linker='NetBSD (a.out) ld.so'
     16394  else
     16395    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
     16396    soname_spec='$libname$release$shared_ext$major'
     16397    dynamic_linker='NetBSD ld.elf_so'
     16398  fi
     16399  shlibpath_var=LD_LIBRARY_PATH
     16400  shlibpath_overrides_runpath=yes
     16401  hardcode_into_libs=yes
     16402  ;;
     16403
     16404newsos6)
     16405  version_type=linux # correct to gnu/linux during the next big refactor
     16406  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
     16407  shlibpath_var=LD_LIBRARY_PATH
     16408  shlibpath_overrides_runpath=yes
     16409  ;;
     16410
     16411*nto* | *qnx*)
     16412  version_type=qnx
     16413  need_lib_prefix=no
     16414  need_version=no
     16415  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
     16416  soname_spec='$libname$release$shared_ext$major'
     16417  shlibpath_var=LD_LIBRARY_PATH
     16418  shlibpath_overrides_runpath=no
     16419  hardcode_into_libs=yes
     16420  dynamic_linker='ldqnx.so'
     16421  ;;
     16422
     16423openbsd* | bitrig*)
     16424  version_type=sunos
     16425  sys_lib_dlsearch_path_spec=/usr/lib
     16426  need_lib_prefix=no
     16427  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
     16428    need_version=no
     16429  else
     16430    need_version=yes
     16431  fi
     16432  library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
     16433  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
     16434  shlibpath_var=LD_LIBRARY_PATH
     16435  shlibpath_overrides_runpath=yes
     16436  ;;
     16437
     16438os2*)
     16439  libname_spec='$name'
     16440  version_type=windows
     16441  shrext_cmds=.dll
     16442  need_version=no
     16443  need_lib_prefix=no
     16444  # OS/2 can only load a DLL with a base name of 8 characters or less.
     16445  soname_spec='`test -n "$os2dllname" && libname="$os2dllname";
     16446    v=$($ECHO $release$versuffix | tr -d .-);
     16447    n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _);
     16448    $ECHO $n$v`$shared_ext'
     16449  library_names_spec='${libname}_dll.$libext'
     16450  dynamic_linker='OS/2 ld.exe'
     16451  shlibpath_var=BEGINLIBPATH
     16452  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
     16453  sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
     16454  postinstall_cmds='base_file=`basename \$file`~
     16455    dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~
     16456    dldir=$destdir/`dirname \$dlpath`~
     16457    test -d \$dldir || mkdir -p \$dldir~
     16458    $install_prog $dir/$dlname \$dldir/$dlname~
     16459    chmod a+x \$dldir/$dlname~
     16460    if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
     16461      eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
     16462    fi'
     16463  postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~
     16464    dlpath=$dir/\$dldll~
     16465    $RM \$dlpath'
     16466  ;;
     16467
     16468osf3* | osf4* | osf5*)
     16469  version_type=osf
     16470  need_lib_prefix=no
     16471  need_version=no
     16472  soname_spec='$libname$release$shared_ext$major'
     16473  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
     16474  shlibpath_var=LD_LIBRARY_PATH
     16475  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
     16476  sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
     16477  ;;
     16478
     16479rdos*)
     16480  dynamic_linker=no
     16481  ;;
     16482
     16483solaris*)
     16484  version_type=linux # correct to gnu/linux during the next big refactor
     16485  need_lib_prefix=no
     16486  need_version=no
     16487  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
     16488  soname_spec='$libname$release$shared_ext$major'
     16489  shlibpath_var=LD_LIBRARY_PATH
     16490  shlibpath_overrides_runpath=yes
     16491  hardcode_into_libs=yes
     16492  # ldd complains unless libraries are executable
     16493  postinstall_cmds='chmod +x $lib'
     16494  ;;
     16495
     16496sunos4*)
     16497  version_type=sunos
     16498  library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
     16499  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
     16500  shlibpath_var=LD_LIBRARY_PATH
     16501  shlibpath_overrides_runpath=yes
     16502  if test yes = "$with_gnu_ld"; then
     16503    need_lib_prefix=no
     16504  fi
     16505  need_version=yes
     16506  ;;
     16507
     16508sysv4 | sysv4.3*)
     16509  version_type=linux # correct to gnu/linux during the next big refactor
     16510  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
     16511  soname_spec='$libname$release$shared_ext$major'
     16512  shlibpath_var=LD_LIBRARY_PATH
     16513  case $host_vendor in
     16514    sni)
     16515      shlibpath_overrides_runpath=no
     16516      need_lib_prefix=no
     16517      runpath_var=LD_RUN_PATH
     16518      ;;
     16519    siemens)
     16520      need_lib_prefix=no
     16521      ;;
     16522    motorola)
     16523      need_lib_prefix=no
     16524      need_version=no
     16525      shlibpath_overrides_runpath=no
     16526      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
     16527      ;;
     16528  esac
     16529  ;;
     16530
     16531sysv4*MP*)
     16532  if test -d /usr/nec; then
     16533    version_type=linux # correct to gnu/linux during the next big refactor
     16534    library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext'
     16535    soname_spec='$libname$shared_ext.$major'
     16536    shlibpath_var=LD_LIBRARY_PATH
     16537  fi
     16538  ;;
     16539
     16540sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
     16541  version_type=sco
     16542  need_lib_prefix=no
     16543  need_version=no
     16544  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext'
     16545  soname_spec='$libname$release$shared_ext$major'
     16546  shlibpath_var=LD_LIBRARY_PATH
     16547  shlibpath_overrides_runpath=yes
     16548  hardcode_into_libs=yes
     16549  if test yes = "$with_gnu_ld"; then
     16550    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
     16551  else
     16552    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
     16553    case $host_os in
     16554      sco3.2v5*)
     16555        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
     16556        ;;
     16557    esac
     16558  fi
     16559  sys_lib_dlsearch_path_spec='/usr/lib'
     16560  ;;
     16561
     16562tpf*)
     16563  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
     16564  version_type=linux # correct to gnu/linux during the next big refactor
     16565  need_lib_prefix=no
     16566  need_version=no
     16567  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
     16568  shlibpath_var=LD_LIBRARY_PATH
     16569  shlibpath_overrides_runpath=no
     16570  hardcode_into_libs=yes
     16571  ;;
     16572
     16573uts4*)
     16574  version_type=linux # correct to gnu/linux during the next big refactor
     16575  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
     16576  soname_spec='$libname$release$shared_ext$major'
     16577  shlibpath_var=LD_LIBRARY_PATH
     16578  ;;
     16579
     16580*)
     16581  dynamic_linker=no
     16582  ;;
     16583esac
     16584{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
     16585$as_echo "$dynamic_linker" >&6; }
     16586test no = "$dynamic_linker" && can_build_shared=no
     16587
     16588variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
     16589if test yes = "$GCC"; then
     16590  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
     16591fi
     16592
     16593if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then
     16594  sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec
     16595fi
     16596
     16597if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then
     16598  sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec
     16599fi
     16600
     16601# remember unaugmented sys_lib_dlsearch_path content for libtool script decls...
     16602configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec
     16603
     16604# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code
     16605func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH"
     16606
     16607# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool
     16608configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH
     16609
     16610
     16611
     16612
     16613
     16614
     16615
     16616
     16617
     16618
     16619
     16620
     16621
     16622
     16623
     16624
     16625
     16626
     16627
     16628
     16629
     16630
     16631
     16632
     16633
     16634
     16635
     16636
     16637
     16638
     16639
     16640
     16641
     16642
     16643
     16644
     16645
     16646
     16647
     16648
     16649    { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
     16650$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
     16651hardcode_action_CXX=
     16652if test -n "$hardcode_libdir_flag_spec_CXX" ||
     16653   test -n "$runpath_var_CXX" ||
     16654   test yes = "$hardcode_automatic_CXX"; then
     16655
     16656  # We can hardcode non-existent directories.
     16657  if test no != "$hardcode_direct_CXX" &&
     16658     # If the only mechanism to avoid hardcoding is shlibpath_var, we
     16659     # have to relink, otherwise we might link with an installed library
     16660     # when we should be linking with a yet-to-be-installed one
     16661     ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" &&
     16662     test no != "$hardcode_minus_L_CXX"; then
     16663    # Linking always hardcodes the temporary library directory.
     16664    hardcode_action_CXX=relink
     16665  else
     16666    # We can link without hardcoding, and we can hardcode nonexisting dirs.
     16667    hardcode_action_CXX=immediate
     16668  fi
     16669else
     16670  # We cannot hardcode anything, or else we can only hardcode existing
     16671  # directories.
     16672  hardcode_action_CXX=unsupported
     16673fi
     16674{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5
     16675$as_echo "$hardcode_action_CXX" >&6; }
     16676
     16677if test relink = "$hardcode_action_CXX" ||
     16678   test yes = "$inherit_rpath_CXX"; then
     16679  # Fast installation is not supported
     16680  enable_fast_install=no
     16681elif test yes = "$shlibpath_overrides_runpath" ||
     16682     test no = "$enable_shared"; then
     16683  # Fast installation is not necessary
     16684  enable_fast_install=needless
     16685fi
     16686
     16687
     16688
     16689
     16690
     16691
     16692
     16693  fi # test -n "$compiler"
     16694
     16695  CC=$lt_save_CC
     16696  CFLAGS=$lt_save_CFLAGS
     16697  LDCXX=$LD
     16698  LD=$lt_save_LD
     16699  GCC=$lt_save_GCC
     16700  with_gnu_ld=$lt_save_with_gnu_ld
     16701  lt_cv_path_LDCXX=$lt_cv_path_LD
     16702  lt_cv_path_LD=$lt_save_path_LD
     16703  lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
     16704  lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
     16705fi # test yes != "$_lt_caught_CXX_error"
     16706
     16707ac_ext=c
     16708ac_cpp='$CPP $CPPFLAGS'
     16709ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
     16710ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
     16711ac_compiler_gnu=$ac_cv_c_compiler_gnu
     16712
     16713
     16714
     16715
     16716
     16717
     16718
     16719
     16720
     16721
     16722
     16723
     16724
     16725
     16726
     16727        ac_config_commands="$ac_config_commands libtool"
     16728
     16729
     16730
     16731
     16732# Only expand once:
     16733
     16734
     16735
     16736{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
     16737$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
     16738set x ${MAKE-make}
     16739ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
     16740if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
     16741  $as_echo_n "(cached) " >&6
     16742else
     16743  cat >conftest.make <<\_ACEOF
     16744SHELL = /bin/sh
     16745all:
     16746        @echo '@@@%%%=$(MAKE)=@@@%%%'
     16747_ACEOF
     16748# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
     16749case `${MAKE-make} -f conftest.make 2>/dev/null` in
     16750  *@@@%%%=?*=@@@%%%*)
     16751    eval ac_cv_prog_make_${ac_make}_set=yes;;
     16752  *)
     16753    eval ac_cv_prog_make_${ac_make}_set=no;;
     16754esac
     16755rm -f conftest.make
     16756fi
     16757if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
     16758  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
     16759$as_echo "yes" >&6; }
     16760  SET_MAKE=
     16761else
     16762  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
     16763$as_echo "no" >&6; }
     16764  SET_MAKE="MAKE=${MAKE-make}"
     16765fi
     16766
     16767
     16768# Checks for libraries.
     16769{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fibre::yield in -lfibre" >&5
     16770$as_echo_n "checking for Fibre::yield in -lfibre... " >&6; }
     16771if ${ac_cv_lib_fibre_Fibre__yield+:} false; then :
     16772  $as_echo_n "(cached) " >&6
     16773else
     16774  ac_check_lib_save_LIBS=$LIBS
     16775LIBS="-lfibre  $LIBS"
     16776cat confdefs.h - <<_ACEOF >conftest.$ac_ext
     16777/* end confdefs.h.  */
     16778
     16779/* Override any GCC internal prototype to avoid an error.
     16780   Use char because int might match the return type of a GCC
     16781   builtin and then its argument prototype would still apply.  */
     16782#ifdef __cplusplus
     16783extern "C"
     16784#endif
     16785char Fibre::yield ();
     16786int
     16787main ()
     16788{
     16789return Fibre::yield ();
     16790  ;
     16791  return 0;
     16792}
     16793_ACEOF
     16794if ac_fn_c_try_link "$LINENO"; then :
     16795  ac_cv_lib_fibre_Fibre__yield=yes
     16796else
     16797  ac_cv_lib_fibre_Fibre__yield=no
     16798fi
     16799rm -f core conftest.err conftest.$ac_objext \
     16800    conftest$ac_exeext conftest.$ac_ext
     16801LIBS=$ac_check_lib_save_LIBS
     16802fi
     16803{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_fibre_Fibre__yield" >&5
     16804$as_echo "$ac_cv_lib_fibre_Fibre__yield" >&6; }
     16805if test "x$ac_cv_lib_fibre_Fibre__yield" = xyes; then :
     16806  HAVE_LIBFIBRE=1
     16807else
     16808  HAVE_LIBFIBRE=0
     16809fi
     16810
     16811 if test "$HAVE_LIBFIBRE" -eq 1; then
     16812  WITH_LIBFIBRE_TRUE=
     16813  WITH_LIBFIBRE_FALSE='#'
     16814else
     16815  WITH_LIBFIBRE_TRUE='#'
     16816  WITH_LIBFIBRE_FALSE=
     16817fi
     16818
     16819
     16820# Checks for header files.
    589316821ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
    589416822if test "x$ac_cv_type_size_t" = xyes; then :
     
    638117309fi
    638217310done
     17311
     17312
     17313#==============================================================================
     17314# backend compiler implementation
     17315
     17316cat >>confdefs.h <<_ACEOF
     17317#define CFA_BACKEND_CC "${CC}"
     17318_ACEOF
     17319
    638317320
    638417321
     
    712518062AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
    712618063
     18064
     18065# The HP-UX ksh and POSIX shell print the target directory to stdout
     18066# if CDPATH is set.
     18067(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
     18068
     18069sed_quote_subst='$sed_quote_subst'
     18070double_quote_subst='$double_quote_subst'
     18071delay_variable_subst='$delay_variable_subst'
     18072macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`'
     18073macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`'
     18074enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`'
     18075enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`'
     18076pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`'
     18077enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
     18078shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`'
     18079SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
     18080ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`'
     18081PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`'
     18082host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`'
     18083host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`'
     18084host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`'
     18085build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`'
     18086build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`'
     18087build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`'
     18088SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`'
     18089Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`'
     18090GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`'
     18091EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`'
     18092FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`'
     18093LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`'
     18094NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`'
     18095LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`'
     18096max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`'
     18097ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`'
     18098exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
     18099lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
     18100lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
     18101lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
     18102lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`'
     18103lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
     18104reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
     18105reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
     18106OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
     18107deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
     18108file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
     18109file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
     18110want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
     18111DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
     18112sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
     18113AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
     18114AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
     18115archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
     18116STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
     18117RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
     18118old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
     18119old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
     18120old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`'
     18121lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`'
     18122CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`'
     18123CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`'
     18124compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`'
     18125GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`'
     18126lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`'
     18127lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
     18128lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`'
     18129lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
     18130lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
     18131lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`'
     18132nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
     18133lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
     18134lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`'
     18135objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
     18136MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
     18137lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
     18138lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
     18139lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
     18140lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
     18141lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
     18142need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
     18143MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`'
     18144DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
     18145NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
     18146LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
     18147OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`'
     18148OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`'
     18149libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`'
     18150shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`'
     18151extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
     18152archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`'
     18153enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`'
     18154export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`'
     18155whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`'
     18156compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`'
     18157old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`'
     18158old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
     18159archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`'
     18160archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`'
     18161module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`'
     18162module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`'
     18163with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`'
     18164allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`'
     18165no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`'
     18166hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`'
     18167hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`'
     18168hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`'
     18169hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`'
     18170hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`'
     18171hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`'
     18172hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
     18173inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
     18174link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
     18175always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
     18176export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
     18177exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
     18178include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
     18179prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
     18180postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`'
     18181file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
     18182variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
     18183need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
     18184need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`'
     18185version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`'
     18186runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`'
     18187shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`'
     18188shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`'
     18189libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`'
     18190library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`'
     18191soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`'
     18192install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`'
     18193postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`'
     18194postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
     18195finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`'
     18196finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`'
     18197hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`'
     18198sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`'
     18199configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`'
     18200configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`'
     18201hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`'
     18202enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`'
     18203enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`'
     18204enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`'
     18205old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`'
     18206striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`'
     18207compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`'
     18208predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`'
     18209postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`'
     18210predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`'
     18211postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`'
     18212compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`'
     18213LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`'
     18214reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`'
     18215reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`'
     18216old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`'
     18217compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`'
     18218GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`'
     18219lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`'
     18220lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`'
     18221lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`'
     18222lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`'
     18223lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`'
     18224archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`'
     18225enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`'
     18226export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
     18227whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
     18228compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`'
     18229old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`'
     18230old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`'
     18231archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`'
     18232archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`'
     18233module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`'
     18234module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`'
     18235with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`'
     18236allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`'
     18237no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`'
     18238hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
     18239hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`'
     18240hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`'
     18241hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`'
     18242hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`'
     18243hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`'
     18244hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`'
     18245inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`'
     18246link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`'
     18247always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`'
     18248export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`'
     18249exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`'
     18250include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`'
     18251prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`'
     18252postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`'
     18253file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`'
     18254hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`'
     18255compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`'
     18256predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`'
     18257postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`'
     18258predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`'
     18259postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`'
     18260compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`'
     18261
     18262LTCC='$LTCC'
     18263LTCFLAGS='$LTCFLAGS'
     18264compiler='$compiler_DEFAULT'
     18265
     18266# A function that is used when there is no print builtin or printf.
     18267func_fallback_echo ()
     18268{
     18269  eval 'cat <<_LTECHO_EOF
     18270\$1
     18271_LTECHO_EOF'
     18272}
     18273
     18274# Quote evaled strings.
     18275for var in SHELL \
     18276ECHO \
     18277PATH_SEPARATOR \
     18278SED \
     18279GREP \
     18280EGREP \
     18281FGREP \
     18282LD \
     18283NM \
     18284LN_S \
     18285lt_SP2NL \
     18286lt_NL2SP \
     18287reload_flag \
     18288OBJDUMP \
     18289deplibs_check_method \
     18290file_magic_cmd \
     18291file_magic_glob \
     18292want_nocaseglob \
     18293DLLTOOL \
     18294sharedlib_from_linklib_cmd \
     18295AR \
     18296AR_FLAGS \
     18297archiver_list_spec \
     18298STRIP \
     18299RANLIB \
     18300CC \
     18301CFLAGS \
     18302compiler \
     18303lt_cv_sys_global_symbol_pipe \
     18304lt_cv_sys_global_symbol_to_cdecl \
     18305lt_cv_sys_global_symbol_to_import \
     18306lt_cv_sys_global_symbol_to_c_name_address \
     18307lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
     18308lt_cv_nm_interface \
     18309nm_file_list_spec \
     18310lt_cv_truncate_bin \
     18311lt_prog_compiler_no_builtin_flag \
     18312lt_prog_compiler_pic \
     18313lt_prog_compiler_wl \
     18314lt_prog_compiler_static \
     18315lt_cv_prog_compiler_c_o \
     18316need_locks \
     18317MANIFEST_TOOL \
     18318DSYMUTIL \
     18319NMEDIT \
     18320LIPO \
     18321OTOOL \
     18322OTOOL64 \
     18323shrext_cmds \
     18324export_dynamic_flag_spec \
     18325whole_archive_flag_spec \
     18326compiler_needs_object \
     18327with_gnu_ld \
     18328allow_undefined_flag \
     18329no_undefined_flag \
     18330hardcode_libdir_flag_spec \
     18331hardcode_libdir_separator \
     18332exclude_expsyms \
     18333include_expsyms \
     18334file_list_spec \
     18335variables_saved_for_relink \
     18336libname_spec \
     18337library_names_spec \
     18338soname_spec \
     18339install_override_mode \
     18340finish_eval \
     18341old_striplib \
     18342striplib \
     18343compiler_lib_search_dirs \
     18344predep_objects \
     18345postdep_objects \
     18346predeps \
     18347postdeps \
     18348compiler_lib_search_path \
     18349LD_CXX \
     18350reload_flag_CXX \
     18351compiler_CXX \
     18352lt_prog_compiler_no_builtin_flag_CXX \
     18353lt_prog_compiler_pic_CXX \
     18354lt_prog_compiler_wl_CXX \
     18355lt_prog_compiler_static_CXX \
     18356lt_cv_prog_compiler_c_o_CXX \
     18357export_dynamic_flag_spec_CXX \
     18358whole_archive_flag_spec_CXX \
     18359compiler_needs_object_CXX \
     18360with_gnu_ld_CXX \
     18361allow_undefined_flag_CXX \
     18362no_undefined_flag_CXX \
     18363hardcode_libdir_flag_spec_CXX \
     18364hardcode_libdir_separator_CXX \
     18365exclude_expsyms_CXX \
     18366include_expsyms_CXX \
     18367file_list_spec_CXX \
     18368compiler_lib_search_dirs_CXX \
     18369predep_objects_CXX \
     18370postdep_objects_CXX \
     18371predeps_CXX \
     18372postdeps_CXX \
     18373compiler_lib_search_path_CXX; do
     18374    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
     18375    *[\\\\\\\`\\"\\\$]*)
     18376      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes
     18377      ;;
     18378    *)
     18379      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
     18380      ;;
     18381    esac
     18382done
     18383
     18384# Double-quote double-evaled strings.
     18385for var in reload_cmds \
     18386old_postinstall_cmds \
     18387old_postuninstall_cmds \
     18388old_archive_cmds \
     18389extract_expsyms_cmds \
     18390old_archive_from_new_cmds \
     18391old_archive_from_expsyms_cmds \
     18392archive_cmds \
     18393archive_expsym_cmds \
     18394module_cmds \
     18395module_expsym_cmds \
     18396export_symbols_cmds \
     18397prelink_cmds \
     18398postlink_cmds \
     18399postinstall_cmds \
     18400postuninstall_cmds \
     18401finish_cmds \
     18402sys_lib_search_path_spec \
     18403configure_time_dlsearch_path \
     18404configure_time_lt_sys_library_path \
     18405reload_cmds_CXX \
     18406old_archive_cmds_CXX \
     18407old_archive_from_new_cmds_CXX \
     18408old_archive_from_expsyms_cmds_CXX \
     18409archive_cmds_CXX \
     18410archive_expsym_cmds_CXX \
     18411module_cmds_CXX \
     18412module_expsym_cmds_CXX \
     18413export_symbols_cmds_CXX \
     18414prelink_cmds_CXX \
     18415postlink_cmds_CXX; do
     18416    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
     18417    *[\\\\\\\`\\"\\\$]*)
     18418      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes
     18419      ;;
     18420    *)
     18421      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
     18422      ;;
     18423    esac
     18424done
     18425
     18426ac_aux_dir='$ac_aux_dir'
     18427
     18428# See if we are running on zsh, and set the options that allow our
     18429# commands through without removal of \ escapes INIT.
     18430if test -n "\${ZSH_VERSION+set}"; then
     18431   setopt NO_GLOB_SUBST
     18432fi
     18433
     18434
     18435    PACKAGE='$PACKAGE'
     18436    VERSION='$VERSION'
     18437    RM='$RM'
     18438    ofile='$ofile'
     18439
     18440
     18441
     18442
     18443
     18444
    712718445_ACEOF
    712818446
     
    713518453    "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h:src/config.h.in" ;;
    713618454    "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
     18455    "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
    713718456    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
    713818457    "driver/Makefile") CONFIG_FILES="$CONFIG_FILES driver/Makefile" ;;
     
    786519184}
    786619185 ;;
     19186    "libtool":C)
     19187
     19188    # See if we are running on zsh, and set the options that allow our
     19189    # commands through without removal of \ escapes.
     19190    if test -n "${ZSH_VERSION+set}"; then
     19191      setopt NO_GLOB_SUBST
     19192    fi
     19193
     19194    cfgfile=${ofile}T
     19195    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
     19196    $RM "$cfgfile"
     19197
     19198    cat <<_LT_EOF >> "$cfgfile"
     19199#! $SHELL
     19200# Generated automatically by $as_me ($PACKAGE) $VERSION
     19201# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
     19202# NOTE: Changes made to this file will be lost: look at ltmain.sh.
     19203
     19204# Provide generalized library-building support services.
     19205# Written by Gordon Matzigkeit, 1996
     19206
     19207# Copyright (C) 2014 Free Software Foundation, Inc.
     19208# This is free software; see the source for copying conditions.  There is NO
     19209# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
     19210
     19211# GNU Libtool is free software; you can redistribute it and/or modify
     19212# it under the terms of the GNU General Public License as published by
     19213# the Free Software Foundation; either version 2 of of the License, or
     19214# (at your option) any later version.
     19215#
     19216# As a special exception to the GNU General Public License, if you
     19217# distribute this file as part of a program or library that is built
     19218# using GNU Libtool, you may include this file under the  same
     19219# distribution terms that you use for the rest of that program.
     19220#
     19221# GNU Libtool is distributed in the hope that it will be useful, but
     19222# WITHOUT ANY WARRANTY; without even the implied warranty of
     19223# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     19224# GNU General Public License for more details.
     19225#
     19226# You should have received a copy of the GNU General Public License
     19227# along with this program.  If not, see <http://www.gnu.org/licenses/>.
     19228
     19229
     19230# The names of the tagged configurations supported by this script.
     19231available_tags='CXX '
     19232
     19233# Configured defaults for sys_lib_dlsearch_path munging.
     19234: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"}
     19235
     19236# ### BEGIN LIBTOOL CONFIG
     19237
     19238# Which release of libtool.m4 was used?
     19239macro_version=$macro_version
     19240macro_revision=$macro_revision
     19241
     19242# Whether or not to build shared libraries.
     19243build_libtool_libs=$enable_shared
     19244
     19245# Whether or not to build static libraries.
     19246build_old_libs=$enable_static
     19247
     19248# What type of objects to build.
     19249pic_mode=$pic_mode
     19250
     19251# Whether or not to optimize for fast installation.
     19252fast_install=$enable_fast_install
     19253
     19254# Shared archive member basename,for filename based shared library versioning on AIX.
     19255shared_archive_member_spec=$shared_archive_member_spec
     19256
     19257# Shell to use when invoking shell scripts.
     19258SHELL=$lt_SHELL
     19259
     19260# An echo program that protects backslashes.
     19261ECHO=$lt_ECHO
     19262
     19263# The PATH separator for the build system.
     19264PATH_SEPARATOR=$lt_PATH_SEPARATOR
     19265
     19266# The host system.
     19267host_alias=$host_alias
     19268host=$host
     19269host_os=$host_os
     19270
     19271# The build system.
     19272build_alias=$build_alias
     19273build=$build
     19274build_os=$build_os
     19275
     19276# A sed program that does not truncate output.
     19277SED=$lt_SED
     19278
     19279# Sed that helps us avoid accidentally triggering echo(1) options like -n.
     19280Xsed="\$SED -e 1s/^X//"
     19281
     19282# A grep program that handles long lines.
     19283GREP=$lt_GREP
     19284
     19285# An ERE matcher.
     19286EGREP=$lt_EGREP
     19287
     19288# A literal string matcher.
     19289FGREP=$lt_FGREP
     19290
     19291# A BSD- or MS-compatible name lister.
     19292NM=$lt_NM
     19293
     19294# Whether we need soft or hard links.
     19295LN_S=$lt_LN_S
     19296
     19297# What is the maximum length of a command?
     19298max_cmd_len=$max_cmd_len
     19299
     19300# Object file suffix (normally "o").
     19301objext=$ac_objext
     19302
     19303# Executable file suffix (normally "").
     19304exeext=$exeext
     19305
     19306# whether the shell understands "unset".
     19307lt_unset=$lt_unset
     19308
     19309# turn spaces into newlines.
     19310SP2NL=$lt_lt_SP2NL
     19311
     19312# turn newlines into spaces.
     19313NL2SP=$lt_lt_NL2SP
     19314
     19315# convert \$build file names to \$host format.
     19316to_host_file_cmd=$lt_cv_to_host_file_cmd
     19317
     19318# convert \$build files to toolchain format.
     19319to_tool_file_cmd=$lt_cv_to_tool_file_cmd
     19320
     19321# An object symbol dumper.
     19322OBJDUMP=$lt_OBJDUMP
     19323
     19324# Method to check whether dependent libraries are shared objects.
     19325deplibs_check_method=$lt_deplibs_check_method
     19326
     19327# Command to use when deplibs_check_method = "file_magic".
     19328file_magic_cmd=$lt_file_magic_cmd
     19329
     19330# How to find potential files when deplibs_check_method = "file_magic".
     19331file_magic_glob=$lt_file_magic_glob
     19332
     19333# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
     19334want_nocaseglob=$lt_want_nocaseglob
     19335
     19336# DLL creation program.
     19337DLLTOOL=$lt_DLLTOOL
     19338
     19339# Command to associate shared and link libraries.
     19340sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
     19341
     19342# The archiver.
     19343AR=$lt_AR
     19344
     19345# Flags to create an archive.
     19346AR_FLAGS=$lt_AR_FLAGS
     19347
     19348# How to feed a file listing to the archiver.
     19349archiver_list_spec=$lt_archiver_list_spec
     19350
     19351# A symbol stripping program.
     19352STRIP=$lt_STRIP
     19353
     19354# Commands used to install an old-style archive.
     19355RANLIB=$lt_RANLIB
     19356old_postinstall_cmds=$lt_old_postinstall_cmds
     19357old_postuninstall_cmds=$lt_old_postuninstall_cmds
     19358
     19359# Whether to use a lock for old archive extraction.
     19360lock_old_archive_extraction=$lock_old_archive_extraction
     19361
     19362# A C compiler.
     19363LTCC=$lt_CC
     19364
     19365# LTCC compiler flags.
     19366LTCFLAGS=$lt_CFLAGS
     19367
     19368# Take the output of nm and produce a listing of raw symbols and C names.
     19369global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
     19370
     19371# Transform the output of nm in a proper C declaration.
     19372global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
     19373
     19374# Transform the output of nm into a list of symbols to manually relocate.
     19375global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import
     19376
     19377# Transform the output of nm in a C name address pair.
     19378global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
     19379
     19380# Transform the output of nm in a C name address pair when lib prefix is needed.
     19381global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
     19382
     19383# The name lister interface.
     19384nm_interface=$lt_lt_cv_nm_interface
     19385
     19386# Specify filename containing input files for \$NM.
     19387nm_file_list_spec=$lt_nm_file_list_spec
     19388
     19389# The root where to search for dependent libraries,and where our libraries should be installed.
     19390lt_sysroot=$lt_sysroot
     19391
     19392# Command to truncate a binary pipe.
     19393lt_truncate_bin=$lt_lt_cv_truncate_bin
     19394
     19395# The name of the directory that contains temporary libtool files.
     19396objdir=$objdir
     19397
     19398# Used to examine libraries when file_magic_cmd begins with "file".
     19399MAGIC_CMD=$MAGIC_CMD
     19400
     19401# Must we lock files when doing compilation?
     19402need_locks=$lt_need_locks
     19403
     19404# Manifest tool.
     19405MANIFEST_TOOL=$lt_MANIFEST_TOOL
     19406
     19407# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
     19408DSYMUTIL=$lt_DSYMUTIL
     19409
     19410# Tool to change global to local symbols on Mac OS X.
     19411NMEDIT=$lt_NMEDIT
     19412
     19413# Tool to manipulate fat objects and archives on Mac OS X.
     19414LIPO=$lt_LIPO
     19415
     19416# ldd/readelf like tool for Mach-O binaries on Mac OS X.
     19417OTOOL=$lt_OTOOL
     19418
     19419# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
     19420OTOOL64=$lt_OTOOL64
     19421
     19422# Old archive suffix (normally "a").
     19423libext=$libext
     19424
     19425# Shared library suffix (normally ".so").
     19426shrext_cmds=$lt_shrext_cmds
     19427
     19428# The commands to extract the exported symbol list from a shared archive.
     19429extract_expsyms_cmds=$lt_extract_expsyms_cmds
     19430
     19431# Variables whose values should be saved in libtool wrapper scripts and
     19432# restored at link time.
     19433variables_saved_for_relink=$lt_variables_saved_for_relink
     19434
     19435# Do we need the "lib" prefix for modules?
     19436need_lib_prefix=$need_lib_prefix
     19437
     19438# Do we need a version for libraries?
     19439need_version=$need_version
     19440
     19441# Library versioning type.
     19442version_type=$version_type
     19443
     19444# Shared library runtime path variable.
     19445runpath_var=$runpath_var
     19446
     19447# Shared library path variable.
     19448shlibpath_var=$shlibpath_var
     19449
     19450# Is shlibpath searched before the hard-coded library search path?
     19451shlibpath_overrides_runpath=$shlibpath_overrides_runpath
     19452
     19453# Format of library name prefix.
     19454libname_spec=$lt_libname_spec
     19455
     19456# List of archive names.  First name is the real one, the rest are links.
     19457# The last name is the one that the linker finds with -lNAME
     19458library_names_spec=$lt_library_names_spec
     19459
     19460# The coded name of the library, if different from the real name.
     19461soname_spec=$lt_soname_spec
     19462
     19463# Permission mode override for installation of shared libraries.
     19464install_override_mode=$lt_install_override_mode
     19465
     19466# Command to use after installation of a shared archive.
     19467postinstall_cmds=$lt_postinstall_cmds
     19468
     19469# Command to use after uninstallation of a shared archive.
     19470postuninstall_cmds=$lt_postuninstall_cmds
     19471
     19472# Commands used to finish a libtool library installation in a directory.
     19473finish_cmds=$lt_finish_cmds
     19474
     19475# As "finish_cmds", except a single script fragment to be evaled but
     19476# not shown.
     19477finish_eval=$lt_finish_eval
     19478
     19479# Whether we should hardcode library paths into libraries.
     19480hardcode_into_libs=$hardcode_into_libs
     19481
     19482# Compile-time system search path for libraries.
     19483sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
     19484
     19485# Detected run-time system search path for libraries.
     19486sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path
     19487
     19488# Explicit LT_SYS_LIBRARY_PATH set during ./configure time.
     19489configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path
     19490
     19491# Whether dlopen is supported.
     19492dlopen_support=$enable_dlopen
     19493
     19494# Whether dlopen of programs is supported.
     19495dlopen_self=$enable_dlopen_self
     19496
     19497# Whether dlopen of statically linked programs is supported.
     19498dlopen_self_static=$enable_dlopen_self_static
     19499
     19500# Commands to strip libraries.
     19501old_striplib=$lt_old_striplib
     19502striplib=$lt_striplib
     19503
     19504
     19505# The linker used to build libraries.
     19506LD=$lt_LD
     19507
     19508# How to create reloadable object files.
     19509reload_flag=$lt_reload_flag
     19510reload_cmds=$lt_reload_cmds
     19511
     19512# Commands used to build an old-style archive.
     19513old_archive_cmds=$lt_old_archive_cmds
     19514
     19515# A language specific compiler.
     19516CC=$lt_compiler
     19517
     19518# Is the compiler the GNU compiler?
     19519with_gcc=$GCC
     19520
     19521# Compiler flag to turn off builtin functions.
     19522no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
     19523
     19524# Additional compiler flags for building library objects.
     19525pic_flag=$lt_lt_prog_compiler_pic
     19526
     19527# How to pass a linker flag through the compiler.
     19528wl=$lt_lt_prog_compiler_wl
     19529
     19530# Compiler flag to prevent dynamic linking.
     19531link_static_flag=$lt_lt_prog_compiler_static
     19532
     19533# Does compiler simultaneously support -c and -o options?
     19534compiler_c_o=$lt_lt_cv_prog_compiler_c_o
     19535
     19536# Whether or not to add -lc for building shared libraries.
     19537build_libtool_need_lc=$archive_cmds_need_lc
     19538
     19539# Whether or not to disallow shared libs when runtime libs are static.
     19540allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
     19541
     19542# Compiler flag to allow reflexive dlopens.
     19543export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
     19544
     19545# Compiler flag to generate shared objects directly from archives.
     19546whole_archive_flag_spec=$lt_whole_archive_flag_spec
     19547
     19548# Whether the compiler copes with passing no objects directly.
     19549compiler_needs_object=$lt_compiler_needs_object
     19550
     19551# Create an old-style archive from a shared archive.
     19552old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
     19553
     19554# Create a temporary old-style archive to link instead of a shared archive.
     19555old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
     19556
     19557# Commands used to build a shared archive.
     19558archive_cmds=$lt_archive_cmds
     19559archive_expsym_cmds=$lt_archive_expsym_cmds
     19560
     19561# Commands used to build a loadable module if different from building
     19562# a shared archive.
     19563module_cmds=$lt_module_cmds
     19564module_expsym_cmds=$lt_module_expsym_cmds
     19565
     19566# Whether we are building with GNU ld or not.
     19567with_gnu_ld=$lt_with_gnu_ld
     19568
     19569# Flag that allows shared libraries with undefined symbols to be built.
     19570allow_undefined_flag=$lt_allow_undefined_flag
     19571
     19572# Flag that enforces no undefined symbols.
     19573no_undefined_flag=$lt_no_undefined_flag
     19574
     19575# Flag to hardcode \$libdir into a binary during linking.
     19576# This must work even if \$libdir does not exist
     19577hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
     19578
     19579# Whether we need a single "-rpath" flag with a separated argument.
     19580hardcode_libdir_separator=$lt_hardcode_libdir_separator
     19581
     19582# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes
     19583# DIR into the resulting binary.
     19584hardcode_direct=$hardcode_direct
     19585
     19586# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes
     19587# DIR into the resulting binary and the resulting library dependency is
     19588# "absolute",i.e impossible to change by setting \$shlibpath_var if the
     19589# library is relocated.
     19590hardcode_direct_absolute=$hardcode_direct_absolute
     19591
     19592# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
     19593# into the resulting binary.
     19594hardcode_minus_L=$hardcode_minus_L
     19595
     19596# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
     19597# into the resulting binary.
     19598hardcode_shlibpath_var=$hardcode_shlibpath_var
     19599
     19600# Set to "yes" if building a shared library automatically hardcodes DIR
     19601# into the library and all subsequent libraries and executables linked
     19602# against it.
     19603hardcode_automatic=$hardcode_automatic
     19604
     19605# Set to yes if linker adds runtime paths of dependent libraries
     19606# to runtime path list.
     19607inherit_rpath=$inherit_rpath
     19608
     19609# Whether libtool must link a program against all its dependency libraries.
     19610link_all_deplibs=$link_all_deplibs
     19611
     19612# Set to "yes" if exported symbols are required.
     19613always_export_symbols=$always_export_symbols
     19614
     19615# The commands to list exported symbols.
     19616export_symbols_cmds=$lt_export_symbols_cmds
     19617
     19618# Symbols that should not be listed in the preloaded symbols.
     19619exclude_expsyms=$lt_exclude_expsyms
     19620
     19621# Symbols that must always be exported.
     19622include_expsyms=$lt_include_expsyms
     19623
     19624# Commands necessary for linking programs (against libraries) with templates.
     19625prelink_cmds=$lt_prelink_cmds
     19626
     19627# Commands necessary for finishing linking programs.
     19628postlink_cmds=$lt_postlink_cmds
     19629
     19630# Specify filename containing input files.
     19631file_list_spec=$lt_file_list_spec
     19632
     19633# How to hardcode a shared library path into an executable.
     19634hardcode_action=$hardcode_action
     19635
     19636# The directories searched by this compiler when creating a shared library.
     19637compiler_lib_search_dirs=$lt_compiler_lib_search_dirs
     19638
     19639# Dependencies to place before and after the objects being linked to
     19640# create a shared library.
     19641predep_objects=$lt_predep_objects
     19642postdep_objects=$lt_postdep_objects
     19643predeps=$lt_predeps
     19644postdeps=$lt_postdeps
     19645
     19646# The library search path used internally by the compiler when linking
     19647# a shared library.
     19648compiler_lib_search_path=$lt_compiler_lib_search_path
     19649
     19650# ### END LIBTOOL CONFIG
     19651
     19652_LT_EOF
     19653
     19654    cat <<'_LT_EOF' >> "$cfgfile"
     19655
     19656# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE
     19657
     19658# func_munge_path_list VARIABLE PATH
     19659# -----------------------------------
     19660# VARIABLE is name of variable containing _space_ separated list of
     19661# directories to be munged by the contents of PATH, which is string
     19662# having a format:
     19663# "DIR[:DIR]:"
     19664#       string "DIR[ DIR]" will be prepended to VARIABLE
     19665# ":DIR[:DIR]"
     19666#       string "DIR[ DIR]" will be appended to VARIABLE
     19667# "DIRP[:DIRP]::[DIRA:]DIRA"
     19668#       string "DIRP[ DIRP]" will be prepended to VARIABLE and string
     19669#       "DIRA[ DIRA]" will be appended to VARIABLE
     19670# "DIR[:DIR]"
     19671#       VARIABLE will be replaced by "DIR[ DIR]"
     19672func_munge_path_list ()
     19673{
     19674    case x$2 in
     19675    x)
     19676        ;;
     19677    *:)
     19678        eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\"
     19679        ;;
     19680    x:*)
     19681        eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\"
     19682        ;;
     19683    *::*)
     19684        eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\"
     19685        eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\"
     19686        ;;
     19687    *)
     19688        eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\"
     19689        ;;
     19690    esac
     19691}
     19692
     19693
     19694# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
     19695func_cc_basename ()
     19696{
     19697    for cc_temp in $*""; do
     19698      case $cc_temp in
     19699        compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
     19700        distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
     19701        \-*) ;;
     19702        *) break;;
     19703      esac
     19704    done
     19705    func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
     19706}
     19707
     19708
     19709# ### END FUNCTIONS SHARED WITH CONFIGURE
     19710
     19711_LT_EOF
     19712
     19713  case $host_os in
     19714  aix3*)
     19715    cat <<\_LT_EOF >> "$cfgfile"
     19716# AIX sometimes has problems with the GCC collect2 program.  For some
     19717# reason, if we set the COLLECT_NAMES environment variable, the problems
     19718# vanish in a puff of smoke.
     19719if test set != "${COLLECT_NAMES+set}"; then
     19720  COLLECT_NAMES=
     19721  export COLLECT_NAMES
     19722fi
     19723_LT_EOF
     19724    ;;
     19725  esac
     19726
     19727
     19728ltmain=$ac_aux_dir/ltmain.sh
     19729
     19730
     19731  # We use sed instead of cat because bash on DJGPP gets confused if
     19732  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
     19733  # text mode, it properly converts lines to CR/LF.  This bash problem
     19734  # is reportedly fixed, but why not run on old versions too?
     19735  sed '$q' "$ltmain" >> "$cfgfile" \
     19736     || (rm -f "$cfgfile"; exit 1)
     19737
     19738   mv -f "$cfgfile" "$ofile" ||
     19739    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
     19740  chmod +x "$ofile"
     19741
     19742
     19743    cat <<_LT_EOF >> "$ofile"
     19744
     19745# ### BEGIN LIBTOOL TAG CONFIG: CXX
     19746
     19747# The linker used to build libraries.
     19748LD=$lt_LD_CXX
     19749
     19750# How to create reloadable object files.
     19751reload_flag=$lt_reload_flag_CXX
     19752reload_cmds=$lt_reload_cmds_CXX
     19753
     19754# Commands used to build an old-style archive.
     19755old_archive_cmds=$lt_old_archive_cmds_CXX
     19756
     19757# A language specific compiler.
     19758CC=$lt_compiler_CXX
     19759
     19760# Is the compiler the GNU compiler?
     19761with_gcc=$GCC_CXX
     19762
     19763# Compiler flag to turn off builtin functions.
     19764no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX
     19765
     19766# Additional compiler flags for building library objects.
     19767pic_flag=$lt_lt_prog_compiler_pic_CXX
     19768
     19769# How to pass a linker flag through the compiler.
     19770wl=$lt_lt_prog_compiler_wl_CXX
     19771
     19772# Compiler flag to prevent dynamic linking.
     19773link_static_flag=$lt_lt_prog_compiler_static_CXX
     19774
     19775# Does compiler simultaneously support -c and -o options?
     19776compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX
     19777
     19778# Whether or not to add -lc for building shared libraries.
     19779build_libtool_need_lc=$archive_cmds_need_lc_CXX
     19780
     19781# Whether or not to disallow shared libs when runtime libs are static.
     19782allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX
     19783
     19784# Compiler flag to allow reflexive dlopens.
     19785export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX
     19786
     19787# Compiler flag to generate shared objects directly from archives.
     19788whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX
     19789
     19790# Whether the compiler copes with passing no objects directly.
     19791compiler_needs_object=$lt_compiler_needs_object_CXX
     19792
     19793# Create an old-style archive from a shared archive.
     19794old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX
     19795
     19796# Create a temporary old-style archive to link instead of a shared archive.
     19797old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX
     19798
     19799# Commands used to build a shared archive.
     19800archive_cmds=$lt_archive_cmds_CXX
     19801archive_expsym_cmds=$lt_archive_expsym_cmds_CXX
     19802
     19803# Commands used to build a loadable module if different from building
     19804# a shared archive.
     19805module_cmds=$lt_module_cmds_CXX
     19806module_expsym_cmds=$lt_module_expsym_cmds_CXX
     19807
     19808# Whether we are building with GNU ld or not.
     19809with_gnu_ld=$lt_with_gnu_ld_CXX
     19810
     19811# Flag that allows shared libraries with undefined symbols to be built.
     19812allow_undefined_flag=$lt_allow_undefined_flag_CXX
     19813
     19814# Flag that enforces no undefined symbols.
     19815no_undefined_flag=$lt_no_undefined_flag_CXX
     19816
     19817# Flag to hardcode \$libdir into a binary during linking.
     19818# This must work even if \$libdir does not exist
     19819hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX
     19820
     19821# Whether we need a single "-rpath" flag with a separated argument.
     19822hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
     19823
     19824# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes
     19825# DIR into the resulting binary.
     19826hardcode_direct=$hardcode_direct_CXX
     19827
     19828# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes
     19829# DIR into the resulting binary and the resulting library dependency is
     19830# "absolute",i.e impossible to change by setting \$shlibpath_var if the
     19831# library is relocated.
     19832hardcode_direct_absolute=$hardcode_direct_absolute_CXX
     19833
     19834# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
     19835# into the resulting binary.
     19836hardcode_minus_L=$hardcode_minus_L_CXX
     19837
     19838# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
     19839# into the resulting binary.
     19840hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX
     19841
     19842# Set to "yes" if building a shared library automatically hardcodes DIR
     19843# into the library and all subsequent libraries and executables linked
     19844# against it.
     19845hardcode_automatic=$hardcode_automatic_CXX
     19846
     19847# Set to yes if linker adds runtime paths of dependent libraries
     19848# to runtime path list.
     19849inherit_rpath=$inherit_rpath_CXX
     19850
     19851# Whether libtool must link a program against all its dependency libraries.
     19852link_all_deplibs=$link_all_deplibs_CXX
     19853
     19854# Set to "yes" if exported symbols are required.
     19855always_export_symbols=$always_export_symbols_CXX
     19856
     19857# The commands to list exported symbols.
     19858export_symbols_cmds=$lt_export_symbols_cmds_CXX
     19859
     19860# Symbols that should not be listed in the preloaded symbols.
     19861exclude_expsyms=$lt_exclude_expsyms_CXX
     19862
     19863# Symbols that must always be exported.
     19864include_expsyms=$lt_include_expsyms_CXX
     19865
     19866# Commands necessary for linking programs (against libraries) with templates.
     19867prelink_cmds=$lt_prelink_cmds_CXX
     19868
     19869# Commands necessary for finishing linking programs.
     19870postlink_cmds=$lt_postlink_cmds_CXX
     19871
     19872# Specify filename containing input files.
     19873file_list_spec=$lt_file_list_spec_CXX
     19874
     19875# How to hardcode a shared library path into an executable.
     19876hardcode_action=$hardcode_action_CXX
     19877
     19878# The directories searched by this compiler when creating a shared library.
     19879compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX
     19880
     19881# Dependencies to place before and after the objects being linked to
     19882# create a shared library.
     19883predep_objects=$lt_predep_objects_CXX
     19884postdep_objects=$lt_postdep_objects_CXX
     19885predeps=$lt_predeps_CXX
     19886postdeps=$lt_postdeps_CXX
     19887
     19888# The library search path used internally by the compiler when linking
     19889# a shared library.
     19890compiler_lib_search_path=$lt_compiler_lib_search_path_CXX
     19891
     19892# ### END LIBTOOL TAG CONFIG: CXX
     19893_LT_EOF
     19894
     19895 ;;
    786719896
    786819897  esac
  • configure.ac

    r5e49e47 rd0c91a6  
    55AC_INIT([cfa-cc],[1.0.0.0],[cforall@plg.uwaterloo.ca])
    66AC_CONFIG_AUX_DIR([automake])
     7AC_CONFIG_MACRO_DIRS([automake])
    78#AC_CONFIG_SRCDIR([src/main.cc])
    89AC_CONFIG_HEADERS([config.h:src/config.h.in])
     
    5556AC_SUBST([DOendif])
    5657AM_SUBST_NOTMAKE([DOendif])
    57 
    58 #==============================================================================
    59 # backend compiler implementation
    60 AC_ARG_WITH(backend-compiler,
    61        [  --with-backend-compiler=PROGRAM     PROGRAM that performs the final code compilation (must be gcc-compatible) ],
    62        backendcompiler=$withval, backendcompiler="")
    63 if test "x$backendcompiler" != "x"; then
    64        BACKEND_CC=${backendcompiler}
    65 else
    66        AC_PATH_PROG(BACKEND_CC, gcc, [])       # check gcc installed
    67        if test "x$BACKEND_CC" = "x"; then
    68                AC_MSG_ERROR(some version of gcc is needed. Get it at ftp://ftp.gnu.org)
    69                exit 1
    70        fi
    71 fi
    72 AC_DEFINE_UNQUOTED(CFA_BACKEND_CC, "${BACKEND_CC}", [Location of include files.])
    73 AC_SUBST(CFA_BACKEND_CC)
    7458
    7559#==============================================================================
     
    200184AC_PROG_LEX
    201185if test "${LEX}" = "lex" ; then echo "Error: flex required." ; exit 1 ; fi
     186AC_PROG_LIBTOOL
    202187AC_PROG_INSTALL
    203188AC_PROG_MAKE_SET
    204 AC_PROG_RANLIB
    205189
    206190# Checks for libraries.
     
    228212
    229213#==============================================================================
     214# backend compiler implementation
     215AC_DEFINE_UNQUOTED(CFA_BACKEND_CC, "${CC}", [Backend compiler to use.])
     216AC_SUBST(CFA_BACKEND_CC)
     217
     218#==============================================================================
    230219AC_CONFIG_FILES([
    231220        Makefile
  • doc/papers/concurrency/Paper.tex

    r5e49e47 rd0c91a6  
    686686        Fib f1, f2;
    687687        for ( int i = 1; i <= 10; i += 1 ) {
    688                 sout | next( f1 ) | next( f2 ) | endl;
     688                sout | next( f1 ) | next( f2 );
    689689        }
    690690}
     
    772772                        sout | "  ";               // separator
    773773                }
    774                 sout | endl;
     774                sout | nl;
    775775        }
    776776}
    777777void ?{}( Format & fmt ) { `resume( fmt );` }
    778778void ^?{}( Format & fmt ) with( fmt ) {
    779         if ( g != 0 || b != 0 ) sout | endl;
     779        if ( g != 0 || b != 0 ) sout | nl;
    780780}
    781781void format( Format & fmt ) {
     
    855855        for ( int i = 0; i < N; i += 1 ) {
    856856                int p1 = random( 100 ), p2 = random( 100 );
    857                 sout | p1 | " " | p2 | endl;
     857                sout | p1 | " " | p2;
    858858                int status = delivery( c, p1, p2 );
    859                 sout | " $" | money | endl | status | endl;
     859                sout | " $" | money | nl | status;
    860860                receipt += 1;
    861861        }
    862862        stop( c );
    863         sout | "prod stops" | endl;
     863        sout | "prod stops";
    864864}
    865865int payment( Prod & prod, int money ) {
     
    895895        int money = 1, receipt;
    896896        for ( ; ! done; ) {
    897                 sout | p1 | " " | p2 | endl | " $" | money | endl;
     897                sout | p1 | " " | p2 | nl | " $" | money;
    898898                status += 1;
    899899                receipt = payment( p, money );
    900                 sout | " #" | receipt | endl;
     900                sout | " #" | receipt;
    901901                money += 1;
    902902        }
    903         sout | "cons stops" | endl;
     903        sout | "cons stops";
    904904}
    905905int delivery( Cons & cons, int p1, int p2 ) {
     
    10991099
    11001100void main(foo & this) {
    1101         sout | "Hello World!" | endl;
     1101        sout | "Hello World!";
    11021102}
    11031103\end{cfa}
     
    11241124
    11251125void hello(/*unused*/ int) {
    1126         sout | "Hello World!" | endl;
     1126        sout | "Hello World!";
    11271127}
    11281128
     
    11411141thread World {};
    11421142void main( World & this ) {
    1143         sout | "World!" | endl;
     1143        sout | "World!";
    11441144}
    11451145int main() {
    11461146        World w`[10]`;                                                  $\C{// implicit forks after creation}$
    1147         sout | "Hello " | endl;                                 $\C{// "Hello " and 10 "World!" printed concurrently}$
     1147        sout | "Hello ";                                        $\C{// "Hello " and 10 "World!" printed concurrently}$
    11481148}                                                                                       $\C{// implicit joins before destruction}$
    11491149\end{cfa}
     
    11931193                total += subtotals[r];                          $\C{// total subtotal}$
    11941194    }
    1195     sout | total | endl;
     1195    sout | total;
    11961196}
    11971197\end{cfa}
     
    21922192        BENCH(
    21932193                for ( size_t i = 0; i < N; i += 1 ) { @resume( c );@ } )
    2194         sout | result`ns | endl;
     2194        sout | result`ns;
    21952195}
    21962196\end{cfa}
     
    22052205        BENCH(
    22062206                for ( size_t i = 0; i < N; i += 1 ) { @yield();@ } )
    2207         sout | result`ns | endl;
     2207        sout | result`ns;
    22082208}
    22092209\end{cfa}
     
    22442244int main() {
    22452245        BENCH( for( size_t i = 0; i < N; i += 1 ) { @do_call( m1/*, m2, m3, m4*/ );@ } )
    2246         sout | result`ns | endl;
     2246        sout | result`ns;
    22472247}
    22482248\end{cfa}
     
    23052305        BENCH( for ( size_t i = 0; i < N; i += 1 ) { @wait( c );@ } );
    23062306        go = 0; // stop other thread
    2307         sout | result`ns | endl;
     2307        sout | result`ns;
    23082308}
    23092309int main() {
     
    23562356        BENCH( for ( size_t i = 0; i < N; i += 1 ) { @waitfor( do_call, m );@ } )
    23572357        go = 0; // stop other thread
    2358         sout | result`ns | endl;
     2358        sout | result`ns;
    23592359}
    23602360int main() {
     
    23912391int main() {
    23922392        BENCH( for ( size_t i = 0; i < N; i += 1 ) { @MyThread m;@ } )
    2393         sout | result`ns | endl;
     2393        sout | result`ns;
    23942394}
    23952395\end{cfa}
  • doc/proposals/flags.md

    r5e49e47 rd0c91a6  
    6060        ```
    6161        FunFlags f = some_val();
    62         if ( f ) { sout | "f has some flag(s) set" | endl; }
    63         if ( f & FOO ) { sout | "f has FOO set" | endl; }
     62        if ( f ) { sout | "f has some flag(s) set"; }
     63        if ( f & FOO ) { sout | "f has FOO set"; }
    6464        f |= FOO; // set FOO
    6565        f -= FOO; // unset FOO
     
    8888        ```
    8989        FunFlags f = some_val();
    90         if ( f.FOO ) { sout | "f has FOO set" | endl; }
     90        if ( f.FOO ) { sout | "f has FOO set"; }
    9191        f.FOO = true;    // set FOO
    9292        f.FOO = false;   // unset FOO
  • doc/user/user.tex

    r5e49e47 rd0c91a6  
    1111%% Created On       : Wed Apr  6 14:53:29 2016
    1212%% Last Modified By : Peter A. Buhr
    13 %% Last Modified On : Wed Nov  7 17:00:49 2018
    14 %% Update Count     : 3399
     13%% Last Modified On : Tue Dec 11 23:19:26 2018
     14%% Update Count     : 3400
    1515%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1616
     
    178178int main( void ) {
    179179        int x = 0, y = 1, z = 2;
    180         ®sout | x | y | z | endl;®§\indexc{sout}§
     180        ®sout | x | y | z;®§\indexc{sout}§
    181181}
    182182\end{cfa}
     
    513513Floating exponentiation\index{exponentiation!floating} is performed using \Index{logarithm}s\index{exponentiation!logarithm}, so the base cannot be negative.
    514514\begin{cfa}
    515 sout | 2 ®\® 8u | 4 ®\® 3u | -4 ®\® 3u | 4 ®\® -3 | -4 ®\® -3 | 4.0 ®\® 2.1 | (1.0f+2.0fi) ®\® (3.0f+2.0fi) | endl;
     515sout | 2 ®\® 8u | 4 ®\® 3u | -4 ®\® 3u | 4 ®\® -3 | -4 ®\® -3 | 4.0 ®\® 2.1 | (1.0f+2.0fi) ®\® (3.0f+2.0fi);
    516516256 64 -64 0.015625 -0.015625 18.3791736799526 0.264715-1.1922i
    517517\end{cfa}
     
    591591&
    592592\begin{cfa}
    593 sout | endl;
    594 sout | endl;
    595 sout | endl;
    596 sout | "zero" | endl;
    597 sout | endl;
    598 sout | endl;
    599 sout | endl;
    600 sout | endl;
    601 sout | endl;
    602 sout | endl;
    603 sout | endl;
    604 sout | endl;
    605 sout | endl;
    606 sout | endl;
    607 sout | endl;
    608 sout | endl;
    609 sout | endl | endl;
    610 
    611 sout | endl;
    612 sout | endl;
    613 sout | endl | endl;
    614 
    615 sout | endl;
     593sout | nl;
     594sout | nl;
     595sout | nl;
     596sout | "zero" | nl;
     597sout | nl;
     598sout | nl;
     599sout | nl;
     600sout | nl;
     601sout | nl;
     602sout | nl;
     603sout | nl;
     604sout | nl;
     605sout | nl;
     606sout | nl;
     607sout | nl;
     608sout | nl;
     609sout | nl | nl;
     610
     611sout | nl;
     612sout | nl;
     613sout | nl | nl;
     614
     615sout | nl;
    616616\end{cfa}
    617617&
     
    24592459        int bar( int p ) {
    24602460                ®i® += 1;                               §\C{// dependent on local variable}§
    2461                 sout | ®i® | endl;
     2461                sout | ®i®;
    24622462        }
    24632463        return bar;                                     §\C{// undefined because of local dependence}§
     
    24652465int main() {
    24662466        * [int]( int ) fp = foo();      §\C{// int (* fp)( int )}§
    2467         sout | fp( 3 ) | endl;
     2467        sout | fp( 3 );
    24682468}
    24692469\end{cfa}
     
    32313231\begin{cfa}
    32323232int x = 1, y = 2, z = 3;
    3233 sout | x ®|® y ®|® z | endl;
     3233sout | x ®|® y ®|® z;
    32343234\end{cfa}
    32353235&
     
    32523252\begin{cfa}
    32533253[int, [ int, int ] ] t1 = [ 1, [ 2, 3 ] ], t2 = [ 4, [ 5, 6 ] ];
    3254 sout | t1 | t2 | endl;                                  §\C{// print tuples}§
     3254sout | t1 | t2;                                         §\C{// print tuples}§
    32553255\end{cfa}
    32563256\begin{cfa}[showspaces=true,aboveskip=0pt]
     
    32643264&
    32653265\begin{cfa}
    3266 sout | x * 3 | y + 1 | z << 2 | x == y | (x | y) | (x || y) | (x > z ? 1 : 2) | endl;
     3266sout | x * 3 | y + 1 | z << 2 | x == y | (x | y) | (x || y) | (x > z ? 1 : 2);
    32673267\end{cfa}
    32683268\\
     
    32903290A separator does not appear at the start or end of a line.
    32913291\begin{cfa}[belowskip=0pt]
    3292 sout | 1 | 2 | 3 | endl;
     3292sout | 1 | 2 | 3;
    32933293\end{cfa}
    32943294\begin{cfa}[showspaces=true,aboveskip=0pt,belowskip=0pt]
     
    32993299A separator does not appear before or after a character literal or variable.
    33003300\begin{cfa}
    3301 sout | '1' | '2' | '3' | endl;
     3301sout | '1' | '2' | '3';
    33023302123
    33033303\end{cfa}
     
    33063306A separator does not appear before or after a null (empty) C string.
    33073307\begin{cfa}
    3308 sout | 1 | "" | 2 | "" | 3 | endl;
     3308sout | 1 | "" | 2 | "" | 3;
    33093309123
    33103310\end{cfa}
     
    33163316\begin{cfa}[mathescape=off]
    33173317sout | "x (" | 1 | "x [" | 2 | "x {" | 3 | "x =" | 4 | "x $" | 5 | "x £" | 6 | "x ¥"
    3318                 | 7 | "x ¡" | 8 | "x ¿" | 9 | "x «" | 10 | endl;
     3318                | 7 | "x ¡" | 8 | "x ¿" | 9 | "x «" | 10;
    33193319\end{cfa}
    33203320%$
     
    33303330\begin{cfa}[belowskip=0pt]
    33313331sout | 1 | ", x" | 2 | ". x" | 3 | "; x" | 4 | "! x" | 5 | "? x" | 6 | "% x"
    3332                 | 7 | "¢ x" | 8 | "» x" | 9 | ") x" | 10 | "] x" | 11 | "} x" | endl;
     3332                | 7 | "¢ x" | 8 | "» x" | 9 | ") x" | 10 | "] x" | 11 | "} x";
    33333333\end{cfa}
    33343334\begin{cfa}[basicstyle=\tt,showspaces=true,aboveskip=0pt,belowskip=0pt]
     
    33403340A seperator does not appear before or after a C string begining/ending with the \Index*{ASCII} quote or whitespace characters: \lstinline[basicstyle=\tt,showspaces=true]@`'": \t\v\f\r\n@
    33413341\begin{cfa}[belowskip=0pt]
    3342 sout | "x`" | 1 | "`x'" | 2 | "'x\"" | 3 | "\"x:" | 4 | ":x " | 5 | " x\t" | 6 | "\tx" | endl;
     3342sout | "x`" | 1 | "`x'" | 2 | "'x\"" | 3 | "\"x:" | 4 | ":x " | 5 | " x\t" | 6 | "\tx";
    33433343\end{cfa}
    33443344\begin{cfa}[basicstyle=\tt,showspaces=true,showtabs=true,aboveskip=0pt,belowskip=0pt]
     
    33493349If a space is desired before or after one of the special string start/end characters, simply insert a space.
    33503350\begin{cfa}[belowskip=0pt]
    3351 sout | "x (§\color{red}\texttt{\textvisiblespace}§" | 1 | "§\color{red}\texttt{\textvisiblespace}§) x" | 2 | "§\color{red}\texttt{\textvisiblespace}§, x" | 3 | "§\color{red}\texttt{\textvisiblespace}§:x:§\color{red}\texttt{\textvisiblespace}§" | 4 | endl;
     3351sout | "x (§\color{red}\texttt{\textvisiblespace}§" | 1 | "§\color{red}\texttt{\textvisiblespace}§) x" | 2 | "§\color{red}\texttt{\textvisiblespace}§, x" | 3 | "§\color{red}\texttt{\textvisiblespace}§:x:§\color{red}\texttt{\textvisiblespace}§" | 4;
    33523352\end{cfa}
    33533353\begin{cfa}[basicstyle=\tt,showspaces=true,showtabs=true,aboveskip=0pt,belowskip=0pt]
     
    33663366\begin{cfa}[mathescape=off,belowskip=0pt]
    33673367sepSet( sout, ", $" );                                          §\C{// set separator from " " to ", \$"}§
    3368 sout | 1 | 2 | 3 | " \"" | ®sep® | "\"" | endl;
     3368sout | 1 | 2 | 3 | " \"" | ®sep® | "\"";
    33693369\end{cfa}
    33703370%$
     
    33753375\begin{cfa}[belowskip=0pt]
    33763376sepSet( sout, " " );                                            §\C{// reset separator to " "}§
    3377 sout | 1 | 2 | 3 | " \"" | ®sepGet( sout )® | "\"" | endl;
     3377sout | 1 | 2 | 3 | " \"" | ®sepGet( sout )® | "\"";
    33783378\end{cfa}
    33793379\begin{cfa}[showspaces=true,aboveskip=0pt]
     
    33853385strcpy( store, sepGet( sout ) );                          §\C{// copy current separator}§
    33863386sepSet( sout, "_" );                                            §\C{// change separator to underscore}§
    3387 sout | 1 | 2 | 3 | endl;
     3387sout | 1 | 2 | 3;
    33883388\end{cfa}
    33893389\begin{cfa}[showspaces=true,aboveskip=0pt,belowskip=0pt]
     
    33923392\begin{cfa}[belowskip=0pt]
    33933393sepSet( sout, store );                                          §\C{// change separator back to original}§
    3394 sout | 1 | 2 | 3 | endl;
     3394sout | 1 | 2 | 3;
    33953395\end{cfa}
    33963396\begin{cfa}[showspaces=true,aboveskip=0pt]
     
    34033403\begin{cfa}[belowskip=0pt]
    34043404sepSetTuple( sout, " " );                                       §\C{// set tuple separator from ", " to " "}§
    3405 sout | t1 | t2 | " \"" | ®sepTuple® | "\"" | endl;
     3405sout | t1 | t2 | " \"" | ®sepTuple® | "\"";
    34063406\end{cfa}
    34073407\begin{cfa}[showspaces=true,aboveskip=0pt]
     
    34103410\begin{cfa}[belowskip=0pt]
    34113411sepSetTuple( sout, ", " );                                      §\C{// reset tuple separator to ", "}§
    3412 sout | t1 | t2 | " \"" | ®sepGetTuple( sout )® | "\"" | endl;
     3412sout | t1 | t2 | " \"" | ®sepGetTuple( sout )® | "\"";
    34133413\end{cfa}
    34143414\begin{cfa}[showspaces=true,aboveskip=0pt]
     
    34203420Manipulators \Indexc{sepDisable}\index{manipulator!sepDisable@©sepDisable©} and \Indexc{sepEnable}\index{manipulator!sepEnable@©sepEnable©} \emph{globally} toggle printing the separator, \ie the seperator is adjusted with respect to all subsequent printed items.
    34213421\begin{cfa}[belowskip=0pt]
    3422 sout | sepDisable | 1 | 2 | 3 | endl;           §\C{// globally turn off implicit separator}§
     3422sout | sepDisable | 1 | 2 | 3                §\C{// globally turn off implicit separator}§
    34233423\end{cfa}
    34243424\begin{cfa}[showspaces=true,aboveskip=0pt,belowskip=0pt]
     
    34263426\end{cfa}
    34273427\begin{cfa}[belowskip=0pt]
    3428 sout | sepEnable | 1 | 2 | 3 | endl;            §\C{// globally turn on implicit separator}§
     3428sout | sepEnable | 1 | 2 | 3;           §\C{// globally turn on implicit separator}§
    34293429\end{cfa}
    34303430\begin{cfa}[mathescape=off,showspaces=true,aboveskip=0pt,belowskip=0pt]
     
    34353435Manipulators \Indexc{sepOn}\index{manipulator!sepOn@©sepOn©} and \Indexc{sepOff}\index{manipulator!sepOff@©sepOff©} \emph{locally} toggle printing the separator, \ie the seperator is adjusted only with respect to the next printed item.
    34363436\begin{cfa}[belowskip=0pt]
    3437 sout | 1 | sepOff | 2 | 3 | endl;                       §\C{// locally turn off implicit separator}§
     3437sout | 1 | sepOff | 2 | 3;                      §\C{// locally turn off implicit separator}§
    34383438\end{cfa}
    34393439\begin{cfa}[showspaces=true,aboveskip=0pt,belowskip=0pt]
     
    34413441\end{cfa}
    34423442\begin{cfa}[belowskip=0pt]
    3443 sout | sepDisable | 1 | sepOn | 2 | 3 | endl; §\C{// locally turn on implicit separator}§
     3443sout | sepDisable | 1 | sepOn | 2 | 3; §\C{// locally turn on implicit separator}§
    34443444\end{cfa}
    34453445\begin{cfa}[showspaces=true,aboveskip=0pt,belowskip=0pt]
     
    34483448The tuple separator also responses to being turned on and off.
    34493449\begin{cfa}[belowskip=0pt]
    3450 sout | t1 | sepOff | t2 | endl;                         §\C{// locally turn on/off implicit separator}§
     3450sout | t1 | sepOff | t2;                                §\C{// locally turn on/off implicit separator}§
    34513451\end{cfa}
    34523452\begin{cfa}[showspaces=true,aboveskip=0pt,belowskip=0pt]
     
    34563456use ©sep© to accomplish this functionality.
    34573457\begin{cfa}[belowskip=0pt]
    3458 sout | sepOn | 1 | 2 | 3 | sepOn | endl ;       §\C{// sepOn does nothing at start/end of line}§
     3458sout | sepOn | 1 | 2 | 3 | sepOn;       §\C{// sepOn does nothing at start/end of line}§
    34593459\end{cfa}
    34603460\begin{cfa}[showspaces=true,aboveskip=0pt,belowskip=0pt]
     
    34623462\end{cfa}
    34633463\begin{cfa}[belowskip=0pt]
    3464 sout | sep | 1 | 2 | 3 | sep | endl ;           §\C{// use sep to print separator at start/end of line}§
     3464sout | sep | 1 | 2 | 3 | sep ;          §\C{// use sep to print separator at start/end of line}§
    34653465\end{cfa}
    34663466\begin{cfa}[showspaces=true,aboveskip=0pt,belowskip=0pt]
     
    34753475int main( void ) {
    34763476        int x = 1, y = 2, z = 3;
    3477         sout | x | y | z | endl;
     3477        sout | x | y | z;
    34783478        [int, [ int, int ] ] t1 = [ 1, [ 2, 3 ] ], t2 = [ 4, [ 5, 6 ] ];
    3479         sout | t1 | t2 | endl;                                          // print tuples
    3480         sout | x * 3 | y + 1 | z << 2 | x == y | (x | y) | (x || y) | (x > z ? 1 : 2) | endl;
    3481         sout | 1 | 2 | 3 | endl;
    3482         sout | '1' | '2' | '3' | endl;
    3483         sout | 1 | "" | 2 | "" | 3 | endl;
     3479        sout | t1 | t2;                                         // print tuples
     3480        sout | x * 3 | y + 1 | z << 2 | x == y | (x | y) | (x || y) | (x > z ? 1 : 2);
     3481        sout | 1 | 2 | 3;
     3482        sout | '1' | '2' | '3';
     3483        sout | 1 | "" | 2 | "" | 3;
    34843484        sout | "x (" | 1 | "x [" | 2 | "x {" | 3 | "x =" | 4 | "x $" | 5 | "x £" | 6 | "x ¥"
    3485                 | 7 | "x ¡" | 8 | "x ¿" | 9 | "x «" | 10 | endl;
     3485                | 7 | "x ¡" | 8 | "x ¿" | 9 | "x «" | 10;
    34863486        sout | 1 | ", x" | 2 | ". x" | 3 | "; x" | 4 | "! x" | 5 | "? x" | 6 | "% x"
    3487                 | 7 | "¢ x" | 8 | "» x" | 9 | ") x" | 10 | "] x" | 11 | "} x" | endl;
    3488         sout | "x`" | 1 | "`x'" | 2 | "'x\"" | 3 | "\"x:" | 4 | ":x " | 5 | " x\t" | 6 | "\tx" | endl;
    3489         sout | "x ( " | 1 | " ) x" | 2 | " , x" | 3 | " :x: " | 4 | endl;
     3487                | 7 | "¢ x" | 8 | "» x" | 9 | ") x" | 10 | "] x" | 11 | "} x";
     3488        sout | "x`" | 1 | "`x'" | 2 | "'x\"" | 3 | "\"x:" | 4 | ":x " | 5 | " x\t" | 6 | "\tx";
     3489        sout | "x ( " | 1 | " ) x" | 2 | " , x" | 3 | " :x: " | 4;
    34903490
    34913491        sepSet( sout, ", $" );                                          // set separator from " " to ", $"
    3492         sout | 1 | 2 | 3 | " \"" | sep | "\"" | endl;
     3492        sout | 1 | 2 | 3 | " \"" | sep | "\"";
    34933493        sepSet( sout, " " );                                            // reset separator to " "
    3494         sout | 1 | 2 | 3 | " \"" | sepGet( sout ) | "\"" | endl;
     3494        sout | 1 | 2 | 3 | " \"" | sepGet( sout ) | "\"";
    34953495
    34963496        char store[sepSize];
    34973497        strcpy( store, sepGet( sout ) );
    34983498        sepSet( sout, "_" );
    3499         sout | 1 | 2 | 3 | endl;
     3499        sout | 1 | 2 | 3;
    35003500        sepSet( sout, store );
    3501         sout | 1 | 2 | 3 | endl;
     3501        sout | 1 | 2 | 3;
    35023502
    35033503        sepSetTuple( sout, " " );                                       // set tuple separator from ", " to " "
    3504         sout | t1 | t2 | " \"" | sepTuple | "\"" | endl;
     3504        sout | t1 | t2 | " \"" | sepTuple | "\"";
    35053505        sepSetTuple( sout, ", " );                                      // reset tuple separator to ", "
    3506         sout | t1 | t2 | " \"" | sepGetTuple( sout ) | "\"" | endl;
    3507 
    3508         sout | sepDisable | 1 | 2 | 3 | endl;           // globally turn off implicit separator
    3509         sout | sepEnable | 1 | 2 | 3 | endl;            // globally turn on implicit separator
    3510 
    3511         sout | 1 | sepOff | 2 | 3 | endl;                       // locally turn on implicit separator
    3512         sout | sepDisable | 1 | sepOn | 2 | 3 | endl; // globally turn off implicit separator
     3506        sout | t1 | t2 | " \"" | sepGetTuple( sout ) | "\"";
     3507
     3508        sout | sepDisable | 1 | 2 | 3;          // globally turn off implicit separator
     3509        sout | sepEnable | 1 | 2 | 3;           // globally turn on implicit separator
     3510
     3511        sout | 1 | sepOff | 2 | 3;                      // locally turn on implicit separator
     3512        sout | sepDisable | 1 | sepOn | 2 | 3; // globally turn off implicit separator
    35133513        sout | sepEnable;
    3514         sout | t1 | sepOff | t2 | endl;                         // locally turn on/off implicit separator
    3515 
    3516         sout | sepOn | 1 | 2 | 3 | sepOn | endl ;       // sepOn does nothing at start/end of line
    3517         sout | sep | 1 | 2 | 3 | sep | endl ;           // use sep to print separator at start/end of line
     3514        sout | t1 | sepOff | t2;                                // locally turn on/off implicit separator
     3515
     3516        sout | sepOn | 1 | 2 | 3 | sepOn ;      // sepOn does nothing at start/end of line
     3517        sout | sep | 1 | 2 | 3 | sep ;          // use sep to print separator at start/end of line
    35183518}
    35193519
     
    41804180        Fibonacci f1, f2;
    41814181        for ( int i = 1; i <= 10; i += 1 ) {
    4182                 sout | next( &f1 ) | ' ' | next( &f2 ) | endl;
     4182                sout | next( &f1 ) | ' ' | next( &f2 );
    41834183        } // for
    41844184}
     
    42464246                MyThread f[4];
    42474247        }
    4248         sout | global.value | endl;
     4248        sout | global.value;
    42494249}
    42504250\end{cfa}
     
    43244324void main( First * this ) {
    43254325        for ( int i = 0; i < 10; i += 1 ) {
    4326                 sout | "First : Suspend No." | i + 1 | endl;
     4326                sout | "First : Suspend No." | i + 1;
    43274327                yield();
    43284328        }
     
    43334333        wait( this->lock );
    43344334        for ( int i = 0; i < 10; i += 1 ) {
    4335                 sout | "Second : Suspend No." | i + 1 | endl;
     4335                sout | "Second : Suspend No." | i + 1;
    43364336                yield();
    43374337        }
     
    43404340int main( void ) {
    43414341        signal_once lock;
    4342         sout | "User main begin" | endl;
     4342        sout | "User main begin";
    43434343        {
    43444344                processor p;
     
    43484348                }
    43494349        }
    4350         sout | "User main end" | endl;
     4350        sout | "User main end";
    43514351}
    43524352\end{cfa}
     
    50455045void ?{}( Line * l ) {
    50465046        l->lnth = 0.0;
    5047         sout | "default" | endl;
     5047        sout | "default";
    50485048}
    50495049
     
    50525052void ?{}( Line * l, float lnth ) {
    50535053        l->lnth = lnth;
    5054         sout | "lnth" | l->lnth | endl;
     5054        sout | "lnth" | l->lnth;
    50555055
    50565056}
     
    50585058// destructor
    50595059void ^?() {
    5060         sout | "destroyed" | endl;
     5060        sout | "destroyed";
    50615061        l.lnth = 0.0;
    50625062}
     
    58045804In particular, output of ©char© variable now print a character rather than the decimal ASCII value of the character.
    58055805\begin{cfa}
    5806 sout | 'x' | " " | (int)'x' | endl;
     5806sout | 'x' | " " | (int)'x';
    58075807x 120
    58085808\end{cfa}
     
    70347034#include <gmp>§\indexc{gmp}§
    70357035int main( void ) {
    7036         sout | "Factorial Numbers" | endl;
     7036        sout | "Factorial Numbers";
    70377037        Int fact = 1;
    70387038
    7039         sout | 0 | fact | endl;
     7039        sout | 0 | fact;
    70407040        for ( unsigned int i = 1; i <= 40; i += 1 ) {
    70417041                fact *= i;
    7042                 sout | i | fact | endl;
     7042                sout | i | fact;
    70437043        }
    70447044}
  • doc/working/exception/impl/exception.c

    r5e49e47 rd0c91a6  
    243243
    244244                                        // Get a function pointer from the relative offset and call it
    245                                         // _Unwind_Reason_Code (*matcher)() = (_Unwind_Reason_Code (*)())lsd_info.LPStart + imatcher;                                   
     245                                        // _Unwind_Reason_Code (*matcher)() = (_Unwind_Reason_Code (*)())lsd_info.LPStart + imatcher;
    246246
    247247                                        _Unwind_Reason_Code (*matcher)() =
     
    320320        // on how the assembly works.
    321321        // Setup the personality routine
     322        #if defined(__PIC__)
     323        asm volatile (".cfi_personality 0x9b,CFA.ref.__gcfa_personality_v0");
     324        // Setup the exception table
     325        asm volatile (".cfi_lsda 0x1b, .LLSDACFA2");
     326        #else
    322327        asm volatile (".cfi_personality 0x3,__gcfa_personality_v0");
    323328        // Setup the exception table
    324329        asm volatile (".cfi_lsda 0x3, .LLSDACFA2");
     330        #endif
    325331
    326332        // Label which defines the start of the area for which the handler is setup
     
    356362// Some more works need to be done if we want to have a single
    357363// call to the try routine
     364#if defined(__PIC__)
     365asm (
     366        //HEADER
     367        ".LFECFA1:\n"
     368        "       .globl  __gcfa_personality_v0\n"
     369        "       .section        .gcc_except_table,\"a\",@progbits\n"
     370        ".LLSDACFA2:\n"                                                 //TABLE header
     371        "       .byte   0xff\n"
     372        "       .byte   0xff\n"
     373        "       .byte   0x1\n"
     374        "       .uleb128 .LLSDACSECFA2-.LLSDACSBCFA2\n"         // BODY length
     375        // Body uses language specific data and therefore could be modified arbitrarily
     376        ".LLSDACSBCFA2:\n"                                              // BODY start
     377        "       .uleb128 .TRYSTART-__try_terminate\n"           // Handled area start  (relative to start of function)
     378        "       .uleb128 .TRYEND-.TRYSTART\n"                           // Handled area length
     379        "       .uleb128 .CATCH-__try_terminate\n"                      // Handler landing pad adress  (relative to start of function)
     380        "       .uleb128 1\n"                                           // Action code, gcc seems to use always 0
     381        ".LLSDACSECFA2:\n"                                              // BODY end
     382        "       .text\n"                                                        // TABLE footer
     383        "       .size   __try_terminate, .-__try_terminate\n"
     384);
     385
     386// Somehow this piece of helps with the resolution of debug symbols.
     387__attribute__((unused)) static const int dummy = 0;
     388asm (
     389        "       .hidden CFA.ref.__gcfa_personality_v0\n"        // Declare an new hidden symbol
     390        "       .weak   CFA.ref.__gcfa_personality_v0\n"
     391        "       .section        .data.rel.local.CFA.ref.__gcfa_personality_v0,\"awG\",@progbits,CFA.ref.__gcfa_personality_v0,comdat\n" // No clue what this does specifically
     392        "       .align 8\n"
     393        "       .type CFA.ref.__gcfa_personality_v0, @object\n" // Type of our hidden symbol (it's not actually the function itself)
     394        "       .size CFA.ref.__gcfa_personality_v0, 8\n"               // Size of our hidden symbol
     395        "CFA.ref.__gcfa_personality_v0:\n"
     396        "       .quad __gcfa_personality_v0\n"
     397);
     398#else
    358399asm (
    359400        //HEADER
     
    375416        "       .text\n"                                                        // TABLE footer
    376417        "       .size   __try_terminate, .-__try_terminate\n"
    377         "       .ident  \"GCC: (Ubuntu 6.2.0-3ubuntu11~16.04) 6.2.0 20160901\"\n"
    378 //      "       .section        .note.GNU-stack,\"x\",@progbits\n"
    379418);
     419#endif
  • doc/working/exception/impl/pdc.s

    r5e49e47 rd0c91a6  
    101101        .text
    102102        .size   foo, .-foo
    103         .ident  "GCC: (Ubuntu 7.3.0-21ubuntu1~16.04) 7.3.0"
     103        .ident  "GCC: (Ubuntu 7.4.0-1ubuntu1~16.04~ppa1) 7.4.0"
    104104        .section        .note.GNU-stack,"",@progbits
  • doc/working/exception/impl/pic.s

    r5e49e47 rd0c91a6  
    11        .file   "test.c"
    22        .text
     3.Ltext0:
    34        .globl  clean
    45        .type   clean, @function
    56clean:
    67.LFB0:
     8        .file 1 "test.c"
     9        .loc 1 1 0
    710        .cfi_startproc
    811        pushq   %rbp
     
    1215        .cfi_def_cfa_register 6
    1316        movq    %rdi, -8(%rbp)
     17        .loc 1 1 0
    1418        nop
    1519        popq    %rbp
     
    2327foo:
    2428.LFB1:
     29        .loc 1 4 0
    2530        .cfi_startproc
    2631        .cfi_personality 0x9b,DW.ref.__gcc_personality_v0
     
    3944        .cfi_offset 3, -40
    4045        movl    %edi, -52(%rbp)
     46        .loc 1 4 0
    4147        movq    %fs:40, %rax
    4248        movq    %rax, -40(%rbp)
    4349        xorl    %eax, %eax
     50        .loc 1 6 0
    4451        movl    -52(%rbp), %eax
    4552        movl    %eax, %edi
     
    5057        movl    $0, %r12d
    5158.L7:
     59        .loc 1 5 0
    5260        leaq    -44(%rbp), %rax
    5361        movq    %rax, %rdi
     
    5664        cmpl    $1, %r12d
    5765        je      .L4
     66        .loc 1 6 0
    5867        movl    %r13d, %eax
     68        .loc 1 7 0
    5969        movq    -40(%rbp), %rdx
    6070        xorq    %fs:40, %rdx
     
    6474        movq    %rax, %rbx
    6575        movl    $1, %r12d
     76        .loc 1 5 0
    6677        jmp     .L7
    6778.L4:
     
    7182.LEHE1:
    7283.L10:
     84        .loc 1 7 0
    7385        call    __stack_chk_fail@PLT
    7486.L8:
     
    101113        .text
    102114        .size   foo, .-foo
     115.Letext0:
     116        .section        .debug_info,"",@progbits
     117.Ldebug_info0:
     118        .long   0x9c
     119        .value  0x4
     120        .long   .Ldebug_abbrev0
     121        .byte   0x8
     122        .uleb128 0x1
     123        .long   .LASF0
     124        .byte   0xc
     125        .long   .LASF1
     126        .long   .LASF2
     127        .quad   .Ltext0
     128        .quad   .Letext0-.Ltext0
     129        .long   .Ldebug_line0
     130        .uleb128 0x2
     131        .string "foo"
     132        .byte   0x1
     133        .byte   0x4
     134        .long   0x68
     135        .quad   .LFB1
     136        .quad   .LFE1-.LFB1
     137        .uleb128 0x1
     138        .byte   0x9c
     139        .long   0x68
     140        .uleb128 0x3
     141        .string "x"
     142        .byte   0x1
     143        .byte   0x4
     144        .long   0x68
     145        .uleb128 0x3
     146        .byte   0x91
     147        .sleb128 -68
     148        .uleb128 0x4
     149        .string "i"
     150        .byte   0x1
     151        .byte   0x5
     152        .long   0x68
     153        .uleb128 0x2
     154        .byte   0x91
     155        .sleb128 -60
     156        .byte   0
     157        .uleb128 0x5
     158        .byte   0x4
     159        .byte   0x5
     160        .string "int"
     161        .uleb128 0x6
     162        .long   .LASF3
     163        .byte   0x1
     164        .byte   0x1
     165        .quad   .LFB0
     166        .quad   .LFE0-.LFB0
     167        .uleb128 0x1
     168        .byte   0x9c
     169        .long   0x99
     170        .uleb128 0x3
     171        .string "p"
     172        .byte   0x1
     173        .byte   0x1
     174        .long   0x99
     175        .uleb128 0x2
     176        .byte   0x91
     177        .sleb128 -24
     178        .byte   0
     179        .uleb128 0x7
     180        .byte   0x8
     181        .long   0x68
     182        .byte   0
     183        .section        .debug_abbrev,"",@progbits
     184.Ldebug_abbrev0:
     185        .uleb128 0x1
     186        .uleb128 0x11
     187        .byte   0x1
     188        .uleb128 0x25
     189        .uleb128 0xe
     190        .uleb128 0x13
     191        .uleb128 0xb
     192        .uleb128 0x3
     193        .uleb128 0xe
     194        .uleb128 0x1b
     195        .uleb128 0xe
     196        .uleb128 0x11
     197        .uleb128 0x1
     198        .uleb128 0x12
     199        .uleb128 0x7
     200        .uleb128 0x10
     201        .uleb128 0x17
     202        .byte   0
     203        .byte   0
     204        .uleb128 0x2
     205        .uleb128 0x2e
     206        .byte   0x1
     207        .uleb128 0x3f
     208        .uleb128 0x19
     209        .uleb128 0x3
     210        .uleb128 0x8
     211        .uleb128 0x3a
     212        .uleb128 0xb
     213        .uleb128 0x3b
     214        .uleb128 0xb
     215        .uleb128 0x27
     216        .uleb128 0x19
     217        .uleb128 0x49
     218        .uleb128 0x13
     219        .uleb128 0x11
     220        .uleb128 0x1
     221        .uleb128 0x12
     222        .uleb128 0x7
     223        .uleb128 0x40
     224        .uleb128 0x18
     225        .uleb128 0x2116
     226        .uleb128 0x19
     227        .uleb128 0x1
     228        .uleb128 0x13
     229        .byte   0
     230        .byte   0
     231        .uleb128 0x3
     232        .uleb128 0x5
     233        .byte   0
     234        .uleb128 0x3
     235        .uleb128 0x8
     236        .uleb128 0x3a
     237        .uleb128 0xb
     238        .uleb128 0x3b
     239        .uleb128 0xb
     240        .uleb128 0x49
     241        .uleb128 0x13
     242        .uleb128 0x2
     243        .uleb128 0x18
     244        .byte   0
     245        .byte   0
     246        .uleb128 0x4
     247        .uleb128 0x34
     248        .byte   0
     249        .uleb128 0x3
     250        .uleb128 0x8
     251        .uleb128 0x3a
     252        .uleb128 0xb
     253        .uleb128 0x3b
     254        .uleb128 0xb
     255        .uleb128 0x49
     256        .uleb128 0x13
     257        .uleb128 0x2
     258        .uleb128 0x18
     259        .byte   0
     260        .byte   0
     261        .uleb128 0x5
     262        .uleb128 0x24
     263        .byte   0
     264        .uleb128 0xb
     265        .uleb128 0xb
     266        .uleb128 0x3e
     267        .uleb128 0xb
     268        .uleb128 0x3
     269        .uleb128 0x8
     270        .byte   0
     271        .byte   0
     272        .uleb128 0x6
     273        .uleb128 0x2e
     274        .byte   0x1
     275        .uleb128 0x3f
     276        .uleb128 0x19
     277        .uleb128 0x3
     278        .uleb128 0xe
     279        .uleb128 0x3a
     280        .uleb128 0xb
     281        .uleb128 0x3b
     282        .uleb128 0xb
     283        .uleb128 0x27
     284        .uleb128 0x19
     285        .uleb128 0x11
     286        .uleb128 0x1
     287        .uleb128 0x12
     288        .uleb128 0x7
     289        .uleb128 0x40
     290        .uleb128 0x18
     291        .uleb128 0x2117
     292        .uleb128 0x19
     293        .uleb128 0x1
     294        .uleb128 0x13
     295        .byte   0
     296        .byte   0
     297        .uleb128 0x7
     298        .uleb128 0xf
     299        .byte   0
     300        .uleb128 0xb
     301        .uleb128 0xb
     302        .uleb128 0x49
     303        .uleb128 0x13
     304        .byte   0
     305        .byte   0
     306        .byte   0
     307        .section        .debug_aranges,"",@progbits
     308        .long   0x2c
     309        .value  0x2
     310        .long   .Ldebug_info0
     311        .byte   0x8
     312        .byte   0
     313        .value  0
     314        .value  0
     315        .quad   .Ltext0
     316        .quad   .Letext0-.Ltext0
     317        .quad   0
     318        .quad   0
     319        .section        .debug_line,"",@progbits
     320.Ldebug_line0:
     321        .section        .debug_str,"MS",@progbits,1
     322.LASF0:
     323        .string "GNU C11 7.4.0 -mtune=generic -march=x86-64 -g -fexceptions -fPIC -fstack-protector-strong"
     324.LASF2:
     325        .string "/home/tdelisle/workspace/cforall/main/doc/working/exception/impl"
     326.LASF1:
     327        .string "test.c"
     328.LASF3:
     329        .string "clean"
    103330        .hidden DW.ref.__gcc_personality_v0
    104331        .weak   DW.ref.__gcc_personality_v0
    105         .section        .data.DW.ref.__gcc_personality_v0,"awG",@progbits,DW.ref.__gcc_personality_v0,comdat
     332        .section        .data.rel.local.DW.ref.__gcc_personality_v0,"awG",@progbits,DW.ref.__gcc_personality_v0,comdat
    106333        .align 8
    107334        .type   DW.ref.__gcc_personality_v0, @object
     
    109336DW.ref.__gcc_personality_v0:
    110337        .quad   __gcc_personality_v0
    111         .ident  "GCC: (Ubuntu 7.3.0-21ubuntu1~16.04) 7.3.0"
     338        .ident  "GCC: (Ubuntu 7.4.0-1ubuntu1~16.04~ppa1) 7.4.0"
    112339        .section        .note.GNU-stack,"",@progbits
  • driver/Makefile.am

    r5e49e47 rd0c91a6  
    1616
    1717AUTOMAKE_OPTIONS = foreign    # do not require all the GNU file names
     18ACLOCAL_AMFLAGS  = -I automake
    1819
    1920# applies to both programs
  • driver/Makefile.in

    r5e49e47 rd0c91a6  
    9696subdir = driver
    9797ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
    98 am__aclocal_m4_deps = $(top_srcdir)/automake/cfa.m4 \
    99         $(top_srcdir)/configure.ac
     98am__aclocal_m4_deps = $(top_srcdir)/automake/libtool.m4 \
     99        $(top_srcdir)/automake/ltoptions.m4 \
     100        $(top_srcdir)/automake/ltsugar.m4 \
     101        $(top_srcdir)/automake/ltversion.m4 \
     102        $(top_srcdir)/automake/lt~obsolete.m4 \
     103        $(top_srcdir)/automake/cfa.m4 $(top_srcdir)/configure.ac
    100104am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
    101105        $(ACLOCAL_M4)
     
    110114as_OBJECTS = $(am_as_OBJECTS)
    111115as_LDADD = $(LDADD)
     116AM_V_lt = $(am__v_lt_@AM_V@)
     117am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
     118am__v_lt_0 = --silent
     119am__v_lt_1 =
    112120am_cc1_OBJECTS = cc1.$(OBJEXT)
    113121cc1_OBJECTS = $(am_cc1_OBJECTS)
     
    134142CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
    135143        $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
     144LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
     145        $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
     146        $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
     147        $(AM_CXXFLAGS) $(CXXFLAGS)
    136148AM_V_CXX = $(am__v_CXX_@AM_V@)
    137149am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
     
    139151am__v_CXX_1 =
    140152CXXLD = $(CXX)
    141 CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
    142         -o $@
     153CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
     154        $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
     155        $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
    143156AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
    144157am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
     
    177190AMTAR = @AMTAR@
    178191AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
     192AR = @AR@
    179193AUTOCONF = @AUTOCONF@
    180194AUTOHEADER = @AUTOHEADER@
    181195AUTOMAKE = @AUTOMAKE@
    182196AWK = @AWK@
    183 BACKEND_CC = @BACKEND_CC@
    184197BUILD_IN_TREE_FLAGS = @BUILD_IN_TREE_FLAGS@
    185198CC = @CC@
     
    201214CPPFLAGS = @CPPFLAGS@
    202215CXX = @CXX@
     216CXXCPP = @CXXCPP@
    203217CXXDEPMODE = @CXXDEPMODE@
    204218CXXFLAGS = @CXXFLAGS@
     
    206220DEFS = @DEFS@
    207221DEPDIR = @DEPDIR@
     222DLLTOOL = @DLLTOOL@
    208223DRIVER_DIR = @DRIVER_DIR@
     224DSYMUTIL = @DSYMUTIL@
     225DUMPBIN = @DUMPBIN@
    209226ECHO_C = @ECHO_C@
    210227ECHO_N = @ECHO_N@
     
    212229EGREP = @EGREP@
    213230EXEEXT = @EXEEXT@
     231FGREP = @FGREP@
    214232GREP = @GREP@
    215233HOST_FLAGS = @HOST_FLAGS@
     
    219237INSTALL_SCRIPT = @INSTALL_SCRIPT@
    220238INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
     239LD = @LD@
    221240LDFLAGS = @LDFLAGS@
    222241LEX = @LEX@
     
    227246LIBOBJS = @LIBOBJS@
    228247LIBS = @LIBS@
     248LIBTOOL = @LIBTOOL@
     249LIPO = @LIPO@
     250LN_S = @LN_S@
    229251LTLIBOBJS = @LTLIBOBJS@
     252LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
    230253MAKEINFO = @MAKEINFO@
     254MANIFEST_TOOL = @MANIFEST_TOOL@
    231255MKDIR_P = @MKDIR_P@
     256NM = @NM@
     257NMEDIT = @NMEDIT@
     258OBJDUMP = @OBJDUMP@
    232259OBJEXT = @OBJEXT@
     260OTOOL = @OTOOL@
     261OTOOL64 = @OTOOL64@
    233262PACKAGE = @PACKAGE@
    234263PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
     
    240269PATH_SEPARATOR = @PATH_SEPARATOR@
    241270RANLIB = @RANLIB@
     271SED = @SED@
    242272SET_MAKE = @SET_MAKE@
    243273SHELL = @SHELL@
     
    251281abs_top_builddir = @abs_top_builddir@
    252282abs_top_srcdir = @abs_top_srcdir@
     283ac_ct_AR = @ac_ct_AR@
    253284ac_ct_CC = @ac_ct_CC@
    254285ac_ct_CXX = @ac_ct_CXX@
     286ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
    255287am__include = @am__include@
    256288am__leading_dot = @am__leading_dot@
     
    300332top_srcdir = @top_srcdir@
    301333AUTOMAKE_OPTIONS = foreign    # do not require all the GNU file names
     334ACLOCAL_AMFLAGS = -I automake
    302335
    303336# applies to both programs
     
    313346
    314347.SUFFIXES:
    315 .SUFFIXES: .cc .o .obj
     348.SUFFIXES: .cc .lo .o .obj
    316349$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
    317350        @for dep in $?; do \
     
    353386        sed 's/$(EXEEXT)$$//' | \
    354387        while read p p1; do if test -f $$p \
     388         || test -f $$p1 \
    355389          ; then echo "$$p"; echo "$$p"; else :; fi; \
    356390        done | \
     
    367401            if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
    368402            test -z "$$files" || { \
    369               echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(cc1libdir)$$dir'"; \
    370               $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(cc1libdir)$$dir" || exit $$?; \
     403            echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(cc1libdir)$$dir'"; \
     404            $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(cc1libdir)$$dir" || exit $$?; \
    371405            } \
    372406        ; done
     
    384418
    385419clean-cc1libPROGRAMS:
    386         -test -z "$(cc1lib_PROGRAMS)" || rm -f $(cc1lib_PROGRAMS)
     420        @list='$(cc1lib_PROGRAMS)'; test -n "$$list" || exit 0; \
     421        echo " rm -f" $$list; \
     422        rm -f $$list || exit $$?; \
     423        test -n "$(EXEEXT)" || exit 0; \
     424        list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
     425        echo " rm -f" $$list; \
     426        rm -f $$list
    387427
    388428clean-noinstPROGRAMS:
    389         -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
     429        @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
     430        echo " rm -f" $$list; \
     431        rm -f $$list || exit $$?; \
     432        test -n "$(EXEEXT)" || exit 0; \
     433        list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
     434        echo " rm -f" $$list; \
     435        rm -f $$list
    390436
    391437as$(EXEEXT): $(as_OBJECTS) $(as_DEPENDENCIES) $(EXTRA_as_DEPENDENCIES)
     
    426472@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    427473@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
     474
     475.cc.lo:
     476@am__fastdepCXX_TRUE@   $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
     477@am__fastdepCXX_TRUE@   $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
     478@am__fastdepCXX_TRUE@   $(am__mv) $$depbase.Tpo $$depbase.Plo
     479@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
     480@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     481@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
     482
     483mostlyclean-libtool:
     484        -rm -f *.lo
     485
     486clean-libtool:
     487        -rm -rf .libs _libs
    428488
    429489ID: $(am__tagged_files)
     
    549609clean: clean-am
    550610
    551 clean-am: clean-cc1libPROGRAMS clean-generic clean-noinstPROGRAMS \
    552         mostlyclean-am
     611clean-am: clean-cc1libPROGRAMS clean-generic clean-libtool \
     612        clean-noinstPROGRAMS mostlyclean-am
    553613
    554614distclean: distclean-am
     
    606666mostlyclean: mostlyclean-am
    607667
    608 mostlyclean-am: mostlyclean-compile mostlyclean-generic
     668mostlyclean-am: mostlyclean-compile mostlyclean-generic \
     669        mostlyclean-libtool
    609670
    610671pdf: pdf-am
     
    622683
    623684.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \
    624         clean-cc1libPROGRAMS clean-generic clean-noinstPROGRAMS \
    625         cscopelist-am ctags ctags-am distclean distclean-compile \
    626         distclean-generic distclean-tags distdir dvi dvi-am html \
    627         html-am info info-am install install-am install-cc1libPROGRAMS \
    628         install-data install-data-am install-dvi install-dvi-am \
    629         install-exec install-exec-am install-exec-hook install-html \
    630         install-html-am install-info install-info-am install-man \
    631         install-pdf install-pdf-am install-ps install-ps-am \
    632         install-strip installcheck installcheck-am installdirs \
    633         maintainer-clean maintainer-clean-generic mostlyclean \
    634         mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
     685        clean-cc1libPROGRAMS clean-generic clean-libtool \
     686        clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \
     687        distclean-compile distclean-generic distclean-libtool \
     688        distclean-tags distdir dvi dvi-am html html-am info info-am \
     689        install install-am install-cc1libPROGRAMS install-data \
     690        install-data-am install-dvi install-dvi-am install-exec \
     691        install-exec-am install-exec-hook install-html install-html-am \
     692        install-info install-info-am install-man install-pdf \
     693        install-pdf-am install-ps install-ps-am install-strip \
     694        installcheck installcheck-am installdirs maintainer-clean \
     695        maintainer-clean-generic mostlyclean mostlyclean-compile \
     696        mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
    635697        tags tags-am uninstall uninstall-am uninstall-cc1libPROGRAMS \
    636698        uninstall-hook
  • driver/as.cc

    r5e49e47 rd0c91a6  
    1 // 
     1//
    22// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
    33//
    44// The contents of this file are covered under the licence agreement in the
    55// file "LICENCE" distributed with Cforall.
    6 // 
     6//
    77// as.c -- map assembler file, scan for debug information. If found, expand file by one character and insert Cforall
    88//         language code on the N line from the start of the debug information.
    9 // 
     9//
    1010// Author           : Peter A. Buhr
    1111// Created On       : Wed Aug  1 10:49:42 2018
     
    1313// Last Modified On : Sat Sep  8 08:40:16 2018
    1414// Update Count     : 97
    15 // 
     15//
    1616
    1717#include <cstdio>                                                                               // perror
     
    4545
    4646        if ( size ) {                                                                           // cannot map 0 sized file
    47                 char * start = (char *)mmap( NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0 );
     47                char * start = (char *)mmap( NULL, size + 2, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0 );
    4848                if ( start == (void *)-1 ) { perror( "mmap" ); exit( EXIT_FAILURE ); };
    4949
     
    6565                } // if
    6666
    67                 if ( munmap( start, size ) ) { perror( "munmap" ); exit( EXIT_FAILURE ); }; // update on disk
     67                if ( munmap( start, size + 2 ) ) { perror( "munmap" ); exit( EXIT_FAILURE ); }; // update on disk
    6868        } // if
    6969
  • examples/ArrayN.c

    r5e49e47 rd0c91a6  
    77
    88forall(otype index_t)
    9 index_t offset_to_index(unsigned offset, index_t size)
    10 {
     9index_t offset_to_index(unsigned offset, index_t size) {
    1110    return [offset / size.0, offset % size.1];
    1211}
    1312
    14 int main(int argc, char* argv[])
    15 {
     13int main(int argc, char* argv[]) {
    1614    unsigned x = 0, y = 0, i = 0;
    1715    unsigned sx = 4, sy = 4;
     
    2018    [x, y] = offset_to_index(6, [sx, sy]);
    2119
    22     sout | x | ' ' | y | endl;
     20    sout | x | ' ' | y;
    2321
    2422    return 0;
  • examples/gc_no_raii/src/internal/collector.c

    r5e49e47 rd0c91a6  
    3838void* gc_allocate(size_t target_size)
    3939{
    40         // sout | "Allocating " | target_size | " bytes" | endl;
     40        // sout | "Allocating " | target_size | " bytes";
    4141
    4242        size_t size = gc_compute_size(target_size + sizeof(gc_object_header));
    4343
    44         // sout | "Object header size: " | sizeof(gc_object_header) | " bytes" | endl;
    45         // sout | "Actual allocation size: " | size | " bytes" | endl;
     44        // sout | "Object header size: " | sizeof(gc_object_header) | " bytes";
     45        // sout | "Actual allocation size: " | size | " bytes";
    4646
    4747        check(size < POOL_SIZE_BYTES);
  • examples/gc_no_raii/src/internal/state.h

    r5e49e47 rd0c91a6  
    3838static inline bool gc_needs_collect(gc_state* state)
    3939{
    40         // sout | "Used Space: " | state->used_space | " bytes" | endl;
     40        // sout | "Used Space: " | state->used_space | " bytes";
    4141        return state->used_space * 2 > state->total_space;
    4242}
  • examples/gc_no_raii/src/tools/print.h

    r5e49e47 rd0c91a6  
    55// #include <fstream.hfa>
    66//
    7 // #define DEBUG_OUT(x) sout | x | endl;
     7// #define DEBUG_OUT(x) sout | x;
    88//
    99// #else
  • examples/multicore.c

    r5e49e47 rd0c91a6  
    1515
    1616int main(int argc, char* argv[]) {
    17         // sout | "User main begin" | endl;
     17        // sout | "User main begin";
    1818        {
    1919                processor p;
     
    2222                }
    2323        }
    24         // sout | "User main end" | endl;
     24        // sout | "User main end";
    2525}
  • examples/prolog.c

    r5e49e47 rd0c91a6  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Mar  8 22:09:39 2016
    13 // Update Count     : 5
     12// Last Modified On : Tue Dec 11 23:27:19 2018
     13// Update Count     : 6
    1414//
    1515
    1616#include <fstream.hfa>
    1717
    18 void printResult( int x ) { sout | "int" | endl; }
    19 void printResult( double x ) { sout | "double" | endl; }
    20 void printResult( char * x ) { sout | "char*" | endl; }
     18void printResult( int x ) { sout | "int"; }
     19void printResult( double x ) { sout | "double"; }
     20void printResult( char * x ) { sout | "char*"; }
    2121
    2222void is_arithmetic( int x ) {}
  • examples/quad.c

    r5e49e47 rd0c91a6  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Mar  8 22:07:02 2016
    13 // Update Count     : 8
     12// Last Modified On : Tue Dec 11 23:26:58 2018
     13// Update Count     : 9
    1414//
    1515
     
    2828int main() {
    2929        int N = 2;
    30         sout | "result of quad of" | N | "is" | quad( N ) | endl;
     30        sout | "result of quad of" | N | "is" | quad( N );
    3131}
    3232
  • examples/square.c

    r5e49e47 rd0c91a6  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Mar  8 22:05:48 2016
    13 // Update Count     : 27
     12// Last Modified On : Tue Dec 11 23:28:24 2018
     13// Update Count     : 28
    1414//
    1515
     
    2323int main() {
    2424#if 0
    25         sout | "result of squaring 9 is " | endl;
     25        sout | "result of squaring 9 is ";
    2626
    2727        // char does not have multiplication.
     
    3030        } // ?*?
    3131        char c = 9;
    32         sout | "char\t\t\t" | square( c ) | endl;
     32        sout | "char\t\t\t" | square( c );
    3333
    34         sout | square( s ) | endl;
     34        sout | square( s );
    3535#endif
    3636        short s = 9;
     
    3838#if 0
    3939        signed int i = 9;
    40         sout | "signed int\t\t" | square( i ) | endl;
     40        sout | "signed int\t\t" | square( i );
    4141
    4242        unsigned int ui = 9;
    43         sout | "unsigned int\t\t" | square( ui ) | endl;
     43        sout | "unsigned int\t\t" | square( ui );
    4444
    4545        long int li = 9;
    46         sout | "signed long int\t\t" | square( li ) | endl;
     46        sout | "signed long int\t\t" | square( li );
    4747
    4848        unsigned long int uli = 9;
    49         sout | "unsigned long int\t" | square( uli ) | endl;
     49        sout | "unsigned long int\t" | square( uli );
    5050
    5151        signed long long int lli = 9;
    52         sout | "signed long long int\t" | square( lli ) | endl;
     52        sout | "signed long long int\t" | square( lli );
    5353
    5454        unsigned long long int ulli = 9;
    55         sout | "unsigned long long int\t" | square( ulli ) | endl;
     55        sout | "unsigned long long int\t" | square( ulli );
    5656
    5757        float f = 9.0;
    58         sout | "float\t\t\t" | square( f ) | endl;
     58        sout | "float\t\t\t" | square( f );
    5959
    6060        double d = 9.0;
    61         sout | "double\t\t\t" | square( d ) | endl;
     61        sout | "double\t\t\t" | square( d );
    6262
    6363        long double ld = 9.0;
    64         sout | "long double\t\t" | square( ld ) | endl;
     64        sout | "long double\t\t" | square( ld );
    6565#endif
    6666} // main
  • examples/twice.c

    r5e49e47 rd0c91a6  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Oct 19 21:52:57 2017
    13 // Update Count     : 46
     12// Last Modified On : Tue Dec 11 23:28:08 2018
     13// Update Count     : 47
    1414//
    1515
     
    2828
    2929int main( void ) {
    30         sout | twice( ' ' ) | ' ' | twice( (signed char)0 ) | twice( (int)1 ) | twice( 3.2 ) | endl;
     30        sout | twice( ' ' ) | ' ' | twice( (signed char)0 ) | twice( (int)1 ) | twice( 3.2 );
    3131}
    3232
  • examples/wrapper/src/main.c

    r5e49e47 rd0c91a6  
    11#include "pointer.h"
    22
    3 wrapper_t make_copy(wrapper_t copy)
    4 {
     3wrapper_t make_copy(wrapper_t copy) {
    54        return copy;
    65}
    76
    8 int main(int argc, char const *argv[])
    9 {
     7int main(int argc, char const *argv[]) {
    108        wrapper_t p = wrap(6);
    11 
    12         sout | endl | "test started" | endl;
    13 
     9        sout | nl | "test started";
    1410        wrapper_t p2 = p;
    15 
    1611        clear(&p);
    17 
    1812        p = p2;
    19 
    2013        wrapper_t p3 = make_copy(p2);
    21 
    22         sout | endl | "test ended" | endl;
    23 
     14        sout | nl | "test ended";
    2415        return 0;
    2516}
  • examples/wrapper/src/pointer.h

    r5e49e47 rd0c91a6  
    3434void ?{}(content_t* this)
    3535{
    36         sout | "Constructing content" | endl;
     36        sout | "Constructing content";
    3737        this->count = 0;
    3838}
     
    4040void ^?{}(content_t* this)
    4141{
    42         sout | "Destroying content" | endl;
     42        sout | "Destroying content";
    4343}
    4444
     
    5353void ?{}(wrapper_t* this)
    5454{
    55         sout | "Constructing empty ref pointer" | endl | endl;
     55        sout | "Constructing empty ref pointer" | nl;
    5656        this->ptr = NULL;
    5757}
     
    5959void ?{}(wrapper_t* this, wrapper_t rhs)
    6060{
    61         sout | "Constructing ref pointer from copy" | endl;
     61        sout | "Constructing ref pointer from copy";
    6262        this->ptr = rhs.ptr;
    6363        this->ptr->count++;
    64         sout | "Reference is " | this->ptr->count | endl | endl;
     64        sout | "Reference is " | this->ptr->count | nl;
    6565}
    6666
     
    6969        if(this->ptr)
    7070        {
    71                 sout | "Destroying ref pointer" | endl;
     71                sout | "Destroying ref pointer";
    7272                this->ptr->count--;
    73                 sout | "Reference is " | this->ptr->count | endl | endl;
     73                sout | "Reference is " | this->ptr->count | nl;
    7474                if(!this->ptr->count) delete(this->ptr);
    7575        }
    7676        else
    7777        {
    78                 sout | "Destroying empty ref pointer" | endl | endl;
     78                sout | "Destroying empty ref pointer" | nl;
    7979        }
    8080}
     
    8282wrapper_t ?=?(wrapper_t* this, wrapper_t rhs)
    8383{
    84         sout | "Setting ref pointer" | endl;
     84        sout | "Setting ref pointer";
    8585        if(this->ptr)
    8686        {
    8787                this->ptr->count--;
    88                 sout | "Reference is " | this->ptr->count | endl | endl;
     88                sout | "Reference is " | this->ptr->count | nl;
    8989                if(!this->ptr->count) delete(this->ptr);
    9090        }
    9191        this->ptr = rhs.ptr;
    9292        this->ptr->count++;
    93         sout | "Reference is " | this->ptr->count | endl | endl;
     93        sout | "Reference is " | this->ptr->count | nl;
    9494}
    9595
     
    9898        this->ptr = c;
    9999        this->ptr->count++;
    100         sout | "Setting ref pointer" | endl;
    101         sout | "Reference is " | this->ptr->count | endl | endl;
     100        sout | "Setting ref pointer";
     101        sout | "Reference is " | this->ptr->count | nl;
    102102}
    103103
    104104void clear(wrapper_t* this)
    105105{
    106         sout | "Clearing ref pointer" | endl;
     106        sout | "Clearing ref pointer";
    107107        this->ptr->count--;
    108         sout | "Reference is " | this->ptr->count | endl | endl;
     108        sout | "Reference is " | this->ptr->count | nl;
    109109        if(!this->ptr->count) delete(this->ptr);
    110110        this->ptr = NULL;
  • examples/zero_one.c

    r5e49e47 rd0c91a6  
    33void foo(zero_t o)
    44{
    5         sout | "It's a Zero!" | endl;
     5        sout | "It's a Zero!";
    66}
    77
    88void foo(one_t o)
    99{
    10         sout | "It's a One!" | endl;
     10        sout | "It's a One!";
    1111}
    1212
    1313void foo(int o)
    1414{
    15         sout | "It's a Number!" | endl;
     15        sout | "It's a Number!";
    1616}
    1717
  • libcfa/configure

    r5e49e47 rd0c91a6  
    29702970                CONFIG_CFAFLAGS="-nodebug"
    29712971                CONFIG_BUILDLIB="no"
     2972        ;;
     2973        *)
     2974        as_fn_error $? "'Invalid value $CONFIGURATION for \$CONFIGURATION'" "$LINENO" 5
    29722975        ;;
    29732976esac
     
    1677316776
    1677416777
     16778
    1677516779{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
    1677616780$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
  • libcfa/configure.ac

    r5e49e47 rd0c91a6  
    5959                CONFIG_BUILDLIB="no"
    6060        ;;
     61        *)
     62        AC_MSG_ERROR('Invalid value $CONFIGURATION for \$CONFIGURATION')
     63        ;;
    6164esac
    6265
     
    8184AC_PROG_CC
    8285AM_PROG_AS
     86AC_PROG_LIBTOOL
    8387AC_PROG_INSTALL
    8488AC_PROG_MAKE_SET
  • libcfa/src/Makefile.am

    r5e49e47 rd0c91a6  
    6868libdeps = $(join \
    6969        $(addsuffix $(DEPDIR)/ , $(dir $(libobjs) ) ), \
    70         $(notdir ${libobjs:.lo=.Po}) \
     70        $(notdir ${libobjs:.lo=.Plo}) \
    7171)
    7272
     
    7474
    7575prelude.o : prelude.cfa extras.cf gcc-builtins.cf builtins.cf @CFACC@ @CFACPP@
    76         ${AM_V_GEN}@CFACC@ ${AM_CFLAGS} ${CFLAGS} -quiet -in-tree -XCFA -l ${<} -c -o ${@}
     76        ${AM_V_GEN}@CFACC@ ${AM_CFLAGS} ${CFLAGS} -quiet -in-tree @CONFIG_CFAFLAGS@ -XCFA -l ${<} -c -o ${@}
    7777
    7878prelude.lo: prelude.cfa extras.cf gcc-builtins.cf builtins.cf @CFACC@ @CFACPP@
    7979        ${AM_V_GEN}$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile \
    80         @CFACC@ ${AM_CFLAGS} ${CFLAGS} -quiet -in-tree -XCFA -l ${<} -c -o ${@}
     80        @CFACC@ ${AM_CFLAGS} ${CFLAGS} -quiet -in-tree @CONFIG_CFAFLAGS@ -XCFA -l ${<} -c -o ${@}
    8181
    8282
  • libcfa/src/Makefile.in

    r5e49e47 rd0c91a6  
    407407am__v_CFA_0 = @echo "  CFA     " $@;
    408408am__v_CFA_1 =
     409AM_V_JAVAC = $(am__v_JAVAC_@AM_V@)
     410am__v_JAVAC_ = $(am__v_JAVAC_@AM_DEFAULT_V@)
     411am__v_JAVAC_0 = @echo "  JAVAC   " $@;
     412am__v_JAVAC_1 =
     413AM_V_GOC = $(am__v_GOC_@AM_V@)
     414am__v_GOC_ = $(am__v_GOC_@AM_DEFAULT_V@)
     415am__v_GOC_0 = @echo "  GOC     " $@;
     416am__v_GOC_1 =
     417UPPCOMPILE = $(UPPCC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_UPPFLAGS) $(UPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_CFLAGS) $(CFLAGS)
     418AM_V_UPP = $(am__v_UPP_@AM_V@)
     419am__v_UPP_ = $(am__v_UPP_@AM_DEFAULT_V@)
     420am__v_UPP_0 = @echo "  UPP     " $@;
     421am__v_UPP_1 =
    409422lib_LTLIBRARIES = libcfa.la
    410423
     
    453466libdeps = $(join \
    454467        $(addsuffix $(DEPDIR)/ , $(dir $(libobjs) ) ), \
    455         $(notdir ${libobjs:.lo=.Po}) \
     468        $(notdir ${libobjs:.lo=.Plo}) \
    456469)
    457470
     
    912925
    913926prelude.o : prelude.cfa extras.cf gcc-builtins.cf builtins.cf @CFACC@ @CFACPP@
    914         ${AM_V_GEN}@CFACC@ ${AM_CFLAGS} ${CFLAGS} -quiet -in-tree -XCFA -l ${<} -c -o ${@}
     927        ${AM_V_GEN}@CFACC@ ${AM_CFLAGS} ${CFLAGS} -quiet -in-tree @CONFIG_CFAFLAGS@ -XCFA -l ${<} -c -o ${@}
    915928
    916929prelude.lo: prelude.cfa extras.cf gcc-builtins.cf builtins.cf @CFACC@ @CFACPP@
    917930        ${AM_V_GEN}$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile \
    918         @CFACC@ ${AM_CFLAGS} ${CFLAGS} -quiet -in-tree -XCFA -l ${<} -c -o ${@}
     931        @CFACC@ ${AM_CFLAGS} ${CFLAGS} -quiet -in-tree @CONFIG_CFAFLAGS@ -XCFA -l ${<} -c -o ${@}
    919932
    920933#----------------------------------------------------------------------------------------------------------------
  • libcfa/src/bits/locks.hfa

    r5e49e47 rd0c91a6  
    3737#endif
    3838
    39 #if defined( __i386 ) || defined( __x86_64 ) || defined( __ARM_ARCH )
    40         // Intel recommendation
    41         #define __ALIGN__ __attribute__(( aligned (128) ))
    42 #elif defined( __sparc )
    43         #define __ALIGN__ CALIGN
    44 #else
    45         #error unsupported architecture
    46 #endif
    47 
    4839struct __spinlock_t {
    4940        // Wrap in struct to prevent false sharing with debug info
    50         struct {
    51                 // Align lock on 128-bit boundary
    52                 __ALIGN__ volatile bool lock;
    53         };
     41        volatile bool lock;
    5442        #ifdef __CFA_DEBUG__
    5543                // previous function to acquire the lock
     
    5846                void* prev_thrd;
    5947        #endif
    60 } __ALIGN__;
     48};
    6149
    6250#ifdef __cforall
  • libcfa/src/concurrency/coroutine.cfa

    r5e49e47 rd0c91a6  
    2222#include <string.h>
    2323#include <unistd.h>
     24// use this define to make unwind.h play nice, definetely a hack
     25#define HIDE_EXPORTS
     26#include <unwind.h>
     27#undef HIDE_EXPORTS
    2428#include <sys/mman.h>
    2529}
     
    2933#define __CFA_INVOKE_PRIVATE__
    3034#include "invoke.h"
     35
     36extern "C" {
     37      void _CtxCoroutine_Unwind(struct _Unwind_Exception * storage) __attribute__ ((__noreturn__));
     38      static void _CtxCoroutine_UnwindCleanup(_Unwind_Reason_Code, struct _Unwind_Exception *) __attribute__ ((__noreturn__));
     39      static void _CtxCoroutine_UnwindCleanup(_Unwind_Reason_Code, struct _Unwind_Exception *) {
     40            abort();
     41      }
     42}
    3143
    3244//-----------------------------------------------------------------------------
     
    6779      starter = NULL;
    6880      last = NULL;
    69 }
    70 
    71 void ^?{}(coroutine_desc& this) {}
     81      cancellation = NULL;
     82}
     83
     84void ^?{}(coroutine_desc& this) {
     85      if(this.state != Halted) {
     86            coroutine_desc * src = TL_GET( this_coroutine );
     87            coroutine_desc * dst = &this;
     88
     89            struct _Unwind_Exception storage;
     90            storage.exception_class = -1;
     91            storage.exception_cleanup = _CtxCoroutine_UnwindCleanup;
     92            this.cancellation = &storage;
     93            this.last = src;
     94
     95              // not resuming self ?
     96              if ( src == dst ) {
     97                      abort( "Attempt by coroutine %.256s (%p) to terminate itself.\n", src->name, src );
     98            }
     99
     100              CoroutineCtxSwitch( src, dst );
     101      }
     102}
    72103
    73104// Part of the Public API
     
    105136      // Safety note : This could cause some false positives due to preemption
    106137      verify( TL_GET( preemption_state.enabled ) || TL_GET( this_processor )->do_terminate );
     138
     139      if( unlikely(src->cancellation != NULL) ) {
     140            _CtxCoroutine_Unwind(src->cancellation);
     141      }
    107142} //ctxSwitchDirect
    108143
     
    162197      }
    163198
    164       void __leave_coroutine(void) {
     199      void __leave_coroutine() {
    165200            coroutine_desc * src = TL_GET( this_coroutine ); // optimization
    166 
    167             assertf( src->starter != 0,
     201            coroutine_desc * starter = src->cancellation != 0 ? src->last : src->starter;
     202
     203            src->state = Halted;
     204
     205            assertf( starter != 0,
    168206                  "Attempt to suspend/leave coroutine \"%.256s\" (%p) that has never been resumed.\n"
    169207                  "Possible cause is a suspend executed in a member called by a coroutine user rather than by the coroutine main.",
    170208                  src->name, src );
    171             assertf( src->starter->state != Halted,
     209            assertf( starter->state != Halted,
    172210                  "Attempt by coroutine \"%.256s\" (%p) to suspend/leave back to terminated coroutine \"%.256s\" (%p).\n"
    173211                  "Possible cause is terminated coroutine's main routine has already returned.",
    174                   src->name, src, src->starter->name, src->starter );
    175 
    176             CoroutineCtxSwitch( src, src->starter );
     212                  src->name, src, starter->name, starter );
     213
     214            CoroutineCtxSwitch( src, starter );
    177215      }
    178216}
  • libcfa/src/concurrency/invoke.c

    r5e49e47 rd0c91a6  
    1717#include <stdlib.h>
    1818#include <stdio.h>
     19#include <unwind.h>
    1920
    2021#include "invoke.h"
     
    5051        main( this );
    5152
    52         cor->state = Halted;
    53 
    5453        //Final suspend, should never return
    5554        __leave_coroutine();
    5655        __cabi_abort( "Resumed dead coroutine" );
     56}
     57
     58static _Unwind_Reason_Code _CtxCoroutine_UnwindStop(
     59        __attribute((__unused__)) int version,
     60        _Unwind_Action actions,
     61        __attribute((__unused__)) _Unwind_Exception_Class exceptionClass,
     62        __attribute((__unused__)) struct _Unwind_Exception * unwind_exception,
     63        __attribute((__unused__)) struct _Unwind_Context * context,
     64        __attribute((__unused__)) void * param
     65) {
     66        if( actions & _UA_END_OF_STACK  ) {
     67                // We finished unwinding the coroutine,
     68                // leave it
     69                __leave_coroutine();
     70                __cabi_abort( "Resumed dead coroutine" );
     71        }
     72        if( actions & _UA_CLEANUP_PHASE ) return _URC_NO_REASON;
     73
     74        return _URC_FATAL_PHASE2_ERROR;
     75}
     76
     77void _CtxCoroutine_Unwind(struct _Unwind_Exception * storage) __attribute__ ((__noreturn__));
     78void _CtxCoroutine_Unwind(struct _Unwind_Exception * storage) {
     79        _Unwind_Reason_Code ret = _Unwind_ForcedUnwind( storage, _CtxCoroutine_UnwindStop, NULL );
     80        printf("UNWIND ERROR %d after force unwind\n", ret);
     81        abort();
    5782}
    5883
  • libcfa/src/concurrency/invoke.h

    r5e49e47 rd0c91a6  
    8080
    8181        struct coroutine_desc {
    82                 struct coStack_t stack;                                                 // stack information of the coroutine
    83                 const char * name;                                                              // textual name for coroutine/task, initialized by uC++ generated code
    84                 int errno_;                                                                             // copy of global UNIX variable errno
    85                 enum coroutine_state state;                                             // current execution status for coroutine
    86                 struct coroutine_desc * starter;                                // first coroutine to resume this one
    87                 struct coroutine_desc * last;                                   // last coroutine to resume this one
    88         };
    89 
     82                // stack information of the coroutine
     83                struct coStack_t stack;
     84
     85                // textual name for coroutine/task, initialized by uC++ generated code
     86                const char * name;
     87
     88                // copy of global UNIX variable errno
     89                int errno_;
     90
     91                // current execution status for coroutine
     92                enum coroutine_state state;
     93                // first coroutine to resume this one
     94                struct coroutine_desc * starter;
     95
     96                // last coroutine to resume this one
     97                struct coroutine_desc * last;
     98
     99                // If non-null stack must be unwound with this exception
     100                struct _Unwind_Exception * cancellation;
     101
     102        };
     103
     104        // struct which calls the monitor is accepting
    90105        struct __waitfor_mask_t {
    91106                // the index of the accepted function, -1 if none
  • libcfa/src/fstream.cfa

    r5e49e47 rd0c91a6  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Aug 10 18:19:40 2018
    13 // Update Count     : 284
     12// Last Modified On : Mon Dec 24 18:33:38 2018
     13// Update Count     : 304
    1414//
    1515
     
    2020#include <stdarg.h>                                                                             // varargs
    2121#include <string.h>                                                                             // strlen
    22 #include <stdbool.h>                                                                    // true/false
    2322#include <float.h>                                                                              // DBL_DIG, LDBL_DIG
    2423#include <complex.h>                                                                    // creal, cimag
     
    2726#define IO_MSG "I/O error: "
    2827
    29 void ?{}( ofstream & os, void * file, bool sepDefault, bool sepOnOff, const char * separator, const char * tupleSeparator ) {
     28void ?{}( ofstream & os, void * file, bool sepDefault, bool sepOnOff, bool nlOnOff, bool prt, const char * separator, const char * tupleSeparator ) {
    3029        os.file = file;
    3130        os.sepDefault = sepDefault;
    3231        os.sepOnOff = sepOnOff;
     32        os.nlOnOff = nlOnOff;
     33        os.prt = prt;
    3334        sepSet( os, separator );
    3435        sepSetCur( os, sepGet( os ) );
     
    4445bool getNL( ofstream & os ) { return os.sawNL; }
    4546void setNL( ofstream & os, bool state ) { os.sawNL = state; }
     47bool getANL( ofstream & os ) { return os.nlOnOff; }
     48bool getPrt( ofstream & os ) { return os.prt; }
     49void setPrt( ofstream & os, bool state ) { os.prt = state; }
    4650
    4751// public
     
    7276} // sepEnable
    7377
     78void nlOn( ofstream & os ) { os.nlOnOff = true; }
     79void nlOff( ofstream & os ) { os.nlOnOff = false; }
     80
    7481const char * sepGet( ofstream & os ) { return os.separator; }
    7582void sepSet( ofstream & os, const char * s ) {
     
    103110        } // if
    104111        #endif // __CFA_DEBUG__
    105         (os){ file, true, false, " ", ", " };
     112        (os){ file, true, false, true, false, " ", ", " };
    106113} // open
    107114
     
    143150        va_end( args );
    144151
     152        setPrt( os, true );                                                                     // called in output cascade
    145153        sepReset( os );                                                                         // reset separator
    146154        return len;
    147155} // fmt
    148156
    149 static ofstream soutFile = { (FILE *)(&_IO_2_1_stdout_), true, false, " ", ", " };
     157static ofstream soutFile = { (FILE *)(&_IO_2_1_stdout_), true, false, true, false, " ", ", " };
    150158ofstream & sout = soutFile;
    151 static ofstream serrFile = { (FILE *)(&_IO_2_1_stderr_), true, false, " ", ", " };
     159static ofstream serrFile = { (FILE *)(&_IO_2_1_stderr_), true, false, true, false, " ", ", " };
    152160ofstream & serr = serrFile;
    153161
  • libcfa/src/fstream.hfa

    r5e49e47 rd0c91a6  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Aug 11 13:54:27 2018
    13 // Update Count     : 132
     12// Last Modified On : Mon Dec 24 18:33:41 2018
     13// Update Count     : 149
    1414//
    1515
     
    2323        bool sepDefault;
    2424        bool sepOnOff;
     25        bool nlOnOff;
     26        bool prt;                                                                                       // print text
    2527        bool sawNL;
    2628        const char * sepCur;
     
    3739bool getNL( ofstream & );
    3840void setNL( ofstream &, bool );
     41bool getANL( ofstream & );
     42bool getPrt( ofstream & );
     43void setPrt( ofstream &, bool );
    3944
    4045// public
     
    4348bool sepDisable( ofstream & );
    4449bool sepEnable( ofstream & );
     50void nlOn( ofstream & );
     51void nlOff( ofstream & );
    4552
    4653const char * sepGet( ofstream & );
     
    5562void close( ofstream & );
    5663ofstream & write( ofstream &, const char * data, size_t size );
    57 int fmt( ofstream &, const char fmt[], ... );
     64int fmt( ofstream &, const char format[], ... );
    5865
    5966void ?{}( ofstream & os );
     
    7683ifstream & read( ifstream & is, char * data, size_t size );
    7784ifstream & ungetc( ifstream & is, char c );
    78 int fmt( ifstream &, const char fmt[], ... );
     85int fmt( ifstream &, const char format[], ... );
    7986
    8087void ?{}( ifstream & is );
  • libcfa/src/gmp.hfa

    r5e49e47 rd0c91a6  
    1010// Created On       : Tue Apr 19 08:43:43 2016
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Dec  7 09:10:41 2017
    13 // Update Count     : 21
     12// Last Modified On : Tue Dec  4 23:25:51 2018
     13// Update Count     : 22
    1414//
    1515
     
    262262} // ?|?
    263263
    264 static inline forall( dtype ostype | ostream( ostype ) )
    265 ostype & ?|?( ostype & os, Int mp ) {
    266         if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
    267         gmp_printf( "%Zd", mp.mpz );
    268         sepOn( os );
    269         return os;
    270 } // ?|?
     264static inline forall( dtype ostype | ostream( ostype ) ) {
     265        ostype & ?|?( ostype & os, Int mp ) {
     266                if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
     267                gmp_printf( "%Zd", mp.mpz );
     268                sepOn( os );
     269                return os;
     270        } // ?|?
     271
     272        void ?|?( ostype & os, Int mp ) {
     273                (ostype)(os | mp); if ( getANL( os ) ) nl( os );
     274        } // ?|?
     275} // distribution
    271276
    272277// Local Variables: //
  • libcfa/src/iostream.cfa

    r5e49e47 rd0c91a6  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Nov  2 07:17:05 2018
    13 // Update Count     : 474
     12// Last Modified On : Mon Dec 24 18:33:40 2018
     13// Update Count     : 589
    1414//
    1515
     
    1919#include <stdio.h>
    2020#include <stdbool.h>                                                                    // true/false
    21 //#include <string.h>                                                                           // strlen, strcmp
     21//#include <string.h>                                                                   // strlen, strcmp
    2222extern int strcmp (const char *__s1, const char *__s2) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
    2323extern size_t strlen (const char *__s) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
     
    3232                return os;
    3333        } // ?|?
    34 
    35         ostype & ?|?( ostype & os, char ch ) {
    36                 fmt( os, "%c", ch );
    37                 if ( ch == '\n' ) setNL( os, true );
    38                 sepOff( os );
    39                 return os;
    40         } // ?|?
    41 
    42         ostype & ?|?( ostype & os, signed char c ) {
    43                 if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
    44                 fmt( os, "%hhd", c );
    45                 return os;
    46         } // ?|?
    47 
    48         ostype & ?|?( ostype & os, unsigned char c ) {
    49                 if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
    50                 fmt( os, "%hhu", c );
    51                 return os;
     34        void ?|?( ostype & os, bool b ) {
     35                (ostype &)(os | b); nl( os );
     36        } // ?|?
     37
     38        ostype & ?|?( ostype & os, char c ) {
     39                fmt( os, "%c", c );
     40                if ( c == '\n' ) setNL( os, true );
     41                return sepOff( os );
     42        } // ?|?
     43        void ?|?( ostype & os, char c ) {
     44                (ostype &)(os | c); nl( os );
     45        } // ?|?
     46
     47        ostype & ?|?( ostype & os, signed char sc ) {
     48                if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
     49                fmt( os, "%hhd", sc );
     50                return os;
     51        } // ?|?
     52        void ?|?( ostype & os, signed char sc ) {
     53                (ostype &)(os | sc); nl( os );
     54        } // ?|?
     55
     56        ostype & ?|?( ostype & os, unsigned char usc ) {
     57                if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
     58                fmt( os, "%hhu", usc );
     59                return os;
     60        } // ?|?
     61        void ?|?( ostype & os, unsigned char usc ) {
     62                (ostype &)(os | usc); nl( os );
    5263        } // ?|?
    5364
     
    5768                return os;
    5869        } // ?|?
     70        void & ?|?( ostype & os, short int si ) {
     71                (ostype &)(os | si); nl( os );
     72        } // ?|?
    5973
    6074        ostype & ?|?( ostype & os, unsigned short int usi ) {
     
    6377                return os;
    6478        } // ?|?
     79        void & ?|?( ostype & os, unsigned short int usi ) {
     80                (ostype &)(os | usi); nl( os );
     81        } // ?|?
    6582
    6683        ostype & ?|?( ostype & os, int i ) {
     
    6986                return os;
    7087        } // ?|?
     88        void & ?|?( ostype & os, int i ) {
     89                (ostype &)(os | i); nl( os );
     90        } // ?|?
    7191
    7292        ostype & ?|?( ostype & os, unsigned int ui ) {
     
    7595                return os;
    7696        } // ?|?
     97        void & ?|?( ostype & os, unsigned int ui ) {
     98                (ostype &)(os | ui); nl( os );
     99        } // ?|?
    77100
    78101        ostype & ?|?( ostype & os, long int li ) {
     
    81104                return os;
    82105        } // ?|?
     106        void & ?|?( ostype & os, long int li ) {
     107                (ostype &)(os | li); nl( os );
     108        } // ?|?
    83109
    84110        ostype & ?|?( ostype & os, unsigned long int uli ) {
     
    87113                return os;
    88114        } // ?|?
     115        void & ?|?( ostype & os, unsigned long int uli ) {
     116                (ostype &)(os | uli); nl( os );
     117        } // ?|?
    89118
    90119        ostype & ?|?( ostype & os, long long int lli ) {
     
    93122                return os;
    94123        } // ?|?
     124        void & ?|?( ostype & os, long long int lli ) {
     125                (ostype &)(os | lli); nl( os );
     126        } // ?|?
    95127
    96128        ostype & ?|?( ostype & os, unsigned long long int ulli ) {
     
    99131                return os;
    100132        } // ?|?
     133        void & ?|?( ostype & os, unsigned long long int ulli ) {
     134                (ostype &)(os | ulli); nl( os );
     135        } // ?|?
    101136
    102137        ostype & ?|?( ostype & os, float f ) {
     
    105140                return os;
    106141        } // ?|?
     142        void & ?|?( ostype & os, float f ) {
     143                (ostype &)(os | f); nl( os );
     144        } // ?|?
    107145
    108146        ostype & ?|?( ostype & os, double d ) {
     
    111149                return os;
    112150        } // ?|?
     151        void & ?|?( ostype & os, double d ) {
     152                (ostype &)(os | d); nl( os );
     153        } // ?|?
    113154
    114155        ostype & ?|?( ostype & os, long double ld ) {
     
    117158                return os;
    118159        } // ?|?
     160        void & ?|?( ostype & os, long double ld ) {
     161                (ostype &)(os | ld); nl( os );
     162        } // ?|?
    119163
    120164        ostype & ?|?( ostype & os, float _Complex fc ) {
     
    123167                return os;
    124168        } // ?|?
     169        void & ?|?( ostype & os, float _Complex fc ) {
     170                (ostype &)(os | fc); nl( os );
     171        } // ?|?
    125172
    126173        ostype & ?|?( ostype & os, double _Complex dc ) {
     
    129176                return os;
    130177        } // ?|?
     178        void & ?|?( ostype & os, double _Complex dc ) {
     179                (ostype &)(os | dc); nl( os );
     180        } // ?|?
    131181
    132182        ostype & ?|?( ostype & os, long double _Complex ldc ) {
     
    134184                fmt( os, "%.*Lg%+.*Lgi", LDBL_DIG, creall( ldc ), LDBL_DIG, cimagl( ldc ) );
    135185                return os;
     186        } // ?|?
     187        void & ?|?( ostype & os, long double _Complex ldc ) {
     188                (ostype &)(os | ldc); nl( os );
    136189        } // ?|?
    137190
     
    174227                return write( os, str, len );
    175228        } // ?|?
     229        void ?|?( ostype & os, const char * str ) {
     230                (ostype &)(os | str); nl( os );
     231        } // ?|?
    176232
    177233//      ostype & ?|?( ostype & os, const char16_t * str ) {
     
    200256                return os;
    201257        } // ?|?
    202 
     258        void ?|?( ostype & os, const void * p ) {
     259                (ostype &)(os | p); nl( os );
     260        } // ?|?
    203261
    204262        // manipulators
    205263        ostype & ?|?( ostype & os, ostype & (* manip)( ostype & ) ) {
    206                 return manip( os );
     264                (ostype &)(manip( os ));
     265                return os;
     266        } // ?|?
     267        void ?|?( ostype & os, ostype & (* manip)( ostype & ) ) {
     268                (ostype &)(manip( os ));
     269                if ( getPrt( os ) ) nl( os );                                   // something printed ?
     270                setPrt( os, false );                                                    // turn off
    207271        } // ?|?
    208272
    209273        ostype & sep( ostype & os ) {
    210                 os | sepGet( os );
    211                 return os;
     274                return (ostype &)(os | sepGet( os ));
    212275        } // sep
    213276
    214277        ostype & sepTuple( ostype & os ) {
    215                 os | sepGetTuple( os );
    216                 return os;
     278                return os | sepGetTuple( os );
    217279        } // sepTuple
    218280
    219         ostype & endl( ostype & os ) {
    220                 os | '\n';
     281        ostype & nl( ostype & os ) {
     282                (ostype &)(os | '\n');
     283                setPrt( os, false );                                                    // turn off
    221284                setNL( os, true );
    222285                flush( os );
    223                 sepOff( os );                                                                   // prepare for next line
    224                 return os;
    225         } // endl
     286                return sepOff( os );                                                    // prepare for next line
     287        } // nl
     288
     289        void nl( ostype & os ) {
     290                if ( getANL( os ) ) (ostype &)(nl( os ));               // implementation only
     291                else setPrt( os, false );                                               // turn off
     292        } // nl
     293
     294        ostype & nonl( ostype & os ) {
     295                setPrt( os, false );                                                    // turn off
     296                return os;
     297        } // nonl
    226298
    227299        ostype & sepOn( ostype & os ) {
    228                 sepOn( os );
     300                sepOn( os );                                                                    // call void returning
    229301                return os;
    230302        } // sepOn
    231303
    232304        ostype & sepOff( ostype & os ) {
    233                 sepOff( os );
     305                sepOff( os );                                                                   // call void returning
    234306                return os;
    235307        } // sepOff
    236308
    237309        ostype & sepEnable( ostype & os ) {
    238                 sepEnable( os );
     310                sepEnable( os );                                                                // call void returning
    239311                return os;
    240312        } // sepEnable
    241313
    242314        ostype & sepDisable( ostype & os ) {
    243                 sepDisable( os );
     315                sepDisable( os );                                                               // call void returning
    244316                return os;
    245317        } // sepDisable
     318
     319        ostype & nlOn( ostype & os ) {
     320                nlOn( os );                                                                             // call void returning
     321                return os;
     322        } // nlOn
     323
     324        ostype & nlOff( ostype & os ) {
     325                nlOff( os );                                                                    // call void returning
     326                return os;
     327        } // nlOff
    246328} // distribution
    247329
    248 
    249330// tuples
    250 forall( dtype ostype, otype T, ttype Params | writeable( T, ostype ) | { ostype & ?|?( ostype &, Params ); } )
    251 ostype & ?|?( ostype & os, T arg, Params rest ) {
    252         os | arg;                                                                                       // print first argument
    253         sepSetCur( os, sepGetTuple( os ) );                                     // switch to tuple separator
    254         os | rest;                                                                                      // print remaining arguments
    255         sepSetCur( os, sepGet( os ) );                                          // switch to regular separator
    256         return os;
    257 } // ?|?
     331forall( dtype ostype, otype T, ttype Params | writeable( T, ostype ) | { ostype & ?|?( ostype &, Params ); } ) {
     332        ostype & ?|?( ostype & os, T arg, Params rest ) {
     333                (ostype &)(os | arg);                                                   // print first argument
     334                sepSetCur( os, sepGetTuple( os ) );                             // switch to tuple separator
     335                (ostype &)(os | rest);                                                  // print remaining arguments
     336                sepSetCur( os, sepGet( os ) );                                  // switch to regular separator
     337                return os;
     338        } // ?|?
     339        void ?|?( ostype & os, T arg, Params rest ) {
     340                // (ostype &)(?|?( os, arg, rest )); nl( os );
     341                (ostype &)(os | arg);                                                   // print first argument
     342                sepSetCur( os, sepGetTuple( os ) );                             // switch to tuple separator
     343                (ostype &)(os | rest);                                                  // print remaining arguments
     344                sepSetCur( os, sepGet( os ) );                                  // switch to regular separator
     345                nl( os );
     346        } // ?|?
     347} // distribution
    258348
    259349//---------------------------------------
    260350
    261351// writes the range [begin, end) to the given stream
    262 forall( dtype ostype, otype elt_type | writeable( elt_type, ostype ), otype iterator_type | iterator( iterator_type, elt_type ) )
    263 void write( iterator_type begin, iterator_type end, ostype & os ) {
    264         void print( elt_type i ) { os | i; }
    265         for_each( begin, end, print );
    266 } // ?|?
    267 
    268 forall( dtype ostype, otype elt_type | writeable( elt_type, ostype ), otype iterator_type | iterator( iterator_type, elt_type ) )
    269 void write_reverse( iterator_type begin, iterator_type end, ostype & os ) {
    270         void print( elt_type i ) { os | i; }
    271         for_each_reverse( begin, end, print );
    272 } // ?|?
     352forall( dtype ostype, otype elt_type | writeable( elt_type, ostype ), otype iterator_type | iterator( iterator_type, elt_type ) ) {
     353        void write( iterator_type begin, iterator_type end, ostype & os ) {
     354                void print( elt_type i ) { os | i; }
     355                for_each( begin, end, print );
     356        } // ?|?
     357
     358        void write_reverse( iterator_type begin, iterator_type end, ostype & os ) {
     359                void print( elt_type i ) { os | i; }
     360                for_each_reverse( begin, end, print );
     361        } // ?|?
     362} // distribution
    273363
    274364//---------------------------------------
     
    386476        } // ?|?
    387477
    388         istype & endl( istype & is ) {
     478        istype & nl( istype & is ) {
    389479                fmt( is, "%*[ \t\f\n\r\v]" );                                   // ignore whitespace
    390480                return is;
    391         } // endl
     481        } // nl
    392482} // distribution
    393483
  • libcfa/src/iostream.hfa

    r5e49e47 rd0c91a6  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Aug 11 08:22:49 2018
    13 // Update Count     : 156
     12// Last Modified On : Mon Dec 24 18:33:40 2018
     13// Update Count     : 220
    1414//
    1515
     
    2020trait ostream( dtype ostype ) {
    2121        // private
    22         bool sepPrt( ostype & );                                                        // return separator state (on/off)
     22        bool sepPrt( ostype & );                                                        // get separator state (on/off)
    2323        void sepReset( ostype & );                                                      // set separator state to default state
    2424        void sepReset( ostype &, bool );                                        // set separator and default state
    2525        const char * sepGetCur( ostype & );                                     // get current separator string
    2626        void sepSetCur( ostype &, const char * );                       // set current separator string
    27         bool getNL( ostype & );                                                 // check newline
     27        bool getNL( ostype & );                                                         // check newline
    2828        void setNL( ostype &, bool );                                           // saw newline
     29        bool getANL( ostype & );                                                        // get auto newline (on/off)
     30        bool getPrt( ostype & );                                                        // get fmt called in output cascade
     31        void setPrt( ostype &, bool );                                          // set fmt called in output cascade
    2932        // public
    3033        void sepOn( ostype & );                                                         // turn separator state on
    3134        void sepOff( ostype & );                                                        // turn separator state off
    3235        bool sepDisable( ostype & );                                            // set default state to off, and return previous state
    33         bool sepEnable( ostype & );                                             // set default state to on, and return previous state
     36        bool sepEnable( ostype & );                                                     // set default state to on, and return previous state
     37        void nlOn( ostype & );                                                          // turn auto-newline state on
     38        void nlOff( ostype & );                                                         // turn auto-newline state off
    3439
    3540        const char * sepGet( ostype & );                                        // get separator string
     
    4348        void close( ostype & os );
    4449        ostype & write( ostype &, const char *, size_t );
    45         int fmt( ostype &, const char fmt[], ... );
     50        int fmt( ostype &, const char format[], ... );
    4651}; // ostream
    4752
     
    5863forall( dtype ostype | ostream( ostype ) ) {
    5964        ostype & ?|?( ostype &, bool );
     65        void ?|?( ostype &, bool );
    6066
    6167        ostype & ?|?( ostype &, char );
     68        void ?|?( ostype &, char );
    6269        ostype & ?|?( ostype &, signed char );
     70        void ?|?( ostype &, signed char );
    6371        ostype & ?|?( ostype &, unsigned char );
     72        void ?|?( ostype &, unsigned char );
    6473
    6574        ostype & ?|?( ostype &, short int );
     75        void ?|?( ostype &, short int );
    6676        ostype & ?|?( ostype &, unsigned short int );
     77        void ?|?( ostype &, unsigned short int );
    6778        ostype & ?|?( ostype &, int );
     79        void ?|?( ostype &, int );
    6880        ostype & ?|?( ostype &, unsigned int );
     81        void ?|?( ostype &, unsigned int );
    6982        ostype & ?|?( ostype &, long int );
     83        void ?|?( ostype &, long int );
    7084        ostype & ?|?( ostype &, long long int );
     85        void ?|?( ostype &, long long int );
    7186        ostype & ?|?( ostype &, unsigned long int );
     87        void ?|?( ostype &, unsigned long int );
    7288        ostype & ?|?( ostype &, unsigned long long int );
     89        void ?|?( ostype &, unsigned long long int );
    7390
    7491        ostype & ?|?( ostype &, float ); // FIX ME: should not be required
     92        void ?|?( ostype &, float ); // FIX ME: should not be required
    7593        ostype & ?|?( ostype &, double );
     94        void ?|?( ostype &, double );
    7695        ostype & ?|?( ostype &, long double );
     96        void ?|?( ostype &, long double );
    7797
    7898        ostype & ?|?( ostype &, float _Complex );
     99        void ?|?( ostype &, float _Complex );
    79100        ostype & ?|?( ostype &, double _Complex );
     101        void ?|?( ostype &, double _Complex );
    80102        ostype & ?|?( ostype &, long double _Complex );
     103        void ?|?( ostype &, long double _Complex );
    81104
    82105        ostype & ?|?( ostype &, const char * );
     106        void ?|?( ostype &, const char * );
    83107        // ostype & ?|?( ostype &, const char16_t * );
    84108#if ! ( __ARM_ARCH_ISA_ARM == 1 && __ARM_32BIT_STATE == 1 ) // char32_t == wchar_t => ambiguous
     
    87111        // ostype & ?|?( ostype &, const wchar_t * );
    88112        ostype & ?|?( ostype &, const void * );
     113        void ?|?( ostype &, const void * );
    89114
    90115        // manipulators
    91116        ostype & ?|?( ostype &, ostype & (*)( ostype & ) );
    92         ostype & endl( ostype & );
     117        void ?|?( ostype &, ostype & (*)( ostype & ) );
     118        ostype & nl( ostype & );
     119        void nl( ostype & );
     120        ostype & nonl( ostype & );
    93121        ostype & sep( ostype & );
    94122        ostype & sepTuple( ostype & );
     
    97125        ostype & sepDisable( ostype & );
    98126        ostype & sepEnable( ostype & );
     127        ostype & nlOn( ostype & );
     128        ostype & nlOff( ostype & );
    99129} // distribution
    100130
    101131// tuples
    102 forall( dtype ostype, otype T, ttype Params | writeable( T, ostype ) | { ostype & ?|?( ostype &, Params ); } )
    103 ostype & ?|?( ostype & os, T arg, Params rest );
     132forall( dtype ostype, otype T, ttype Params | writeable( T, ostype ) | { ostype & ?|?( ostype &, Params ); } ) {
     133        ostype & ?|?( ostype & os, T arg, Params rest );
     134        void ?|?( ostype & os, T arg, Params rest );
     135} // distribution
    104136
    105137// writes the range [begin, end) to the given stream
    106 forall( dtype ostype, otype elt_type | writeable( elt_type, ostype ), otype iterator_type | iterator( iterator_type, elt_type ) )
    107 void write( iterator_type begin, iterator_type end, ostype & os );
    108 
    109 forall( dtype ostype, otype elt_type | writeable( elt_type, ostype ), otype iterator_type | iterator( iterator_type, elt_type ) )
    110 void write_reverse( iterator_type begin, iterator_type end, ostype & os );
     138forall( dtype ostype, otype elt_type | writeable( elt_type, ostype ), otype iterator_type | iterator( iterator_type, elt_type ) ) {
     139        void write( iterator_type begin, iterator_type end, ostype & os );
     140        void write_reverse( iterator_type begin, iterator_type end, ostype & os );
     141} // distribution
    111142
    112143//---------------------------------------
     
    119150        istype & read( istype &, char *, size_t );
    120151        istype & ungetc( istype &, char );
    121         int fmt( istype &, const char fmt[], ... );
     152        int fmt( istype &, const char format[], ... );
    122153}; // istream
    123154
     
    152183        // manipulators
    153184        istype & ?|?( istype &, istype & (*)( istype & ) );
    154         istype & endl( istype & is );
     185        istype & nl( istype & is );
    155186} // distribution
    156187
     
    164195
    165196
    166 #include <time_t.hfa>                                                                           // Duration (constructors) / Time (constructors)
    167 
    168 forall( dtype ostype | ostream( ostype ) ) ostype & ?|?( ostype & os, Duration dur );
    169 forall( dtype ostype | ostream( ostype ) ) ostype & ?|?( ostype & os, Time time );
    170 
     197#include <time_t.hfa>                                                                   // Duration (constructors) / Time (constructors)
     198
     199forall( dtype ostype | ostream( ostype ) ) {
     200        ostype & ?|?( ostype & os, Duration dur );
     201        void ?|?( ostype & os, Duration dur );
     202        ostype & ?|?( ostype & os, Time time );
     203        void ?|?( ostype & os, Time time );
     204} // distribution
    171205
    172206// Local Variables: //
  • libcfa/src/rational.cfa

    r5e49e47 rd0c91a6  
    1010// Created On       : Wed Apr  6 17:54:28 2016
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Jun  2 09:24:33 2018
    13 // Update Count     : 162
     12// Last Modified On : Sun Dec 23 22:56:49 2018
     13// Update Count     : 170
    1414//
    1515
     
    3535        static RationalImpl simplify( RationalImpl & n, RationalImpl & d ) {
    3636                if ( d == (RationalImpl){0} ) {
    37                         serr | "Invalid rational number construction: denominator cannot be equal to 0." | endl;
     37                        serr | "Invalid rational number construction: denominator cannot be equal to 0.";
    3838                        exit( EXIT_FAILURE );
    3939                } // exit
     
    175175        } // ?|?
    176176
    177         forall( dtype ostype | ostream( ostype ) | { ostype & ?|?( ostype &, RationalImpl ); } )
    178         ostype & ?|?( ostype & os, Rational(RationalImpl ) r ) {
    179                 return os | r.numerator | '/' | r.denominator;
    180         } // ?|?
     177        forall( dtype ostype | ostream( ostype ) | { ostype & ?|?( ostype &, RationalImpl ); } ) {
     178                ostype & ?|?( ostype & os, Rational(RationalImpl) r ) {
     179                        return os | r.numerator | '/' | r.denominator;
     180                } // ?|?
     181
     182                void ?|?( ostype & os, Rational(RationalImpl) r ) {
     183                        (ostype &)(os | r); nl( os );
     184                } // ?|?
     185        } // distribution
    181186} // distribution
    182187
  • libcfa/src/rational.hfa

    r5e49e47 rd0c91a6  
    1212// Created On       : Wed Apr  6 17:56:25 2016
    1313// Last Modified By : Peter A. Buhr
    14 // Last Modified On : Sat Jun  2 09:10:01 2018
    15 // Update Count     : 105
     14// Last Modified On : Tue Dec  4 23:07:46 2018
     15// Update Count     : 106
    1616//
    1717
     
    9292        istype & ?|?( istype &, Rational(RationalImpl) & );
    9393
    94         forall( dtype ostype | ostream( ostype ) | { ostype & ?|?( ostype &, RationalImpl ); } )
    95         ostype & ?|?( ostype &, Rational(RationalImpl ) );
     94        forall( dtype ostype | ostream( ostype ) | { ostype & ?|?( ostype &, RationalImpl ); } ) {
     95                ostype & ?|?( ostype &, Rational(RationalImpl) );
     96                void ?|?( ostype &, Rational(RationalImpl) );
     97        } // distribution
    9698} // distribution
    9799
  • libcfa/src/stdlib.hfa

    r5e49e47 rd0c91a6  
    1010// Created On       : Thu Jan 28 17:12:35 2016
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Jul 27 07:21:36 2018
    13 // Update Count     : 345
     12// Last Modified On : Mon Dec 17 15:37:45 2018
     13// Update Count     : 346
    1414//
    1515
     
    178178
    179179static inline {
    180         int ato( const char * sptr ) {return (int)strtol( sptr, 0, 10 ); }
     180        int ato( const char * sptr ) { return (int)strtol( sptr, 0, 10 ); }
    181181        unsigned int ato( const char * sptr ) { return (unsigned int)strtoul( sptr, 0, 10 ); }
    182182        long int ato( const char * sptr ) { return strtol( sptr, 0, 10 ); }
  • libcfa/src/time.cfa

    r5e49e47 rd0c91a6  
    1010// Created On       : Tue Mar 27 13:33:14 2018
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun May  6 22:26:00 2018
    13 // Update Count     : 37
     12// Last Modified On : Sun Dec 23 22:57:48 2018
     13// Update Count     : 57
    1414//
    1515
     
    3131
    3232
    33 forall( dtype ostype | ostream( ostype ) )
    34 ostype & ?|?( ostype & os, Duration dur ) with( dur ) {
    35         os | tv / TIMEGRAN;                                                                     // print seconds
    36         long int ns = (tv < 0 ? -tv : tv) % TIMEGRAN;           // compute nanoseconds
    37         if ( ns != 0 ) {                                                                        // some ?
    38                 char buf[16];
    39                 os | nanomsd( ns, buf );                                                // print nanoseconds
    40         } // if
    41         return os;
    42 } // ?|?
     33forall( dtype ostype | ostream( ostype ) ) {
     34        ostype & ?|?( ostype & os, Duration dur ) with( dur ) {
     35                (ostype &)(os | tv / TIMEGRAN);                                 // print seconds
     36                long int ns = (tv < 0 ? -tv : tv) % TIMEGRAN;   // compute nanoseconds
     37                if ( ns != 0 ) {                                                                // some ?
     38                        char buf[16];
     39                        (ostype &)(os | nanomsd( ns, buf ));                    // print nanoseconds
     40                } // if
     41                return os;
     42        } // ?|?
     43
     44        void ?|?( ostype & os, Duration dur ) with( dur ) {
     45                (ostype &)(os | dur); nl( os );
     46        } // ?|?
     47} // distribution
    4348
    4449
     
    137142} // strftime
    138143
    139 forall( dtype ostype | ostream( ostype ) )
    140 ostype & ?|?( ostype & os, Time time ) with( time ) {
    141         char buf[32];                                                                           // at least 26
    142         time_t s = tv / TIMEGRAN;
    143     ctime_r( &s, (char *)&buf );                                                // 26 characters: "Wed Jun 30 21:49:08 1993\n"
    144         buf[24] = '\0';                                                                         // remove trailing '\n'
    145         long int ns = (tv < 0 ? -tv : tv) % TIMEGRAN;           // compute nanoseconds
    146         if ( ns == 0 ) {                                                                        // none ?
    147                 os | buf;                                                                               // print date/time/year
    148         } else {
    149                 buf[19] = '\0';                                                                 // truncate to "Wed Jun 30 21:49:08"
    150                 os | buf;                                                                               // print date/time
    151                 char buf2[16];
    152                 nanomsd( ns, buf2 );                                                    // compute nanoseconds
    153                 os | buf2 | ' ' | &buf[20];                                             // print nanoseconds and year
    154         } // if
    155         return os;
    156 } // ?|?
     144forall( dtype ostype | ostream( ostype ) ) {
     145        ostype & ?|?( ostype & os, Time time ) with( time ) {
     146                char buf[32];                                                                   // at least 26
     147                time_t s = tv / TIMEGRAN;
     148                ctime_r( &s, (char *)&buf );                                    // 26 characters: "Wed Jun 30 21:49:08 1993\n"
     149                buf[24] = '\0';                                                                 // remove trailing '\n'
     150                long int ns = (tv < 0 ? -tv : tv) % TIMEGRAN;   // compute nanoseconds
     151                if ( ns == 0 ) {                                                                // none ?
     152                        (ostype &)(os | buf);                                                   // print date/time/year
     153                } else {
     154                        buf[19] = '\0';                                                         // truncate to "Wed Jun 30 21:49:08"
     155                        char buf2[16];
     156                        nanomsd( ns, buf2 );                                            // compute nanoseconds
     157                        (ostype &)(os | buf | buf2 | ' ' | &buf[20]);   // print date/time, nanoseconds and year
     158                } // if
     159                return os;
     160        } // ?|?
     161
     162        void ?|?( ostype & os, Time time ) with( time ) {
     163                (ostype &)(os | time); nl( os );
     164        } // ?|?
     165} // distribution
    157166
    158167// Local Variables: //
  • src/CodeTools/ResolvProtoDump.cc

    r5e49e47 rd0c91a6  
    5151
    5252                /// Child constructor
    53                 ProtoDump(const ProtoDump* p, Type* r) 
     53                ProtoDump(const ProtoDump* p, Type* r)
    5454                        : decls(), exprs(), subs(), closed(p->closed), parent(p), rtnType(r) {}
    5555
    5656                // Fix copy issues
    57                 ProtoDump(const ProtoDump& o) 
    58                         : decls(o.decls), exprs(o.exprs), subs(o.subs), closed(o.closed), parent(o.parent), 
     57                ProtoDump(const ProtoDump& o)
     58                        : decls(o.decls), exprs(o.exprs), subs(o.subs), closed(o.closed), parent(o.parent),
    5959                          rtnType(maybeClone(o.rtnType.get())) {}
    6060                ProtoDump( ProtoDump&& ) = default;
     
    6969                        parent = o.parent;
    7070                        rtnType.reset( maybeClone(o.rtnType.get()) );
    71                        
     71
    7272                        return *this;
    7373                }
    74                 ProtoDump& operator= (ProtoDump&&) = default;
     74                ProtoDump& operator= (ProtoDump&&) = delete;
    7575
    7676        private:
     
    9696                        subs.emplace_back( std::move(sub.pass) );
    9797                }
    98        
     98
    9999                /// Whether lists should be separated, terminated, or preceded by their separator
    100100                enum septype { separated, terminated, preceded };
     
    102102                /// builds space-separated list of types
    103103                template<typename V>
    104                 static void build( V& visitor, const std::list< Type* >& tys, std::stringstream& ss, 
     104                static void build( V& visitor, const std::list< Type* >& tys, std::stringstream& ss,
    105105                                septype mode = separated ) {
    106106                        if ( tys.empty() ) return;
     
    121121                /// builds list of types wrapped as tuple type
    122122                template<typename V>
    123                 static void buildAsTuple( V& visitor, const std::list< Type* >& tys, 
     123                static void buildAsTuple( V& visitor, const std::list< Type* >& tys,
    124124                                std::stringstream& ss ) {
    125125                        switch ( tys.size() ) {
     
    162162                        if ( name.compare( 0, 10, "_operator_" ) == 0 ) {
    163163                                ss << name.substr(10);
    164                         } else if ( name.compare( "_constructor" ) == 0 
     164                        } else if ( name.compare( "_constructor" ) == 0
    165165                                        || name.compare( "_destructor" ) == 0 ) {
    166166                                ss << name.substr(1);
     
    173173
    174174                /// replaces operators with resolv-proto names
    175                 static void rp_name( const std::string& name, std::stringstream& ss, 
     175                static void rp_name( const std::string& name, std::stringstream& ss,
    176176                                std::string&& pre = "" ) {
    177177                        // safety check for anonymous names
     
    187187                                op_name( info.outputName, ss );
    188188                                return;
    189                         } 
    190                        
     189                        }
     190
    191191                        // replace retval names
    192192                        if ( name.compare( 0, 8, "_retval_" ) == 0 ) {
     
    195195                                return;
    196196                        }
    197                        
     197
    198198                        // default to just name, with first character in lowercase
    199                         ss << pre 
     199                        ss << pre
    200200                           << (char)std::tolower( static_cast<unsigned char>(name[0]) )
    201201                           << (name.c_str() + 1);
     
    221221                        // strip trailing "_generic_" from autogen names (avoids some user-generation issues)
    222222                        char generic[] = "_generic_"; size_t n_generic = sizeof(generic) - 1;
    223                         if ( stripped.size() >= n_generic 
     223                        if ( stripped.size() >= n_generic
    224224                                        && stripped.substr( stripped.size() - n_generic ) == generic ) {
    225225                                stripped.resize( stripped.size() - n_generic );
     
    237237                        unsigned depth;                                 ///< Depth of nesting from root type
    238238
    239                         TypePrinter( const std::unordered_set<std::string>& closed, std::stringstream& ss ) 
     239                        TypePrinter( const std::unordered_set<std::string>& closed, std::stringstream& ss )
    240240                                : ss(ss), closed(closed), depth(0) {}
    241241
     
    337337                        }
    338338                };
    339        
     339
    340340                /// builds description of function
    341341                void build( const std::string& name, FunctionType* fnTy, std::stringstream& ss ) {
     
    350350                        for ( TypeDecl* tyvar : fnTy->forall ) {
    351351                                for ( DeclarationWithType* assn : tyvar->assertions ) {
    352                                         ss << " | "; 
     352                                        ss << " | ";
    353353                                        build( assn->name, assn->get_type(), ss );
    354354                                }
     
    360360                        // ignore top-level references
    361361                        Type *norefs = ty->stripReferences();
    362                        
     362
    363363                        // fall back to function declaration if function type
    364364                        if ( PointerType* pTy = dynamic_cast< PointerType* >(norefs) ) {
     
    409409                        std::stringstream& ss;                          ///< Output to print to
    410410
    411                         ExprPrinter( const std::unordered_set<std::string>& closed, std::stringstream& ss ) 
     411                        ExprPrinter( const std::unordered_set<std::string>& closed, std::stringstream& ss )
    412412                                : closed(closed), ss(ss) {}
    413413
     
    476476                                visit_children = false;
    477477                        }
    478                        
     478
    479479                        /// Member access handled as function from aggregate to member
    480480                        void previsit( UntypedMemberExpr* expr ) {
     
    662662                                        }
    663663                                }
    664                                
     664
    665665                                // add named parameters and returns to local scope
    666666                                body.pass.addAll( decl->type->returnVals );
     
    679679                void previsit( StructDecl* sd ) { addAggregateFields(sd); }
    680680                void previsit( UnionDecl* ud ) { addAggregateFields(ud); }
    681                
     681
    682682                void previsit( EnumDecl* ed ) {
    683                         std::unique_ptr<Type> eType = 
     683                        std::unique_ptr<Type> eType =
    684684                                std::make_unique<BasicType>( Type::Qualifiers{}, BasicType::SignedInt );
    685                        
     685
    686686                        // add field names directly to enclosing scope
    687687                        for ( Declaration* member : ed->members ) {
  • src/Common/utility.h

    r5e49e47 rd0c91a6  
    2626#include <string>
    2727#include <type_traits>
     28#include <utility>
    2829
    2930#include <cassert>
     
    462463std::pair<long long int, bool> eval(Expression * expr);
    463464
     465// -----------------------------------------------------------------------------
     466/// Reorders the input range in-place so that the minimal-value elements according to the
     467/// comparator are in front;
     468/// returns the iterator after the last minimal-value element.
     469template<typename Iter, typename Compare>
     470Iter sort_mins( Iter begin, Iter end, Compare& lt ) {
     471        if ( begin == end ) return end;
     472       
     473        Iter min_pos = begin;
     474        for ( Iter i = begin + 1; i != end; ++i ) {
     475                if ( lt( *i, *min_pos ) ) {
     476                        // new minimum cost; swap into first position
     477                        min_pos = begin;
     478                        std::iter_swap( min_pos, i );
     479                } else if ( ! lt( *min_pos, *i ) ) {
     480                        // duplicate minimum cost; swap into next minimum position
     481                        ++min_pos;
     482                        std::iter_swap( min_pos, i );
     483                }
     484        }
     485        return ++min_pos;
     486}
     487
     488template<typename Iter, typename Compare>
     489inline Iter sort_mins( Iter begin, Iter end, Compare&& lt ) {
     490        return sort_mins( begin, end, lt );
     491}
     492
     493/// sort_mins defaulted to use std::less
     494template<typename Iter>
     495inline Iter sort_mins( Iter begin, Iter end ) {
     496        return sort_mins( begin, end, std::less<typename std::iterator_traits<Iter>::value_type>{} );
     497}
     498
    464499// Local Variables: //
    465500// tab-width: 4 //
  • src/GenPoly/Box.cc

    r5e49e47 rd0c91a6  
    798798                        for ( Type::ForallList::iterator tyVar = functionType->get_forall().begin(); tyVar != functionType->get_forall().end(); ++tyVar ) {
    799799                                for ( std::list< DeclarationWithType *>::iterator assert = (*tyVar)->assertions.begin(); assert != (*tyVar)->assertions.end(); ++assert ) {
    800                                         InferredParams::const_iterator inferParam = appExpr->get_inferParams().find( (*assert)->get_uniqueId() );
    801                                         assertf( inferParam != appExpr->get_inferParams().end(), "addInferredParams missing inferred parameter: %s in: %s", toString( *assert ).c_str(), toString( appExpr ).c_str() );
     800                                        InferredParams::const_iterator inferParam = appExpr->inferParams.find( (*assert)->get_uniqueId() );
     801                                        assertf( inferParam != appExpr->inferParams.end(), "addInferredParams missing inferred parameter: %s in: %s", toString( *assert ).c_str(), toString( appExpr ).c_str() );
    802802                                        Expression *newExpr = inferParam->second.expr->clone();
    803803                                        addCast( newExpr, (*assert)->get_type(), tyVars );
  • src/GenPoly/Specialize.cc

    r5e49e47 rd0c91a6  
    245245                appExpr->env = TypeSubstitution::newFromExpr( appExpr, env );
    246246                if ( inferParams ) {
    247                         appExpr->get_inferParams() = *inferParams;
     247                        appExpr->inferParams = *inferParams;
    248248                } // if
    249249
     
    284284                std::list< Expression* >::iterator actual;
    285285                for ( formal = function->get_parameters().begin(), actual = appExpr->get_args().begin(); formal != function->get_parameters().end() && actual != appExpr->get_args().end(); ++formal, ++actual ) {
    286                         *actual = doSpecialization( (*formal)->get_type(), *actual, &appExpr->get_inferParams() );
     286                        *actual = doSpecialization( (*formal)->get_type(), *actual, &appExpr->inferParams );
    287287                }
    288288        }
     
    295295                        // alternatively, if order starts to matter then copy appExpr's inferParams and pass them to handleExplicitParams.
    296296                        handleExplicitParams( appExpr );
    297                         for ( InferredParams::iterator inferParam = appExpr->get_inferParams().begin(); inferParam != appExpr->get_inferParams().end(); ++inferParam ) {
    298                                 inferParam->second.expr = doSpecialization( inferParam->second.formalType, inferParam->second.expr, inferParam->second.inferParams.get() );
     297                        for ( InferredParams::iterator inferParam = appExpr->inferParams.begin(); inferParam != appExpr->inferParams.end(); ++inferParam ) {
     298                                inferParam->second.expr = doSpecialization( inferParam->second.formalType, inferParam->second.expr, &inferParam->second.expr->inferParams );
    299299                        }
    300300                }
  • src/Makefile.am

    r5e49e47 rd0c91a6  
    1717# create object files in directory with source files
    1818AUTOMAKE_OPTIONS = foreign subdir-objects
     19ACLOCAL_AMFLAGS  = -I automake
    1920
    2021SRC = main.cc \
     
    126127  ResolvExpr/PtrsCastable.cc \
    127128  ResolvExpr/RenameVars.cc \
     129  ResolvExpr/ResolveAssertions.cc \
    128130  ResolvExpr/Resolver.cc \
    129131  ResolvExpr/ResolveTypeof.cc \
     132  ResolvExpr/SpecCost.cc \
    130133  ResolvExpr/TypeEnvironment.cc \
    131134  ResolvExpr/Unify.cc \
  • src/Makefile.in

    r5e49e47 rd0c91a6  
    141141subdir = src
    142142ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
    143 am__aclocal_m4_deps = $(top_srcdir)/automake/cfa.m4 \
    144         $(top_srcdir)/configure.ac
     143am__aclocal_m4_deps = $(top_srcdir)/automake/libtool.m4 \
     144        $(top_srcdir)/automake/ltoptions.m4 \
     145        $(top_srcdir)/automake/ltsugar.m4 \
     146        $(top_srcdir)/automake/ltversion.m4 \
     147        $(top_srcdir)/automake/lt~obsolete.m4 \
     148        $(top_srcdir)/automake/cfa.m4 $(top_srcdir)/configure.ac
    145149am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
    146150        $(ACLOCAL_M4)
     
    151155CONFIG_CLEAN_VPATH_FILES =
    152156LIBRARIES = $(noinst_LIBRARIES)
    153 AR = ar
    154157AM_V_AR = $(am__v_AR_@AM_V@)
    155158am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
     
    203206        ResolvExpr/PtrsAssignable.$(OBJEXT) \
    204207        ResolvExpr/PtrsCastable.$(OBJEXT) \
    205         ResolvExpr/RenameVars.$(OBJEXT) ResolvExpr/Resolver.$(OBJEXT) \
     208        ResolvExpr/RenameVars.$(OBJEXT) \
     209        ResolvExpr/ResolveAssertions.$(OBJEXT) \
     210        ResolvExpr/Resolver.$(OBJEXT) \
    206211        ResolvExpr/ResolveTypeof.$(OBJEXT) \
     212        ResolvExpr/SpecCost.$(OBJEXT) \
    207213        ResolvExpr/TypeEnvironment.$(OBJEXT) \
    208214        ResolvExpr/Unify.$(OBJEXT) SymTab/Autogen.$(OBJEXT) \
     
    259265        ResolvExpr/TypeEnvironment.$(OBJEXT) \
    260266        ResolvExpr/CurrentObject.$(OBJEXT) \
    261         ResolvExpr/ExplodedActual.$(OBJEXT) SymTab/Indexer.$(OBJEXT) \
    262         SymTab/Mangler.$(OBJEXT) SymTab/ManglerCommon.$(OBJEXT) \
    263         SymTab/Validate.$(OBJEXT) SymTab/FixFunction.$(OBJEXT) \
    264         SymTab/Autogen.$(OBJEXT) SynTree/Type.$(OBJEXT) \
    265         SynTree/VoidType.$(OBJEXT) SynTree/BasicType.$(OBJEXT) \
    266         SynTree/PointerType.$(OBJEXT) SynTree/ArrayType.$(OBJEXT) \
    267         SynTree/ReferenceType.$(OBJEXT) SynTree/FunctionType.$(OBJEXT) \
     267        ResolvExpr/ExplodedActual.$(OBJEXT) \
     268        ResolvExpr/SpecCost.$(OBJEXT) \
     269        ResolvExpr/ResolveAssertions.$(OBJEXT) \
     270        SymTab/Indexer.$(OBJEXT) SymTab/Mangler.$(OBJEXT) \
     271        SymTab/ManglerCommon.$(OBJEXT) SymTab/Validate.$(OBJEXT) \
     272        SymTab/FixFunction.$(OBJEXT) SymTab/Autogen.$(OBJEXT) \
     273        SynTree/Type.$(OBJEXT) SynTree/VoidType.$(OBJEXT) \
     274        SynTree/BasicType.$(OBJEXT) SynTree/PointerType.$(OBJEXT) \
     275        SynTree/ArrayType.$(OBJEXT) SynTree/ReferenceType.$(OBJEXT) \
     276        SynTree/FunctionType.$(OBJEXT) \
    268277        SynTree/ReferenceToType.$(OBJEXT) SynTree/TupleType.$(OBJEXT) \
    269278        SynTree/TypeofType.$(OBJEXT) SynTree/AttrType.$(OBJEXT) \
     
    289298___driver_cfa_cpp_OBJECTS = $(am____driver_cfa_cpp_OBJECTS)
    290299___driver_cfa_cpp_DEPENDENCIES =
     300AM_V_lt = $(am__v_lt_@AM_V@)
     301am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
     302am__v_lt_0 = --silent
     303am__v_lt_1 =
    291304am_demangler_OBJECTS = SymTab/demangler.$(OBJEXT)
    292305demangler_OBJECTS = $(am_demangler_OBJECTS)
     
    310323CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
    311324        $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
     325LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
     326        $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
     327        $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
     328        $(AM_CXXFLAGS) $(CXXFLAGS)
    312329AM_V_CXX = $(am__v_CXX_@AM_V@)
    313330am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
     
    315332am__v_CXX_1 =
    316333CXXLD = $(CXX)
    317 CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
    318         -o $@
     334CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
     335        $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
     336        $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
    319337AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
    320338am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
     
    322340am__v_CXXLD_1 =
    323341LEXCOMPILE = $(LEX) $(AM_LFLAGS) $(LFLAGS)
     342LTLEXCOMPILE = $(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) \
     343        $(LIBTOOLFLAGS) --mode=compile $(LEX) $(AM_LFLAGS) $(LFLAGS)
    324344AM_V_LEX = $(am__v_LEX_@AM_V@)
    325345am__v_LEX_ = $(am__v_LEX_@AM_DEFAULT_V@)
     
    330350                   -e s/c++$$/h++/ -e s/c$$/h/
    331351YACCCOMPILE = $(YACC) $(AM_YFLAGS) $(YFLAGS)
     352LTYACCCOMPILE = $(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) \
     353        $(LIBTOOLFLAGS) --mode=compile $(YACC) $(AM_YFLAGS) $(YFLAGS)
    332354AM_V_YACC = $(am__v_YACC_@AM_V@)
    333355am__v_YACC_ = $(am__v_YACC_@AM_DEFAULT_V@)
     
    336358COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
    337359        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
     360LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
     361        $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
     362        $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
     363        $(AM_CFLAGS) $(CFLAGS)
    338364AM_V_CC = $(am__v_CC_@AM_V@)
    339365am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
     
    341367am__v_CC_1 =
    342368CCLD = $(CC)
    343 LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
     369LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
     370        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
     371        $(AM_LDFLAGS) $(LDFLAGS) -o $@
    344372AM_V_CCLD = $(am__v_CCLD_@AM_V@)
    345373am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
     
    391419AMTAR = @AMTAR@
    392420AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
     421AR = @AR@
    393422AUTOCONF = @AUTOCONF@
    394423AUTOHEADER = @AUTOHEADER@
    395424AUTOMAKE = @AUTOMAKE@
    396425AWK = @AWK@
    397 BACKEND_CC = @BACKEND_CC@
    398426BUILD_IN_TREE_FLAGS = @BUILD_IN_TREE_FLAGS@
    399427CC = @CC@
     
    415443CPPFLAGS = @CPPFLAGS@
    416444CXX = @CXX@
     445CXXCPP = @CXXCPP@
    417446CXXDEPMODE = @CXXDEPMODE@
    418447CXXFLAGS = @CXXFLAGS@
     
    420449DEFS = @DEFS@
    421450DEPDIR = @DEPDIR@
     451DLLTOOL = @DLLTOOL@
    422452DRIVER_DIR = @DRIVER_DIR@
     453DSYMUTIL = @DSYMUTIL@
     454DUMPBIN = @DUMPBIN@
    423455ECHO_C = @ECHO_C@
    424456ECHO_N = @ECHO_N@
     
    426458EGREP = @EGREP@
    427459EXEEXT = @EXEEXT@
     460FGREP = @FGREP@
    428461GREP = @GREP@
    429462HOST_FLAGS = @HOST_FLAGS@
     
    433466INSTALL_SCRIPT = @INSTALL_SCRIPT@
    434467INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
     468LD = @LD@
    435469LDFLAGS = @LDFLAGS@
    436470LEX = @LEX@
     
    441475LIBOBJS = @LIBOBJS@
    442476LIBS = @LIBS@
     477LIBTOOL = @LIBTOOL@
     478LIPO = @LIPO@
     479LN_S = @LN_S@
    443480LTLIBOBJS = @LTLIBOBJS@
     481LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
    444482MAKEINFO = @MAKEINFO@
     483MANIFEST_TOOL = @MANIFEST_TOOL@
    445484MKDIR_P = @MKDIR_P@
     485NM = @NM@
     486NMEDIT = @NMEDIT@
     487OBJDUMP = @OBJDUMP@
    446488OBJEXT = @OBJEXT@
     489OTOOL = @OTOOL@
     490OTOOL64 = @OTOOL64@
    447491PACKAGE = @PACKAGE@
    448492PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
     
    454498PATH_SEPARATOR = @PATH_SEPARATOR@
    455499RANLIB = @RANLIB@
     500SED = @SED@
    456501SET_MAKE = @SET_MAKE@
    457502SHELL = @SHELL@
     
    465510abs_top_builddir = @abs_top_builddir@
    466511abs_top_srcdir = @abs_top_srcdir@
     512ac_ct_AR = @ac_ct_AR@
    467513ac_ct_CC = @ac_ct_CC@
    468514ac_ct_CXX = @ac_ct_CXX@
     515ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
    469516am__include = @am__include@
    470517am__leading_dot = @am__leading_dot@
     
    516563# create object files in directory with source files
    517564AUTOMAKE_OPTIONS = foreign subdir-objects
     565ACLOCAL_AMFLAGS = -I automake
    518566SRC = main.cc MakeLibCfa.cc CompilationState.cc CodeGen/Generate.cc \
    519567        CodeGen/CodeGenerator.cc CodeGen/GenType.cc \
     
    547595        ResolvExpr/Occurs.cc ResolvExpr/TypeEnvironment.cc \
    548596        ResolvExpr/CurrentObject.cc ResolvExpr/ExplodedActual.cc \
     597        ResolvExpr/SpecCost.cc ResolvExpr/ResolveAssertions.cc \
    549598        SymTab/Indexer.cc SymTab/Mangler.cc SymTab/ManglerCommon.cc \
    550599        SymTab/Validate.cc SymTab/FixFunction.cc SymTab/Autogen.cc \
     
    654703  ResolvExpr/PtrsCastable.cc \
    655704  ResolvExpr/RenameVars.cc \
     705  ResolvExpr/ResolveAssertions.cc \
    656706  ResolvExpr/Resolver.cc \
    657707  ResolvExpr/ResolveTypeof.cc \
     708  ResolvExpr/SpecCost.cc \
    658709  ResolvExpr/TypeEnvironment.cc \
    659710  ResolvExpr/Unify.cc \
     
    672723
    673724.SUFFIXES:
    674 .SUFFIXES: .cc .ll .o .obj .yy
     725.SUFFIXES: .cc .ll .lo .o .obj .yy
    675726$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am $(srcdir)/CodeGen/module.mk $(srcdir)/CodeTools/module.mk $(srcdir)/Concurrency/module.mk $(srcdir)/Common/module.mk $(srcdir)/ControlStruct/module.mk $(srcdir)/GenPoly/module.mk $(srcdir)/InitTweak/module.mk $(srcdir)/Parser/module.mk $(srcdir)/ResolvExpr/module.mk $(srcdir)/SymTab/module.mk $(srcdir)/SynTree/module.mk $(srcdir)/Tuples/module.mk $(srcdir)/Validate/module.mk $(srcdir)/Virtual/module.mk $(am__configure_deps)
    676727        @for dep in $?; do \
     
    904955ResolvExpr/RenameVars.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
    905956        ResolvExpr/$(DEPDIR)/$(am__dirstamp)
     957ResolvExpr/ResolveAssertions.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
     958        ResolvExpr/$(DEPDIR)/$(am__dirstamp)
    906959ResolvExpr/Resolver.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
    907960        ResolvExpr/$(DEPDIR)/$(am__dirstamp)
    908961ResolvExpr/ResolveTypeof.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
     962        ResolvExpr/$(DEPDIR)/$(am__dirstamp)
     963ResolvExpr/SpecCost.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
    909964        ResolvExpr/$(DEPDIR)/$(am__dirstamp)
    910965ResolvExpr/TypeEnvironment.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
     
    9571012        sed 's/$(EXEEXT)$$//' | \
    9581013        while read p p1; do if test -f $$p \
     1014         || test -f $$p1 \
    9591015          ; then echo "$$p"; echo "$$p"; else :; fi; \
    9601016        done | \
     
    9711027            if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
    9721028            test -z "$$files" || { \
    973               echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(cfa_cpplibdir)$$dir'"; \
    974               $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(cfa_cpplibdir)$$dir" || exit $$?; \
     1029            echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(cfa_cpplibdir)$$dir'"; \
     1030            $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(cfa_cpplibdir)$$dir" || exit $$?; \
    9751031            } \
    9761032        ; done
     
    9881044
    9891045clean-cfa_cpplibPROGRAMS:
    990         -test -z "$(cfa_cpplib_PROGRAMS)" || rm -f $(cfa_cpplib_PROGRAMS)
     1046        @list='$(cfa_cpplib_PROGRAMS)'; test -n "$$list" || exit 0; \
     1047        echo " rm -f" $$list; \
     1048        rm -f $$list || exit $$?; \
     1049        test -n "$(EXEEXT)" || exit 0; \
     1050        list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
     1051        echo " rm -f" $$list; \
     1052        rm -f $$list
    9911053CodeGen/Generate.$(OBJEXT): CodeGen/$(am__dirstamp) \
    9921054        CodeGen/$(DEPDIR)/$(am__dirstamp)
     
    11581220@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/PtrsCastable.Po@am__quote@
    11591221@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/RenameVars.Po@am__quote@
     1222@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/ResolveAssertions.Po@am__quote@
    11601223@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/ResolveTypeof.Po@am__quote@
    11611224@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/Resolver.Po@am__quote@
     1225@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/SpecCost.Po@am__quote@
    11621226@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/TypeEnvironment.Po@am__quote@
    11631227@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/Unify.Po@am__quote@
     
    12261290@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
    12271291
     1292.cc.lo:
     1293@am__fastdepCXX_TRUE@   $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
     1294@am__fastdepCXX_TRUE@   $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
     1295@am__fastdepCXX_TRUE@   $(am__mv) $$depbase.Tpo $$depbase.Plo
     1296@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
     1297@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1298@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
     1299
    12281300.ll.cc:
    12291301        $(AM_V_LEX)$(am__skiplex) $(SHELL) $(YLWRAP) $< $(LEX_OUTPUT_ROOT).c $@ -- $(LEXCOMPILE)
     
    12311303.yy.cc:
    12321304        $(AM_V_YACC)$(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h `echo $@ | $(am__yacc_c2h)` y.output $*.output -- $(YACCCOMPILE)
     1305
     1306mostlyclean-libtool:
     1307        -rm -f *.lo
     1308
     1309clean-libtool:
     1310        -rm -rf .libs _libs
     1311        -rm -rf ../driver/.libs ../driver/_libs
    12331312
    12341313ID: $(am__tagged_files)
     
    13901469clean: clean-am
    13911470
    1392 clean-am: clean-cfa_cpplibPROGRAMS clean-generic clean-noinstLIBRARIES \
    1393         mostlyclean-am
     1471clean-am: clean-cfa_cpplibPROGRAMS clean-generic clean-libtool \
     1472        clean-noinstLIBRARIES mostlyclean-am
    13941473
    13951474distclean: distclean-am
     
    14461525mostlyclean: mostlyclean-am
    14471526
    1448 mostlyclean-am: mostlyclean-compile mostlyclean-generic
     1527mostlyclean-am: mostlyclean-compile mostlyclean-generic \
     1528        mostlyclean-libtool
    14491529
    14501530pdf: pdf-am
     
    14611541
    14621542.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \
    1463         clean-cfa_cpplibPROGRAMS clean-generic clean-noinstLIBRARIES \
    1464         cscopelist-am ctags ctags-am distclean distclean-compile \
    1465         distclean-generic distclean-tags distdir dvi dvi-am html \
    1466         html-am info info-am install install-am \
    1467         install-cfa_cpplibPROGRAMS install-data install-data-am \
    1468         install-dvi install-dvi-am install-exec install-exec-am \
    1469         install-html install-html-am install-info install-info-am \
    1470         install-man install-pdf install-pdf-am install-ps \
    1471         install-ps-am install-strip installcheck installcheck-am \
    1472         installdirs maintainer-clean maintainer-clean-generic \
    1473         mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \
    1474         ps ps-am tags tags-am uninstall uninstall-am \
     1543        clean-cfa_cpplibPROGRAMS clean-generic clean-libtool \
     1544        clean-noinstLIBRARIES cscopelist-am ctags ctags-am distclean \
     1545        distclean-compile distclean-generic distclean-libtool \
     1546        distclean-tags distdir dvi dvi-am html html-am info info-am \
     1547        install install-am install-cfa_cpplibPROGRAMS install-data \
     1548        install-data-am install-dvi install-dvi-am install-exec \
     1549        install-exec-am install-html install-html-am install-info \
     1550        install-info-am install-man install-pdf install-pdf-am \
     1551        install-ps install-ps-am install-strip installcheck \
     1552        installcheck-am installdirs maintainer-clean \
     1553        maintainer-clean-generic mostlyclean mostlyclean-compile \
     1554        mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
     1555        tags tags-am uninstall uninstall-am \
    14751556        uninstall-cfa_cpplibPROGRAMS
    14761557
  • src/Parser/TypeData.cc

    r5e49e47 rd0c91a6  
    322322                        function.params->printList( os, indent + 4 );
    323323                } else {
    324                         os << string( indent + 2, ' ' ) << "with no parameters " << endl;
     324                        os << string( indent + 2, ' ' ) << "with no parameters" << endl;
    325325                } // if
    326326                if ( function.idList ) {
     
    347347                os << DeclarationNode::aggregateNames[ aggregate.kind ] << ' ' << *aggregate.name << endl;
    348348                if ( aggregate.params ) {
    349                         os << string( indent + 2, ' ' ) << "with type parameters " << endl;
     349                        os << string( indent + 2, ' ' ) << "with type parameters" << endl;
    350350                        aggregate.params->printList( os, indent + 4 );
    351351                } // if
    352352                if ( aggregate.actuals ) {
    353                         os << string( indent + 2, ' ' ) << "instantiated with actual parameters " << endl;
     353                        os << string( indent + 2, ' ' ) << "instantiated with actual parameters" << endl;
    354354                        aggregate.actuals->printList( os, indent + 4 );
    355355                } // if
    356356                if ( aggregate.fields ) {
    357                         os << string( indent + 2, ' ' ) << "with members " << endl;
     357                        os << string( indent + 2, ' ' ) << "with members" << endl;
    358358                        aggregate.fields->printList( os, indent + 4 );
    359359                } // if
    360360                if ( aggregate.body ) {
    361                         os << string( indent + 2, ' ' ) << " with body " << endl;
     361                        os << string( indent + 2, ' ' ) << " with body" << endl;
    362362                } // if
    363363                break;
     
    370370                } // if
    371371                if ( aggInst.params ) {
    372                         os << string( indent + 2, ' ' ) << "with parameters " << endl;
     372                        os << string( indent + 2, ' ' ) << "with parameters" << endl;
    373373                        aggInst.params->printList( os, indent + 2 );
    374374                } // if
     
    381381                } // if
    382382                if ( enumeration.body ) {
    383                         os << string( indent + 2, ' ' ) << " with body " << endl;
     383                        os << string( indent + 2, ' ' ) << " with body" << endl;
    384384                } // if
    385385                break;
     
    418418                os << "tuple ";
    419419                if ( tuple ) {
    420                         os << "with members " << endl;
     420                        os << "with members" << endl;
    421421                        tuple->printList( os, indent + 2 );
    422422                } // if
     
    942942        assert( td->typeexpr );
    943943        // assert( td->typeexpr->expr );
    944         return new TypeofType{ 
     944        return new TypeofType{
    945945                buildQualifiers( td ), td->typeexpr->build(), td->kind == TypeData::Basetypeof };
    946946} // buildTypeof
  • src/ResolvExpr/Alternative.cc

    r5e49e47 rd0c91a6  
    99// Author           : Richard C. Bilson
    1010// Created On       : Sat May 16 23:44:23 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat May 16 23:54:23 2015
    13 // Update Count     : 2
     11// Last Modified By : Aaron B. Moss
     12// Last Modified On : Thu Oct 11 10:55:00 2018
     13// Update Count     : 3
    1414//
    1515
     
    2020#include <utility>                       // for move
    2121
    22 #include "Common/utility.h"              // for maybeClone
     22#include "Common/utility.h"              // for cloneAll
    2323#include "ResolvExpr/Cost.h"             // for Cost, Cost::zero, operator<<
    2424#include "ResolvExpr/TypeEnvironment.h"  // for TypeEnvironment
     
    2727
    2828namespace ResolvExpr {
    29         Alternative::Alternative() : cost( Cost::zero ), cvtCost( Cost::zero ), expr( nullptr ) {}
     29        Alternative::Alternative()
     30        : cost( Cost::zero ), cvtCost( Cost::zero ), expr( nullptr ), env(), openVars(), need() {}
    3031
    31         Alternative::Alternative( Expression *expr, const TypeEnvironment &env, const Cost& cost )
    32                 : cost( cost ), cvtCost( Cost::zero ), expr( expr ), env( env ) {}
     32        Alternative::Alternative( Expression *expr, const TypeEnvironment &env )
     33        : cost( Cost::zero ), cvtCost( Cost::zero ), expr( expr ), env( env ), openVars(), need() {}
     34       
     35        Alternative::Alternative( const Alternative &o, Expression *expr, const Cost &cost )
     36        : cost( cost ), cvtCost( Cost::zero ), expr( expr ), env( o.env ), openVars( o.openVars ),
     37          need() { cloneAll( o.need, need ); }
    3338
    34         Alternative::Alternative( Expression *expr, const TypeEnvironment &env, const Cost& cost, const Cost &cvtCost )
    35                 : cost( cost ), cvtCost( cvtCost ), expr( expr ), env( env ) {}
     39        Alternative::Alternative( Expression *expr, const TypeEnvironment &env,
     40                const OpenVarSet& openVars, const AssertionList& oneed, const Cost& cost )
     41        : cost( cost ), cvtCost( Cost::zero ), expr( expr ), env( env ), openVars( openVars ),
     42          need() { cloneAll( oneed, need ); }
    3643
    37         Alternative::Alternative( const Alternative &other ) : cost( other.cost ), cvtCost( other.cvtCost ), expr( maybeClone( other.expr ) ), env( other.env ) {
    38         }
     44        Alternative::Alternative( Expression *expr, const TypeEnvironment &env,
     45                const OpenVarSet& openVars, const AssertionList& oneed, const Cost& cost,
     46                const Cost &cvtCost )
     47        : cost( cost ), cvtCost( cvtCost ), expr( expr ), env( env ), openVars( openVars ),
     48          need() { cloneAll( oneed, need ); }
     49       
     50        Alternative::Alternative( Expression *expr, const TypeEnvironment &env,
     51                const OpenVarSet &openVars, const AssertionSet &oneed, const Cost &cost)
     52        : cost( cost ), cvtCost( Cost::zero ), expr( expr ), env( env ), openVars( openVars ),
     53          need() { cloneAll( oneed, need ); }
     54       
     55        Alternative::Alternative( Expression *expr, const TypeEnvironment &env,
     56                const OpenVarSet &openVars, const AssertionSet &oneed, const Cost &cost,
     57                const Cost& cvtCost )
     58        : cost( cost ), cvtCost( cvtCost ), expr( expr ), env( env ), openVars( openVars ),
     59          need() { cloneAll( oneed, need ); }
     60       
     61        Alternative::Alternative( Expression *expr, TypeEnvironment &&env, OpenVarSet &&openVars,
     62                AssertionSet &&needSet, const Cost &cost )
     63        : cost( cost ), cvtCost( Cost::zero ), expr( expr ), env( std::move(env) ),
     64          openVars( std::move(openVars) ), need( needSet.begin(), needSet.end() ) {}
     65       
     66        Alternative::Alternative( Expression *expr, TypeEnvironment &&env, OpenVarSet &&openVars,
     67                AssertionSet &&needSet, const Cost &cost, const Cost &cvtCost )
     68        : cost( cost ), cvtCost( cvtCost ), expr( expr ), env( std::move(env) ),
     69          openVars( std::move(openVars) ), need( needSet.begin(), needSet.end() ) {}
     70
     71        Alternative::Alternative( const Alternative &other )
     72        : cost( other.cost ), cvtCost( other.cvtCost ), expr( maybeClone( other.expr ) ),
     73          env( other.env ), openVars( other.openVars ), need() { cloneAll( other.need, need ); }
    3974
    4075        Alternative &Alternative::operator=( const Alternative &other ) {
     
    4580                expr = maybeClone( other.expr );
    4681                env = other.env;
     82                openVars = other.openVars;
     83                need.clear();
     84                cloneAll( other.need, need );
    4785                return *this;
    4886        }
    4987
    50         Alternative::Alternative( Alternative && other ) : cost( other.cost ), cvtCost( other.cvtCost ), expr( other.expr ), env( std::move( other.env ) ) {
    51                 other.expr = nullptr;
    52         }
     88        Alternative::Alternative( Alternative && other )
     89        : cost( other.cost ), cvtCost( other.cvtCost ), expr( other.expr ),
     90          env( std::move( other.env ) ), openVars( std::move( other.openVars ) ),
     91          need( std::move( other.need ) ) { other.expr = nullptr; }
    5392
    5493        Alternative & Alternative::operator=( Alternative && other ) {
     
    5998                expr = other.expr;
    6099                env = std::move( other.env );
     100                openVars = std::move( other.openVars );
     101                need = std::move( other.need );
    61102                other.expr = nullptr;
    62103                return *this;
     
    64105
    65106        Alternative::~Alternative() {
     107                for ( AssertionItem& n : need ) { delete n.decl; }
    66108                delete expr;
    67109        }
     
    78120                        os << "Null expression!" << std::endl;
    79121                } // if
    80                 os << indent << "Environment: ";
     122                os << indent << "Environment:";
    81123                env.print( os, indent+1 );
    82124                os << std::endl;
  • src/ResolvExpr/Alternative.h

    r5e49e47 rd0c91a6  
    99// Author           : Richard C. Bilson
    1010// Created On       : Sat May 16 23:45:43 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Jul 22 09:36:36 2017
    13 // Update Count     : 3
     11// Last Modified By : Aaron B. Moss
     12// Last Modified On : Thu Oct 11 10:55:00 2018
     13// Update Count     : 4
    1414//
    1515
     
    2020
    2121#include "Cost.h"             // for Cost
    22 #include "TypeEnvironment.h"  // for TypeEnvironment
     22#include "TypeEnvironment.h"  // for TypeEnvironment, AssertionSetValue
     23
     24#include "Common/utility.h"   // for maybeClone
    2325
    2426class Expression;
    2527
    2628namespace ResolvExpr {
     29        /// One assertion to resolve
     30        struct AssertionItem {
     31                DeclarationWithType* decl;
     32                AssertionSetValue info;
     33               
     34                AssertionItem() = default;
     35                AssertionItem( DeclarationWithType* decl, const AssertionSetValue& info )
     36                : decl(decl), info(info) {}
     37                AssertionItem( const AssertionSet::value_type& e ) : decl(e.first), info(e.second) {}
     38                operator AssertionSet::value_type () const { return { decl, info }; }
     39
     40                // to support cloneAll
     41                AssertionItem clone() const { return { maybeClone(decl), info }; }
     42        };
     43        /// A list of unresolved assertions
     44        using AssertionList = std::vector<AssertionItem>;
     45
     46        /// Clones an assertion list into an assertion set
     47        static inline void cloneAll( const AssertionList& src, AssertionSet& dst ) {
     48                for ( const AssertionItem& item : src ) {
     49                        dst.emplace( maybeClone(item.decl), item.info );
     50                }
     51        }
     52
     53        /// Clones an assertion set into an assertion list
     54        static inline void cloneAll( const AssertionSet& src, AssertionList& dst ) {
     55                dst.reserve( dst.size() + src.size() );
     56                for ( const auto& entry : src ) {
     57                        dst.emplace_back( maybeClone(entry.first), entry.second );
     58                }
     59        }
     60
     61        /// Clones an assertion list into an assertion list
     62        static inline void cloneAll( const AssertionList& src, AssertionList& dst ) {
     63                dst.reserve( dst.size() + src.size() );
     64                for ( const AssertionItem& item : src ) {
     65                        dst.emplace_back( maybeClone(item.decl), item.info );
     66                }
     67        }
     68
     69        /// One option for resolution of an expression
    2770        struct Alternative {
    2871                Alternative();
    29                 Alternative( Expression *expr, const TypeEnvironment &env, const Cost &cost );
    30                 Alternative( Expression *expr, const TypeEnvironment &env, const Cost &cost, const Cost &cvtCost );
     72                Alternative( Expression *expr, const TypeEnvironment &env );
     73                Alternative( const Alternative &o, Expression *expr, const Cost &cost );
     74                Alternative( Expression *expr, const TypeEnvironment &env, const OpenVarSet& openVars,
     75                        const AssertionList& need, const Cost &cost );
     76                Alternative( Expression *expr, const TypeEnvironment &env, const OpenVarSet& openVars,
     77                        const AssertionList& need, const Cost &cost, const Cost &cvtCost );
     78                Alternative( Expression *expr, const TypeEnvironment &env, const OpenVarSet &openVars,
     79                        const AssertionSet &need, const Cost &cost);
     80                Alternative( Expression *expr, const TypeEnvironment &env, const OpenVarSet &openVars,
     81                        const AssertionSet &need, const Cost &cost, const Cost& cvtCost );
     82                Alternative( Expression *expr, TypeEnvironment &&env, OpenVarSet &&openVars,
     83                        AssertionSet &&need, const Cost &cost );
     84                Alternative( Expression *expr, TypeEnvironment &&env, OpenVarSet &&openVars,
     85                        AssertionSet &&need, const Cost &cost, const Cost &cvtCost );
    3186                Alternative( const Alternative &other );
    3287                Alternative &operator=( const Alternative &other );
     
    4499                }
    45100
    46                 Cost cost;
    47                 Cost cvtCost;
    48                 Expression *expr;
    49                 TypeEnvironment env;
     101                /// Sorts by cost
     102                bool operator< ( const Alternative& o ) const { return cost < o.cost; }
     103
     104                Cost cost;            ///< Cost of the whole expression
     105                Cost cvtCost;         ///< Cost of conversions to the satisfying expression
     106                Expression *expr;     ///< Satisfying expression
     107                TypeEnvironment env;  ///< Containing type environment
     108                OpenVarSet openVars;  ///< Open variables for environment
     109                AssertionList need;   ///< Assertions which need to be resolved
    50110        };
    51111
  • src/ResolvExpr/AlternativeFinder.cc

    r5e49e47 rd0c91a6  
    1111// Last Modified By : Peter A. Buhr
    1212// Last Modified On : Thu Nov  1 21:00:56 2018
    13 // Update Count     : 34
     13// Update Count     : 35
    1414//
    1515
     
    3434#include "InitTweak/InitTweak.h"   // for getFunctionName
    3535#include "RenameVars.h"            // for RenameVars, global_renamer
     36#include "ResolveAssertions.h"     // for resolveAssertions
    3637#include "ResolveTypeof.h"         // for resolveTypeof
    3738#include "Resolver.h"              // for resolveStmtExpr
     
    102103                void addAnonConversions( const Alternative & alt );
    103104                /// Adds alternatives for member expressions, given the aggregate, conversion cost for that aggregate, and name of the member
    104                 template< typename StructOrUnionType > void addAggMembers( StructOrUnionType *aggInst, Expression *expr, const Cost &newCost, const TypeEnvironment & env, const std::string & name );
     105                template< typename StructOrUnionType > void addAggMembers( StructOrUnionType *aggInst, Expression *expr, const Alternative &alt, const Cost &newCost, const std::string & name );
    105106                /// Adds alternatives for member expressions where the left side has tuple type
    106                 void addTupleMembers( TupleType * tupleType, Expression *expr, const Cost &newCost, const TypeEnvironment & env, Expression * member );
     107                void addTupleMembers( TupleType *tupleType, Expression *expr, const Alternative &alt, const Cost &newCost, Expression *member );
    107108                /// Adds alternatives for offsetof expressions, given the base type and name of the member
    108109                template< typename StructOrUnionType > void addOffsetof( StructOrUnionType *aggInst, const std::string &name );
     
    113114                template<typename OutputIterator>
    114115                void makeFunctionAlternatives( const Alternative &func, FunctionType *funcType, const ExplodedArgs& args, OutputIterator out );
    115                 /// Checks if assertion parameters match for a new alternative
     116                /// Sets up parameter inference for an output alternative
    116117                template< typename OutputIterator >
    117                 void inferParameters( const AssertionSet &need, AssertionSet &have, const Alternative &newAlt, OpenVarSet &openVars, OutputIterator out );
     118                void inferParameters( Alternative &newAlt, OutputIterator out );
    118119        private:
    119120                AlternativeFinder & altFinder;
     
    244245        }
    245246
    246         void AlternativeFinder::find( Expression *expr, bool adjust, bool prune, bool failFast ) {
     247        void AlternativeFinder::find( Expression *expr, ResolvMode mode ) {
    247248                PassVisitor<Finder> finder( *this );
    248249                expr->accept( finder );
    249                 if ( failFast && alternatives.empty() ) {
     250                if ( mode.failFast && alternatives.empty() ) {
    250251                        PRINT(
    251252                                std::cerr << "No reasonable alternatives for expression " << expr << std::endl;
     
    253254                        SemanticError( expr, "No reasonable alternatives for expression " );
    254255                }
    255                 if ( prune ) {
     256                if ( mode.resolveAssns || mode.prune ) {
     257                        // trim candidates just to those where the assertions resolve
     258                        // - necessary pre-requisite to pruning
     259                        AltList candidates;
     260                        for ( unsigned i = 0; i < alternatives.size(); ++i ) {
     261                                resolveAssertions( alternatives[i], indexer, candidates );
     262                        }
     263                        // fail early if none such
     264                        if ( mode.failFast && candidates.empty() ) {
     265                                std::ostringstream stream;
     266                                stream << "No resolvable alternatives for expression " << expr << "\n"
     267                                       << "Alternatives with failing assertions are:\n";
     268                                printAlts( alternatives, stream, 1 );
     269                                SemanticError( expr->location, stream.str() );
     270                        }
     271                        // reset alternatives
     272                        alternatives = std::move( candidates );
     273                }
     274                if ( mode.prune ) {
    256275                        auto oldsize = alternatives.size();
    257276                        PRINT(
     
    261280                        AltList pruned;
    262281                        pruneAlternatives( alternatives.begin(), alternatives.end(), back_inserter( pruned ) );
    263                         if ( failFast && pruned.empty() ) {
     282                        if ( mode.failFast && pruned.empty() ) {
    264283                                std::ostringstream stream;
    265284                                AltList winners;
     
    280299                }
    281300                // adjust types after pruning so that types substituted by pruneAlternatives are correctly adjusted
    282                 for ( AltList::iterator i = alternatives.begin(); i != alternatives.end(); ++i ) {
    283                         if ( adjust ) {
    284                                 adjustExprType( i->expr->get_result(), i->env, indexer );
     301                if ( mode.adjust ) {
     302                        for ( Alternative& i : alternatives ) {
     303                                adjustExprType( i.expr->get_result(), i.env, indexer );
    285304                        }
    286305                }
     
    294313
    295314        void AlternativeFinder::findWithAdjustment( Expression *expr ) {
    296                 find( expr, true );
     315                find( expr, ResolvMode::withAdjustment() );
    297316        }
    298317
    299318        void AlternativeFinder::findWithoutPrune( Expression * expr ) {
    300                 find( expr, true, false );
     319                find( expr, ResolvMode::withoutPrune() );
    301320        }
    302321
    303322        void AlternativeFinder::maybeFind( Expression * expr ) {
    304                 find( expr, true, true, false );
     323                find( expr, ResolvMode::withoutFailFast() );
    305324        }
    306325
     
    317336
    318337                if ( StructInstType *structInst = dynamic_cast< StructInstType* >( aggrExpr->result ) ) {
    319                         addAggMembers( structInst, aggrExpr.get(), alt.cost+Cost::safe, alt.env, "" );
     338                        addAggMembers( structInst, aggrExpr.get(), alt, alt.cost+Cost::safe, "" );
    320339                } else if ( UnionInstType *unionInst = dynamic_cast< UnionInstType* >( aggrExpr->result ) ) {
    321                         addAggMembers( unionInst, aggrExpr.get(), alt.cost+Cost::safe, alt.env, "" );
     340                        addAggMembers( unionInst, aggrExpr.get(), alt, alt.cost+Cost::safe, "" );
    322341                } // if
    323342        }
    324343
    325344        template< typename StructOrUnionType >
    326         void AlternativeFinder::Finder::addAggMembers( StructOrUnionType *aggInst, Expression *expr, const Cost &newCost, const TypeEnvironment & env, const std::string & name ) {
     345        void AlternativeFinder::Finder::addAggMembers( StructOrUnionType *aggInst, Expression *expr, const Alternative& alt, const Cost &newCost, const std::string & name ) {
    327346                std::list< Declaration* > members;
    328347                aggInst->lookup( name, members );
     
    332351                                // addAnonAlternatives uses vector::push_back, which invalidates references to existing elements, so
    333352                                // can't construct in place and use vector::back
    334                                 Alternative newAlt( new MemberExpr( dwt, expr->clone() ), env, newCost );
     353                                Alternative newAlt{ alt, new MemberExpr{ dwt, expr->clone() }, newCost };
    335354                                renameTypes( newAlt.expr );
    336355                                addAnonConversions( newAlt ); // add anonymous member interpretations whenever an aggregate value type is seen as a member expression.
     
    342361        }
    343362
    344         void AlternativeFinder::Finder::addTupleMembers( TupleType * tupleType, Expression *expr, const Cost &newCost, const TypeEnvironment & env, Expression * member ) {
     363        void AlternativeFinder::Finder::addTupleMembers( TupleType *tupleType, Expression *expr,                        const Alternative &alt, const Cost &newCost, Expression *member ) {
    345364                if ( ConstantExpr * constantExpr = dynamic_cast< ConstantExpr * >( member ) ) {
    346365                        // get the value of the constant expression as an int, must be between 0 and the length of the tuple type to have meaning
     
    348367                        std::string tmp;
    349368                        if ( val >= 0 && (unsigned long long)val < tupleType->size() ) {
    350                                 alternatives.push_back( Alternative( new TupleIndexExpr( expr->clone(), val ), env, newCost ) );
     369                                alternatives.push_back( Alternative{
     370                                        alt, new TupleIndexExpr( expr->clone(), val ), newCost } );
    351371                        } // if
    352372                } // if
     
    354374
    355375        void AlternativeFinder::Finder::postvisit( ApplicationExpr *applicationExpr ) {
    356                 alternatives.push_back( Alternative( applicationExpr->clone(), env, Cost::zero ) );
     376                alternatives.push_back( Alternative{ applicationExpr->clone(), env } );
    357377        }
    358378
     
    410430        Cost computeApplicationConversionCost( Alternative &alt, const SymTab::Indexer &indexer ) {
    411431                ApplicationExpr *appExpr = strict_dynamic_cast< ApplicationExpr* >( alt.expr );
    412                 PointerType *pointer = strict_dynamic_cast< PointerType* >( appExpr->get_function()->get_result() );
    413                 FunctionType *function = strict_dynamic_cast< FunctionType* >( pointer->get_base() );
     432                PointerType *pointer = strict_dynamic_cast< PointerType* >( appExpr->function->result );
     433                FunctionType *function = strict_dynamic_cast< FunctionType* >( pointer->base );
    414434
    415435                Cost convCost = Cost::zero;
    416                 std::list< DeclarationWithType* >& formals = function->get_parameters();
     436                std::list< DeclarationWithType* >& formals = function->parameters;
    417437                std::list< DeclarationWithType* >::iterator formal = formals.begin();
    418                 std::list< Expression* >& actuals = appExpr->get_args();
    419 
    420                 for ( std::list< Expression* >::iterator actualExpr = actuals.begin(); actualExpr != actuals.end(); ++actualExpr ) {
    421                         Type * actualType = (*actualExpr)->get_result();
     438                std::list< Expression* >& actuals = appExpr->args;
     439
     440                for ( Expression*& actualExpr : actuals ) {
     441                        Type * actualType = actualExpr->result;
    422442                        PRINT(
    423443                                std::cerr << "actual expression:" << std::endl;
    424                                 (*actualExpr)->print( std::cerr, 8 );
     444                                actualExpr->print( std::cerr, 8 );
    425445                                std::cerr << "--- results are" << std::endl;
    426446                                actualType->print( std::cerr, 8 );
    427447                        )
    428448                        if ( formal == formals.end() ) {
    429                                 if ( function->get_isVarArgs() ) {
     449                                if ( function->isVarArgs ) {
    430450                                        convCost.incUnsafe();
    431451                                        PRINT( std::cerr << "end of formals with varargs function: inc unsafe: " << convCost << std::endl; ; )
    432452                                        // convert reference-typed expressions to value-typed expressions
    433                                         referenceToRvalueConversion( *actualExpr, convCost );
     453                                        referenceToRvalueConversion( actualExpr, convCost );
    434454                                        continue;
    435455                                } else {
     
    437457                                }
    438458                        }
    439                         if ( DefaultArgExpr * def = dynamic_cast< DefaultArgExpr * >( *actualExpr ) ) {
     459                        if ( DefaultArgExpr * def = dynamic_cast< DefaultArgExpr * >( actualExpr ) ) {
    440460                                // default arguments should be free - don't include conversion cost.
    441461                                // Unwrap them here because they are not relevant to the rest of the system.
    442                                 *actualExpr = def->expr;
     462                                actualExpr = def->expr;
    443463                                ++formal;
    444464                                continue;
    445465                        }
     466                        // mark conversion cost to formal and also specialization cost of formal type
    446467                        Type * formalType = (*formal)->get_type();
    447                         convCost += computeExpressionConversionCost( *actualExpr, formalType, indexer, alt.env );
     468                        convCost += computeExpressionConversionCost( actualExpr, formalType, indexer, alt.env );
     469                        convCost.decSpec( specCost( formalType ) );
    448470                        ++formal; // can't be in for-loop update because of the continue
    449471                }
     
    452474                }
    453475
    454                 for ( InferredParams::const_iterator assert = appExpr->get_inferParams().begin(); assert != appExpr->get_inferParams().end(); ++assert ) {
     476                // mark specialization cost of return types
     477                for ( DeclarationWithType* returnVal : function->returnVals ) {
     478                        convCost.decSpec( specCost( returnVal->get_type() ) );
     479                }
     480
     481                // mark type variable and specialization cost of forall clause
     482                convCost.incVar( function->forall.size() );
     483                for ( TypeDecl* td : function->forall ) {
     484                        convCost.decSpec( td->assertions.size() );
     485                }
     486
     487                // xxx -- replace with new costs in resolver
     488                for ( InferredParams::const_iterator assert = appExpr->inferParams.begin(); assert != appExpr->inferParams.end(); ++assert ) {
    455489                        convCost += computeConversionCost( assert->second.actualType, assert->second.formalType, indexer, alt.env );
    456490                }
     
    466500                                needAssertions[ *assert ].isUsed = true;
    467501                        }
    468 ///     needAssertions.insert( needAssertions.end(), (*tyvar)->get_assertions().begin(), (*tyvar)->get_assertions().end() );
    469                 }
    470         }
    471 
    472         static const int recursionLimit = /*10*/ 4;  ///< Limit to depth of recursion satisfaction
    473 
    474         void addToIndexer( AssertionSet &assertSet, SymTab::Indexer &indexer ) {
    475                 for ( AssertionSet::iterator i = assertSet.begin(); i != assertSet.end(); ++i ) {
    476                         if ( i->second.isUsed ) {
    477                                 indexer.addId( i->first );
    478                         }
    479                 }
    480         }
    481 
    482         template< typename ForwardIterator, typename OutputIterator >
    483         void inferRecursive( ForwardIterator begin, ForwardIterator end, const Alternative &newAlt, OpenVarSet &openVars, const SymTab::Indexer &decls, const AssertionSet &newNeed, int level, const SymTab::Indexer &indexer, OutputIterator out ) {
    484                 if ( newAlt.cost == Cost::infinity ) return; // don't proceed down this dead end
    485                 if ( begin == end ) {
    486                         if ( newNeed.empty() ) {
    487                                 PRINT(
    488                                         std::cerr << "all assertions satisfied, output alternative: ";
    489                                         newAlt.print( std::cerr );
    490                                         std::cerr << std::endl;
    491                                 );
    492                                 *out++ = newAlt;
    493                                 return;
    494                         } else if ( level >= recursionLimit ) {
    495                                 SemanticError( newAlt.expr->location, "Too many recursive assertions" );
    496                         } else {
    497                                 AssertionSet newerNeed;
    498                                 PRINT(
    499                                         std::cerr << "recursing with new set:" << std::endl;
    500                                         printAssertionSet( newNeed, std::cerr, 8 );
    501                                 )
    502                                 inferRecursive( newNeed.begin(), newNeed.end(), newAlt, openVars, decls, newerNeed, level+1, indexer, out );
    503                                 return;
    504                         }
    505                 }
    506 
    507                 ForwardIterator cur = begin++;
    508                 if ( ! cur->second.isUsed ) {
    509                         inferRecursive( begin, end, newAlt, openVars, decls, newNeed, level, indexer, out );
    510                         return; // xxx - should this continue? previously this wasn't here, and it looks like it should be
    511                 }
    512                 DeclarationWithType *curDecl = cur->first;
    513 
    514                 PRINT(
    515                         std::cerr << "inferRecursive: assertion is ";
    516                         curDecl->print( std::cerr );
    517                         std::cerr << std::endl;
    518                 )
    519                 std::list< SymTab::Indexer::IdData > candidates;
    520                 decls.lookupId( curDecl->get_name(), candidates );
    521 ///   if ( candidates.empty() ) { std::cerr << "no candidates!" << std::endl; }
    522                 for ( const auto & data : candidates ) {
    523                         DeclarationWithType * candidate = data.id;
    524                         PRINT(
    525                                 std::cerr << "inferRecursive: candidate is ";
    526                                 candidate->print( std::cerr );
    527                                 std::cerr << std::endl;
    528                         )
    529 
    530                         AssertionSet newHave, newerNeed( newNeed );
    531                         TypeEnvironment newEnv( newAlt.env );
    532                         OpenVarSet newOpenVars( openVars );
    533                         Type *adjType = candidate->get_type()->clone();
    534                         adjustExprType( adjType, newEnv, indexer );
    535                         renameTyVars( adjType );
    536                         PRINT(
    537                                 std::cerr << "unifying ";
    538                                 curDecl->get_type()->print( std::cerr );
    539                                 std::cerr << " with ";
    540                                 adjType->print( std::cerr );
    541                                 std::cerr << std::endl;
    542                         )
    543                         if ( unify( curDecl->get_type(), adjType, newEnv, newerNeed, newHave, newOpenVars, indexer ) ) {
    544                                 PRINT(
    545                                         std::cerr << "success!" << std::endl;
    546                                 )
    547                                 SymTab::Indexer newDecls( decls );
    548                                 addToIndexer( newHave, newDecls );
    549                                 Alternative newerAlt( newAlt );
    550                                 newerAlt.env = newEnv;
    551                                 assertf( candidate->get_uniqueId(), "Assertion candidate does not have a unique ID: %s", toString( candidate ).c_str() );
    552 
    553                                 // everything with an empty idChain was pulled in by the current assertion.
    554                                 // add current assertion's idChain + current assertion's ID so that the correct inferParameters can be found.
    555                                 for ( auto & a : newerNeed ) {
    556                                         if ( a.second.idChain.empty() ) {
    557                                                 a.second.idChain = cur->second.idChain;
    558                                                 a.second.idChain.push_back( curDecl->get_uniqueId() );
    559                                         }
    560                                 }
    561 
    562                                 Expression *varExpr = data.combine( newerAlt.cvtCost );
    563                                 delete varExpr->get_result();
    564                                 varExpr->set_result( adjType->clone() );
    565                                 PRINT(
    566                                         std::cerr << "satisfying assertion " << curDecl->get_uniqueId() << " ";
    567                                         curDecl->print( std::cerr );
    568                                         std::cerr << " with declaration " << candidate->get_uniqueId() << " ";
    569                                         candidate->print( std::cerr );
    570                                         std::cerr << std::endl;
    571                                 )
    572                                 // follow the current assertion's ID chain to find the correct set of inferred parameters to add the candidate to (i.e. the set of inferred parameters belonging to the entity which requested the assertion parameter).
    573                                 InferredParams * inferParameters = &newerAlt.expr->get_inferParams();
    574                                 for ( UniqueId id : cur->second.idChain ) {
    575                                         inferParameters = (*inferParameters)[ id ].inferParams.get();
    576                                 }
    577                                 // XXX: this is a memory leak, but adjType can't be deleted because it might contain assertions
    578                                 (*inferParameters)[ curDecl->get_uniqueId() ] = ParamEntry( candidate->get_uniqueId(), adjType->clone(), curDecl->get_type()->clone(), varExpr );
    579                                 inferRecursive( begin, end, newerAlt, newOpenVars, newDecls, newerNeed, level, indexer, out );
    580                         } else {
    581                                 delete adjType;
    582                         }
    583                 }
    584         }
     502                }
     503        }
     504
     505        /// Unique identifier for matching expression resolutions to their requesting expression
     506        UniqueId globalResnSlot = 0;
    585507
    586508        template< typename OutputIterator >
    587         void AlternativeFinder::Finder::inferParameters( const AssertionSet &need, AssertionSet &have, const Alternative &newAlt, OpenVarSet &openVars, OutputIterator out ) {
    588 //      PRINT(
    589 //          std::cerr << "inferParameters: assertions needed are" << std::endl;
    590 //          printAll( need, std::cerr, 8 );
    591 //          )
    592                 SymTab::Indexer decls( indexer );
    593                 // PRINT(
    594                 //      std::cerr << "============= original indexer" << std::endl;
    595                 //      indexer.print( std::cerr );
    596                 //      std::cerr << "============= new indexer" << std::endl;
    597                 //      decls.print( std::cerr );
    598                 // )
    599                 addToIndexer( have, decls );
    600                 AssertionSet newNeed;
    601                 PRINT(
    602                         std::cerr << "env is: " << std::endl;
    603                         newAlt.env.print( std::cerr, 0 );
    604                         std::cerr << std::endl;
    605                 )
    606 
    607                 inferRecursive( need.begin(), need.end(), newAlt, openVars, decls, newNeed, 0, indexer, out );
    608 //      PRINT(
    609 //          std::cerr << "declaration 14 is ";
    610 //          Declaration::declFromId
    611 //          *out++ = newAlt;
    612 //          )
     509        void AlternativeFinder::Finder::inferParameters( Alternative &newAlt, OutputIterator out ) {
     510                // Set need bindings for any unbound assertions
     511                UniqueId crntResnSlot = 0;  // matching ID for this expression's assertions
     512                for ( auto& assn : newAlt.need ) {
     513                        // skip already-matched assertions
     514                        if ( assn.info.resnSlot != 0 ) continue;
     515                        // assign slot for expression if needed
     516                        if ( crntResnSlot == 0 ) { crntResnSlot = ++globalResnSlot; }
     517                        // fix slot to assertion
     518                        assn.info.resnSlot = crntResnSlot;
     519                }
     520                // pair slot to expression
     521                if ( crntResnSlot != 0 ) { newAlt.expr->resnSlots.push_back( crntResnSlot ); }
     522
     523                // add to output list, assertion resolution is deferred
     524                *out++ = newAlt;
    613525        }
    614526
     
    951863                }
    952864                // build and validate new alternative
    953                 Alternative newAlt( appExpr, result.env, cost );
     865                Alternative newAlt{ appExpr, result.env, result.openVars, result.need, cost };
    954866                PRINT(
    955867                        std::cerr << "instantiate function success: " << appExpr << std::endl;
     
    957869                        printAssertionSet( result.need, std::cerr, 8 );
    958870                )
    959                 inferParameters( result.need, result.have, newAlt, result.openVars, out );
     871                inferParameters( newAlt, out );
    960872        }
    961873
     
    12021114
    12031115                // function may return struct or union value, in which case we need to add alternatives
    1204                 // for implicitconversions to each of the anonymous members, must happen after findMinCost
     1116                // for implicit conversions to each of the anonymous members, must happen after findMinCost
    12051117                // since anon conversions are never the cheapest expression
    12061118                for ( const Alternative & alt : winners ) {
     
    12341146                        if ( isLvalue( alt.expr ) ) {
    12351147                                alternatives.push_back(
    1236                                         Alternative{ new AddressExpr( alt.expr->clone() ), alt.env, alt.cost } );
     1148                                        Alternative{ alt, new AddressExpr( alt.expr->clone() ), alt.cost } );
    12371149                        } // if
    12381150                } // for
     
    12401152
    12411153        void AlternativeFinder::Finder::postvisit( LabelAddressExpr * expr ) {
    1242                 alternatives.push_back( Alternative{ expr->clone(), env, Cost::zero } );
     1154                alternatives.push_back( Alternative{ expr->clone(), env } );
    12431155        }
    12441156
     
    12851197                AltList candidates;
    12861198                for ( Alternative & alt : finder.alternatives ) {
    1287                         AssertionSet needAssertions, haveAssertions;
    1288                         OpenVarSet openVars;
     1199                        AssertionSet needAssertions( alt.need.begin(), alt.need.end() );
     1200                        AssertionSet haveAssertions;
     1201                        OpenVarSet openVars{ alt.openVars };
    12891202
    12901203                        alt.env.extractOpenVars( openVars );
     
    13141227                                // count one safe conversion for each value that is thrown away
    13151228                                thisCost.incSafe( discardedValues );
    1316                                 Alternative newAlt( restructureCast( alt.expr->clone(), toType, castExpr->isGenerated ), alt.env,
    1317                                         alt.cost, thisCost );
    1318                                 inferParameters( needAssertions, haveAssertions, newAlt, openVars,
    1319                                         back_inserter( candidates ) );
     1229                                Alternative newAlt{
     1230                                        restructureCast( alt.expr->clone(), toType, castExpr->isGenerated ),
     1231                                        alt.env, openVars, needAssertions, alt.cost + thisCost, thisCost };
     1232                                inferParameters( newAlt, back_inserter( candidates ) );
    13201233                        } // if
    13211234                } // for
     
    13301243
    13311244        void AlternativeFinder::Finder::postvisit( VirtualCastExpr * castExpr ) {
    1332                 assertf( castExpr->get_result(), "Implicate virtual cast targets not yet supported." );
     1245                assertf( castExpr->get_result(), "Implicit virtual cast targets not yet supported." );
    13331246                AlternativeFinder finder( indexer, env );
    13341247                // don't prune here, since it's guaranteed all alternatives will have the same type
    13351248                finder.findWithoutPrune( castExpr->get_arg() );
    13361249                for ( Alternative & alt : finder.alternatives ) {
    1337                         alternatives.push_back( Alternative(
    1338                                 new VirtualCastExpr( alt.expr->clone(), castExpr->get_result()->clone() ),
    1339                                 alt.env, alt.cost ) );
     1250                        alternatives.push_back( Alternative{
     1251                                alt, new VirtualCastExpr{ alt.expr->clone(), castExpr->get_result()->clone() },
     1252                                alt.cost } );
    13401253                }
    13411254        }
     
    13651278                        // find member of the given type
    13661279                        if ( StructInstType *structInst = dynamic_cast< StructInstType* >( aggrExpr->get_result() ) ) {
    1367                                 addAggMembers( structInst, aggrExpr, cost, agg->env, get_member_name(memberExpr) );
     1280                                addAggMembers( structInst, aggrExpr, *agg, cost, get_member_name(memberExpr) );
    13681281                        } else if ( UnionInstType *unionInst = dynamic_cast< UnionInstType* >( aggrExpr->get_result() ) ) {
    1369                                 addAggMembers( unionInst, aggrExpr, cost, agg->env, get_member_name(memberExpr) );
     1282                                addAggMembers( unionInst, aggrExpr, *agg, cost, get_member_name(memberExpr) );
    13701283                        } else if ( TupleType * tupleType = dynamic_cast< TupleType * >( aggrExpr->get_result() ) ) {
    1371                                 addTupleMembers( tupleType, aggrExpr, cost, agg->env, memberExpr->get_member() );
     1284                                addTupleMembers( tupleType, aggrExpr, *agg, cost, memberExpr->get_member() );
    13721285                        } // if
    13731286                } // for
     
    13751288
    13761289        void AlternativeFinder::Finder::postvisit( MemberExpr *memberExpr ) {
    1377                 alternatives.push_back( Alternative( memberExpr->clone(), env, Cost::zero ) );
     1290                alternatives.push_back( Alternative{ memberExpr->clone(), env } );
    13781291        }
    13791292
     
    13881301                        // addAnonAlternatives uses vector::push_back, which invalidates references to existing elements, so
    13891302                        // can't construct in place and use vector::back
    1390                         Alternative newAlt( newExpr, env, Cost::zero, cost );
     1303                        Alternative newAlt{ newExpr, env, OpenVarSet{}, AssertionList{}, Cost::zero, cost };
    13911304                        PRINT(
    13921305                                std::cerr << "decl is ";
     
    14061319                // not sufficient to clone here, because variable's type may have changed
    14071320                // since the VariableExpr was originally created.
    1408                 alternatives.push_back( Alternative( new VariableExpr( variableExpr->var ), env, Cost::zero ) );
     1321                alternatives.push_back( Alternative{ new VariableExpr{ variableExpr->var }, env } );
    14091322        }
    14101323
    14111324        void AlternativeFinder::Finder::postvisit( ConstantExpr *constantExpr ) {
    1412                 alternatives.push_back( Alternative( constantExpr->clone(), env, Cost::zero ) );
     1325                alternatives.push_back( Alternative{ constantExpr->clone(), env } );
    14131326        }
    14141327
     
    14161329                if ( sizeofExpr->get_isType() ) {
    14171330                        Type * newType = sizeofExpr->get_type()->clone();
    1418                         alternatives.push_back( Alternative( new SizeofExpr( resolveTypeof( newType, indexer ) ), env, Cost::zero ) );
     1331                        alternatives.push_back( Alternative{
     1332                                new SizeofExpr{ resolveTypeof( newType, indexer ) }, env } );
    14191333                } else {
    14201334                        // find all alternatives for the argument to sizeof
     
    14301344                        Alternative &choice = winners.front();
    14311345                        referenceToRvalueConversion( choice.expr, choice.cost );
    1432                         alternatives.push_back( Alternative( new SizeofExpr( choice.expr->clone() ), choice.env, Cost::zero ) );
     1346                        alternatives.push_back( Alternative{
     1347                                choice, new SizeofExpr( choice.expr->clone() ), Cost::zero } );
    14331348                } // if
    14341349        }
     
    14371352                if ( alignofExpr->get_isType() ) {
    14381353                        Type * newType = alignofExpr->get_type()->clone();
    1439                         alternatives.push_back( Alternative( new AlignofExpr( resolveTypeof( newType, indexer ) ), env, Cost::zero ) );
     1354                        alternatives.push_back( Alternative{
     1355                                new AlignofExpr{ resolveTypeof( newType, indexer ) }, env } );
    14401356                } else {
    14411357                        // find all alternatives for the argument to sizeof
     
    14511367                        Alternative &choice = winners.front();
    14521368                        referenceToRvalueConversion( choice.expr, choice.cost );
    1453                         alternatives.push_back( Alternative( new AlignofExpr( choice.expr->clone() ), choice.env, Cost::zero ) );
     1369                        alternatives.push_back( Alternative{
     1370                                choice, new AlignofExpr{ choice.expr->clone() }, Cost::zero } );
    14541371                } // if
    14551372        }
     
    14611378                for ( std::list< Declaration* >::const_iterator i = members.begin(); i != members.end(); ++i ) {
    14621379                        if ( DeclarationWithType *dwt = dynamic_cast< DeclarationWithType* >( *i ) ) {
    1463                                 alternatives.push_back( Alternative( new OffsetofExpr( aggInst->clone(), dwt ), env, Cost::zero ) );
     1380                                alternatives.push_back( Alternative{
     1381                                        new OffsetofExpr{ aggInst->clone(), dwt }, env } );
    14641382                                renameTypes( alternatives.back().expr );
    14651383                        } else {
     
    14801398
    14811399        void AlternativeFinder::Finder::postvisit( OffsetofExpr *offsetofExpr ) {
    1482                 alternatives.push_back( Alternative( offsetofExpr->clone(), env, Cost::zero ) );
     1400                alternatives.push_back( Alternative{ offsetofExpr->clone(), env } );
    14831401        }
    14841402
    14851403        void AlternativeFinder::Finder::postvisit( OffsetPackExpr *offsetPackExpr ) {
    1486                 alternatives.push_back( Alternative( offsetPackExpr->clone(), env, Cost::zero ) );
     1404                alternatives.push_back( Alternative{ offsetPackExpr->clone(), env } );
    14871405        }
    14881406
     
    15041422                                Cost cost = Cost::zero;
    15051423                                Expression * newExpr = data.combine( cost );
    1506                                 alternatives.push_back( Alternative( new AttrExpr( newExpr, argType->clone() ), env, Cost::zero, cost ) );
     1424                                alternatives.push_back( Alternative{
     1425                                        new AttrExpr{ newExpr, argType->clone() }, env, OpenVarSet{},
     1426                                        AssertionList{}, Cost::zero, cost } );
    15071427                                for ( DeclarationWithType * retVal : function->returnVals ) {
    15081428                                        alternatives.back().expr->result = retVal->get_type()->clone();
     
    15431463                                Cost cost = Cost::zero;
    15441464                                Expression * newExpr = data.combine( cost );
    1545                                 alternatives.push_back( Alternative( newExpr, env, Cost::zero, cost ) );
     1465                                alternatives.push_back( Alternative{
     1466                                        newExpr, env, OpenVarSet{}, AssertionList{}, Cost::zero, cost } );
    15461467                                renameTypes( alternatives.back().expr );
    15471468                        } // for
     
    15581479                for ( const Alternative & first : firstFinder.alternatives ) {
    15591480                        for ( const Alternative & second : secondFinder.alternatives ) {
    1560                                 TypeEnvironment compositeEnv;
    1561                                 compositeEnv.simpleCombine( first.env );
     1481                                TypeEnvironment compositeEnv{ first.env };
    15621482                                compositeEnv.simpleCombine( second.env );
    1563 
    1564                                 LogicalExpr *newExpr = new LogicalExpr( first.expr->clone(), second.expr->clone(), logicalExpr->get_isAnd() );
    1565                                 alternatives.push_back( Alternative( newExpr, compositeEnv, first.cost + second.cost ) );
     1483                                OpenVarSet openVars{ first.openVars };
     1484                                mergeOpenVars( openVars, second.openVars );
     1485                                AssertionSet need;
     1486                                cloneAll( first.need, need );
     1487                                cloneAll( second.need, need );
     1488
     1489                                LogicalExpr *newExpr = new LogicalExpr{
     1490                                        first.expr->clone(), second.expr->clone(), logicalExpr->get_isAnd() };
     1491                                alternatives.push_back( Alternative{
     1492                                        newExpr, std::move(compositeEnv), std::move(openVars),
     1493                                        AssertionList( need.begin(), need.end() ), first.cost + second.cost } );
    15661494                        }
    15671495                }
     
    15841512                        for ( const Alternative & second : secondFinder.alternatives ) {
    15851513                                for ( const Alternative & third : thirdFinder.alternatives ) {
    1586                                         TypeEnvironment compositeEnv;
    1587                                         compositeEnv.simpleCombine( first.env );
     1514                                        TypeEnvironment compositeEnv{ first.env };
    15881515                                        compositeEnv.simpleCombine( second.env );
    15891516                                        compositeEnv.simpleCombine( third.env );
    1590 
     1517                                        OpenVarSet openVars{ first.openVars };
     1518                                        mergeOpenVars( openVars, second.openVars );
     1519                                        mergeOpenVars( openVars, third.openVars );
     1520                                        AssertionSet need;
     1521                                        cloneAll( first.need, need );
     1522                                        cloneAll( second.need, need );
     1523                                        cloneAll( third.need, need );
     1524                                        AssertionSet have;
     1525                                       
    15911526                                        // unify true and false types, then infer parameters to produce new alternatives
    1592                                         OpenVarSet openVars;
    1593                                         AssertionSet needAssertions, haveAssertions;
    1594                                         Alternative newAlt( 0, compositeEnv, first.cost + second.cost + third.cost );
    15951527                                        Type* commonType = nullptr;
    1596                                         if ( unify( second.expr->result, third.expr->result, newAlt.env, needAssertions, haveAssertions, openVars, indexer, commonType ) ) {
    1597                                                 ConditionalExpr *newExpr = new ConditionalExpr( first.expr->clone(), second.expr->clone(), third.expr->clone() );
     1528                                        if ( unify( second.expr->result, third.expr->result, compositeEnv,
     1529                                                        need, have, openVars, indexer, commonType ) ) {
     1530                                                ConditionalExpr *newExpr = new ConditionalExpr{
     1531                                                        first.expr->clone(), second.expr->clone(), third.expr->clone() };
    15981532                                                newExpr->result = commonType ? commonType : second.expr->result->clone();
    15991533                                                // convert both options to the conditional result type
    1600                                                 newAlt.cost += computeExpressionConversionCost( newExpr->arg2, newExpr->result, indexer, newAlt.env );
    1601                                                 newAlt.cost += computeExpressionConversionCost( newExpr->arg3, newExpr->result, indexer, newAlt.env );
    1602                                                 newAlt.expr = newExpr;
    1603                                                 inferParameters( needAssertions, haveAssertions, newAlt, openVars, back_inserter( alternatives ) );
     1534                                                Cost cost = first.cost + second.cost + third.cost;
     1535                                                cost += computeExpressionConversionCost(
     1536                                                        newExpr->arg2, newExpr->result, indexer, compositeEnv );
     1537                                                cost += computeExpressionConversionCost(
     1538                                                        newExpr->arg3, newExpr->result, indexer, compositeEnv );
     1539                                                // output alternative
     1540                                                Alternative newAlt{
     1541                                                        newExpr, std::move(compositeEnv), std::move(openVars),
     1542                                                        AssertionList( need.begin(), need.end() ), cost };
     1543                                                inferParameters( newAlt, back_inserter( alternatives ) );
    16041544                                        } // if
    16051545                                } // for
     
    16141554                secondFinder.findWithAdjustment( commaExpr->get_arg2() );
    16151555                for ( const Alternative & alt : secondFinder.alternatives ) {
    1616                         alternatives.push_back( Alternative( new CommaExpr( newFirstArg->clone(), alt.expr->clone() ), alt.env, alt.cost ) );
     1556                        alternatives.push_back( Alternative{
     1557                                alt, new CommaExpr{ newFirstArg->clone(), alt.expr->clone() }, alt.cost } );
    16171558                } // for
    16181559                delete newFirstArg;
     
    16291570                for ( const Alternative & first : firstFinder.alternatives ) {
    16301571                        for ( const Alternative & second : secondFinder.alternatives ) {
    1631                                 TypeEnvironment compositeEnv;
    1632                                 compositeEnv.simpleCombine( first.env );
     1572                                TypeEnvironment compositeEnv{ first.env };
    16331573                                compositeEnv.simpleCombine( second.env );
    1634                                 OpenVarSet openVars;
    1635                                 AssertionSet needAssertions, haveAssertions;
    1636                                 Alternative newAlt( 0, compositeEnv, first.cost + second.cost );
     1574                                OpenVarSet openVars{ first.openVars };
     1575                                mergeOpenVars( openVars, second.openVars );
     1576                                AssertionSet need;
     1577                                cloneAll( first.need, need );
     1578                                cloneAll( second.need, need );
     1579                                AssertionSet have;
     1580
    16371581                                Type* commonType = nullptr;
    1638                                 if ( unify( first.expr->result, second.expr->result, newAlt.env, needAssertions, haveAssertions, openVars, indexer, commonType ) ) {
    1639                                         RangeExpr * newExpr = new RangeExpr( first.expr->clone(), second.expr->clone() );
     1582                                if ( unify( first.expr->result, second.expr->result, compositeEnv, need, have,
     1583                                                openVars, indexer, commonType ) ) {
     1584                                        RangeExpr * newExpr =
     1585                                                new RangeExpr{ first.expr->clone(), second.expr->clone() };
    16401586                                        newExpr->result = commonType ? commonType : first.expr->result->clone();
    1641                                         newAlt.expr = newExpr;
    1642                                         inferParameters( needAssertions, haveAssertions, newAlt, openVars, back_inserter( alternatives ) );
     1587                                        Alternative newAlt{
     1588                                                newExpr, std::move(compositeEnv), std::move(openVars),
     1589                                                AssertionList( need.begin(), need.end() ), first.cost + second.cost };
     1590                                        inferParameters( newAlt, back_inserter( alternatives ) );
    16431591                                } // if
    16441592                        } // for
     
    16581606
    16591607                        TypeEnvironment compositeEnv;
    1660                         simpleCombineEnvironments( alts.begin(), alts.end(), compositeEnv );
    1661                         alternatives.push_back(
    1662                                 Alternative{ new TupleExpr( exprs ), compositeEnv, sumCost( alts ) } );
     1608                        OpenVarSet openVars;
     1609                        AssertionSet need;
     1610                        for ( const Alternative& alt : alts ) {
     1611                                compositeEnv.simpleCombine( alt.env );
     1612                                mergeOpenVars( openVars, alt.openVars );
     1613                                cloneAll( alt.need, need );
     1614                        }
     1615                       
     1616                        alternatives.push_back( Alternative{
     1617                                new TupleExpr{ exprs }, std::move(compositeEnv), std::move(openVars),
     1618                                AssertionList( need.begin(), need.end() ), sumCost( alts ) } );
    16631619                } // for
    16641620        }
    16651621
    16661622        void AlternativeFinder::Finder::postvisit( TupleExpr *tupleExpr ) {
    1667                 alternatives.push_back( Alternative( tupleExpr->clone(), env, Cost::zero ) );
     1623                alternatives.push_back( Alternative{ tupleExpr->clone(), env } );
    16681624        }
    16691625
    16701626        void AlternativeFinder::Finder::postvisit( ImplicitCopyCtorExpr * impCpCtorExpr ) {
    1671                 alternatives.push_back( Alternative( impCpCtorExpr->clone(), env, Cost::zero ) );
     1627                alternatives.push_back( Alternative{ impCpCtorExpr->clone(), env } );
    16721628        }
    16731629
     
    16781634                finder.findWithoutPrune( ctorExpr->get_callExpr() );
    16791635                for ( Alternative & alt : finder.alternatives ) {
    1680                         alternatives.push_back( Alternative( new ConstructorExpr( alt.expr->clone() ), alt.env, alt.cost ) );
     1636                        alternatives.push_back( Alternative{
     1637                                alt, new ConstructorExpr( alt.expr->clone() ), alt.cost } );
    16811638                }
    16821639        }
    16831640
    16841641        void AlternativeFinder::Finder::postvisit( TupleIndexExpr *tupleExpr ) {
    1685                 alternatives.push_back( Alternative( tupleExpr->clone(), env, Cost::zero ) );
     1642                alternatives.push_back( Alternative{ tupleExpr->clone(), env } );
    16861643        }
    16871644
    16881645        void AlternativeFinder::Finder::postvisit( TupleAssignExpr *tupleAssignExpr ) {
    1689                 alternatives.push_back( Alternative( tupleAssignExpr->clone(), env, Cost::zero ) );
     1646                alternatives.push_back( Alternative{ tupleAssignExpr->clone(), env } );
    16901647        }
    16911648
     
    16961653                        // ensure that the id is passed on to the UniqueExpr alternative so that the expressions are "linked"
    16971654                        UniqueExpr * newUnqExpr = new UniqueExpr( alt.expr->clone(), unqExpr->get_id() );
    1698                         alternatives.push_back( Alternative( newUnqExpr, alt.env, alt.cost ) );
     1655                        alternatives.push_back( Alternative{ alt, newUnqExpr, alt.cost } );
    16991656                }
    17001657        }
     
    17041661                ResolvExpr::resolveStmtExpr( newStmtExpr, indexer );
    17051662                // xxx - this env is almost certainly wrong, and needs to somehow contain the combined environments from all of the statements in the stmtExpr...
    1706                 alternatives.push_back( Alternative( newStmtExpr, env, Cost::zero ) );
     1663                alternatives.push_back( Alternative{ newStmtExpr, env } );
    17071664        }
    17081665
     
    17261683                        for ( Alternative & alt : finder.get_alternatives() ) {
    17271684                                TypeEnvironment newEnv( alt.env );
    1728                                 AssertionSet needAssertions, haveAssertions;
    1729                                 OpenVarSet openVars;  // find things in env that don't have a "representative type" and claim those are open vars?
     1685                                AssertionSet need;
     1686                                cloneAll( alt.need, need );
     1687                                AssertionSet have;
     1688                                OpenVarSet openVars( alt.openVars ); 
     1689                                // xxx - find things in env that don't have a "representative type" and claim
     1690                                // those are open vars?
    17301691                                PRINT(
    17311692                                        std::cerr << "  @ " << toType << " " << initAlt.designation << std::endl;
    17321693                                )
    1733                                 // It's possible that a cast can throw away some values in a multiply-valued expression.  (An example is a
    1734                                 // cast-to-void, which casts from one value to zero.)  Figure out the prefix of the subexpression results
    1735                                 // that are cast directly.  The candidate is invalid if it has fewer results than there are types to cast
    1736                                 // to.
     1694                                // It's possible that a cast can throw away some values in a multiply-valued
     1695                                // expression. (An example is a cast-to-void, which casts from one value to
     1696                                // zero.)  Figure out the prefix of the subexpression results that are cast
     1697                                // directly.  The candidate is invalid if it has fewer results than there are
     1698                                // types to cast to.
    17371699                                int discardedValues = alt.expr->result->size() - toType->size();
    17381700                                if ( discardedValues < 0 ) continue;
    1739                                 // xxx - may need to go into tuple types and extract relevant types and use unifyList. Note that currently, this does not
    1740                                 // allow casting a tuple to an atomic type (e.g. (int)([1, 2, 3]))
     1701                                // xxx - may need to go into tuple types and extract relevant types and use
     1702                                // unifyList. Note that currently, this does not allow casting a tuple to an
     1703                                // atomic type (e.g. (int)([1, 2, 3]))
     1704                               
    17411705                                // unification run for side-effects
    1742                                 unify( toType, alt.expr->result, newEnv, needAssertions, haveAssertions, openVars, indexer ); // xxx - do some inspecting on this line... why isn't result bound to initAlt.type??
     1706                                unify( toType, alt.expr->result, newEnv, need, have, openVars, indexer );
     1707                                // xxx - do some inspecting on this line... why isn't result bound to initAlt.type?
    17431708
    17441709                                Cost thisCost = castCost( alt.expr->result, toType, indexer, newEnv );
     
    17461711                                        // count one safe conversion for each value that is thrown away
    17471712                                        thisCost.incSafe( discardedValues );
    1748                                         Alternative newAlt( new InitExpr( restructureCast( alt.expr->clone(), toType, true ), initAlt.designation->clone() ), newEnv, alt.cost, thisCost );
    1749                                         inferParameters( needAssertions, haveAssertions, newAlt, openVars, back_inserter( candidates ) );
     1713                                        Alternative newAlt{
     1714                                                new InitExpr{
     1715                                                        restructureCast( alt.expr->clone(), toType, true ), initAlt.designation->clone() },
     1716                                                std::move(newEnv), std::move(openVars),
     1717                                                AssertionList( need.begin(), need.end() ), alt.cost, thisCost };
     1718                                        inferParameters( newAlt, back_inserter( candidates ) );
    17501719                                }
    17511720                        }
  • src/ResolvExpr/AlternativeFinder.h

    r5e49e47 rd0c91a6  
    99// Author           : Richard C. Bilson
    1010// Created On       : Sat May 16 23:56:12 2015
    11 // Last Modified By : Andrew Beach
    12 // Last Modified On : Wed Jul 26 11:24:00 2017
    13 // Update Count     : 4
     11// Last Modified By : Aaron B. Moss
     12// Last Modified On : Fri Oct -5 10:01:00 2018
     13// Update Count     : 5
    1414//
    1515
     
    2424#include "ResolvExpr/Cost.h"             // for Cost, Cost::infinity
    2525#include "ResolvExpr/TypeEnvironment.h"  // for AssertionSet, OpenVarSet
     26#include "ResolvMode.h"                  // for ResolvMode
    2627#include "SynTree/Visitor.h"             // for Visitor
    2728#include "SynTree/SynTree.h"             // for Visitor Nodes
     
    6869                }
    6970
    70                 void find( Expression *expr, bool adjust = false, bool prune = true, bool failFast = true );
     71                void find( Expression *expr, ResolvMode mode = ResolvMode{} );
    7172                /// Calls find with the adjust flag set; adjustment turns array and function types into equivalent pointer types
    7273                void findWithAdjustment( Expression *expr );
  • src/ResolvExpr/ConversionCost.cc

    r5e49e47 rd0c91a6  
    2828
    2929namespace ResolvExpr {
    30         const Cost Cost::zero =      Cost(  0,  0,  0,  0 );
    31         const Cost Cost::infinity =  Cost( -1, -1, -1, -1 );
    32         const Cost Cost::unsafe =    Cost(  1,  0,  0,  0 );
    33         const Cost Cost::poly =      Cost(  0,  1,  0,  0 );
    34         const Cost Cost::safe =      Cost(  0,  0,  1,  0 );
    35         const Cost Cost::reference = Cost(  0,  0,  0,  1 );
     30        const Cost Cost::zero =      Cost{  0,  0,  0,  0,  0,  0 };
     31        const Cost Cost::infinity =  Cost{ -1, -1, -1, -1,  1, -1 };
     32        const Cost Cost::unsafe =    Cost{  1,  0,  0,  0,  0,  0 };
     33        const Cost Cost::poly =      Cost{  0,  1,  0,  0,  0,  0 };
     34        const Cost Cost::safe =      Cost{  0,  0,  1,  0,  0,  0 };
     35        const Cost Cost::var =       Cost{  0,  0,  0,  1,  0,  0 };
     36        const Cost Cost::spec =      Cost{  0,  0,  0,  0, -1,  0 };
     37        const Cost Cost::reference = Cost{  0,  0,  0,  0,  0,  1 };
    3638
    3739#if 0
  • src/ResolvExpr/Cost.h

    r5e49e47 rd0c91a6  
    99// Author           : Richard C. Bilson
    1010// Created On       : Sun May 17 09:39:50 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Jul 22 09:35:55 2017
    13 // Update Count     : 5
     11// Last Modified By : Aaron B. Moss
     12// Last Modified On : Fri Oct 05 14:32:00 2018
     13// Update Count     : 7
    1414//
    1515
     
    2121        class Cost {
    2222          private:
    23                 Cost( int unsafeCost, int polyCost, int safeCost, int referenceCost );
     23                Cost( int unsafeCost, int polyCost, int safeCost, int varCost, int specCost,
     24                        int referenceCost );
    2425
    2526          public:
     
    2728                Cost & incPoly( int inc = 1 );
    2829                Cost & incSafe( int inc = 1 );
     30                Cost & incVar( int inc = 1 );
     31                Cost & decSpec( int inc = 1 );
    2932                Cost & incReference( int inc = 1 );
    3033
     
    3235                int get_polyCost() const { return polyCost; }
    3336                int get_safeCost() const { return safeCost; }
     37                int get_varCost() const { return varCost; }
     38                int get_specCost() const { return specCost; }
    3439                int get_referenceCost() const { return referenceCost; }
    3540
     
    4146                bool operator!=( const Cost &other ) const;
    4247                friend std::ostream &operator<<( std::ostream &os, const Cost &cost );
     48                // returns negative for *this < other, 0 for *this == other, positive for *this > other
     49                int compare( const Cost &other ) const;
    4350
    4451                static const Cost zero;
     
    4855                static const Cost poly;
    4956                static const Cost safe;
     57                static const Cost var;
     58                static const Cost spec;
    5059                static const Cost reference;
     60
    5161          private:
    52                 int compare( const Cost &other ) const;
    53 
    54                 int unsafeCost;
    55                 int polyCost;
    56                 int safeCost;
    57                 int referenceCost;
     62                int unsafeCost;     ///< Unsafe (narrowing) conversions
     63                int polyCost;       ///< Count of parameters and return values bound to some poly type
     64                int safeCost;       ///< Safe (widening) conversions
     65                int varCost;        ///< Count of polymorphic type variables
     66                int specCost;       ///< Polymorphic type specializations (type assertions), negative cost
     67                int referenceCost;  ///< reference conversions
    5868        };
    5969
    60         inline Cost::Cost( int unsafeCost, int polyCost, int safeCost, int referenceCost ) : unsafeCost( unsafeCost ), polyCost( polyCost ), safeCost( safeCost ), referenceCost( referenceCost ) {}
     70        inline Cost::Cost( int unsafeCost, int polyCost, int safeCost, int varCost, int specCost,
     71                        int referenceCost )
     72                : unsafeCost( unsafeCost ), polyCost( polyCost ), safeCost( safeCost ), varCost( varCost ),
     73                  specCost( specCost ), referenceCost( referenceCost ) {}
    6174
    6275        inline Cost & Cost::incUnsafe( int inc ) {
     
    7588                if ( *this == infinity ) return *this;
    7689                safeCost += inc;
     90                return *this;
     91        }
     92
     93        inline Cost & Cost::incVar( int inc ) {
     94                if ( *this == infinity ) return *this;
     95                varCost += inc;
     96                return *this;
     97        }
     98
     99        inline Cost& Cost::decSpec( int dec ) {
     100                if ( *this == infinity ) return *this;
     101                specCost -= dec;
    77102                return *this;
    78103        }
     
    86111        inline Cost Cost::operator+( const Cost &other ) const {
    87112                if ( *this == infinity || other == infinity ) return infinity;
    88                 return Cost( unsafeCost + other.unsafeCost, polyCost + other.polyCost, safeCost + other.safeCost, referenceCost + other.referenceCost );
     113                return Cost{
     114                        unsafeCost + other.unsafeCost, polyCost + other.polyCost, safeCost + other.safeCost,
     115                        varCost + other.varCost, specCost + other.specCost,
     116                        referenceCost + other.referenceCost };
    89117        }
    90118
    91119        inline Cost Cost::operator-( const Cost &other ) const {
    92120                if ( *this == infinity || other == infinity ) return infinity;
    93                 return Cost( unsafeCost - other.unsafeCost, polyCost - other.polyCost, safeCost - other.safeCost, referenceCost - other.referenceCost );
     121                return Cost{
     122                        unsafeCost - other.unsafeCost, polyCost - other.polyCost, safeCost - other.safeCost,
     123                        varCost - other.varCost, specCost - other.specCost,
     124                        referenceCost - other.referenceCost };
    94125        }
    95126
     
    103134                polyCost += other.polyCost;
    104135                safeCost += other.safeCost;
     136                varCost += other.varCost;
     137                specCost += other.specCost;
    105138                referenceCost += other.referenceCost;
    106139                return *this;
     
    123156                } else if ( safeCost < other.safeCost ) {
    124157                        return true;
     158                } else if ( varCost > other.varCost ) {
     159                        return false;
     160                } else if ( varCost < other.varCost ) {
     161                        return true;
     162                } else if ( specCost > other.specCost ) {
     163                        return false;
     164                } else if ( specCost > other.specCost ) {
     165                        return true;
    125166                } else if ( referenceCost > other.referenceCost ) {
    126167                        return false;
     
    130171                        return false;
    131172                } // if
     173        }
     174
     175        inline int Cost::compare( const Cost &other ) const {
     176                if ( *this == infinity ) return +1;
     177                if ( other == infinity ) return -1;
     178
     179                int c = unsafeCost - other.unsafeCost; if ( c ) return c;
     180                c = polyCost - other.polyCost; if ( c ) return c;
     181                c = safeCost - other.safeCost; if ( c ) return c;
     182                c = varCost - other.varCost; if ( c ) return c;
     183                c = specCost - other.specCost; if ( c ) return c;
     184                return referenceCost - other.referenceCost;
    132185        }
    133186
     
    136189                        && polyCost == other.polyCost
    137190                        && safeCost == other.safeCost
     191                        && varCost == other.varCost
     192                        && specCost == other.specCost
    138193                        && referenceCost == other.referenceCost;
    139194        }
     
    144199
    145200        inline std::ostream &operator<<( std::ostream &os, const Cost &cost ) {
    146                 os << "( " << cost.unsafeCost << ", " << cost.polyCost << ", " << cost.safeCost << ", " << cost.referenceCost << " )";
    147                 return os;
     201                return os << "( " << cost.unsafeCost << ", " << cost.polyCost << ", "
     202                          << cost.safeCost << ", " << cost.varCost << ", " << cost.specCost << ", "
     203                          << cost.referenceCost << " )";
    148204        }
    149205} // namespace ResolvExpr
  • src/ResolvExpr/Resolver.cc

    r5e49e47 rd0c91a6  
    99// Author           : Richard C. Bilson
    1010// Created On       : Sun May 17 12:17:01 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Feb 17 11:19:40 2018
    13 // Update Count     : 213
     11// Last Modified By : Aaron B. Moss
     12// Last Modified On : Fri Oct 05 09:43:00 2018
     13// Update Count     : 214
    1414//
    1515
    16 #include <stddef.h>                      // for NULL
    1716#include <cassert>                       // for strict_dynamic_cast, assert
    1817#include <memory>                        // for allocator, allocator_traits<...
    1918#include <tuple>                         // for get
    20 #include <vector>
     19#include <vector>                        // for vector
    2120
    2221#include "Alternative.h"                 // for Alternative, AltList
     
    3130#include "ResolvExpr/TypeEnvironment.h"  // for TypeEnvironment
    3231#include "Resolver.h"
     32#include "ResolvMode.h"                  // for ResolvMode
    3333#include "SymTab/Autogen.h"              // for SizeType
    3434#include "SymTab/Indexer.h"              // for Indexer
     
    168168
    169169        namespace {
    170                 void findUnfinishedKindExpression(Expression * untyped, Alternative & alt, const SymTab::Indexer & indexer, const std::string & kindStr, std::function<bool(const Alternative &)> pred, bool adjust = false, bool prune = true, bool failFast = true) {
     170                void findUnfinishedKindExpression(Expression * untyped, Alternative & alt, const SymTab::Indexer & indexer, const std::string & kindStr, std::function<bool(const Alternative &)> pred, ResolvMode mode = ResolvMode{} ) {
    171171                        assertf( untyped, "expected a non-null expression." );
     172
     173                        // xxx - this isn't thread-safe, but should work until we parallelize the resolver
     174                        static unsigned recursion_level = 0;
     175
     176                        ++recursion_level;
    172177                        TypeEnvironment env;
    173178                        AlternativeFinder finder( indexer, env );
    174                         finder.find( untyped, adjust, prune, failFast );
     179                        finder.find( untyped, recursion_level == 1 ? mode.atTopLevel() : mode );
     180                        --recursion_level;
    175181
    176182                        #if 0
     
    185191                        #endif
    186192
     193                        // produce filtered list of alternatives
    187194                        AltList candidates;
    188195                        for ( Alternative & alt : finder.get_alternatives() ) {
     
    192199                        }
    193200
    194                         // xxx - if > 1 alternative with same cost, ignore deleted and pick from remaining
    195                         // choose the lowest cost expression among the candidates
     201                        // produce invalid error if no candidates
     202                        if ( candidates.empty() ) {
     203                                SemanticError( untyped, toString( "No reasonable alternatives for ", kindStr, (kindStr != "" ? " " : ""), "expression: ") );
     204                        }
     205
     206                        // search for cheapest candidate
    196207                        AltList winners;
    197                         findMinCost( candidates.begin(), candidates.end(), back_inserter( winners ) );
    198                         if ( winners.size() == 0 ) {
    199                                 SemanticError( untyped, toString( "No reasonable alternatives for ", kindStr, (kindStr != "" ? " " : ""), "expression: ") );
    200                         } else if ( winners.size() != 1 ) {
     208                        bool seen_undeleted = false;
     209                        for ( unsigned i = 0; i < candidates.size(); ++i ) {
     210                                int c = winners.empty() ? -1 : candidates[i].cost.compare( winners.front().cost );
     211
     212                                if ( c > 0 ) continue; // skip more expensive than winner
     213
     214                                if ( c < 0 ) {
     215                                        // reset on new cheapest
     216                                        seen_undeleted = ! findDeletedExpr( candidates[i].expr );
     217                                        winners.clear();
     218                                } else /* if ( c == 0 ) */ {
     219                                        if ( findDeletedExpr( candidates[i].expr ) ) {
     220                                                // skip deleted expression if already seen one equivalent-cost not
     221                                                if ( seen_undeleted ) continue;
     222                                        } else if ( ! seen_undeleted ) {
     223                                                // replace list of equivalent-cost deleted expressions with one non-deleted
     224                                                winners.clear();
     225                                                seen_undeleted = true;
     226                                        }
     227                                }
     228
     229                                winners.emplace_back( std::move( candidates[i] ) );
     230                        }
     231
     232                        // promote alternative.cvtCost to .cost
     233                        // xxx - I don't know why this is done, but I'm keeping the behaviour from findMinCost
     234                        for ( Alternative& winner : winners ) {
     235                                winner.cost = winner.cvtCost;
     236                        }
     237                       
     238                        // produce ambiguous errors, if applicable
     239                        if ( winners.size() != 1 ) {
    201240                                std::ostringstream stream;
    202241                                stream << "Cannot choose between " << winners.size() << " alternatives for " << kindStr << (kindStr != "" ? " " : "") << "expression\n";
     
    207246                        }
    208247
    209                         // there is one unambiguous interpretation - move the expression into the with statement
    210                         Alternative & choice = winners.front();
    211                         if ( findDeletedExpr( choice.expr ) ) {
     248                        // single selected choice
     249                        Alternative& choice = winners.front();
     250
     251                        // fail on only expression deleted
     252                        if ( ! seen_undeleted ) {
    212253                                SemanticError( untyped->location, choice.expr, "Unique best alternative includes deleted identifier in " );
    213254                        }
     255
     256                        // xxx - check for ambiguous expressions
     257                       
     258                        // output selected choice
    214259                        alt = std::move( choice );
    215260                }
    216261
    217262                /// resolve `untyped` to the expression whose alternative satisfies `pred` with the lowest cost; kindStr is used for providing better error messages
    218                 void findKindExpression(Expression *& untyped, const SymTab::Indexer & indexer, const std::string & kindStr, std::function<bool(const Alternative &)> pred, bool adjust = false, bool prune = true, bool failFast = true) {
     263                void findKindExpression(Expression *& untyped, const SymTab::Indexer & indexer, const std::string & kindStr, std::function<bool(const Alternative &)> pred, ResolvMode mode = ResolvMode{}) {
    219264                        if ( ! untyped ) return;
    220265                        Alternative choice;
    221                         findUnfinishedKindExpression( untyped, choice, indexer, kindStr, pred, adjust, prune, failFast );
     266                        findUnfinishedKindExpression( untyped, choice, indexer, kindStr, pred, mode );
    222267                        finishExpr( choice.expr, choice.env, untyped->env );
    223268                        delete untyped;
     
    250295                untyped.arg = expr;
    251296                Alternative choice;
    252                 findUnfinishedKindExpression( &untyped, choice, indexer, "", standardAlternativeFilter, true );
     297                findUnfinishedKindExpression( &untyped, choice, indexer, "", standardAlternativeFilter, ResolvMode::withAdjustment() );
    253298                CastExpr * castExpr = strict_dynamic_cast< CastExpr * >( choice.expr );
    254299                env = std::move( choice.env );
     
    357402
    358403        void Resolver::previsit( ObjectDecl *objectDecl ) {
    359                 // To handle initialization of routine pointers, e.g., int (*fp)(int) = foo(), means that class-variable
    360                 // initContext is changed multiple time because the LHS is analysed twice. The second analysis changes
    361                 // initContext because of a function type can contain object declarations in the return and parameter types. So
    362                 // each value of initContext is retained, so the type on the first analysis is preserved and used for selecting
    363                 // the RHS.
     404                // To handle initialization of routine pointers, e.g., int (*fp)(int) = foo(), means that
     405                // class-variable initContext is changed multiple time because the LHS is analysed twice.
     406                // The second analysis changes initContext because of a function type can contain object
     407                // declarations in the return and parameter types. So each value of initContext is
     408                // retained, so the type on the first analysis is preserved and used for selecting the RHS.
    364409                GuardValue( currentObject );
    365410                currentObject = CurrentObject( objectDecl->get_type() );
     
    397442
    398443        void Resolver::postvisit( FunctionDecl *functionDecl ) {
    399                 // default value expressions have an environment which shouldn't be there and trips up later passes.
    400                 // xxx - it might be necessary to somehow keep the information from this environment, but I can't currently
    401                 // see how it's useful.
     444                // default value expressions have an environment which shouldn't be there and trips up
     445                // later passes.
     446                // xxx - it might be necessary to somehow keep the information from this environment, but I
     447                // can't currently see how it's useful.
    402448                for ( Declaration * d : functionDecl->type->parameters ) {
    403449                        if ( ObjectDecl * obj = dynamic_cast< ObjectDecl * >( d ) ) {
     
    749795                initExpr->expr = nullptr;
    750796                std::swap( initExpr->env, newExpr->env );
    751                 // InitExpr may have inferParams in the case where the expression specializes a function pointer,
    752                 // and newExpr may already have inferParams of its own, so a simple swap is not sufficient.
     797                // InitExpr may have inferParams in the case where the expression specializes a function
     798                // pointer, and newExpr may already have inferParams of its own, so a simple swap is not
     799                // sufficient.
    753800                newExpr->spliceInferParams( initExpr );
    754801                delete initExpr;
    755802
    756                 // get the actual object's type (may not exactly match what comes back from the resolver due to conversions)
     803                // get the actual object's type (may not exactly match what comes back from the resolver
     804                // due to conversions)
    757805                Type * initContext = currentObject.getCurrentType();
    758806
     
    766814                                        if ( isCharType( pt->get_base() ) ) {
    767815                                                if ( CastExpr *ce = dynamic_cast< CastExpr * >( newExpr ) ) {
    768                                                         // strip cast if we're initializing a char[] with a char *, e.g.  char x[] = "hello";
     816                                                        // strip cast if we're initializing a char[] with a char *,
     817                                                        // e.g.  char x[] = "hello";
    769818                                                        newExpr = ce->get_arg();
    770819                                                        ce->set_arg( nullptr );
     
    788837                // move cursor into brace-enclosed initializer-list
    789838                currentObject.enterListInit();
    790                 // xxx - fix this so that the list isn't copied, iterator should be used to change current element
     839                // xxx - fix this so that the list isn't copied, iterator should be used to change current
     840                // element
    791841                std::list<Designation *> newDesignations;
    792842                for ( auto p : group_iterate(listInit->get_designations(), listInit->get_initializers()) ) {
    793                         // iterate designations and initializers in pairs, moving the cursor to the current designated object and resolving
    794                         // the initializer against that object.
     843                        // iterate designations and initializers in pairs, moving the cursor to the current
     844                        // designated object and resolving the initializer against that object.
    795845                        Designation * des = std::get<0>(p);
    796846                        Initializer * init = std::get<1>(p);
     
    822872                // fall back on C-style initializer
    823873                delete ctorInit->get_ctor();
    824                 ctorInit->set_ctor( NULL );
     874                ctorInit->set_ctor( nullptr );
    825875                delete ctorInit->get_dtor();
    826                 ctorInit->set_dtor( NULL );
     876                ctorInit->set_dtor( nullptr );
    827877                maybeAccept( ctorInit->get_init(), *visitor );
    828878        }
     
    867917
    868918                // xxx - todo -- what about arrays?
    869                 // if ( dtor == NULL && InitTweak::isIntrinsicCallStmt( ctorInit->get_ctor() ) ) {
     919                // if ( dtor == nullptr && InitTweak::isIntrinsicCallStmt( ctorInit->get_ctor() ) ) {
    870920                //      // can reduce the constructor down to a SingleInit using the
    871921                //      // second argument from the ctor call, since
    872922                //      delete ctorInit->get_ctor();
    873                 //      ctorInit->set_ctor( NULL );
     923                //      ctorInit->set_ctor( nullptr );
    874924
    875925                //      Expression * arg =
  • src/ResolvExpr/TypeEnvironment.cc

    r5e49e47 rd0c91a6  
    120120
    121121        const EqvClass* TypeEnvironment::lookup( const std::string &var ) const {
    122                 for ( std::list< EqvClass >::const_iterator i = env.begin(); i != env.end(); ++i ) {
     122                for ( ClassList::const_iterator i = env.begin(); i != env.end(); ++i ) {
    123123                        if ( i->vars.find( var ) != i->vars.end() ) return &*i;
    124124                } // for
     
    168168
    169169        void TypeEnvironment::makeSubstitution( TypeSubstitution &sub ) const {
    170                 for ( std::list< EqvClass >::const_iterator theClass = env.begin(); theClass != env.end(); ++theClass ) {
     170                for ( ClassList::const_iterator theClass = env.begin(); theClass != env.end(); ++theClass ) {
    171171                        for ( std::set< std::string >::const_iterator theVar = theClass->vars.begin(); theVar != theClass->vars.end(); ++theVar ) {
    172172                                if ( theClass->type ) {
     
    188188        }
    189189
    190         std::list< EqvClass >::iterator TypeEnvironment::internal_lookup( const std::string &var ) {
    191                 for ( std::list< EqvClass >::iterator i = env.begin(); i != env.end(); ++i ) {
     190        TypeEnvironment::ClassList::iterator TypeEnvironment::internal_lookup( const std::string &var ) {
     191                for ( ClassList::iterator i = env.begin(); i != env.end(); ++i ) {
    192192                        if ( i->vars.count( var ) ) return i;
    193193                } // for
     
    199199        }
    200200
     201        // xxx -- this should maybe be worrying about iterator invalidation (see resolv-proto)
     202        bool TypeEnvironment::mergeBound( EqvClass& to, const EqvClass& from, OpenVarSet& openVars, const SymTab::Indexer& indexer ) {
     203                if ( from.type ) {
     204                        if ( to.type ) {
     205                                // attempt to unify bound types
     206                                std::unique_ptr<Type> toType{ to.type->clone() }, fromType{ from.type->clone() };
     207                                WidenMode widenMode{ to.allowWidening, from.allowWidening };
     208                                Type* common = nullptr;
     209                                AssertionSet need, have;
     210                                if ( unifyInexact( toType.get(), fromType.get(), *this, need, have, openVars, widenMode, indexer, common ) ) {
     211                                        // unifies, set common type if necessary
     212                                        if ( common ) {
     213                                                common->get_qualifiers() = Type::Qualifiers{};
     214                                                to.set_type( common );
     215                                        }
     216                                } else return false; // cannot unify
     217                        } else {
     218                                to.type = from.type->clone();
     219                        }
     220                }
     221
     222                // unify widening if matches
     223                to.allowWidening &= from.allowWidening;
     224                return true;
     225        }
     226
     227        // xxx -- this should maybe be worrying about iterator invalidation (see resolv-proto)
     228        bool TypeEnvironment::mergeClasses( TypeEnvironment::ClassList::iterator to, TypeEnvironment::ClassList::iterator from, OpenVarSet& openVars, const SymTab::Indexer& indexer ) {
     229                EqvClass& r = *to;
     230                EqvClass& s = *from;
     231
     232                // ensure bounds match
     233                if ( ! mergeBound( r, s, openVars, indexer ) ) return false;
     234
     235                // check safely bindable
     236                if ( r.type && occursIn( r.type, s.vars.begin(), s.vars.end(), *this ) ) return false;
     237               
     238                // merge classes in
     239                r.vars.insert( s.vars.begin(), s.vars.end() );
     240                r.allowWidening &= s.allowWidening;
     241                env.erase( from );
     242
     243                return true;
     244        }
     245
     246        bool TypeEnvironment::combine( const TypeEnvironment& o, OpenVarSet& openVars, const SymTab::Indexer& indexer ) {
     247                // short-circuit easy cases
     248                if ( o.isEmpty() ) return true;
     249                if ( isEmpty() ) {
     250                        simpleCombine( o );
     251                        return true;
     252                }
     253
     254                // merge classes
     255                for ( auto ct = o.env.begin(); ct != o.env.end(); ++ct ) {
     256                        const EqvClass& c = *ct;
     257
     258                        // typeclass in local environment bound to c
     259                        auto rt = env.end();
     260
     261                        // look for first existing bound variable
     262                        auto vt = c.vars.begin();
     263                        for ( ; vt != c.vars.end(); ++vt ) {
     264                                rt = internal_lookup( *vt );
     265                                if ( rt != env.end() ) break;
     266                        }
     267
     268                        if ( rt != env.end() ) {  // c needs to be merged into *rt
     269                                EqvClass& r = *rt;
     270                                // merge bindings
     271                                if ( ! mergeBound( r, c, openVars, indexer ) ) return false;
     272                                // merge previous unbound variables into this class, checking occurs if needed
     273                                if ( r.type ) for ( auto ut = c.vars.begin(); ut != vt; ++ut ) {
     274                                        if ( occurs( r.type, *ut, *this ) ) return false;
     275                                        r.vars.insert( *ut );
     276                                } else { r.vars.insert( c.vars.begin(), vt ); }
     277                                // merge subsequent variables into this class (skipping *vt, already there)
     278                                while ( ++vt != c.vars.end() ) {
     279                                        auto st = internal_lookup( *vt );
     280                                        if ( st == env.end() ) {
     281                                                // unbound, safe to add if passes occurs
     282                                                if ( r.type && occurs( r.type, *vt, *this ) ) return false;
     283                                                r.vars.insert( *vt );
     284                                        } else if ( st != rt ) {
     285                                                // bound, but not to the same class
     286                                                if ( ! mergeClasses( rt, st, openVars, indexer ) ) return false;
     287                                        }   // ignore bound into the same class
     288                                }
     289                        } else {  // no variables in c bound; just copy up
     290                                env.push_back( c );
     291                        }
     292                }
     293
     294                // merged all classes
     295                return true;
     296        }
     297
    201298        void TypeEnvironment::extractOpenVars( OpenVarSet &openVars ) const {
    202                 for ( std::list< EqvClass >::const_iterator eqvClass = env.begin(); eqvClass != env.end(); ++eqvClass ) {
     299                for ( ClassList::const_iterator eqvClass = env.begin(); eqvClass != env.end(); ++eqvClass ) {
    203300                        for ( std::set< std::string >::const_iterator var = eqvClass->vars.begin(); var != eqvClass->vars.end(); ++var ) {
    204301                                openVars[ *var ] = eqvClass->data;
  • src/ResolvExpr/TypeEnvironment.h

    r5e49e47 rd0c91a6  
    3939        // declarations.
    4040        //
    41         // I've seen a TU go from 54 minutes to 1 minute 34 seconds with the addition of this comparator.
     41        // I've seen a TU go from 54 minutes to 1 minute 34 seconds with the addition of this
     42        // comparator.
    4243        //
    4344        // Note: since this compares pointers for position, minor changes in the source file that affect
    4445        // memory layout can alter compilation time in unpredictable ways. For example, the placement
    4546        // of a line directive can reorder type pointers with respect to each other so that assertions
    46         // are seen in different orders, causing a potentially different number of unification calls when
    47         // resolving assertions. I've seen a TU go from 36 seconds to 27 seconds by reordering line directives
    48         // alone, so it would be nice to fix this comparison so that assertions compare more consistently.
    49         // I've tried to modify this to compare on mangle name instead of type as the second comparator, but
    50         // this causes some assertions to never be recorded. More investigation is needed.
     47        // are seen in different orders, causing a potentially different number of unification calls
     48        // when resolving assertions. I've seen a TU go from 36 seconds to 27 seconds by reordering
     49        // line directives alone, so it would be nice to fix this comparison so that assertions compare
     50        // more consistently. I've tried to modify this to compare on mangle name instead of type as
     51        // the second comparator, but this causes some assertions to never be recorded. More
     52        // investigation is needed.
    5153        struct AssertCompare {
    5254                bool operator()( DeclarationWithType * d1, DeclarationWithType * d2 ) const {
     
    5759        };
    5860        struct AssertionSetValue {
    59                 bool isUsed;
    60                 // chain of Unique IDs of the assertion declarations. The first ID in the chain is the ID of an assertion on the current type,
    61                 // with each successive ID being the ID of an assertion pulled in by the previous ID. The last ID in the chain is
    62                 // the ID of the assertion that pulled in the current assertion.
    63                 std::list< UniqueId > idChain;
     61                bool isUsed;        ///< True if assertion needs to be resolved
     62                UniqueId resnSlot;  ///< ID of slot assertion belongs to
     63
     64                AssertionSetValue() : isUsed(false), resnSlot(0) {}
    6465        };
    6566        typedef std::map< DeclarationWithType*, AssertionSetValue, AssertCompare > AssertionSet;
    6667        typedef std::map< std::string, TypeDecl::Data > OpenVarSet;
     68
     69        /// merges one set of open vars into another
     70        static inline void mergeOpenVars( OpenVarSet& dst, const OpenVarSet& src ) {
     71                for ( const auto& entry : src ) { dst[ entry.first ] = entry.second; }
     72        }
    6773
    6874        void printAssertionSet( const AssertionSet &, std::ostream &, int indent = 0 );
     
    9197
    9298        class TypeEnvironment {
     99                using ClassList = std::list< EqvClass >;
    93100          public:
    94101                const EqvClass* lookup( const std::string &var ) const;
     
    103110                bool isEmpty() const { return env.empty(); }
    104111                void print( std::ostream &os, Indenter indent = {} ) const;
    105                 // void combine( const TypeEnvironment &second, Type *(*combineFunc)( Type*, Type* ) );
     112               
     113                /// Simply concatenate the second environment onto this one; no safety checks performed
    106114                void simpleCombine( const TypeEnvironment &second );
     115
     116          private:
     117                /// Unifies the type bound of to with the type bound of from, returning false if fails
     118                bool mergeBound( EqvClass& to, const EqvClass& from, OpenVarSet& openVars, const SymTab::Indexer& indexer );
     119
     120                /// Merges two type classes from local environment, returning false if fails
     121                bool mergeClasses( ClassList::iterator to, ClassList::iterator from, OpenVarSet& openVars, const SymTab::Indexer& indexer );
     122
     123          public:
     124                /// Merges the second environment with this one, checking compatibility.
     125                /// Returns false if fails, but does NOT roll back partial changes.
     126                bool combine( const TypeEnvironment& second, OpenVarSet& openVars, const SymTab::Indexer& indexer );
     127               
    107128                void extractOpenVars( OpenVarSet &openVars ) const;
    108129                TypeEnvironment *clone() const { return new TypeEnvironment( *this ); }
     
    123144                void forbidWidening();
    124145
    125                 using iterator = std::list< EqvClass >::const_iterator;
     146                using iterator = ClassList::const_iterator;
    126147                iterator begin() const { return env.begin(); }
    127148                iterator end() const { return env.end(); }
    128149
    129150          private:
    130                 std::list< EqvClass > env;
     151                ClassList env;
    131152               
    132                 std::list< EqvClass >::iterator internal_lookup( const std::string &var );
     153                ClassList::iterator internal_lookup( const std::string &var );
    133154        };
    134155
  • src/ResolvExpr/module.mk

    r5e49e47 rd0c91a6  
    3333       ResolvExpr/TypeEnvironment.cc \
    3434       ResolvExpr/CurrentObject.cc \
    35        ResolvExpr/ExplodedActual.cc
     35       ResolvExpr/ExplodedActual.cc \
     36       ResolvExpr/SpecCost.cc \
     37       ResolvExpr/ResolveAssertions.cc
  • src/ResolvExpr/typeops.h

    r5e49e47 rd0c91a6  
    7272        Cost conversionCost( Type *src, Type *dest, const SymTab::Indexer &indexer, const TypeEnvironment &env );
    7373
     74        // in AlternativeFinder.cc
     75        Cost computeConversionCost( Type *actualType, Type *formalType,
     76                const SymTab::Indexer &indexer, const TypeEnvironment &env );
     77
    7478        // in PtrsAssignable.cc
    7579        int ptrsAssignable( Type *src, Type *dest, const TypeEnvironment &env );
     
    102106        int polyCost( Type *type, const TypeEnvironment &env, const SymTab::Indexer &indexer );
    103107
     108        // in SpecCost.cc
     109        int specCost( Type *type );
     110
    104111        // in Occurs.cc
    105112        bool occurs( Type *type, std::string varName, const TypeEnvironment &env );
     113
     114        template<typename Iter>
     115        bool occursIn( Type* ty, Iter begin, Iter end, const TypeEnvironment &env ) {
     116                while ( begin != end ) {
     117                        if ( occurs( ty, *begin, env ) ) return true;
     118                        ++begin;
     119                }
     120                return false;
     121        }
    106122
    107123        // in AlternativeFinder.cc
  • src/SynTree/ApplicationExpr.cc

    r5e49e47 rd0c91a6  
    2929
    3030ParamEntry::ParamEntry( const ParamEntry &other ) :
    31                 decl( other.decl ), actualType( maybeClone( other.actualType ) ), formalType( maybeClone( other.formalType ) ), expr( maybeClone( other.expr ) ), inferParams( new InferredParams( *other.inferParams ) ) {
     31                decl( other.decl ), actualType( maybeClone( other.actualType ) ), formalType( maybeClone( other.formalType ) ), expr( maybeClone( other.expr ) )/*, inferParams( new InferredParams( *other.inferParams ) )*/ {
    3232}
    3333
     
    3939        formalType = maybeClone( other.formalType );
    4040        expr = maybeClone( other.expr );
    41         *inferParams = *other.inferParams;
     41        // *inferParams = *other.inferParams;
    4242        return *this;
    4343}
     
    5050
    5151ParamEntry::ParamEntry( ParamEntry && other ) :
    52                 decl( other.decl ), actualType( other.actualType ), formalType( other.formalType ), expr( other.expr ), inferParams( std::move( other.inferParams ) ) {
     52                decl( other.decl ), actualType( other.actualType ), formalType( other.formalType ), expr( other.expr )/*, inferParams( std::move( other.inferParams ) )*/ {
    5353        other.actualType = nullptr;
    5454        other.formalType = nullptr;
     
    6868        other.formalType = nullptr;
    6969        other.expr = nullptr;
    70         inferParams = std::move( other.inferParams );
     70        // inferParams = std::move( other.inferParams );
    7171        return *this;
    7272}
  • src/SynTree/Expression.cc

    r5e49e47 rd0c91a6  
    4040                        Declaration::declFromId( i->second.decl )->printShort( os, indent+1 );
    4141                        os << std::endl;
    42                         printInferParams( *i->second.inferParams, os, indent+1, level+1 );
     42                        printInferParams( i->second.expr->inferParams, os, indent+1, level+1 );
    4343                } // for
    4444        } // if
     
    4747Expression::Expression() : result( 0 ), env( 0 ) {}
    4848
    49 Expression::Expression( const Expression &other ) : BaseSyntaxNode( other ), result( maybeClone( other.result ) ), env( maybeClone( other.env ) ), extension( other.extension ), inferParams( other.inferParams ) {
    50 }
     49Expression::Expression( const Expression &other ) : BaseSyntaxNode( other ), result( maybeClone( other.result ) ), env( maybeClone( other.env ) ), extension( other.extension ), inferParams( other.inferParams ), resnSlots( other.resnSlots ) {}
    5150
    5251void Expression::spliceInferParams( Expression * other ) {
     
    5554                inferParams[p.first] = std::move( p.second );
    5655        }
     56        resnSlots.insert( resnSlots.end(), other->resnSlots.begin(), other->resnSlots.end() );
    5757}
    5858
     
    376376        os << "Untyped Member Expression, with field: " << std::endl << indent+1;
    377377        member->print(os, indent+1 );
    378         os << indent << "... from aggregate: " << std::endl << indent+1;
     378        os << indent << "... from aggregate:" << std::endl << indent+1;
    379379        aggregate->print(os, indent+1);
    380380        Expression::print( os, indent );
     
    405405
    406406void MemberExpr::print( std::ostream &os, Indenter indent ) const {
    407         os << "Member Expression, with field: " << std::endl;
     407        os << "Member Expression, with field:" << std::endl;
    408408        os << indent+1;
    409409        member->print( os, indent+1 );
    410         os << std::endl << indent << "... from aggregate: " << std::endl << indent+1;
     410        os << std::endl << indent << "... from aggregate:" << std::endl << indent+1;
    411411        aggregate->print(os, indent + 1);
    412412        Expression::print( os, indent );
     
    456456
    457457void UntypedExpr::print( std::ostream &os, Indenter indent ) const {
    458         os << "Applying untyped: " << std::endl;
     458        os << "Applying untyped:" << std::endl;
    459459        os << indent+1;
    460460        function->print(os, indent+1);
    461         os << std::endl << indent << "...to: " << std::endl;
     461        os << std::endl << indent << "...to:" << std::endl;
    462462        printAll(args, os, indent+1);
    463463        Expression::print( os, indent );
  • src/SynTree/Expression.h

    r5e49e47 rd0c91a6  
    2121#include <memory>                 // for allocator, unique_ptr
    2222#include <string>                 // for string
     23#include <vector>                 // for vector
    2324
    2425#include "BaseSyntaxNode.h"       // for BaseSyntaxNode
     
    3839/// but subject to decay-to-pointer and type parameter renaming
    3940struct ParamEntry {
    40         ParamEntry(): decl( 0 ), actualType( 0 ), formalType( 0 ), expr( 0 ), inferParams( new InferredParams ) {}
    41         ParamEntry( UniqueId decl, Type * actualType, Type * formalType, Expression* expr ): decl( decl ), actualType( actualType ), formalType( formalType ), expr( expr ), inferParams( new InferredParams ) {}
     41        ParamEntry(): decl( 0 ), actualType( 0 ), formalType( 0 ), expr( 0 )/*, inferParams( new InferredParams )*/ {}
     42        ParamEntry( UniqueId decl, Type * actualType, Type * formalType, Expression* expr ): decl( decl ), actualType( actualType ), formalType( formalType ), expr( expr )/*, inferParams( new InferredParams )*/ {}
    4243        ParamEntry( const ParamEntry & other );
    4344        ParamEntry( ParamEntry && other );
     
    5051        Type * formalType;
    5152        Expression * expr;
    52         std::unique_ptr< InferredParams > inferParams;
     53        // std::unique_ptr< InferredParams > inferParams;
    5354};
    5455
     
    5960        TypeSubstitution * env;
    6061        bool extension = false;
    61         InferredParams inferParams;
     62        InferredParams inferParams;       ///< Post-resolution inferred parameter slots
     63        std::vector<UniqueId> resnSlots;  ///< Pre-resolution inferred parameter slots
     64       
     65        // xxx - should turn inferParams+resnSlots into a union to save some memory
    6266
    6367        Expression();
     
    7377        bool get_extension() const { return extension; }
    7478        Expression * set_extension( bool exten ) { extension = exten; return this; }
    75 
    76         InferredParams & get_inferParams() { return inferParams; }
    7779
    7880        // move other's inferParams to this
  • src/SynTree/FunctionDecl.cc

    r5e49e47 rd0c91a6  
    8787
    8888        if ( statements ) {
    89                 os << indent << "... with body " << endl << indent+1;
     89                os << indent << "... with body" << endl << indent+1;
    9090                statements->print( os, indent+1 );
    9191        } // if
  • src/SynTree/FunctionType.cc

    r5e49e47 rd0c91a6  
    6666                os << indent+1 << "accepting unspecified arguments" << endl;
    6767        } // if
    68         os << indent << "... returning ";
     68        os << indent << "... returning";
    6969        if ( returnVals.empty() ) {
    70                 os << "nothing " << endl;
     70                os << " nothing" << endl;
    7171        } else {
    7272                os << endl;
  • src/SynTree/ObjectDecl.cc

    r5e49e47 rd0c91a6  
    6666
    6767        if ( ! attributes.empty() ) {
    68                 os << std::endl << indent << "... with attributes: " << std::endl;
     68                os << std::endl << indent << "... with attributes:" << std::endl;
    6969                printAll( attributes, os, indent+1 );
    7070        }
  • src/SynTree/ReferenceToType.cc

    r5e49e47 rd0c91a6  
    9393        else {
    9494                Type::print( os, indent );
    95                 os << "instance of " << typeString() << " " << name << " with body " << baseStruct->has_body() << " ";
     95                os << "instance of " << typeString() << " " << name << " with body " << baseStruct->has_body();
    9696                if ( ! parameters.empty() ) {
    9797                        os << endl << indent << "... with parameters" << endl;
     
    136136        else {
    137137                Type::print( os, indent );
    138                 os << "instance of " << typeString() << " " << name << " with body " << baseUnion->has_body() << " ";
     138                os << "instance of " << typeString() << " " << name << " with body " << baseUnion->has_body();
    139139                if ( ! parameters.empty() ) {
    140140                        os << endl << indent << "... with parameters" << endl;
     
    160160        else {
    161161                Type::print( os, indent );
    162                 os << "instance of " << typeString() << " " << name << " with body " << baseEnum->has_body() << " ";
     162                os << "instance of " << typeString() << " " << name << " with body " << baseEnum->has_body();
    163163        } // if
    164164}
     
    205205
    206206        Type::print( os, indent );
    207         os << "instance of " << typeString() << " " << get_name() << " (" << ( isFtype ? "" : "not" ) << " function type) ";
     207        os << "instance of " << typeString() << " " << get_name() << " (" << ( isFtype ? "" : "not" ) << " function type)";
    208208        if ( ! parameters.empty() ) {
    209209                os << endl << indent << "... with parameters" << endl;
  • src/SynTree/Type.cc

    r5e49e47 rd0c91a6  
    118118
    119119void QualifiedType::print( std::ostream & os, Indenter indent ) const {
    120         os << "Qualified Type: " << endl;
     120        os << "Qualified Type:" << endl;
    121121        os << indent+1;
    122122        parent->print( os, indent+1 );
  • src/Tuples/Explode.h

    r5e49e47 rd0c91a6  
    4444        template<typename OutputIterator>
    4545        void append( OutputIterator out, Expression* expr, const ResolvExpr::TypeEnvironment& env,
     46                        const ResolvExpr::OpenVarSet& openVars, const ResolvExpr::AssertionList& need,
    4647                        const ResolvExpr::Cost& cost, const ResolvExpr::Cost& cvtCost ) {
    47                 *out++ = ResolvExpr::Alternative{ expr, env, cost, cvtCost };
     48                *out++ = ResolvExpr::Alternative{ expr, env, openVars, need, cost, cvtCost };
    4849        }
    4950
    5051        /// Append alternative to an ExplodedActual
    5152        static inline void append( ResolvExpr::ExplodedActual& ea, Expression* expr,
    52                         const ResolvExpr::TypeEnvironment&, const ResolvExpr::Cost&, const ResolvExpr::Cost& ) {
     53                        const ResolvExpr::TypeEnvironment&, const ResolvExpr::OpenVarSet&,
     54                        const ResolvExpr::AssertionList&, const ResolvExpr::Cost&, const ResolvExpr::Cost& ) {
    5355                ea.exprs.emplace_back( expr );
    54                 /// xxx -- merge environment, cost?
     56                /// xxx -- merge environment, openVars, need, cost?
    5557        }
    5658
     
    6870                                        // distribute reference cast over all components
    6971                                        append( std::forward<Output>(out), distributeReference( alt.release_expr() ),
    70                                                 alt.env, alt.cost, alt.cvtCost );
     72                                                alt.env, alt.openVars, alt.need, alt.cost, alt.cvtCost );
    7173                                }
    7274                                // in tuple assignment, still need to handle the other cases, but only if not already handled here (don't want to output too many alternatives)
     
    102104                } else {
    103105                        // atomic (non-tuple) type - output a clone of the expression in a new alternative
    104                         append( std::forward<Output>(out), expr->clone(), alt.env, alt.cost, alt.cvtCost );
     106                        append( std::forward<Output>(out), expr->clone(), alt.env, alt.openVars, alt.need, 
     107                                alt.cost, alt.cvtCost );
    105108                }
    106109        }
  • src/Tuples/TupleAssignment.cc

    r5e49e47 rd0c91a6  
    6262                struct Matcher {
    6363                  public:
    64                         Matcher( TupleAssignSpotter &spotter, const ResolvExpr::AltList& lhs, const
    65                                 ResolvExpr::AltList& rhs );
     64                        Matcher( TupleAssignSpotter &spotter, const ResolvExpr::AltList& lhs,
     65                                const ResolvExpr::AltList& rhs );
    6666                        virtual ~Matcher() {}
     67                       
    6768                        virtual void match( std::list< Expression * > &out ) = 0;
    6869                        ObjectDecl * newObject( UniqueName & namer, Expression * expr );
     70
     71                        void combineState( const ResolvExpr::Alternative& alt ) {
     72                                compositeEnv.simpleCombine( alt.env );
     73                                ResolvExpr::mergeOpenVars( openVars, alt.openVars );
     74                                cloneAll( alt.need, need );
     75                        }
     76
     77                        void combineState( const ResolvExpr::AltList& alts ) {
     78                                for ( const ResolvExpr::Alternative& alt : alts ) { combineState( alt ); }
     79                        }
     80                       
    6981                        ResolvExpr::AltList lhs, rhs;
    7082                        TupleAssignSpotter &spotter;
     
    7284                        std::list< ObjectDecl * > tmpDecls;
    7385                        ResolvExpr::TypeEnvironment compositeEnv;
     86                        ResolvExpr::OpenVarSet openVars;
     87                        ResolvExpr::AssertionSet need;
    7488                };
    7589
     
    245259                }
    246260
    247                 // extract expressions from the assignment alternatives to produce a list of assignments that
    248                 // together form a single alternative
     261                // extract expressions from the assignment alternatives to produce a list of assignments
     262                // that together form a single alternative
    249263                std::list< Expression *> solved_assigns;
    250264                for ( ResolvExpr::Alternative & alt : current ) {
    251265                        solved_assigns.push_back( alt.expr->clone() );
    252                 }
    253                 // combine assignment environments into combined expression environment
    254                 simpleCombineEnvironments( current.begin(), current.end(), matcher->compositeEnv );
     266                        matcher->combineState( alt );
     267                }
     268               
    255269                // xxx -- was push_front
    256                 currentFinder.get_alternatives().push_back( ResolvExpr::Alternative(
    257                         new TupleAssignExpr(solved_assigns, matcher->tmpDecls), matcher->compositeEnv,
    258                         ResolvExpr::sumCost( current ) + matcher->baseCost ) );
     270                currentFinder.get_alternatives().push_back( ResolvExpr::Alternative{
     271                        new TupleAssignExpr{ solved_assigns, matcher->tmpDecls }, matcher->compositeEnv,
     272                        matcher->openVars,
     273                        ResolvExpr::AssertionList( matcher->need.begin(), matcher->need.end() ),
     274                        ResolvExpr::sumCost( current ) + matcher->baseCost } );
    259275        }
    260276
     
    263279        : lhs(lhs), rhs(rhs), spotter(spotter),
    264280          baseCost( ResolvExpr::sumCost( lhs ) + ResolvExpr::sumCost( rhs ) ) {
    265                 simpleCombineEnvironments( lhs.begin(), lhs.end(), compositeEnv );
    266                 simpleCombineEnvironments( rhs.begin(), rhs.end(), compositeEnv );
     281                combineState( lhs );
     282                combineState( rhs );
    267283        }
    268284
  • src/cfa.make

    r5e49e47 rd0c91a6  
    2121        $(LTCFACOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
    2222        $(am__mv) $$depbase.Tpo $$depbase.Plo
     23
     24AM_V_JAVAC = $(am__v_JAVAC_@AM_V@)
     25am__v_JAVAC_ = $(am__v_JAVAC_@AM_DEFAULT_V@)
     26am__v_JAVAC_0 = @echo "  JAVAC   " $@;
     27am__v_JAVAC_1 =
     28
     29AM_V_GOC = $(am__v_GOC_@AM_V@)
     30am__v_GOC_ = $(am__v_GOC_@AM_DEFAULT_V@)
     31am__v_GOC_0 = @echo "  GOC     " $@;
     32am__v_GOC_1 =
     33
     34UPPCC = u++
     35UPPCOMPILE = $(UPPCC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_UPPFLAGS) $(UPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_CFLAGS) $(CFLAGS)
     36
     37AM_V_UPP = $(am__v_UPP_@AM_V@)
     38am__v_UPP_ = $(am__v_UPP_@AM_DEFAULT_V@)
     39am__v_UPP_0 = @echo "  UPP     " $@;
     40am__v_UPP_1 =
  • src/config.h.in

    r5e49e47 rd0c91a6  
    77#undef CFA_64_CPU
    88
    9 /* Location of include files. */
     9/* Backend compiler to use. */
    1010#undef CFA_BACKEND_CC
    1111
     
    6767#undef HAVE_ALLOCA_H
    6868
     69/* Define to 1 if you have the <dlfcn.h> header file. */
     70#undef HAVE_DLFCN_H
     71
    6972/* Define to 1 if you have the <fenv.h> header file. */
    7073#undef HAVE_FENV_H
     
    129132/* Define to 1 if the system has the type `_Bool'. */
    130133#undef HAVE__BOOL
     134
     135/* Define to the sub-directory where libtool stores uninstalled libraries. */
     136#undef LT_OBJDIR
    131137
    132138/* Name of package */
  • src/main.cc

    r5e49e47 rd0c91a6  
    487487                        resolvep = true;
    488488                        break;
    489                         case 'R':                                                                               // dump resolv-proto instance
     489                  case 'R':                                                                             // dump resolv-proto instance
    490490                        resolvprotop = true;
    491491                        break;
  • tests/.expect/alloc-ERROR.txt

    r5e49e47 rd0c91a6  
    1 alloc.cfa:265:1 error: No reasonable alternatives for expression Applying untyped: 
     1alloc.cfa:265:1 error: No reasonable alternatives for expression Applying untyped:
    22  Name: ?=?
    3 ...to: 
     3...to:
    44  Name: p
    5   Applying untyped: 
     5  Applying untyped:
    66    Name: realloc
    7   ...to: 
     7  ...to:
    88    Name: stp
    9     Applying untyped: 
     9    Applying untyped:
    1010      Name: ?*?
    11     ...to: 
     11    ...to:
    1212      Name: dim
    13       Sizeof Expression on: Applying untyped: 
     13      Sizeof Expression on: Applying untyped:
    1414          Name: *?
    15         ...to: 
     15        ...to:
    1616          Name: stp
    1717
     
    1919
    2020
    21 alloc.cfa:266:1 error: No reasonable alternatives for expression Applying untyped: 
     21alloc.cfa:266:1 error: No reasonable alternatives for expression Applying untyped:
    2222  Name: ?=?
    23 ...to: 
     23...to:
    2424  Name: p
    25   Applying untyped: 
     25  Applying untyped:
    2626    Name: alloc
    27   ...to: 
     27  ...to:
    2828    Name: stp
    29     Applying untyped: 
     29    Applying untyped:
    3030      Name: ?*?
    31     ...to: 
     31    ...to:
    3232      Name: dim
    33       Sizeof Expression on: Applying untyped: 
     33      Sizeof Expression on: Applying untyped:
    3434          Name: *?
    35         ...to: 
     35        ...to:
    3636          Name: stp
    3737
     
    3939
    4040
    41 alloc.cfa:267:1 error: No reasonable alternatives for expression Applying untyped: 
     41alloc.cfa:267:1 error: No reasonable alternatives for expression Applying untyped:
    4242  Name: ?=?
    43 ...to: 
     43...to:
    4444  Name: p
    45   Applying untyped: 
     45  Applying untyped:
    4646    Name: memset
    47   ...to: 
     47  ...to:
    4848    Name: stp
    4949    constant expression (10 10: signed int)
    5050
    5151
    52 alloc.cfa:268:1 error: No reasonable alternatives for expression Applying untyped: 
     52alloc.cfa:268:1 error: No reasonable alternatives for expression Applying untyped:
    5353  Name: ?=?
    54 ...to: 
     54...to:
    5555  Name: p
    56   Applying untyped: 
     56  Applying untyped:
    5757    Name: memcpy
    58   ...to: 
     58  ...to:
    5959    Address of:
    6060      Name: st1
  • tests/.expect/castError.txt

    r5e49e47 rd0c91a6  
    44... to:
    55  char Alternatives are:
    6 Cost ( 1, 0, 0, 0 ): Cast of:
     6Cost ( 1, 0, 0, 0, 0, 0 ): Cast of:
    77     Variable Expression: f: function
    88       accepting unspecified arguments
    9      ... returning nothing 
     9     ... returning nothing
    1010
    1111   ... to:
     
    1414   char
    1515 )
    16  Environment: 
     16 Environment:
    1717
    18 Cost ( 1, 0, 0, 0 ): Cast of:
     18Cost ( 1, 0, 0, 0, 0, 0 ): Cast of:
    1919     Variable Expression: f: double
    2020   ... to:
     
    2323   char
    2424 )
    25  Environment: 
     25 Environment:
    2626
    27 Cost ( 1, 0, 0, 0 ): Cast of:
     27Cost ( 1, 0, 0, 0, 0, 0 ): Cast of:
    2828     Variable Expression: f: signed int
    2929   ... to:
     
    3232   char
    3333 )
    34  Environment: 
     34 Environment:
    3535
    3636
  • tests/.expect/completeTypeError.txt

    r5e49e47 rd0c91a6  
    1 completeTypeError.cfa:33:1 error: No reasonable alternatives for expression Applying untyped: 
     1completeTypeError.cfa:33:1 error: No reasonable alternatives for expression Applying untyped:
    22  Name: *?
    3 ...to: 
     3...to:
    44  Name: v
    55
    6 completeTypeError.cfa:34:1 error: No reasonable alternatives for expression Applying untyped: 
     6completeTypeError.cfa:34:1 error: No reasonable alternatives for expression Applying untyped:
    77  Name: *?
    8 ...to: 
     8...to:
    99  Name: y
    1010
    11 completeTypeError.cfa:35:1 error: No reasonable alternatives for expression Applying untyped: 
     11completeTypeError.cfa:35:1 error: No reasonable alternatives for expression Applying untyped:
    1212  Name: foo
    13 ...to: 
     13...to:
    1414  Name: v
    1515
    16 completeTypeError.cfa:36:1 error: No reasonable alternatives for expression Applying untyped: 
     16completeTypeError.cfa:36:1 error: No reasonable alternatives for expression Applying untyped:
    1717  Name: baz
    18 ...to: 
     18...to:
    1919  Name: v
    2020
    21 completeTypeError.cfa:37:1 error: No reasonable alternatives for expression Applying untyped: 
     21completeTypeError.cfa:37:1 error: No reasonable alternatives for expression Applying untyped:
    2222  Name: quux
    23 ...to: 
     23...to:
    2424  Name: v
    2525
    26 completeTypeError.cfa:58:1 error: No reasonable alternatives for expression Applying untyped: 
     26completeTypeError.cfa:58:1 error: No reasonable alternatives for expression Applying untyped:
    2727  Name: baz
    28 ...to: 
     28...to:
    2929  Name: y
    3030
    31 completeTypeError.cfa:59:1 error: No reasonable alternatives for expression Applying untyped: 
     31completeTypeError.cfa:59:1 error: No reasonable alternatives for expression Applying untyped:
    3232  Name: quux
    33 ...to: 
     33...to:
    3434  Name: y
    3535
    36 completeTypeError.cfa:60:1 error: No reasonable alternatives for expression Applying untyped: 
     36completeTypeError.cfa:60:1 error: No reasonable alternatives for expression Applying untyped:
    3737  Name: *?
    38 ...to: 
     38...to:
    3939  Name: y
    4040
    41 completeTypeError.cfa:72:1 error: No reasonable alternatives for expression Applying untyped:
     41completeTypeError.cfa:72:1 error: No resolvable alternatives for expression Applying untyped:
    4242  Name: baz
    43 ...to: 
     43...to:
    4444  Name: z
    4545
     46Alternatives with failing assertions are:
     47Cost ( 0, 1, 0, 1, -5, 0 ): Application of
     48     Variable Expression: baz: forall
     49       T: sized object type
     50       ... with assertions
     51         ?=?: pointer to function
     52         ... with parameters
     53           reference to instance of type T (not function type)
     54           instance of type T (not function type)
     55         ... returning
     56           _retval__operator_assign: instance of type T (not function type)
     57           ... with attributes:
     58             Attribute with name: unused
     59
     60
     61         ?{}: pointer to function
     62         ... with parameters
     63           reference to instance of type T (not function type)
     64         ... returning nothing
     65
     66         ?{}: pointer to function
     67         ... with parameters
     68           reference to instance of type T (not function type)
     69           instance of type T (not function type)
     70         ... returning nothing
     71
     72         ^?{}: pointer to function
     73         ... with parameters
     74           reference to instance of type T (not function type)
     75         ... returning nothing
     76
     77
     78       function
     79     ... with parameters
     80       pointer to instance of type T (not function type)
     81     ... returning nothing
     82
     83   ... to arguments
     84     Variable Expression: z: pointer to instance of type T (not function type)
     85
     86 (types:
     87   void
     88 )
     89 Environment:( _73_0_T ) -> instance of type T (not function type) (no widening)
     90
     91
     92
  • tests/.expect/declarationErrors.txt

    r5e49e47 rd0c91a6  
    66
    77declarationErrors.cfa:19:1 error: duplicate static in declaration of x4: static const volatile instance of const volatile struct __anonymous0
    8   with members 
     8  with members
    99    i: int
    10    with body 
     10   with body
    1111
    1212
    1313declarationErrors.cfa:20:1 error: duplicate const, duplicate static, duplicate volatile in declaration of x5: static const volatile instance of const volatile struct __anonymous1
    14   with members 
     14  with members
    1515    i: int
    16    with body 
     16   with body
    1717
    1818
     
    2020
    2121declarationErrors.cfa:24:1 error: duplicate const in declaration of f01: static inline function
    22   with no parameters 
     22  with no parameters
    2323  returning const volatile int
    2424
    2525
    2626declarationErrors.cfa:25:1 error: duplicate volatile in declaration of f02: static inline function
    27   with no parameters 
     27  with no parameters
    2828  returning const volatile int
    2929
    3030
    3131declarationErrors.cfa:26:1 error: duplicate const in declaration of f03: static inline function
    32   with no parameters 
     32  with no parameters
    3333  returning const volatile int
    3434
    3535
    3636declarationErrors.cfa:27:1 error: duplicate volatile in declaration of f04: static inline function
    37   with no parameters 
     37  with no parameters
    3838  returning const volatile int
    3939
    4040
    4141declarationErrors.cfa:28:1 error: duplicate const in declaration of f05: static inline function
    42   with no parameters 
     42  with no parameters
    4343  returning const volatile int
    4444
    4545
    4646declarationErrors.cfa:29:1 error: duplicate volatile in declaration of f06: static inline function
    47   with no parameters 
     47  with no parameters
    4848  returning const volatile int
    4949
    5050
    5151declarationErrors.cfa:30:1 error: duplicate const in declaration of f07: static inline function
    52   with no parameters 
     52  with no parameters
    5353  returning const volatile int
    5454
    5555
    5656declarationErrors.cfa:31:1 error: duplicate const, duplicate volatile in declaration of f08: static inline function
    57   with no parameters 
     57  with no parameters
    5858  returning const volatile int
    5959
    6060
    6161declarationErrors.cfa:33:1 error: duplicate const, duplicate volatile in declaration of f09: static inline function
    62   with no parameters 
     62  with no parameters
    6363  returning const volatile int
    6464
    6565
    6666declarationErrors.cfa:34:1 error: duplicate const, duplicate _Atomic, duplicate _Atomic, duplicate const, duplicate restrict, duplicate volatile in declaration of f09: static inline function
    67   with no parameters 
     67  with no parameters
    6868  returning const restrict volatile _Atomic int
    6969
  • tests/.expect/nested-types-ERR2.txt

    r5e49e47 rd0c91a6  
    11nested-types.cfa:73:1 error: Use of undefined global type Z
    22nested-types.cfa:74:1 error: Qualified type requires an aggregate on the left, but has: signed int
    3 nested-types.cfa:75:1 error: Undefined type in qualified type: Qualified Type: 
    4   instance of struct S with body 1 
    5   instance of type Z (not function type) 
     3nested-types.cfa:75:1 error: Undefined type in qualified type: Qualified Type:
     4  instance of struct S with body 1
     5  instance of type Z (not function type)
    66
  • tests/.expect/scopeErrors.txt

    r5e49e47 rd0c91a6  
    33... with parameters
    44  double
    5 ... returning 
     5... returning
    66  _retval_butThisIsAnError: double
    7   ... with attributes: 
     7  ... with attributes:
    88    Attribute with name: unused
    99
    10 ... with body 
     10... with body
    1111  CompoundStmt
    1212
  • tests/Makefile.am

    r5e49e47 rd0c91a6  
    1616
    1717AUTOMAKE_OPTIONS = foreign    # do not require all the GNU file names
     18ACLOCAL_AMFLAGS  = -I automake
    1819
    1920include $(top_srcdir)/src/cfa.make
     
    4445.PHONY: list .validate
    4546.INTERMEDIATE: .validate .validate.cfa
    46 EXTRA_PROGRAMS = avl_test # build but do not install
     47EXTRA_PROGRAMS = avl_test .dummy_hack # build but do not install
    4748
    48 avl_test_SOURCES = avltree/avl_test.c avltree/avl0.c avltree/avl1.c avltree/avl2.c avltree/avl3.c avltree/avl4.c avltree/avl-private.c
     49avl_test_SOURCES = avltree/avl_test.cfa avltree/avl0.cfa avltree/avl1.cfa avltree/avl2.cfa avltree/avl3.cfa avltree/avl4.cfa avltree/avl-private.cfa
     50# automake doesn't know we still need C rules so pretend like we have a C program
     51_dummy_hack_SOURCES = .dummy_hack.c
    4952
    5053#----------------------------------------------------------------------------------------------------------------
     
    6770        @echo "int main() { return 0; }" > ${@}
    6871
    69 dummy_hack.c:
     72# automake doesn't know we still need C rules so pretend like we have a C program
     73.dummy_hack.c:
    7074        @echo "int main() { return 0; }" > ${@}
    7175
     
    7680
    7781# implicit rule so not all test require a rule
    78 % : %.c $(CFACC)
    79         $(PRETTY_PATH) $(CFACOMPILE) $(shell realpath --relative-to=${srcdir} ${<}) -o $(abspath ${@})
    80 
    8182% : %.cfa $(CFACC)
    8283        $(PRETTY_PATH) $(CFACOMPILE) $(shell realpath --relative-to=${srcdir} ${<}) -o $(abspath ${@})
     
    107108
    108109#builtins
    109 builtins/sync: builtins/sync.c $(CFACC)
     110builtins/sync: builtins/sync.cfa $(CFACC)
    110111        $(PRETTY_PATH) $(CFACOMPILE) $(shell realpath --relative-to=${srcdir} ${<}) 2> $(abspath ${@}) -fsyntax-only
    111112
     
    132133
    133134# Constructor/destructor tests
    134 raii/dtor-early-exit-ERR1: raii/dtor-early-exit.c $(CFACC)
     135raii/dtor-early-exit-ERR1: raii/dtor-early-exit.cfa $(CFACC)
    135136        $(PRETTY_PATH) $(CFACOMPILE) -DERR1 $(shell realpath --relative-to=${srcdir} ${<}) -o $(abspath ${@})
    136137
    137 raii/dtor-early-exit-ERR2: raii/dtor-early-exit.c $(CFACC)
     138raii/dtor-early-exit-ERR2: raii/dtor-early-exit.cfa $(CFACC)
    138139        $(PRETTY_PATH) $(CFACOMPILE) -DERR2 $(shell realpath --relative-to=${srcdir} ${<}) -o $(abspath ${@})
    139140
    140 raii/memberCtors-ERR1: raii/memberCtors.c $(CFACC)
     141raii/memberCtors-ERR1: raii/memberCtors.cfa $(CFACC)
    141142        $(PRETTY_PATH) $(CFACOMPILE) -DERR1 $(shell realpath --relative-to=${srcdir} ${<}) -o $(abspath ${@})
    142143
    143 raii/ctor-autogen-ERR1: raii/ctor-autogen.c $(CFACC)
     144raii/ctor-autogen-ERR1: raii/ctor-autogen.cfa $(CFACC)
    144145        $(PRETTY_PATH) $(CFACOMPILE) -DERR1 $(shell realpath --relative-to=${srcdir} ${<}) -o $(abspath ${@})
    145146
    146147# Warnings
    147 warnings/self-assignment: warnings/self-assignment.c $(CFACC)
     148warnings/self-assignment: warnings/self-assignment.cfa $(CFACC)
    148149        $(PRETTY_PATH) $(CFACOMPILE) $(shell realpath --relative-to=${srcdir} ${<}) 2> $(abspath ${@}) -fsyntax-only
  • tests/Makefile.in

    r5e49e47 rd0c91a6  
    9191build_triplet = @build@
    9292host_triplet = @host@
    93 EXTRA_PROGRAMS = avl_test$(EXEEXT)
     93EXTRA_PROGRAMS = avl_test$(EXEEXT) .dummy_hack$(EXEEXT)
    9494subdir = tests
    9595ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
    96 am__aclocal_m4_deps = $(top_srcdir)/automake/cfa.m4 \
    97         $(top_srcdir)/configure.ac
     96am__aclocal_m4_deps = $(top_srcdir)/automake/libtool.m4 \
     97        $(top_srcdir)/automake/ltoptions.m4 \
     98        $(top_srcdir)/automake/ltsugar.m4 \
     99        $(top_srcdir)/automake/ltversion.m4 \
     100        $(top_srcdir)/automake/lt~obsolete.m4 \
     101        $(top_srcdir)/automake/cfa.m4 $(top_srcdir)/configure.ac
    98102am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
    99103        $(ACLOCAL_M4)
     
    103107CONFIG_CLEAN_FILES = config.py
    104108CONFIG_CLEAN_VPATH_FILES = test.py
     109am__dummy_hack_OBJECTS = .dummy_hack.$(OBJEXT)
     110_dummy_hack_OBJECTS = $(am__dummy_hack_OBJECTS)
     111_dummy_hack_LDADD = $(LDADD)
     112AM_V_lt = $(am__v_lt_@AM_V@)
     113am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
     114am__v_lt_0 = --silent
     115am__v_lt_1 =
    105116am__dirstamp = $(am__leading_dot)dirstamp
    106117am_avl_test_OBJECTS = avltree/avl_test.$(OBJEXT) \
     
    128139COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
    129140        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
     141LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
     142        $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
     143        $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
     144        $(AM_CFLAGS) $(CFLAGS)
    130145AM_V_CC = $(am__v_CC_@AM_V@)
    131146am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
     
    133148am__v_CC_1 =
    134149CCLD = $(CC)
    135 LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
     150LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
     151        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
     152        $(AM_LDFLAGS) $(LDFLAGS) -o $@
    136153AM_V_CCLD = $(am__v_CCLD_@AM_V@)
    137154am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
    138155am__v_CCLD_0 = @echo "  CCLD    " $@;
    139156am__v_CCLD_1 =
    140 SOURCES = $(avl_test_SOURCES)
    141 DIST_SOURCES = $(avl_test_SOURCES)
     157SOURCES = $(_dummy_hack_SOURCES) $(avl_test_SOURCES)
     158DIST_SOURCES = $(_dummy_hack_SOURCES) $(avl_test_SOURCES)
    142159am__can_run_installinfo = \
    143160  case $$AM_UPDATE_INFO_DIR in \
     
    172189AMTAR = @AMTAR@
    173190AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
     191AR = @AR@
    174192AUTOCONF = @AUTOCONF@
    175193AUTOHEADER = @AUTOHEADER@
    176194AUTOMAKE = @AUTOMAKE@
    177195AWK = @AWK@
    178 BACKEND_CC = @BACKEND_CC@
    179196BUILD_IN_TREE_FLAGS = @BUILD_IN_TREE_FLAGS@
    180197CC = @CFACC@
     
    196213CPPFLAGS = @CPPFLAGS@
    197214CXX = @CXX@
     215CXXCPP = @CXXCPP@
    198216CXXDEPMODE = @CXXDEPMODE@
    199217CXXFLAGS = @CXXFLAGS@
     
    201219DEFS = @DEFS@
    202220DEPDIR = @DEPDIR@
     221DLLTOOL = @DLLTOOL@
    203222DRIVER_DIR = @DRIVER_DIR@
     223DSYMUTIL = @DSYMUTIL@
     224DUMPBIN = @DUMPBIN@
    204225ECHO_C = @ECHO_C@
    205226ECHO_N = @ECHO_N@
     
    207228EGREP = @EGREP@
    208229EXEEXT = @EXEEXT@
     230FGREP = @FGREP@
    209231GREP = @GREP@
    210232HOST_FLAGS = @HOST_FLAGS@
     
    214236INSTALL_SCRIPT = @INSTALL_SCRIPT@
    215237INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
     238LD = @LD@
    216239LDFLAGS = @LDFLAGS@
    217240LEX = @LEX@
     
    222245LIBOBJS = @LIBOBJS@
    223246LIBS = @LIBS@
     247LIBTOOL = @LIBTOOL@
     248LIPO = @LIPO@
     249LN_S = @LN_S@
    224250LTLIBOBJS = @LTLIBOBJS@
     251LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
    225252MAKEINFO = @MAKEINFO@
     253MANIFEST_TOOL = @MANIFEST_TOOL@
    226254MKDIR_P = @MKDIR_P@
     255NM = @NM@
     256NMEDIT = @NMEDIT@
     257OBJDUMP = @OBJDUMP@
    227258OBJEXT = @OBJEXT@
     259OTOOL = @OTOOL@
     260OTOOL64 = @OTOOL64@
    228261PACKAGE = @PACKAGE@
    229262PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
     
    235268PATH_SEPARATOR = @PATH_SEPARATOR@
    236269RANLIB = @RANLIB@
     270SED = @SED@
    237271SET_MAKE = @SET_MAKE@
    238272SHELL = @SHELL@
     
    246280abs_top_builddir = @abs_top_builddir@
    247281abs_top_srcdir = @abs_top_srcdir@
     282ac_ct_AR = @ac_ct_AR@
    248283ac_ct_CC = @ac_ct_CC@
    249284ac_ct_CXX = @ac_ct_CXX@
     285ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
    250286am__include = @am__include@
    251287am__leading_dot = @am__leading_dot@
     
    295331top_srcdir = @top_srcdir@
    296332AUTOMAKE_OPTIONS = foreign    # do not require all the GNU file names
     333ACLOCAL_AMFLAGS = -I automake
    297334CFACOMPILE = $(CFACC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CFAFLAGS) $(CFAFLAGS) $(AM_CFLAGS) $(CFLAGS)
     335LTCFACOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
     336        $(LIBTOOLFLAGS) --mode=compile $(CFACC) $(DEFS) \
     337        $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CFAFLAGS) $(CFAFLAGS) \
     338        $(AM_CFLAGS) $(CFLAGS)
     339
    298340AM_V_CFA = $(am__v_CFA_@AM_V@)
    299341am__v_CFA_ = $(am__v_CFA_@AM_DEFAULT_V@)
    300342am__v_CFA_0 = @echo "  CFA     " $@;
    301343am__v_CFA_1 =
     344AM_V_JAVAC = $(am__v_JAVAC_@AM_V@)
     345am__v_JAVAC_ = $(am__v_JAVAC_@AM_DEFAULT_V@)
     346am__v_JAVAC_0 = @echo "  JAVAC   " $@;
     347am__v_JAVAC_1 =
     348AM_V_GOC = $(am__v_GOC_@AM_V@)
     349am__v_GOC_ = $(am__v_GOC_@AM_DEFAULT_V@)
     350am__v_GOC_0 = @echo "  GOC     " $@;
     351am__v_GOC_1 =
     352UPPCC = u++
     353UPPCOMPILE = $(UPPCC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_UPPFLAGS) $(UPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_CFLAGS) $(CFLAGS)
     354AM_V_UPP = $(am__v_UPP_@AM_V@)
     355am__v_UPP_ = $(am__v_UPP_@AM_DEFAULT_V@)
     356am__v_UPP_0 = @echo "  UPP     " $@;
     357am__v_UPP_1 =
    302358debug = yes
    303359installed = no
     
    312368        ${INSTALL_FLAGS} ${ARCH_FLAGS}
    313369PRETTY_PATH = cd ${srcdir} &&
    314 avl_test_SOURCES = avltree/avl_test.c avltree/avl0.c avltree/avl1.c avltree/avl2.c avltree/avl3.c avltree/avl4.c avltree/avl-private.c
     370avl_test_SOURCES = avltree/avl_test.cfa avltree/avl0.cfa avltree/avl1.cfa avltree/avl2.cfa avltree/avl3.cfa avltree/avl4.cfa avltree/avl-private.cfa
     371# automake doesn't know we still need C rules so pretend like we have a C program
     372_dummy_hack_SOURCES = .dummy_hack.c
    315373all: all-am
    316374
    317375.SUFFIXES:
    318 .SUFFIXES: .c .cfa .o .obj .validate
     376.SUFFIXES: .c .cfa .dummy_hack .lo .o .obj .validate
    319377$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am $(top_srcdir)/src/cfa.make $(am__configure_deps)
    320378        @for dep in $?; do \
     
    349407config.py: $(top_builddir)/config.status $(srcdir)/config.py.in
    350408        cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
     409
     410.dummy_hack$(EXEEXT): $(_dummy_hack_OBJECTS) $(_dummy_hack_DEPENDENCIES) $(EXTRA__dummy_hack_DEPENDENCIES)
     411        @rm -f .dummy_hack$(EXEEXT)
     412        $(AM_V_CCLD)$(LINK) $(_dummy_hack_OBJECTS) $(_dummy_hack_LDADD) $(LIBS)
    351413avltree/$(am__dirstamp):
    352414        @$(MKDIR_P) avltree
     
    381443        -rm -f *.tab.c
    382444
    383 @AMDEP_TRUE@@am__include@ @am__quote@avltree/$(DEPDIR)/avl-private.Po@am__quote@
    384 @AMDEP_TRUE@@am__include@ @am__quote@avltree/$(DEPDIR)/avl0.Po@am__quote@
    385 @AMDEP_TRUE@@am__include@ @am__quote@avltree/$(DEPDIR)/avl1.Po@am__quote@
    386 @AMDEP_TRUE@@am__include@ @am__quote@avltree/$(DEPDIR)/avl2.Po@am__quote@
    387 @AMDEP_TRUE@@am__include@ @am__quote@avltree/$(DEPDIR)/avl3.Po@am__quote@
    388 @AMDEP_TRUE@@am__include@ @am__quote@avltree/$(DEPDIR)/avl4.Po@am__quote@
    389 @AMDEP_TRUE@@am__include@ @am__quote@avltree/$(DEPDIR)/avl_test.Po@am__quote@
     445@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/.dummy_hack.Po@am__quote@
    390446
    391447.c.o:
     
    404460@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    405461@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
     462
     463.c.lo:
     464@am__fastdepCC_TRUE@    $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
     465@am__fastdepCC_TRUE@    $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
     466@am__fastdepCC_TRUE@    $(am__mv) $$depbase.Tpo $$depbase.Plo
     467@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
     468@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     469@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
     470
     471mostlyclean-libtool:
     472        -rm -f *.lo
     473
     474clean-libtool:
     475        -rm -rf .libs _libs
    406476
    407477ID: $(am__tagged_files)
     
    525595clean: clean-am
    526596
    527 clean-am: clean-generic clean-local mostlyclean-am
     597clean-am: clean-generic clean-libtool clean-local mostlyclean-am
    528598
    529599distclean: distclean-am
    530         -rm -rf avltree/$(DEPDIR)
     600        -rm -rf ./$(DEPDIR)
    531601        -rm -f Makefile
    532602distclean-am: clean-am distclean-compile distclean-generic \
     
    574644
    575645maintainer-clean: maintainer-clean-am
    576         -rm -rf avltree/$(DEPDIR)
     646        -rm -rf ./$(DEPDIR)
    577647        -rm -f Makefile
    578648maintainer-clean-am: distclean-am maintainer-clean-generic
     
    580650mostlyclean: mostlyclean-am
    581651
    582 mostlyclean-am: mostlyclean-compile mostlyclean-generic
     652mostlyclean-am: mostlyclean-compile mostlyclean-generic \
     653        mostlyclean-libtool
    583654
    584655pdf: pdf-am
     
    595666
    596667.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-am clean \
    597         clean-generic clean-local cscopelist-am ctags ctags-am \
    598         distclean distclean-compile distclean-generic distclean-tags \
    599         distdir dvi dvi-am html html-am info info-am install \
    600         install-am install-data install-data-am install-dvi \
    601         install-dvi-am install-exec install-exec-am install-html \
    602         install-html-am install-info install-info-am install-man \
    603         install-pdf install-pdf-am install-ps install-ps-am \
    604         install-strip installcheck installcheck-am installdirs \
    605         maintainer-clean maintainer-clean-generic mostlyclean \
    606         mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
     668        clean-generic clean-libtool clean-local cscopelist-am ctags \
     669        ctags-am distclean distclean-compile distclean-generic \
     670        distclean-libtool distclean-tags distdir dvi dvi-am html \
     671        html-am info info-am install install-am install-data \
     672        install-data-am install-dvi install-dvi-am install-exec \
     673        install-exec-am install-html install-html-am install-info \
     674        install-info-am install-man install-pdf install-pdf-am \
     675        install-ps install-ps-am install-strip installcheck \
     676        installcheck-am installdirs maintainer-clean \
     677        maintainer-clean-generic mostlyclean mostlyclean-compile \
     678        mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
    607679        tags tags-am uninstall uninstall-am
    608680
     
    615687        $(am__mv) $$depbase.Tpo $$depbase.Po
    616688
     689.cfa.lo:
     690        $(AM_V_CFA)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
     691        $(LTCFACOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
     692        $(am__mv) $$depbase.Tpo $$depbase.Plo
     693
    617694.PHONY: list .validate
    618695.INTERMEDIATE: .validate .validate.cfa
     
    637714        @echo "int main() { return 0; }" > ${@}
    638715
    639 dummy_hack.c:
     716# automake doesn't know we still need C rules so pretend like we have a C program
     717.dummy_hack.c:
    640718        @echo "int main() { return 0; }" > ${@}
    641719
     
    646724
    647725# implicit rule so not all test require a rule
    648 % : %.c $(CFACC)
    649         $(PRETTY_PATH) $(CFACOMPILE) $(shell realpath --relative-to=${srcdir} ${<}) -o $(abspath ${@})
    650 
    651726% : %.cfa $(CFACC)
    652727        $(PRETTY_PATH) $(CFACOMPILE) $(shell realpath --relative-to=${srcdir} ${<}) -o $(abspath ${@})
     
    677752
    678753#builtins
    679 builtins/sync: builtins/sync.c $(CFACC)
     754builtins/sync: builtins/sync.cfa $(CFACC)
    680755        $(PRETTY_PATH) $(CFACOMPILE) $(shell realpath --relative-to=${srcdir} ${<}) 2> $(abspath ${@}) -fsyntax-only
    681756
     
    702777
    703778# Constructor/destructor tests
    704 raii/dtor-early-exit-ERR1: raii/dtor-early-exit.c $(CFACC)
     779raii/dtor-early-exit-ERR1: raii/dtor-early-exit.cfa $(CFACC)
    705780        $(PRETTY_PATH) $(CFACOMPILE) -DERR1 $(shell realpath --relative-to=${srcdir} ${<}) -o $(abspath ${@})
    706781
    707 raii/dtor-early-exit-ERR2: raii/dtor-early-exit.c $(CFACC)
     782raii/dtor-early-exit-ERR2: raii/dtor-early-exit.cfa $(CFACC)
    708783        $(PRETTY_PATH) $(CFACOMPILE) -DERR2 $(shell realpath --relative-to=${srcdir} ${<}) -o $(abspath ${@})
    709784
    710 raii/memberCtors-ERR1: raii/memberCtors.c $(CFACC)
     785raii/memberCtors-ERR1: raii/memberCtors.cfa $(CFACC)
    711786        $(PRETTY_PATH) $(CFACOMPILE) -DERR1 $(shell realpath --relative-to=${srcdir} ${<}) -o $(abspath ${@})
    712787
    713 raii/ctor-autogen-ERR1: raii/ctor-autogen.c $(CFACC)
     788raii/ctor-autogen-ERR1: raii/ctor-autogen.cfa $(CFACC)
    714789        $(PRETTY_PATH) $(CFACOMPILE) -DERR1 $(shell realpath --relative-to=${srcdir} ${<}) -o $(abspath ${@})
    715790
    716791# Warnings
    717 warnings/self-assignment: warnings/self-assignment.c $(CFACC)
     792warnings/self-assignment: warnings/self-assignment.cfa $(CFACC)
    718793        $(PRETTY_PATH) $(CFACOMPILE) $(shell realpath --relative-to=${srcdir} ${<}) 2> $(abspath ${@}) -fsyntax-only
    719794
  • tests/abs.cfa

    r5e49e47 rd0c91a6  
    1010// Created On       : Thu Jan 28 18:26:16 2016
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Nov  6 17:50:44 2018
    13 // Update Count     : 54
     12// Last Modified On : Tue Dec  4 21:33:15 2018
     13// Update Count     : 55
    1414//
    1515
     
    1919int main( void ) {
    2020        signed char ch = -65;
    21         sout | "char\t\t\t"                                     | ch     | "\tabs " | abs( ch ) | endl;
    22         sout | "signed int\t\t"                         | -65    | "\tabs" | abs( -65 ) | endl;
    23         sout | "signed long int\t\t"            | -65l   | "\tabs" | abs( -65l ) | endl;
    24         sout | "signed long long int\t"         | -65ll  | "\tabs" | abs( -65ll ) | endl;
    25         sout | "float\t\t\t"                            | -65.0f | "\tabs" | abs( -65.0f ) | endl;
    26         sout | "double\t\t\t"                           | -65.0  | "\tabs" | abs( -65.0 ) | endl;
    27         sout | "long double\t\t"                        | -65.0l | "\tabs" | abs( -65.0l ) | endl;
    28         sout | "float _Complex\t\t"                     | -65.0F-2.0iF | "\tabs" | abs( -65.0F-2.0iF ) | endl;
    29         sout | "double _Complex\t\t"            | -65.0D-2.0iD | "\tabs" | abs( -65.0D-2.0iD ) | endl;
    30         sout | "long double _Complex\t"         | -65.0L-2.0iL | "\tabs" | abs( -65.0L-2.0iL ) | endl;
     21        sout | "char\t\t\t"                                     | ch     | "\tabs " | abs( ch );
     22        sout | "signed int\t\t"                         | -65    | "\tabs" | abs( -65 );
     23        sout | "signed long int\t\t"            | -65l   | "\tabs" | abs( -65l );
     24        sout | "signed long long int\t"         | -65ll  | "\tabs" | abs( -65ll );
     25        sout | "float\t\t\t"                            | -65.0f | "\tabs" | abs( -65.0f );
     26        sout | "double\t\t\t"                           | -65.0  | "\tabs" | abs( -65.0 );
     27        sout | "long double\t\t"                        | -65.0l | "\tabs" | abs( -65.0l );
     28        sout | "float _Complex\t\t"                     | -65.0F-2.0iF | "\tabs" | abs( -65.0F-2.0iF );
     29        sout | "double _Complex\t\t"            | -65.0D-2.0iD | "\tabs" | abs( -65.0D-2.0iD );
     30        sout | "long double _Complex\t"         | -65.0L-2.0iL | "\tabs" | abs( -65.0L-2.0iL );
    3131} // main
    3232
  • tests/ato.cfa

    r5e49e47 rd0c91a6  
    1010// Created On       : Thu Feb  4 08:10:57 2016
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Nov  6 17:51:03 2018
    13 // Update Count     : 91
     12// Last Modified On : Tue Dec  4 21:33:53 2018
     13// Update Count     : 92
    1414//
    1515
     
    2020        const char * sptr = "-123";
    2121        int i = ato( sptr );
    22         sout | i | sptr | endl;
     22        sout | i | sptr;
    2323        sptr = "123";
    2424        unsigned int ui = ato( sptr );
    25         sout | ui | sptr | endl;
     25        sout | ui | sptr;
    2626
    2727        sptr = "-123";
    2828        long int li = ato( sptr );
    29         sout | li | sptr | endl;
     29        sout | li | sptr;
    3030        sptr = "123";
    3131        unsigned long int uli = ato( sptr );
    32         sout | uli | sptr | endl;
     32        sout | uli | sptr;
    3333
    3434        sptr = "-123";
    3535        long long int lli = ato( sptr );
    36         sout | lli | sptr | endl;
     36        sout | lli | sptr;
    3737        sptr = "123";
    3838        unsigned long long int ulli = ato( sptr );
    39         sout | ulli | sptr | endl;
     39        sout | ulli | sptr;
    4040
    4141        sptr = "-123.456";
    4242        float f = ato( sptr );
    43         sout | f | sptr | endl;
     43        sout | f | sptr;
    4444        sptr = "-123.4567890123456";
    4545        double d = ato( sptr );
    46         sout | d | sptr | endl;
     46        sout | d | sptr;
    4747        sptr = "-123.45678901234567890123456789";
    4848        long double ld = ato( sptr );
    49         sout | ld | sptr | endl;
     49        sout | ld | sptr;
    5050
    5151        sptr = "-123.456-123.456i";
    5252        float _Complex fc = ato( sptr );
    53         sout | fc | sptr | endl;
     53        sout | fc | sptr;
    5454        sptr = "-123.4567890123456+123.4567890123456i";
    5555        double _Complex dc = ato( sptr );
    56         sout | dc | sptr | endl;
     56        sout | dc | sptr;
    5757        sptr = "123.45678901234567890123456789-123.45678901234567890123456789i";
    5858        long double _Complex ldc = ato( sptr );
    59         sout | ldc | sptr | endl;
     59        sout | ldc | sptr;
    6060        sptr = "123.45678901234-123.4567890i";
    6161        long double _Complex ldc2 = ato( sptr );
    62         sout | ldc2 | sptr | endl;
     62        sout | ldc2 | sptr;
    6363
    6464
    6565        sptr = "-123";
    6666        i = strto( sptr, 0, 10 );
    67         sout | i | sptr | endl;
     67        sout | i | sptr;
    6868        sptr = "123";
    6969        ui = strto( sptr, 0, 10 );
    70         sout | ui | sptr | endl;
     70        sout | ui | sptr;
    7171
    7272        sptr = "-123";
    7373        li = strto( sptr, 0, 10 );
    74         sout | li | sptr | endl;
     74        sout | li | sptr;
    7575        sptr = "123";
    7676        uli = strto( sptr, 0, 10 );
    77         sout | uli | sptr | endl;
     77        sout | uli | sptr;
    7878
    7979        sptr = "-123";
    8080        lli = strto( sptr, 0, 10 );
    81         sout | lli | sptr | endl;
     81        sout | lli | sptr;
    8282        sptr = "123";
    8383        ulli = strto( sptr, 0, 10 );
    84         sout | ulli | sptr | endl;
     84        sout | ulli | sptr;
    8585
    8686        sptr = "-123.456";
    8787        f = strto( sptr, 0 );
    88         sout | f | sptr | endl;
     88        sout | f | sptr;
    8989        sptr = "-123.4567890123456";
    9090        d = strto( sptr, 0 );
    91         sout | d | sptr | endl;
     91        sout | d | sptr;
    9292        sptr = "-123.45678901234567890123456789";
    9393        ld = strto( sptr, 0 );
    94         sout | ld | sptr | endl;
     94        sout | ld | sptr;
    9595
    9696        sptr = "-123.456-123.456i";
    9797        fc = strto( sptr, 0 );
    98         sout | fc | sptr | endl;
     98        sout | fc | sptr;
    9999
    100100        char * eptr = 0;
    101101        // sptr = "2fred";
    102102        // fc = strto( sptr, &eptr );
    103         // sout | fc | sptr | eptr | endl;
     103        // sout | fc | sptr | eptr;
    104104
    105105        sptr = "2  3";
    106106        fc = strto( sptr, &eptr );
    107         sout | fc | sptr | eptr | endl;
     107        sout | fc | sptr | eptr;
    108108
    109109        sptr = "-123.4567890123456+123.4567890123456i";
    110110        dc = strto( sptr, 0 );
    111         sout | dc | sptr | endl;
     111        sout | dc | sptr;
    112112        sptr = "123.45678901234567890123456789-123.45678901234567890123456789i";
    113113        ldc = strto( sptr, 0 );
    114         sout | ldc | sptr | endl;
     114        sout | ldc | sptr;
    115115        sptr = "123.45678901234-123.4567890i";
    116116        ldc2 = strto( sptr, 0 );
    117         sout | ldc2 | sptr | endl;
     117        sout | ldc2 | sptr;
    118118} // main
    119119
  • tests/complex.cfa

    r5e49e47 rd0c91a6  
    1010// Created On       : Wed May 24 22:07:31 2017
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Nov  6 17:51:22 2018
    13 // Update Count     : 3
     12// Last Modified On : Tue Dec  4 21:34:21 2018
     13// Update Count     : 4
    1414//
    1515
     
    2525    printf( "x:%g+%gi y:%g+%gi z:%g+%gi\n", creal(x), cimag(x), creal(y), cimag(y), creal(z), cimag(z) );
    2626#ifdef __CFA__
    27     sout | "x:" | x | "y:" | y | "z:" | z | endl;
     27    sout | "x:" | x | "y:" | y | "z:" | z;
    2828#endif // __CFA
    2929    x = 2.1 + 1.3i;
     
    3232    printf( "x:%g+%gi y:%g+%gi z:%g+%gi\n", creal(x), cimag(x), creal(y), cimag(y), creal(z), cimag(z) );
    3333#ifdef __CFA__
    34     sout | "x:" | x | "y:" | y | "z:" | z | endl;
     34    sout | "x:" | x | "y:" | y | "z:" | z;
    3535#endif // __CFA
    3636}
  • tests/concurrent/coroutineYield.cfa

    r5e49e47 rd0c91a6  
    2727        while(true) {
    2828                #if !defined(TEST_FOREVER)
    29                         sout | "Coroutine 1" | endl;
     29                        sout | "Coroutine 1";
    3030                #endif
    3131                yield();
    3232                #if !defined(TEST_FOREVER)
    33                         sout | "Coroutine 2" | endl;
     33                        sout | "Coroutine 2";
    3434                #endif
    3535                suspend();
     
    4242        for(int i = 0; TEST(i < N); i++) {
    4343                #if !defined(TEST_FOREVER)
    44                         sout | "Thread 1" | endl;
     44                        sout | "Thread 1";
    4545                #endif
    4646                resume(c);
    4747                #if !defined(TEST_FOREVER)
    48                         sout | "Thread 2" | endl;
     48                        sout | "Thread 2";
    4949                #endif
    5050                yield();
  • tests/concurrent/examples/boundedBufferEXT.cfa

    r5e49e47 rd0c91a6  
    88// Created On       : Wed Apr 18 22:52:12 2018
    99// Last Modified By : Peter A. Buhr
    10 // Last Modified On : Thu Aug 16 08:17:03 2018
    11 // Update Count     : 8
     10// Last Modified On : Tue Dec 11 21:55:02 2018
     11// Update Count     : 9
    1212//
    1313
     
    115115                sum += sums[i];
    116116        } // for
    117         sout | "total:" | sum | endl;
     117        sout | "total:" | sum;
    118118}
    119119
  • tests/concurrent/examples/boundedBufferINT.cfa

    r5e49e47 rd0c91a6  
    88// Created On       : Mon Oct 30 12:45:13 2017
    99// Last Modified By : Peter A. Buhr
    10 // Last Modified On : Thu Aug 16 08:17:58 2018
    11 // Update Count     : 83
     10// Last Modified On : Tue Dec 11 21:55:45 2018
     11// Update Count     : 84
    1212//
    1313
     
    116116                sum += sums[i];
    117117        } // for
    118         sout | "total:" | sum | endl;
     118        sout | "total:" | sum;
    119119}
    120120
  • tests/concurrent/examples/datingService.cfa

    r5e49e47 rd0c91a6  
    88// Created On       : Mon Oct 30 12:56:20 2017
    99// Last Modified By : Peter A. Buhr
    10 // Last Modified On : Sun May 27 09:05:18 2018
    11 // Update Count     : 26
     10// Last Modified On : Tue Dec 11 21:55:34 2018
     11// Update Count     : 28
    1212//
    1313
     
    3333                signal_block( Boys[ccode] );                                    // restart boy to set phone number
    3434        } // if
     35        sout | "Girl:" | PhoneNo | "is dating Boy at" | BoyPhoneNo | "with ccode" | ccode;
    3536        return BoyPhoneNo;
    3637} // DatingService girl
     
    4445                signal_block( Girls[ccode] );                                   // restart girl to set phone number
    4546        } // if
     47        sout | " Boy:" | PhoneNo | "is dating Girl" | GirlPhoneNo | "with ccode" | ccode;
    4648        return GirlPhoneNo;
    4749} // DatingService boy
     
    5860        yield( random( 100 ) );                                                         // don't all start at the same time
    5961        unsigned int partner = girl( TheExchange, id, ccode );
    60         sout | "Girl:" | id | "is dating Boy at" | partner | "with ccode" | ccode | endl;
    6162        girlck[id] = partner;
    6263} // Girl main
     
    6970
    7071thread Boy {
    71         DatingService &TheExchange;
     72        DatingService & TheExchange;
    7273        unsigned int id, ccode;
    7374}; // Boy
     
    7677        yield( random( 100 ) );                                                         // don't all start at the same time
    7778        unsigned int partner = boy( TheExchange, id, ccode );
    78         sout | " Boy:" | id | "is dating Girl" | partner | "with ccode" | ccode | endl;
    7979        boyck[id] = partner;
    8080} // Boy main
  • tests/concurrent/examples/matrixSum.cfa

    r5e49e47 rd0c91a6  
    1111// Created On       : Mon Oct  9 08:29:28 2017
    1212// Last Modified By : Peter A. Buhr
    13 // Last Modified On : Tue Nov  6 17:51:32 2018
    14 // Update Count     : 14
     13// Last Modified On : Tue Dec 11 21:54:55 2018
     14// Update Count     : 15
    1515//
    1616
     
    5454                total += subtotals[r];                                                  // total subtotals
    5555        } // for
    56         sout | total | endl;
     56        sout | total;
    5757}
    5858
  • tests/concurrent/examples/quickSort.cfa

    r5e49e47 rd0c91a6  
    99// Created On       : Wed Dec  6 12:15:52 2017
    1010// Last Modified By : Peter A. Buhr
    11 // Last Modified On : Thu Aug 16 08:17:41 2018
    12 // Update Count     : 163
     11// Last Modified On : Sat Dec 22 08:44:27 2018
     12// Update Count     : 168
    1313//
    1414
     
    8888
    8989void usage( char * argv[] ) {
    90         sout | "Usage:" | argv[0] | "( -s unsorted-file [ sorted-file ] | -t size (>= 0) [ depth (>= 0) ] )" | endl;
     90        sout | "Usage:" | argv[0] | "( -s unsorted-file [ sorted-file ] | -t size (>= 0) [ depth (>= 0) ] )";
    9191        exit( EXIT_FAILURE );                                                           // TERMINATE!
    9292} // usage
     
    114114                                &sortedfile = new( (const char *)argv[2] ); // open the output file
    115115                                if ( fail( sortedfile ) ) {
    116                                         serr | "Error! Could not open sorted output file \"" | argv[2] | "\"" | endl;
     116                                        serr | "Error! Could not open sorted output file \"" | argv[2] | "\"";
    117117                                        usage( argv );
    118118                                } // if
     
    121121                                &unsortedfile = new( (const char *)argv[1] ); // open the input file
    122122                                if ( fail( unsortedfile ) ) {
    123                                         serr | "Error! Could not open unsorted input file \"" | argv[1] | "\"" | endl;
     123                                        serr | "Error! Could not open unsorted input file \"" | argv[1] | "\"";
    124124                                        usage( argv );
    125125                                } // if
     
    127127                } // if
    128128        } // if
     129        sortedfile | nlOff;                                                                     // turn off auto newline
    129130
    130131        enum { ValuesPerLine = 22 };                                            // number of values printed per line
     
    137138                        for ( int counter = 0; counter < size; counter += 1 ) { // read unsorted numbers
    138139                                unsortedfile | values[counter];
    139                                 if ( counter != 0 && counter % ValuesPerLine == 0 ) sortedfile | endl | "  ";
     140                                if ( counter != 0 && counter % ValuesPerLine == 0 ) sortedfile | nl | "  ";
    140141                                sortedfile | values[counter];
    141142                                if ( counter < size - 1 && (counter + 1) % ValuesPerLine != 0 ) sortedfile | ' ';
    142143                        } // for
    143                         sortedfile | endl;
     144                        sortedfile | nl;
    144145                        if ( size > 0 ) {                                                       // values to sort ?
    145146                                Quicksort QS = { values, size - 1, 0 }; // sort values
    146147                        } // wait until sort tasks terminate
    147148                        for ( int counter = 0; counter < size; counter += 1 ) { // print sorted list
    148                                 if ( counter != 0 && counter % ValuesPerLine == 0 ) sortedfile | endl | "  ";
     149                                if ( counter != 0 && counter % ValuesPerLine == 0 ) sortedfile | nl | "  ";
    149150                                sortedfile | values[counter];
    150151                                if ( counter < size - 1 && (counter + 1) % ValuesPerLine != 0 ) sortedfile | ' ';
    151152                        } // for
    152                         sortedfile | endl | endl;
     153                        sortedfile | nl | nl;
    153154
    154155                        delete( values );
  • tests/concurrent/monitor.cfa

    r5e49e47 rd0c91a6  
    4040                MyThread f[4];
    4141        }
    42         sout | global.value | endl;
     42        sout | global.value;
    4343}
  • tests/concurrent/multi-monitor.cfa

    r5e49e47 rd0c91a6  
    5252                }
    5353        }
    54         sout | global12 | global23 | global13 | endl;
     54        sout | global12 | global23 | global13;
    5555}
  • tests/concurrent/signal/block.cfa

    r5e49e47 rd0c91a6  
    5757
    5858        if(a.last_thread != a.last_signaller || b.last_thread != b.last_signaller ) {
    59                 sout | "ERROR Barging detected, expected" | a.last_signaller | b.last_signaller | "got" | a.last_thread | b.last_thread | endl;
     59                sout | "ERROR Barging detected, expected" | a.last_signaller | b.last_signaller | "got" | a.last_thread | b.last_thread;
    6060                abort();
    6161        }
     
    8585
    8686                if( ! signal_block( cond ) ) {
    87                         sout | "ERROR expected to be able to signal" | endl;
     87                        sout | "ERROR expected to be able to signal";
    8888                        abort();
    8989                }
     
    9292
    9393                if(a.last_thread != next || b.last_thread != next) {
    94                         sout | "ERROR Barging detected, expected" | next | "got" | a.last_thread | b.last_thread | endl;
     94                        sout | "ERROR Barging detected, expected" | next | "got" | a.last_thread | b.last_thread;
    9595                        abort();
    9696                }
     
    130130                Signaller s[4];
    131131                Barger b[13];
    132                 sout | "Starting waiters" | endl;
     132                sout | "Starting waiters";
    133133                {
    134134                        Waiter w[3];
    135135                }
    136                 sout | "Waiters done" | endl;
     136                sout | "Waiters done";
    137137                done = true;
    138138        }
  • tests/concurrent/signal/disjoint.cfa

    r5e49e47 rd0c91a6  
    6666        wait( cond );
    6767        if( d.state != SIGNAL ) {
    68                 sout | "ERROR barging!" | endl;
     68                sout | "ERROR barging!";
    6969        }
    7070
    7171        #if !defined(TEST_FOREVER)
    7272                d.counter++;
    73                 if( (d.counter % 1000) == 0 ) sout | d.counter | endl;
     73                if( (d.counter % 1000) == 0 ) sout | d.counter;
    7474        #endif
    7575
     
    9999        bool running = TEST(data.counter < N) && data.counter > 0;
    100100        if( data.state != SIGNAL && running ) {
    101                 sout | "ERROR Eager signal" | data.state | endl;
     101                sout | "ERROR Eager signal" | data.state;
    102102        }
    103103}
     
    124124                        Waiter w[4];
    125125                }
    126                 sout | "All waiter done" | endl;
     126                sout | "All waiter done";
    127127                all_done = true;
    128128        }
  • tests/concurrent/signal/wait.cfa

    r5e49e47 rd0c91a6  
    8383                                break;
    8484                        default:
    85                                 sout | "Something went wrong" | endl;
     85                                sout | "Something went wrong";
    8686                                abort();
    8787                }
     
    140140        waiter_left = 4;
    141141        processor p[2];
    142         sout | "Starting" | endl;
     142        sout | "Starting";
    143143        {
    144144                Signaler  e;
     
    150150                }
    151151        }
    152         sout | "Done" | endl;
     152        sout | "Done";
    153153}
  • tests/concurrent/thread.cfa

    r5e49e47 rd0c91a6  
    1212void main(First& this) {
    1313        for(int i = 0; i < 10; i++) {
    14                 sout | "First : Suspend No." | i + 1 | endl;
     14                sout | "First : Suspend No." | i + 1;
    1515                yield();
    1616        }
     
    2121        P(*this.lock);
    2222        for(int i = 0; i < 10; i++) {
    23                 sout | "Second : Suspend No." | i + 1 | endl;
     23                sout | "Second : Suspend No." | i + 1;
    2424                yield();
    2525        }
     
    2929int main(int argc, char* argv[]) {
    3030        semaphore lock = { 0 };
    31         sout | "User main begin" | endl;
     31        sout | "User main begin";
    3232        {
    3333                processor p;
     
    3737                }
    3838        }
    39         sout | "User main end" | endl;
     39        sout | "User main end";
    4040}
  • tests/concurrent/waitfor/barge.cfa

    r5e49e47 rd0c91a6  
    4848        yield(random( 10 ));
    4949        if( this.state != WAITFOR && !this.done && this.started ) {
    50                 serr | "Barging before caller detected" | endl;
     50                serr | "Barging before caller detected";
    5151        }
    5252
     
    6666                this.state = WAITFOR;
    6767                waitfor(do_call, this) {
    68                         sout | i | endl;
     68                        sout | i;
    6969                }
    7070
    7171                if( this.state != CALL ) {
    72                         serr | "Barging after caller detected" | endl;
     72                        serr | "Barging after caller detected";
    7373                }
    7474        }
     
    8383
    8484int main() {
    85         sout | "Starting" | endl;
     85        sout | "Starting";
    8686        {
    8787                barger_t bargers[17];
     
    8989                waiter_t waiters;
    9090        }
    91         sout | "Stopping" | endl;
     91        sout | "Stopping";
    9292}
  • tests/concurrent/waitfor/dtor.cfa

    r5e49e47 rd0c91a6  
    2929        switch(state) {
    3030                case CTOR  : break;
    31                 case MAIN  : if( this.state != CTOR  ) { serr | "ERROR Expected state to be CTOR"  | endl; abort(); } this.state = state; break;
    32                 case AFTER : if( this.state != MAIN  ) { serr | "ERROR Expected state to be MAIN"  | endl; abort(); } this.state = state; break;
    33                 case END   : if( this.state != AFTER ) { serr | "ERROR Expected state to be AFTER" | endl; abort(); } this.state = state; break;
    34                 case DTOR  : if( this.state != END   ) { serr | "ERROR Expected state to be END"   | endl; abort(); } this.state = state; break;
     31                case MAIN  : if( this.state != CTOR  ) { serr | "ERROR Expected state to be CTOR" ; abort(); } this.state = state; break;
     32                case AFTER : if( this.state != MAIN  ) { serr | "ERROR Expected state to be MAIN" ; abort(); } this.state = state; break;
     33                case END   : if( this.state != AFTER ) { serr | "ERROR Expected state to be AFTER"; abort(); } this.state = state; break;
     34                case DTOR  : if( this.state != END   ) { serr | "ERROR Expected state to be END"  ; abort(); } this.state = state; break;
    3535        }
    3636}
     
    5454
    5555int main() {
    56         sout | "Starting" | endl;
     56        sout | "Starting";
    5757        processor p;
    5858        for( int i = 0; i < N; i++ ){
     
    6060                yield( random( 100 ) );
    6161        }
    62         sout | "Stopping" | endl;
     62        sout | "Stopping";
    6363}
  • tests/concurrent/waitfor/else.cfa

    r5e49e47 rd0c91a6  
    1212void test( M & mutex m ) {
    1313        int i = 0;
    14         sout | "Starting" | endl;
     14        sout | "Starting";
    1515
    1616        when( false ) waitfor( notcalled, m );
    1717
    18         sout | "Step" | i++ | endl;
     18        sout | "Step" | i++;
    1919
    2020        waitfor( notcalled, m ); or else {
    21                 sout | "else called" | endl;
     21                sout | "else called";
    2222        }
    2323
    24         sout | "Step" | i++ | endl;
     24        sout | "Step" | i++;
    2525
    2626        when( true ) waitfor( notcalled, m ); or when( true ) else {
    27                 sout | "else called" | endl;
     27                sout | "else called";
    2828        }
    2929
    30         sout | "Step" | i++ | endl;
     30        sout | "Step" | i++;
    3131
    3232        when( false ) waitfor( notcalled, m ); or when( true ) else {
    33                 sout | "else called" | endl;
     33                sout | "else called";
    3434        }
    3535
    36         sout | "Step" | i++ | endl;
     36        sout | "Step" | i++;
    3737
    3838        when( false ) waitfor( notcalled, m ); or when( false ) else {
    39                 sout | "else called" | endl;
     39                sout | "else called";
    4040        }
    4141
    42         sout | "Done" | endl;
     42        sout | "Done";
    4343}
    4444
  • tests/concurrent/waitfor/recurse.cfa

    r5e49e47 rd0c91a6  
    9595        rand_yield();
    9696
    97         sout | "1st" | endl;
     97        sout | "1st" | nl;
    9898
    9999        return this.counter < N ? (state_t)this.actions[idx] : (state_t)STOP;
     
    123123                        case THIRD  : while( !global.ready ) { yield(); } this.state = call3( global, this.idx ); break;
    124124                        case LAST   : while( !global.ready ) { yield(); } this.state = call4( global, this.idx ); break;
    125                         case STOP   : serr | "This should not happen" | endl;
     125                        case STOP   : serr | "This should not happen" | nl;
    126126                }
    127127        }
     
    132132int main() {
    133133        srandom( time(NULL) );
    134         sout | "Starting" | endl;
     134        sout | nlOff;                                   // turn off auto newline
     135        sout | "Starting" | nl;
    135136        {
    136137                waiter_t waiters[4] = {
     
    142143                the_threads = waiters;
    143144        }
    144         sout | "Stopping" | endl;
     145        sout | "Stopping" | nl;
    145146}
  • tests/concurrent/waitfor/simple.cfa

    r5e49e47 rd0c91a6  
    3131
    3232void do_wait( global_t * mutex a ) {
    33         sout | "Waiting to accept" | endl;
     33        sout | "Waiting to accept";
    3434        yield( random( 10 ) );
    3535
    36         sout | "Accepting" | endl;
     36        sout | "Accepting";
    3737
    3838        __acceptable_t acceptable;
     
    4343        __waitfor_internal( 1, &acceptable );
    4444
    45         sout | "Accepted" | endl;
     45        sout | "Accepted";
    4646        yield( random( 10 ) );
    4747}
     
    5050        for( int i = 0; i < N; i++ ) {
    5151                do_wait( &globalA );
    52                 sout | i | endl;
     52                sout | i;
    5353        }
    5454
     
    7676        srandom( time( NULL ) );
    7777        printf("%p\n", &globalA);
    78         sout | "Starting" | endl;
     78        sout | "Starting";
    7979        {
    8080                Acceptor r;
     
    8282
    8383        }
    84         sout | "Done" | endl;
     84        sout | "Done";
    8585}
  • tests/concurrent/waitfor/statment.cfa

    r5e49e47 rd0c91a6  
    8484                case 7: return call7( m );
    8585                default :
    86                         serr | "Incorrect index" | index | endl;
     86                        serr | "Incorrect index" | index;
    8787                        abort();
    8888        }
     
    102102        while( !done ) {
    103103                   waitfor( get_index, this );
    104                 or waitfor( call1, this ) { sout | "Statement" | endl; if( this.last_val != 1 ) { serr | "Incorrect index: expected" | 1 | "got" | this.last_val | endl; } }
    105                 or waitfor( call2, this ) { sout | "Statement" | endl; if( this.last_val != 2 ) { serr | "Incorrect index: expected" | 2 | "got" | this.last_val | endl; } }
    106                 or waitfor( call3, this ) { sout | "Statement" | endl; if( this.last_val != 3 ) { serr | "Incorrect index: expected" | 3 | "got" | this.last_val | endl; } }
    107                 or waitfor( call4, this ) { sout | "Statement" | endl; if( this.last_val != 4 ) { serr | "Incorrect index: expected" | 4 | "got" | this.last_val | endl; } }
    108                 or waitfor( call5, this ) { sout | "Statement" | endl; if( this.last_val != 5 ) { serr | "Incorrect index: expected" | 5 | "got" | this.last_val | endl; } }
    109                 or waitfor( call6, this ) { sout | "Statement" | endl; if( this.last_val != 6 ) { serr | "Incorrect index: expected" | 6 | "got" | this.last_val | endl; } }
    110                 or waitfor( call7, this ) { sout | "Statement" | endl; if( this.last_val != 7 ) { serr | "Incorrect index: expected" | 7 | "got" | this.last_val | endl; } }
     104                or waitfor( call1, this ) { sout | "Statement"; if( this.last_val != 1 ) { serr | "Incorrect index: expected" | 1 | "got" | this.last_val; } }
     105                or waitfor( call2, this ) { sout | "Statement"; if( this.last_val != 2 ) { serr | "Incorrect index: expected" | 2 | "got" | this.last_val; } }
     106                or waitfor( call3, this ) { sout | "Statement"; if( this.last_val != 3 ) { serr | "Incorrect index: expected" | 3 | "got" | this.last_val; } }
     107                or waitfor( call4, this ) { sout | "Statement"; if( this.last_val != 4 ) { serr | "Incorrect index: expected" | 4 | "got" | this.last_val; } }
     108                or waitfor( call5, this ) { sout | "Statement"; if( this.last_val != 5 ) { serr | "Incorrect index: expected" | 5 | "got" | this.last_val; } }
     109                or waitfor( call6, this ) { sout | "Statement"; if( this.last_val != 6 ) { serr | "Incorrect index: expected" | 6 | "got" | this.last_val; } }
     110                or waitfor( call7, this ) { sout | "Statement"; if( this.last_val != 7 ) { serr | "Incorrect index: expected" | 7 | "got" | this.last_val; } }
    111111
    112112                done = true;
     
    128128int main() {
    129129        processor p[2];
    130         sout | "Starting" | endl;
     130        sout | "Starting";
    131131        {
    132132                caller c[7];
    133133                waiter w;
    134134        }
    135         sout | "Stopping" | endl;
     135        sout | "Stopping";
    136136}
  • tests/concurrent/waitfor/when.cfa

    r5e49e47 rd0c91a6  
    5858void arbiter( global_t & mutex this ) {
    5959        for( int i = 0; i < N; i++ ) {
    60                    when( this.last_call == 6 ) waitfor( call1, this ) { if( this.last_call != 1) { serr | "Expected last_call to be 1 got" | this.last_call | endl; } }
    61                 or when( this.last_call == 1 ) waitfor( call2, this ) { if( this.last_call != 2) { serr | "Expected last_call to be 2 got" | this.last_call | endl; } }
    62                 or when( this.last_call == 2 ) waitfor( call3, this ) { if( this.last_call != 3) { serr | "Expected last_call to be 3 got" | this.last_call | endl; } }
    63                 or when( this.last_call == 3 ) waitfor( call4, this ) { if( this.last_call != 4) { serr | "Expected last_call to be 4 got" | this.last_call | endl; } }
    64                 or when( this.last_call == 4 ) waitfor( call5, this ) { if( this.last_call != 5) { serr | "Expected last_call to be 5 got" | this.last_call | endl; } }
    65                 or when( this.last_call == 5 ) waitfor( call6, this ) { if( this.last_call != 6) { serr | "Expected last_call to be 6 got" | this.last_call | endl; } }
     60                   when( this.last_call == 6 ) waitfor( call1, this ) { if( this.last_call != 1) { serr | "Expected last_call to be 1 got" | this.last_call; } }
     61                or when( this.last_call == 1 ) waitfor( call2, this ) { if( this.last_call != 2) { serr | "Expected last_call to be 2 got" | this.last_call; } }
     62                or when( this.last_call == 2 ) waitfor( call3, this ) { if( this.last_call != 3) { serr | "Expected last_call to be 3 got" | this.last_call; } }
     63                or when( this.last_call == 3 ) waitfor( call4, this ) { if( this.last_call != 4) { serr | "Expected last_call to be 4 got" | this.last_call; } }
     64                or when( this.last_call == 4 ) waitfor( call5, this ) { if( this.last_call != 5) { serr | "Expected last_call to be 5 got" | this.last_call; } }
     65                or when( this.last_call == 5 ) waitfor( call6, this ) { if( this.last_call != 6) { serr | "Expected last_call to be 6 got" | this.last_call; } }
    6666
    67                 sout | this.last_call | endl;
     67                sout | this.last_call;
    6868        }
    6969
     
    7878int main() {
    7979        srandom( time(NULL) );
    80         sout | "Starting" | endl;
     80        sout | "Starting";
    8181        {
    8282                arbiter_t arbiter;
     
    8484
    8585        }
    86         sout | "Stopping" | endl;
     86        sout | "Stopping";
    8787}
  • tests/coroutine/.expect/fmtLines.txt

    r5e49e47 rd0c91a6  
    1616difi  ed B  y :   Pete  r A. 
    1717 Buh  r//   Last   Mod  ifie 
    18 d On   : M  on S  ep 1  8 11 
    19 :35:  57 2  017/  / Up  date 
    20  Cou  nt       :   31/  /#in 
     18d On   : T  ue D  ec 1  1 23 
     19:31:  12 2  018/  / Up  date 
     20 Cou  nt       :   32/  /#in 
    2121clud  e <f  stre  am.h  fa># 
    2222incl  ude   <cor  outi  ne.h 
     
    3434t )   {      if   ( fm  t.g   
    3535!= 0   ||   fmt.  b !=   0 ) 
    36  sou  t |   endl  ;}vo  id m 
    37 ain(   For  mat   & fm  t )   
    38 {       fo  r (   ;; )   {                                               
    39                                   // f  or a  s ma  ny c 
    40 hara  cter  s           f  or (   fmt 
    41 .g =   0;   fmt.  g <   5; f 
    42 mt.g   +=   1 )   {             /  / gr 
    43 oups   of   5 bl  ocks                          f 
    44 or (   fmt  .b =   0;   fmt. 
    45 b <   4; f  mt.b   +=   1 )   
    46 {       //   blo  cks   of 4   cha 
    47 ract  ers                               f  or (   ;;   
    48 ) {                                                     //   for   new 
    49 line   cha  ract  ers                                     
    50 susp  end(  );                                  i  f (   
    51 fmt.  ch !  = '\  n' )   bre 
    52 ak;             //   igno  re n  ewli 
    53 ne                              }   // f  or                            so 
    54 ut |   fmt  .ch;                                                        / 
    55 / pr  int   char  acte  r                         
    56 } //   for                      s  out   | "   
    57  ";                                                             /  / pr  int   
    58 bloc  k se  para  tor           } / 
    59 / fo  r         s  out   | en  dl;       
    60                                                                   // p  rint   gro 
    61 up s  epar  ator        } /  / fo 
    62 r} /  / ma  invo  id p  rt(   
    63 Form  at &   fmt  , ch  ar c 
    64 h )   {      fmt  .ch   = ch 
    65 ;      res  ume(   fmt   );} 
    66  //   prti  nt m  ain(  ) {       
    67 Form  at f  mt;   char   ch; 
    68         for   ( ;  ; )   {              s  in | 
    69  ch;                                                                            //   rea 
    70 d on  e ch  arac  ter       if 
    71  ( e  of(   sin   ) )   brea 
    72 k;                                                      //   eof   ?            p 
    73 rt(   fmt,   ch   );    }   //   
    74 for}   //   main  // L  ocal 
    75  Var  iabl  es:   ////   tab 
    76 -wid  th:   4 //  // c  ompi 
    77 le-c  omma  nd:   "cfa   fmt 
    78 Line  s.c"   ///  / En  d: / 
    79 /
     36 sou  t |   nl;}  void   mai 
     37n( F  orma  t &   fmt   ) {       
     38for   ( ;;   ) {                                                                 
     39                //   for   as   many   cha 
     40ract  ers               for   ( f  mt.g 
     41 = 0  ; fm  t.g   < 5;   fmt 
     42.g +  = 1   ) {         //   grou 
     43ps o  f 5   bloc  ks                    for 
     44 ( f  mt.b   = 0  ; fm  t.b   
     45< 4;   fmt  .b +  = 1   ) {       
     46// b  lock  s of   4 c  hara 
     47cter  s                         for   ( ;  ; )   
     48{                                                         // f  or n  ewli 
     49ne c  hara  cter  s                                     su 
     50spen  d();                                      if   ( fm 
     51t.ch   !=   '\n'   ) b  reak 
     52;               /  / ig  nore   new  line 
     53                                  } //   for                              sout 
     54 | f  mt.c  h;                                                  //   
     55prin  t ch  arac  ter                   }   
     56// f  or                        sou  t |   "  " 
     57;                                                               //   prin  t bl 
     58ock   sepa  rato  r             }   //   
     59for             sou  t |   nl;                                   
     60                                  // p  rint   gro  up s 
     61epar  ator      } /  / fo  r} / 
     62/ ma  invo  id p  rt(   Form 
     63at &   fmt  , ch  ar c  h )   
     64{      fmt  .ch   = ch  ;     
     65 res  ume(   fmt   );}   //   
     66prti  nt m  ain(  ) {     Form 
     67at f  mt;         char   ch;    for 
     68 ( ;  ; )   {           s  in |   ch; 
     69                                                                                //   rea  d on 
     70e ch  arac  ter     if   ( e 
     71of(   sin   ) )   brea  k;               
     72                                        //   eof   ?            p  rt(   
     73fmt,   ch   );  }   //   for} 
     74 //   main  // L  ocal   Var 
     75iabl  es:   ////   tab  -wid 
     76th:   4 //  // c  ompi  le-c 
     77omma  nd:   "cfa   fmt  Line 
     78s.c"   ///  / En  d: /  /
  • tests/coroutine/.in/fmtLines.txt

    r5e49e47 rd0c91a6  
    1010// Created On       : Sun Sep 17 21:56:15 2017
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Sep 18 11:35:57 2017
    13 // Update Count     : 31
     12// Last Modified On : Tue Dec 11 23:31:12 2018
     13// Update Count     : 32
    1414//
    1515
     
    2727
    2828void ^?{}( Format & fmt ) {
    29     if ( fmt.g != 0 || fmt.b != 0 ) sout | endl;
     29    if ( fmt.g != 0 || fmt.b != 0 ) sout | nl;
    3030}
    3131
     
    4242                        sout | "  ";                                                            // print block separator
    4343                } // for
    44                 sout | endl;                                                                    // print group separator
     44                sout | nl;                                                                      // print group separator
    4545        } // for
    4646} // main
  • tests/coroutine/fibonacci.cfa

    r5e49e47 rd0c91a6  
    1010// Created On       : Thu Jun  8 07:29:37 2017
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Aug 18 11:21:58 2018
    13 // Update Count     : 24
     12// Last Modified On : Tue Dec 11 21:57:33 2018
     13// Update Count     : 25
    1414//
    1515
     
    3939        Fibonacci f1, f2;
    4040        for ( 10 ) {                                                                            // print N Fibonacci values
    41                 sout | next( f1 ) | next( f2 ) | endl;
     41                sout | next( f1 ) | next( f2 );
    4242        } // for
    4343}
  • tests/coroutine/fibonacci_1.cfa

    r5e49e47 rd0c91a6  
    1010// Created On       : Thu Apr 26 23:20:08 2018
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Aug 18 11:21:02 2018
    13 // Update Count     : 13
     12// Last Modified On : Tue Dec 11 21:57:54 2018
     13// Update Count     : 14
    1414//
    1515
     
    3636        Fibonacci f1, f2;
    3737        for ( 10 ) {                                                                            // print N Fibonacci values
    38                 sout | next( f1 ) | next( f2 ) | endl;
     38                sout | next( f1 ) | next( f2 );
    3939        } // for
    4040}
  • tests/coroutine/fmtLines.cfa

    r5e49e47 rd0c91a6  
    1010// Created On       : Sun Sep 17 21:56:15 2017
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Aug 16 08:20:54 2018
    13 // Update Count     : 45
     12// Last Modified On : Sat Dec 22 18:27:00 2018
     13// Update Count     : 57
    1414//
    1515
     
    2424void main( Format & fmt ) with( fmt ) {
    2525        for () {                                                                                        // for as many characters
    26                 for ( g; 5 ) {                                                                  // groups of 5 blocks
    27                         for ( b; 4 ) {                                                          // blocks of 4 characters
     26                for ( g = 0; g < 5; g += 1 ) {                                  // groups of 5 blocks
     27                        for ( b = 0; b < 4; b += 1 ) {                          // blocks of 4 characters
    2828                                for () {                                                                // for newline characters
    2929                                        suspend();
    30                                         if ( ch != '\n' ) break;                        // ignore newline
     30                                  if ( ch != '\n' ) break;                              // ignore newline
    3131                                } // for
    3232                                sout | ch;                                                              // print character
     
    3434                        sout | "  ";                                                            // print block separator
    3535                } // for
    36                 sout | endl;                                                                    // print group separator
     36                sout | nl;                                                                              // print group separator
    3737        } // for
    3838} // main
     
    4343
    4444void ^?{}( Format & fmt ) with( fmt ) {
    45         if ( g != 0 || b != 0 ) sout | endl;
     45        if ( g != 0 || b != 0 ) sout | nl;
    4646}
    4747
    4848void format( Format & fmt ) {
    4949        resume( fmt );
    50 } // prt
     50} // format
    5151
    5252int main() {
    5353        Format fmt;
     54        sout | nlOff;                                                                           // turn off auto newline
    5455
    5556  eof: for () {                                                                                 // read until end of file
  • tests/coroutine/pingpong.cfa

    r5e49e47 rd0c91a6  
    1010// Created On       : Wed Sep 20 11:55:23 2017
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Aug 18 11:31:11 2018
    13 // Update Count     : 28
     12// Last Modified On : Tue Dec 11 21:58:06 2018
     13// Update Count     : 29
    1414//
    1515
     
    2424
    2525void ?{}( PingPong & this, const char * name, unsigned int N, PingPong & part ) {
     26        (this.__cor){name};
    2627        this.name = name;
    2728        this.N = N;
     
    4041void main( PingPong & pingpong ) {                                              // ping's starter ::main, pong's starter ping
    4142        for ( pingpong.N ) {                                                            // N ping-pongs
    42                 sout | pingpong.name | endl;
     43                sout | pingpong.name;
    4344                cycle( *pingpong.part );
    4445        } // for
  • tests/coroutine/prodcons.cfa

    r5e49e47 rd0c91a6  
    1010// Created On       : Mon Sep 18 12:23:39 2017
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Aug 18 12:55:10 2018
    13 // Update Count     : 51
     12// Last Modified On : Wed Dec 12 23:04:49 2018
     13// Update Count     : 53
    1414//
    1515
     
    2424
    2525coroutine Prod {
    26         Cons * c;
     26        Cons & c;
    2727        int N, money, receipt;
    2828};
     
    3030        // 1st resume starts here
    3131        for ( i; N ) {                                                                          // N pairs of values
    32                 int p1 = random( 100 );
    33                 int p2 = random( 100 );
    34                 sout | p1 | " " | p2 | endl;
    35                 int status = delivery( *c, p1, p2 );
    36                 sout | " $" | money | endl;
    37                 sout | status | endl;
     32                int p1 = random( 100 ), p2 = random( 100 );
     33                sout | p1 | " " | p2;
     34                int status = delivery( c, p1, p2 );
     35                sout | " $" | money | nl | status;
    3836                receipt += 1;
    3937        }
    40         stop( *c );
    41         sout | "prod stops" | endl;
     38        stop( c );
     39        sout | "prod stops";
    4240}
    4341int payment( Prod & prod, int money ) {
     
    4745}
    4846void start( Prod & prod, int N, Cons &c ) {
    49         prod.N = N;
    50         prod.c = &c;
    51         prod.receipt = 0;
     47        &prod.c = &c;
     48        prod.[N, receipt] = [N, 0];
    5249        resume( prod );                                                                         // activate main
    5350}
    5451
    5552coroutine Cons {
    56         Prod * p;
     53        Prod & p;
    5754        int p1, p2, status;
    5855        bool done;
    5956};
    6057void ?{}( Cons & cons, Prod & p ) {
    61         cons.p = &p;
    62         cons.status = 0;
    63         cons.done = false;
     58        &cons.p = &p;
     59        cons.[status, done ] = [0, false];
    6460}
    6561void ^?{}( Cons & cons ) {}
     
    6864        int money = 1, receipt;
    6965        for ( ; ! done; ) {
    70                 sout | p1 | " " | p2 | endl;
    71                 sout | " $" | money | endl;
     66                sout | p1 | " " | p2 | nl | " $" | money;
    7267                status += 1;
    73                 receipt = payment( *p, money );
    74                 sout | " #" | receipt | endl;
     68                receipt = payment( p, money );
     69                sout | " #" | receipt;
    7570                money += 1;
    7671        }
    77         sout | "cons stops" | endl;
     72        sout | "cons stops";
    7873}
    7974int delivery( Cons & cons, int p1, int p2 ) {
    80         cons.p1 = p1;
    81         cons.p2 = p2;
     75        cons.[p1, p2] = [p1, p2];
    8276        resume( cons );                                                                         // main 1st time, then
    8377        return cons.status;                                                                     // cons in payment
     
    9286        srandom( /* getpid() */ 103 );                                          // fixed seed for testing
    9387        start( prod, 5, cons );
    94         sout | "main stops" | endl;
     88        sout | "main stops";
    9589}
    9690
  • tests/coroutine/runningTotal.cfa

    r5e49e47 rd0c91a6  
    1010// Created On       : Wed Dec  6 08:05:27 2017
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Aug 16 08:22:29 2018
    13 // Update Count     : 3
     12// Last Modified On : Tue Dec 11 21:59:00 2018
     13// Update Count     : 4
    1414//
    1515
     
    4242        RunTotal rntl;
    4343        for ( i; 10 ) {
    44                 sout | i | add( rntl, i ) | endl;
     44                sout | i | add( rntl, i );
    4545        } // for
    4646}
  • tests/div.cfa

    r5e49e47 rd0c91a6  
    1010// Created On       : Tue Aug  8 16:28:43 2017
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Nov  6 17:53:10 2018
    13 // Update Count     : 19
     12// Last Modified On : Tue Dec  4 21:35:01 2018
     13// Update Count     : 20
    1414//
    1515
    1616#include <fstream.hfa>
    17 #include <stdlib.hfa>                                                                           // div
     17#include <stdlib.hfa>                                                                   // div
    1818
    1919struct T { int i; };
     
    2323
    2424int main( void ) {
    25         sout | "div" | div( 13, 5 ) | div( 13L, 5L ) | div( 13LL, 5LL ) | endl;
     25        sout | "div" | div( 13, 5 ) | div( 13L, 5L ) | div( 13LL, 5LL );
    2626        short s1 = 13, s2 = 5;
    27         sout | "div" | div( s1, s2 ) | endl;
     27        sout | "div" | div( s1, s2 );
    2828        T t1 = { 13 }, t2 = { 5 };
    29         sout | "div" | div( t1, t2 ) | endl;                            // polymorphic div
     29        sout | "div" | div( t1, t2 );                                           // polymorphic div
    3030} // main
    3131
  • tests/except-0.cfa

    r5e49e47 rd0c91a6  
    2525void ^?{}(signal_exit * this) {
    2626        printf("Exiting: %s\n", this->area);
    27 //      sout | "Exiting:" | this->area | endl;
     27//      sout | "Exiting:" | this->area;
    2828}
    2929
  • tests/fallthrough.cfa

    r5e49e47 rd0c91a6  
    1010// Created On       : Wed Mar 14 10:06:25 2018
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Nov  8 09:09:09 2018
    13 // Update Count     : 16
     12// Last Modified On : Mon Dec 24 11:24:35 2018
     13// Update Count     : 22
    1414//
    1515
     
    1818void test(int choice) {
    1919        choose ( choice ) {
    20                 case 1:
    21                         sout | "case 1" | endl;
    22                         fallthru;
    23                 case 2:
    24                         sout | "case 2" | endl;
    25                         fallthru;
    26                         sout | "did not fallthru" | endl;
    27                         if ( 7 ) fallthru common2;
    28                         fallthru common1;
    29                 case 3:
    30                         sout | "case 3" | endl;
    31                         fallthru default;
    32                         fallthru common1;
    33                 common1:
    34                         sout | "common1" | endl;
     20          case 1:
     21                sout | "case 1";
     22                fallthru;
     23          case 2:
     24                sout | "case 2";
     25                fallthru;
     26                sout | "did not fallthru";
     27                if ( 7 ) fallthru common2;
     28                fallthru common1;
     29          case 3:
     30                sout | "case 3";
     31                fallthru default;
     32                fallthru common1;
     33          common1:
     34                sout | "common1";
    3535                // break
    36                 case 4:
    37                         sout | "case 4" | endl;
    38                         fallthru common2;
    39                 case 5:
    40                         sout | "case 5" | endl;
    41                         fallthru common2;
    42                         fallthru default;
    43                 case 6:
    44                         sout | "case 6" | endl;
    45                         fallthru common2;
    46                 common2:
    47                         sout | "common2" | endl;
     36          case 4:
     37                sout | "case 4";
     38                fallthru common2;
     39          case 5:
     40                sout | "case 5";
     41                fallthru common2;
     42                fallthru default;
     43          case 6:
     44                sout | "case 6";
     45                fallthru common2;
     46          common2:
     47                sout | "common2";
    4848                // break
    49                 default:
    50                         sout | "default" | endl;
    51                         fallthru;
    52         }
     49          default:
     50                sout | "default";
     51                fallthru;
     52        } // choose
    5353
    54         sout | endl;
     54        sout | nl;
    5555
    5656        switch ( choice ) {
    5757          case 1:
    58                 sout | "case 1" | endl;
     58                sout | "case 1";
    5959                switch ( choice ) {
    6060                  case 1:
    61                         sout | "case 1" | endl;
     61                        sout | "case 1";
    6262                        for ( int i = 0; i < 4; i += 1 ) {
    63                                 printf("%d\n", i);
     63                                sout | i;
    6464                                if ( i == 2 ) fallthru common;
    6565                        } // for
     
    6767                break;
    6868          case 5:
    69                 sout | "case 5" | endl;
     69                sout | "case 5";
    7070                if ( choice == 5 ) {
    7171                        if ( choice != 5 ) {
    72                                 sout | "error" | endl;
     72                                sout | "error";
    7373                        } else {
    74                                 sout | "check" | endl;
     74                                sout | "check";
    7575                                fallthru common;
    7676                        } // if
    7777                } // if
    7878          common:
    79                 printf( "common\n" );
     79                sout | "common";
    8080                fallthru;
    8181                break;
    8282          default:
    83                 printf( "default\n" );
     83                sout | "default";
    8484                fallthru;
    8585        } // switch
     
    9393        fallthru default;
    9494        choose ( 3 ) {
    95                 case 2:
    96                         for () {
    97                                 choose ( 2 ) {
    98                                         case 1:
    99                                                 // ERROR: default is later, but in a different switch
    100                                                 fallthru default;
    101                                                 // ERROR: common3 is later, but not at the same level as a case clause
    102                                                 fallthru common3;
    103                                 }
    104                                 common3: ;
     95          case 2:
     96                for () {
     97                        choose ( 2 ) {
     98                          case 1:
     99                                // ERROR: default is later, but in a different switch
     100                                fallthru default;
     101                                // ERROR: common3 is later, but not at the same level as a case clause
     102                                fallthru common3;
    105103                        }
    106                 default:
    107                 case 1:
    108                 common4:
    109                         // ERROR: attempt to jump up with fallthrough
    110                         if ( 7 ) fallthru common4;
    111                         // ERROR: attempt to jump up with fallthrough
    112                         fallthru default;
    113         }
     104                  common3: ;
     105                } // for
     106          default:
     107          case 1:
     108          common4:
     109                // ERROR: attempt to jump up with fallthrough
     110                if ( 7 ) fallthru common4;
     111                // ERROR: attempt to jump up with fallthrough
     112                fallthru default;
     113        } // choose
    114114#endif
    115115}
     
    117117int main() {
    118118        test( 1 );
    119         sout | endl;
     119        sout | nl;
    120120        test( 5 );
    121121}
  • tests/fstream_test.cfa

    r5e49e47 rd0c91a6  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Nov  6 17:53:56 2018
    13 // Update Count     : 66
     12// Last Modified On : Sat Dec 22 09:47:44 2018
     13// Update Count     : 68
    1414//
    1515
     
    1818int main( void ) {
    1919        int nombre;
    20         sout | "Entrez un nombre, s'il vous plaît:" | endl;
     20        sout | "Entrez un nombre, s'il vous plaît:";
    2121        sin  | nombre;
    22         sout | "Vous avez entré" | nombre | endl;
     22        sout | "Vous avez entré" | nombre;
    2323        sout | "le nombre" | nombre | "est"
    24                  | (nombre > 0 ? "positif" : nombre == 0 ? "zéro" : "négatif") | endl;
     24                 | (nombre > 0 ? "positif" : nombre == 0 ? "zéro" : "négatif");
    2525
    26         sout | "Entrez trois nombres, s'il vous plaît: " | endl;
     26        sout | "Entrez trois nombres, s'il vous plaît:";
    2727        int i, j, k;
    2828        sin  | i | j | k;
    29         sout | "Vous avez entré" | "i:" | "" | i | "j:" | "" | j | "k:" | "" | k | endl;
     29        sout | "Vous avez entré" | "i:" | "" | i | "j:" | "" | j | "k:" | "" | k;
    3030}
    3131
  • tests/function-operator.cfa

    r5e49e47 rd0c91a6  
    1010// Created On       : Fri Aug 25 15:21:11 2017
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Aug  2 09:27:53 2018
    13 // Update Count     : 8
     12// Last Modified On : Tue Dec  4 21:37:09 2018
     13// Update Count     : 9
    1414//
    1515
     
    8383// TODO: abstract over (os, T)
    8484os_wrapper ?=?(os_wrapper & wrapper, int x) {
    85         *wrapper.out | x | endl;
     85        *wrapper.out | x;
    8686        return wrapper;
    8787}
  • tests/genericUnion.cfa

    r5e49e47 rd0c91a6  
     1//
     2// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
     3//
     4// The contents of this file are covered under the licence agreement in the
     5// file "LICENCE" distributed with Cforall.
     6//
     7// genericUnion.cfa --
     8//
     9// Author           : Peter A. Buhr
     10// Created On       : Tue Dec 25 14:42:46 2018
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Tue Dec 25 14:46:33 2018
     13// Update Count     : 2
     14//
     15
    116#include <limits.hfa>
    217
     
    419union ByteView {
    520        T val;
    6         char bytes[(sizeof(int))]; // want to change to sizeof(T)
     21        char bytes[(sizeof(int))];                                                      // want to change to sizeof(T)
    722};
    823
    924forall(otype T)
    1025void print(ByteView(T) x) {
    11         for (int i = 0; i < sizeof(int); i++) { // want to change to sizeof(T)
     26        for (int i = 0; i < sizeof(int); i++) {                         // want to change to sizeof(T)
    1227                printf("%02x", x.bytes[i] & 0xff);
    1328        }
     
    2944        f(i, -1);
    3045}
     46
     47// Local Variables: //
     48// tab-width: 4 //
     49// compile-command: "cfa genericUnion.cfa" //
     50// End: //
  • tests/gmp.cfa

    r5e49e47 rd0c91a6  
    1010// Created On       : Tue Apr 19 08:55:51 2016
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Nov  6 17:54:34 2018
    13 // Update Count     : 557
     12// Last Modified On : Thu Dec 20 22:41:47 2018
     13// Update Count     : 559
    1414//
    1515
     
    1919
    2020int main( void ) {
    21         sout | "constructors" | endl;
     21        sout | "constructors";
    2222        short int si = 3;
    2323        Int x = { "50000000000000000000" }, y = { si }, z = x + y;
    24         sout | x | y | z | endl;
    25         sout | "x:" | x | "y:" | y | "z:" | z | endl;
     24        sout | x | y | z;
     25        sout | "x:" | x | "y:" | y | "z:" | z;
    2626
    27         sout | "conversions" | endl;
     27        sout | "conversions";
    2828        y = 'a';
    29         sout | "y:" | y | endl;
     29        sout | "y:" | y;
    3030        y = "12345678901234567890123456789";
    31         sout | "y:" | y | endl;
     31        sout | "y:" | y;
    3232        y = 100`mp + 100`mp;
    33         sout | "y:" | y | endl;
     33        sout | "y:" | y;
    3434        y = -200u`mp + -200u`mp;
    35         sout | "y:" | y | endl;
     35        sout | "y:" | y;
    3636        y = "12345678901234567890123456789"`mp + "12345678901234567890123456789"`mp;
    37         sout | "y:" | y | endl;
     37        sout | "y:" | y;
    3838        y = si;
    39         sout | "y:" | y | endl;
     39        sout | "y:" | y;
    4040        y = -3;
    41         sout | "y:" | y | endl;
     41        sout | "y:" | y;
    4242        y += 7;
    43         sout | "y:" | y | endl;
     43        sout | "y:" | y;
    4444        y -= 1;
    45         sout | "y:" | y | endl;
     45        sout | "y:" | y;
    4646        int b;
    4747        b = y;
    4848        si = y;
    49         sout | "y:" | y | "b:" | b | "si:" | si | endl;
     49        sout | "y:" | y | "b:" | b | "si:" | si;
    5050
    51         sout | "comparison" | endl;
    52         sout | x == x | endl;
    53         sout | x != x | endl;
    54         sout | x < x | endl;
    55         sout | x <= x | endl;
    56         sout | x > x | endl;
    57         sout | x >= x | endl;
     51        sout | "comparison";
     52        sout | x == x;
     53        sout | x != x;
     54        sout | x < x;
     55        sout | x <= x;
     56        sout | x > x;
     57        sout | x >= x;
    5858
    59         sout | "arithmetic" | endl;
     59        sout | "arithmetic";
    6060        z = x + y + z;
    61         sout | "z:" | z | endl;
     61        sout | "z:" | z;
    6262        z = z = x;
    63         sout | "z:" | z | endl;
     63        sout | "z:" | z;
    6464        z = x - y - z;
    65         sout | "z:" | z | endl;
     65        sout | "z:" | z;
    6666        z = x * y * z;
    67         sout | "z:" | z | endl;
     67        sout | "z:" | z;
    6868        z = x * 3;
    69         sout | "z:" | z | endl;
     69        sout | "z:" | z;
    7070        z = 3 * x;
    71         sout | "z:" | z | endl;
     71        sout | "z:" | z;
    7272        z = x / 3;
    73         sout | "z:" | z | endl;
    74         sout | div( x, 3 ) | x / 3 | "," | x % 3 | endl;
     73        sout | "z:" | z;
     74        sout | div( x, 3 ) | x / 3 | "," | x % 3;
    7575        [ x, y ] = div( x, 3 );
    76         sout | "x:" | x | "y:" | y | endl;
     76        sout | "x:" | x | "y:" | y;
    7777
    78         sout | endl;
     78        sout | nl;
    7979
    8080        sin | x | y | z;
    81         sout | x | y | z | endl;
     81        sout | x | y | z;
    8282
    83         sout | endl;
     83        sout | nl;
    8484
    85         sout | "Fibonacci Numbers" | endl;
     85        sout | "Fibonacci Numbers";
    8686        Int fn, fn1, fn2;
    8787        fn = (Int){0}; fn1 = fn;                                                        // 1st case
    88         sout | (int)0 | fn | endl;
     88        sout | (int)0 | fn;
    8989        fn = 1; fn2 = fn1; fn1 = fn;                                            // 2nd case
    90         sout | 1 | fn | endl;
     90        sout | 1 | fn;
    9191        for ( i; 2u ~= 200 ) {
    9292                fn = fn1 + fn2; fn2 = fn1; fn1 = fn;                    // general case
    93                 sout | i | fn | endl;
     93                sout | i | fn;
    9494        } // for
    9595
    96         sout | endl;
     96        sout | nl;
    9797
    98         sout | "Factorial Numbers" | endl;
     98        sout | "Factorial Numbers";
    9999        Int fact = 1;                                                                           // 1st case
    100         sout | (int)0 | fact | endl;
     100        sout | (int)0 | fact;
    101101        for ( i; 1u ~= 40u ) {
    102102                fact *= i;                                                                              // general case
    103                 sout | i | fact | endl;
     103                sout | i | fact;
    104104        } // for
    105105} // main
  • tests/heap.cfa

    r5e49e47 rd0c91a6  
    1010// Created On       : Tue Nov  6 17:54:56 2018
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Nov  8 09:03:54 2018
    13 // Update Count     : 17
     12// Last Modified On : Tue Dec 11 21:52:40 2018
     13// Update Count     : 18
    1414//
    1515
     
    4545                for ( i; NoOfAllocs ) {
    4646                        locns[i] = alloc( i );
    47                         //sout | (void *)locns[i] | endl;
     47                        //sout | (void *)locns[i];
    4848                        for ( k; i ) locns[i][k] = '\345';
    4949                } // for
    50                 //sout | (char *)sbrk(0) - start | " bytes" | endl;
     50                //sout | (char *)sbrk(0) - start | " bytes";
    5151
    5252                for ( i; NoOfAllocs ) {
    53                         //sout | (void *)locns[i] | endl;
     53                        //sout | (void *)locns[i];
    5454                        for ( k; i ) if ( locns[i][k] != '\345' ) abort( "new/delete corrupt storage1" );
    5555                        free( locns[i] );
    5656                } // for
    57                 //sout | (char *)sbrk(0) - start | " bytes" | endl;
     57                //sout | (char *)sbrk(0) - start | " bytes";
    5858
    5959                for ( i; NoOfAllocs ) {
    6060                        locns[i] = alloc( i );
    61                         //sout | (void *)locns[i] | endl;
     61                        //sout | (void *)locns[i];
    6262                        for ( k; i ) locns[i][k] = '\345';
    6363                } // for
    6464                for ( i; NoOfAllocs - 1 -~= 0 ) {
    65                         //sout | (void *)locns[i] | endl;
     65                        //sout | (void *)locns[i];
    6666                        for ( k; i ) if ( locns[i][k] != '\345' ) abort( "new/delete corrupt storage2" );
    6767                        free( locns[i] );
     
    186186
    187187        for ( a; libAlign() ~= limit ~ a ) {                            // generate powers of 2
    188                 //sout | alignments[a] | endl;
     188                //sout | alignments[a];
    189189                for ( s; 1 ~ NoOfAllocs ) {                                             // allocation of size 0 can return null
    190190                        char * area = (char *)memalign( a, s );
    191191                        if ( area == 0 ) abort( "memalign/free out of memory" );
    192                         //sout | i | " " | area | endl;
     192                        //sout | i | " " | area;
    193193                        if ( (size_t)area % a != 0 || malloc_alignment( area ) != a ) { // check for initial alignment
    194194                                abort( "memalign/free bad alignment : memalign(%d,%d) = %p", (int)a, s, area );
     
    203203
    204204        for ( a; libAlign() ~= limit ~ a ) {                            // generate powers of 2
    205                 //sout | alignments[a] | endl;
     205                //sout | alignments[a];
    206206                for ( i; 1 ~ NoOfMmaps ) {
    207207                        size_t s = i + default_mmap_start();            // cross over point
    208208                        char * area = (char *)memalign( a, s );
    209209                        if ( area == 0 ) abort( "memalign/free out of memory" );
    210                         //sout | i | " " | area | endl;
     210                        //sout | i | " " | area;
    211211                        if ( (size_t)area % a != 0 || malloc_alignment( area ) != a ) { // check for initial alignment
    212212                                abort( "memalign/free bad alignment : memalign(%d,%d) = %p", (int)a, (int)s, area );
     
    268268                char * area = (char *)memalign( a, amount );    // aligned N-byte allocation
    269269                if ( area == 0 ) abort( "memalign/realloc/free out of memory" ); // no storage ?
    270                 //sout | alignments[a] | " " | area | endl;
     270                //sout | alignments[a] | " " | area;
    271271                if ( (size_t)area % a != 0 || malloc_alignment( area ) != a ) { // check for initial alignment
    272272                        abort( "memalign/realloc/free bad alignment : memalign(%d,%d) = %p", (int)a, (int)amount, area );
     
    279279                        area = (char *)realloc( area, s );                      // attempt to reuse storage
    280280                        if ( area == 0 ) abort( "memalign/realloc/free out of memory" ); // no storage ?
    281                         //sout | i | " " | area | endl;
     281                        //sout | i | " " | area;
    282282                        if ( (size_t)area % a != 0 ) {                          // check for initial alignment
    283283                                abort( "memalign/realloc/free bad alignment %p", area );
     
    291291
    292292        for ( a; libAlign() ~= limit ~ a ) {                            // generate powers of 2
    293                 //sout | alignments[a] | endl;
     293                //sout | alignments[a];
    294294                for ( s; 1 ~ limit ) {                                                  // allocation of size 0 can return null
    295295                        char * area = (char *)cmemalign( a, 1, s );
    296296                        if ( area == 0 ) abort( "cmemalign/free out of memory" );
    297                         //sout | i | " " | area | endl;
     297                        //sout | i | " " | area;
    298298                        if ( (size_t)area % a != 0 || malloc_alignment( area ) != a ) { // check for initial alignment
    299299                                abort( "cmemalign/free bad alignment : cmemalign(%d,%d) = %p", (int)a, s, area );
     
    314314                char * area = (char *)cmemalign( a, 1, amount ); // aligned N-byte allocation
    315315                if ( area == 0 ) abort( "cmemalign/realloc/free out of memory" ); // no storage ?
    316                 //sout | alignments[a] | " " | area | endl;
     316                //sout | alignments[a] | " " | area;
    317317                if ( (size_t)area % a != 0 || malloc_alignment( area ) != a ) { // check for initial alignment
    318318                        abort( "cmemalign/realloc/free bad alignment : cmemalign(%d,%d) = %p", (int)a, (int)amount, area );
     
    328328                        area = (char *)realloc( area, s );                      // attempt to reuse storage
    329329                        if ( area == 0 ) abort( "cmemalign/realloc/free out of memory" ); // no storage ?
    330                         //sout | i | " " | area | endl;
     330                        //sout | i | " " | area;
    331331                        if ( (size_t)area % a != 0 || malloc_alignment( area ) != a ) { // check for initial alignment
    332332                                abort( "cmemalign/realloc/free bad alignment %p", area );
     
    339339                free( area );
    340340    } // for
    341         //sout | "worker" | thisTask() | "successful completion" | endl;
     341        //sout | "worker" | thisTask() | "successful completion";
    342342} // Worker main
    343343
  • tests/hello.cfa

    r5e49e47 rd0c91a6  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Nov  6 17:56:22 2018
    13 // Update Count     : 16
     12// Last Modified On : Tue Dec  4 21:38:39 2018
     13// Update Count     : 17
    1414//
    1515
     
    1717
    1818int main() {
    19         sout | "Hello world!" | endl;
    20         sout | "Bonjour le monde!" | endl;
    21         sout | "Hola Mundo!" | endl;
    22         sout | "Hallo Welt!" | endl;
    23         sout | "Kaixo Mundua!" | endl;
    24         sout | "Chào thế giới!" | endl;
    25         sout | "Привет мир!" | endl;
    26         sout | "שלום עולם!" | endl;
    27         sout | "你好,世界!" | endl;
    28         sout | "こんにちは世界!" | endl;
    29         sout | "안녕하세요 세계!" | endl;
    30         sout | "नमस्ते दुनिया!" | endl;
     19        sout | "Hello world!";
     20        sout | "Bonjour le monde!";
     21        sout | "Hola Mundo!";
     22        sout | "Hallo Welt!";
     23        sout | "Kaixo Mundua!";
     24        sout | "Chào thế giới!";
     25        sout | "Привет мир!";
     26        sout | "שלום עולם!";
     27        sout | "你好,世界!";
     28        sout | "こんにちは世界!";
     29        sout | "안녕하세요 세계!";
     30        sout | "नमस्ते दुनिया!";
    3131}
    3232
  • tests/identity.cfa

    r5e49e47 rd0c91a6  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Nov  6 17:56:54 2018
    13 // Update Count     : 19
     12// Last Modified On : Tue Dec  4 21:38:59 2018
     13// Update Count     : 20
    1414//
    1515
     
    2222
    2323int main() {
    24         sout | "char\t\t\t"                                     | identity( 'z' ) | endl;
    25         sout | "signed int\t\t"                         | identity( 4 ) | endl;
    26         sout | "unsigned int\t\t"                       | identity( 4u ) | endl;
    27         sout | "signed long int\t\t"            | identity( 4l ) | endl;
    28         sout | "unsigned long int\t"            | identity( 4ul ) | endl;
    29         sout | "signed long long int\t"         | identity( 4ll ) | endl;
    30         sout | "unsigned long long int\t"       | identity( 4ull ) | endl;
    31         sout | "float\t\t\t"                            | identity( 4.1f ) | endl;
    32         sout | "double\t\t\t"                           | identity( 4.1 ) | endl;
    33         sout | "long double\t\t"                        | identity( 4.1l ) | endl;
    34         sout | "float _Complex\t\t"                     | identity( -4.1F-2.0iF ) | endl;
    35         sout | "double _Complex\t\t"            | identity( -4.1D-2.0iD ) | endl;
    36         sout | "long double _Complex\t"         | identity( -4.1L-2.0iL ) | endl;
     24        sout | "char\t\t\t"                                     | identity( 'z' );
     25        sout | "signed int\t\t"                         | identity( 4 );
     26        sout | "unsigned int\t\t"                       | identity( 4u );
     27        sout | "signed long int\t\t"            | identity( 4l );
     28        sout | "unsigned long int\t"            | identity( 4ul );
     29        sout | "signed long long int\t"         | identity( 4ll );
     30        sout | "unsigned long long int\t"       | identity( 4ull );
     31        sout | "float\t\t\t"                            | identity( 4.1f );
     32        sout | "double\t\t\t"                           | identity( 4.1 );
     33        sout | "long double\t\t"                        | identity( 4.1l );
     34        sout | "float _Complex\t\t"                     | identity( -4.1F-2.0iF );
     35        sout | "double _Complex\t\t"            | identity( -4.1D-2.0iD );
     36        sout | "long double _Complex\t"         | identity( -4.1L-2.0iL );
    3737}
    3838
  • tests/ifwhileCtl.cfa

    r5e49e47 rd0c91a6  
    1010// Created On       : Sat Aug 26 10:13:11 2017
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Nov  6 17:57:07 2018
    13 // Update Count     : 22
     12// Last Modified On : Tue Dec  4 21:39:18 2018
     13// Update Count     : 23
    1414//
    1515
     
    2222
    2323        if ( int x = 1 ) {
    24                 sout | "x != 0 correct" | endl;
     24                sout | "x != 0 correct";
    2525        } else {
    26                 sout | "x == 0 incorrect" | endl;
     26                sout | "x == 0 incorrect";
    2727        } // if
    2828
    2929        if ( int x = 4, y = 0 ) {
    30                 sout | "x != 0 && y != 0 incorrect" | endl;
     30                sout | "x != 0 && y != 0 incorrect";
    3131        } else if ( int x = 4, y = 1 ) {
    32                 sout | "x != 0 && y != 0 correct" | endl;
     32                sout | "x != 0 && y != 0 correct";
    3333        } else {
    34                 sout | "x == 0 || y == 0 incorrect" | endl;
     34                sout | "x == 0 || y == 0 incorrect";
    3535        } // if
    3636
    3737        if ( int x = 5, y = f( x ); x == y ) {
    38                 sout | "x == y correct" | endl;
     38                sout | "x == y correct";
    3939        } else {
    40                 sout | "x != y incorrect" | endl;
     40                sout | "x != y incorrect";
    4141        } // if
    4242
    4343        if ( struct S { int i; } s = { 3 }; s.i < 4 ) {
    4444                S s1;
    45                 sout | "s.i < 4 correct" | endl;
     45                sout | "s.i < 4 correct";
    4646        } else {
    4747                S s1;
    48                 sout | "s.i >= 4 incorrect" | endl;
     48                sout | "s.i >= 4 incorrect";
    4949        } // if
    5050
    5151        while ( int x = 1 ) {
    52                 sout | "x != 0 correct" | endl;
     52                sout | "x != 0 correct";
    5353                break;
    5454        } // while
    5555
    5656        while ( int x = 4, y = 0 ) {
    57                 sout | "x != 0 && y != 0 incorrect" | endl;
     57                sout | "x != 0 && y != 0 incorrect";
    5858        } // while
    5959
    6060        while ( int x = 5, y = f( x ); x == y ) {
    61                 sout | "x == y correct" | endl;
     61                sout | "x == y correct";
    6262                break;
    6363        } // while
     
    6565        while ( struct S { int i; } s = { 3 }; s.i < 4 ) {
    6666                S s1;
    67                 sout | "s.i < 4 correct" | endl;
     67                sout | "s.i < 4 correct";
    6868                break;
    6969        } // while
  • tests/io1.cfa

    r5e49e47 rd0c91a6  
    1010// Created On       : Wed Mar  2 16:56:02 2016
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Nov  6 17:57:17 2018
    13 // Update Count     : 105
     12// Last Modified On : Fri Dec 21 16:02:55 2018
     13// Update Count     : 114
    1414//
    1515
     
    1818int main() {
    1919        int x = 3, y = 5, z = 7;
    20         sout | x * 3 | y + 1 | z << 2 | x == y | (x | y) | (x || y) | (x > z ? 1 : 2) | endl;
    21         sout | 1 | 2 | 3 | endl;
    22         sout | '1' | '2' | '3' | endl;
    23         sout | 1 | "" | 2 | "" | 3 | endl;
    24         sout | endl;
     20        sout | x * 3 | y + 1 | z << 2 | x == y | (x | y) | (x || y) | (x > z ? 1 : 2);
     21        sout | 1 | 2 | 3;
     22        sout | '1' | '2' | '3';
     23        sout | 1 | "" | 2 | "" | 3;
     24        sout | nl;
    2525
    26         sout | "opening delimiters" | endl;
    27         sout
    28                  | "x (" | 1
    29                  | "x [" | 2
    30                  | "x {" | 3
    31                  | "x =" | 4
    32                  | "x $" | 5
    33                  | "x £" | 6
    34                  | "x ¥" | 7
    35                  | "x ¡" | 8
    36                  | "x ¿" | 9
    37                  | "x «" | 10
    38                  | endl | endl;
     26        sout | nlOff;
     27        sout | "opening delimiters" | nl;
     28        sout | "x (" | 1;
     29        sout | "x [" | 2;
     30        sout | "x {" | 3;
     31        sout | "x =" | 4;
     32        sout | "x $" | 5;
     33        sout | "x £" | 6;
     34        sout | "x ¥" | 7;
     35        sout | "x ¡" | 8;
     36        sout | "x ¿" | 9;
     37        sout | "x «" | 10;
     38        sout | nl | nl;
    3939
    40         sout | "closing delimiters" | endl;
    41         sout
    42                  | 1 | ", x"
    43                  | 2 | ". x"
    44                  | 3 | "; x"
    45                  | 4 | "! x"
    46                  | 5 | "? x"
    47                  | 6 | "% x"
    48                  | 7 | "¢ x"
    49                  | 8 | "» x"
    50                  | 9 | ") x"
    51                  | 10 | "] x"
    52                  | 11 | "} x"
    53                  | endl | endl;
     40        sout | "closing delimiters" | nl;
     41        sout | 1 | ", x";
     42        sout | 2 | ". x";
     43        sout | 3 | "; x";
     44        sout | 4 | "! x";
     45        sout | 5 | "? x";
     46        sout | 6 | "% x";
     47        sout | 7 | "¢ x";
     48        sout | 8 | "» x";
     49        sout | 9 | ") x";
     50        sout | 10 | "] x";
     51        sout | 11 | "} x";
     52        sout | nl | nl;
    5453
    55         sout | "opening/closing delimiters" | endl;
    56         sout
    57                  | "x`" | 1 | "`x'" | 2
    58                  | "'x\"" | 3 | "\"x:" | 4
    59                  | ":x " | 5 | " x\t" | 6
    60                  | "\tx\f" | 7 | "\fx\v" | 8
    61                  | "\vx\n" | 9 | "\nx\r" | 10
    62                  | "\rx"
    63                  | endl | endl;
     54        sout | "opening/closing delimiters" | nl;
     55        sout | "x`" | 1 | "`x'" | 2;
     56        sout | "'x\"" | 3 | "\"x:" | 4;
     57        sout | ":x " | 5 | " x\t" | 6;
     58        sout | "\tx\f" | 7 | "\fx\v" | 8;
     59        sout | "\vx\n" | 9 | "\nx\r" | 10;
     60        sout | "\rx";
     61        sout | nl | nl;
    6462
    65         sout | "override opening/closing delimiters" | endl;
    66         sout | "x ( " | 1 | " ) x" | 2 | " , x" | 3 | " :x: " | 4 | endl;
    67         sout | endl;
     63        sout | nlOn;
     64        sout | "override opening/closing delimiters";
     65        sout | "x ( " | 1 | " ) x" | 2 | " , x" | 3 | " :x: " | 4;
     66        sout | nl;
    6867}
    6968
  • tests/io2.cfa

    r5e49e47 rd0c91a6  
    1010// Created On       : Wed Mar  2 16:56:02 2016
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Nov  6 17:57:28 2018
    13 // Update Count     : 104
     12// Last Modified On : Fri Dec 21 08:20:14 2018
     13// Update Count     : 112
    1414//
    1515
    1616#include <fstream.hfa>
    1717
    18  #define xstr(s) str(s)
     18#define xstr(s) str(s)
    1919#define str(s) #s
    2020
     
    4141        char s1[size], s2[size];
    4242
    43         ifstream in = { xstr(IN_DIR) "io.data" };                                               // create / open file
     43        ifstream in = { xstr(IN_DIR) "io.data" };                       // create / open file
    4444
    45         sout | "input bacis types" | endl;
    46         in       | b                                                                                    // boolean
    47                  | c | sc | usc                                                                 // character
    48                  | si | usi | i | ui | li | uli | lli | ulli    // integral
    49                  | f | d | ld                                                                   // floating point
    50                  | fc | dc | ldc                                                                // floating-point complex
    51                  | cstr( s1 ) | cstr( s2, size );                               // C string, length unchecked and checked
    52         sout | endl;
     45        sout | "input bacis types";
     46        in       | b;                                                                                   // boolean
     47        in       | c | sc | usc;                                                                // character
     48        in       | si | usi | i | ui | li | uli | lli | ulli;   // integral
     49        in       | f | d | ld;                                                                  // floating point
     50        in       | fc | dc | ldc;                                                               // floating-point complex
     51        in       | cstr( s1 ) | cstr( s2, size );                               // C string, length unchecked and checked
     52        sout | nl;
    5353
    54         sout | "output basic types" | endl;
    55         sout | b | endl                                                                         // boolean
    56                  | c | ' ' | sc | ' ' | usc | endl                              // character
    57                  | si | usi | i | ui | li | uli | lli | ulli | endl // integral
    58                  | f | d | ld | endl                                                    // floating point
    59                  | fc | dc | ldc | endl;                                                // complex
    60         sout | endl;
     54        sout | "output basic types";
     55        sout | b;                                                                                       // boolean
     56        sout | c | ' ' | sc | ' ' | usc;                                        // character
     57        sout | si | usi | i | ui | li | uli | lli | ulli;       // integral
     58        sout | f | d | ld;                                                                      // floating point
     59        sout | fc | dc | ldc;                                                           // complex
     60        sout | nl;
    6161
    62         sout | "tuples" | endl;
     62        sout | "tuples";
    6363        [int, [ int, int ] ] t1 = [ 1, [ 2, 3 ] ], t2 = [ 4, [ 5, 6 ] ];
    64         sout | t1 | t2 | endl;                                                          // print tuple
    65         sout | endl;
     64        sout | t1 | t2;                                                                         // print tuple
     65        sout | nl;
    6666
    67         sout | "toggle separator" | endl;
    68         sout | f | "" | d | "" | ld | endl                                      // floating point without separator
    69                  | sepDisable | fc | dc | ldc | endl                    // complex without separator
    70                  | fc | sepOn | dc | ldc | endl                                 // local separator add
    71                  | sepEnable | fc | dc | ldc | endl                             // complex with separator
    72                  | fc | sepOff | dc | ldc | endl                                // local separator removal
    73                  | s1 | sepOff | s2 | endl                                              // local separator removal
    74                  | s1 | "" | s2 | endl;                                                 // local separator removal
    75         sout | endl;
     67        sout | "toggle separator";
     68        sout | f | "" | d | "" | ld;                                            // floating point without separator
     69        sout | sepDisable | fc | dc | ldc;                                      // complex without separator
     70        sout | fc | sepOn | dc | ldc;                                           // local separator add
     71        sout | sepEnable | fc | dc | ldc;                                       // complex with separator
     72        sout | fc | sepOff | dc | ldc;                                          // local separator removal
     73        sout | s1 | sepOff | s2;                                                        // local separator removal
     74        sout | s1 | "" | s2;                                                            // local separator removal
     75        sout | nl;
    7676
    77         sout | "change separator" | endl;
    78         sout | "from \"" | sep | "\"";
     77        sout | "change separator";
     78        sout | "from \"" | sep | "\"" | nonl;
    7979        sepSet( sout, ", $" );                                                          // change separator, maximum of 15 characters
    80         sout | " to \"" | sep | "\"" | endl;
    81         sout | f | d | ld | endl
    82                  | fc | dc | ldc | endl
    83                  | s1 | s2 | endl
    84                  | t1 | t2 | endl;                                                              // print tuple
    85         sout | endl;
    86         sout | "from \"" | sep | "\" ";
     80        sout | " to \"" | sep | "\"";
     81        sout | f | d | ld;
     82        sout | fc | dc | ldc;
     83        sout | s1 | s2;
     84        sout | t1 | t2;                                                                         // print tuple
     85        sout | nl;
     86        sout | "from \"" | sep | "\" " | nonl;
    8787        sepSet( sout, " " );                                                            // restore separator
    88         sout | "to \"" | sep | "\"" | endl;
    89         sout | f | d | ld | endl
    90                  | fc | dc | ldc | endl
    91                  | s1 | s2 | endl
    92                  | t1 | t2 | endl;                                                              // print tuple
    93         sout | endl;
     88        sout | "to \"" | sep | "\"";
     89        sout | f | d | ld;
     90        sout | fc | dc | ldc;
     91        sout | s1 | s2;
     92        sout | t1 | t2;                                                                         // print tuple
     93        sout | nl;
    9494
    95         sout | "check sepOn/sepOff" | endl;
    96         sout | sepOn | 1 | 2 | 3 | sepOn | endl;                        // no separator at start/end of line
    97         sout | 1 | sepOff | 2 | 3 | endl;                                       // locally turn off implicit separator
    98         sout | sepOn | sepOn | 1 | 2 | 3 | sepOn | sepOff | sepOn | '\n'; // no separator at start/end of line
    99         sout | 1 | 2 | 3 | "\n\n" | sepOn;                                      // no separator at start of next line
    100         sout | 1 | 2 | 3 | endl;
    101         sout | endl;
     95        sout | "check sepOn/sepOff";
     96        sout | sepOn | 1 | 2 | 3 | sepOn;                                       // no separator at start/end of line
     97        sout | 1 | sepOff | 2 | 3;                                                      // locally turn off implicit separator
     98        sout | sepOn | sepOn | 1 | 2 | 3 | sepOn | sepOff | sepOn | '\n' | nonl; // no separator at start/end of line
     99        sout | 1 | 2 | 3 | "\n\n" | sepOn | nonl;                                       // no separator at start of next line
     100        sout | 1 | 2 | 3;
     101        sout | nl;
    102102
    103         sout | "check enable/disable" | endl;
    104         sout | sepDisable | 1 | 2 | 3 | endl;                           // globally turn off implicit separation
    105         sout | 1 | sepOn | 2 | 3 | endl;                                        // locally turn on implicit separator
    106         sout | sepEnable | 1 | 2 | 3 | endl | sepDisable;       // globally turn on/off implicit separation
    107         sout | 1 | 2 | 3 | endl | sepEnable;                            // globally turn on implicit separation
    108         sout | 1 | 2 | 3 | sepOn | sepDisable | endl;           // ignore seperate at end of line
    109         sout | 1 | 2 | 3 | sepOn | sepEnable | endl;            // separator at end of line
    110         sout | 1 | 2 | 3 | endl;
    111         sout | endl;
     103        sout | "check enable/disable";
     104        sout | sepDisable | 1 | 2 | 3;                                          // globally turn off implicit separation
     105        sout | 1 | sepOn | 2 | 3;                                                       // locally turn on implicit separator
     106        sout | sepEnable | 1 | 2 | 3 | sepDisable;                      // globally turn on/off implicit separation
     107        sout | 1 | 2 | 3 | sepEnable;                                           // globally turn on implicit separation
     108        sout | 1 | 2 | 3 | sepOn | sepDisable;                          // ignore seperate at end of line
     109        sout | 1 | 2 | 3 | sepOn | sepEnable;                           // separator at end of line
     110        sout | 1 | 2 | 3;
     111        sout | nl;
    112112
    113 //      sout | fmt( d, "%8.3f" ) || endl;
    114 //      sout | endl;
     113//      sout | fmt( d, "%8.3f" );
    115114
    116115        sepSetTuple( sout, " " );                                                       // set tuple separator from ", " to " "
    117         sout | t1 | t2 | " \"" | sep | "\"" | endl;
     116        sout | t1 | t2 | " \"" | sep | "\"";
    118117        sepSetTuple( sout, ", " );                                                      // reset tuple separator to ", "
    119         sout | t1 | t2 | " \"" | sep | "\"" | endl;
    120         sout | t1 | t2 | endl;                                                          // print tuple
    121         sout | endl;
     118        sout | t1 | t2 | " \"" | sep | "\"";
     119        sout | t1 | t2;                                                                         // print tuple
     120        sout | nl;
    122121
    123122        [int, int, const char *, double] t3 = { 3, 4, "a", 7.2 };
    124         sout | [ 3, 4, "a", 7.2 ] | endl;
    125         sout | t3 | endl;
     123        sout | [ 3, 4, "a", 7.2 ];
     124        sout | t3;
    126125        sepSetTuple( sout, " " );
    127         sout | t3 | endl;
    128         sout | sepOn | t3 | sepDisable | t3 | sepEnable | t3 | endl;
     126        sout | t3;
     127        sout | sepOn | t3 | sepDisable | t3 | sepEnable | t3;
    129128        sepSet( sout, "^" );
    130129        sepSetTuple( sout, "-" );
    131         sout | t3 | 3 | 4 | t3 | endl;
     130        sout | t3 | 3 | 4 | t3;
    132131}
    133132
    134133// Local Variables: //
    135134// tab-width: 4 //
    136 // compile-command: "cfa io2.cfa" //
     135// compile-command: "cfa -DIN_DIR=".in/" io2.cfa" //
    137136// End: //
  • tests/literals.cfa

    r5e49e47 rd0c91a6  
    1010// Created On       : Sat Sep  9 16:34:38 2017
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Nov  6 17:58:07 2018
    13 // Update Count     : 138
     12// Last Modified On : Tue Dec  4 21:44:01 2018
     13// Update Count     : 139
    1414//
    1515
     
    1818#include <fstream.hfa>
    1919
    20 void f( char v ) { sout | "char " | v | endl; }
    21 void f( signed char v ) { sout | "signed char " | v | endl; }
    22 void f( unsigned char v ) { sout | "unsigned char " | v | endl; }
    23 void f( signed short v ) { sout | "signed short int" | v | endl; }
    24 void f( unsigned short v ) { sout | "unsigned short int" | v | endl; }
    25 void f( size_t v ) { sout | "size_t" | v | endl; }
     20void f( char v ) { sout | "char " | v; }
     21void f( signed char v ) { sout | "signed char " | v; }
     22void f( unsigned char v ) { sout | "unsigned char " | v; }
     23void f( signed short v ) { sout | "signed short int" | v; }
     24void f( unsigned short v ) { sout | "unsigned short int" | v; }
     25void f( size_t v ) { sout | "size_t" | v; }
    2626#endif // __CFA__
    2727
  • tests/loopctrl.cfa

    r5e49e47 rd0c91a6  
    1010// Created On       : Wed Aug  8 18:32:59 2018
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Nov  7 16:54:11 2018
    13 // Update Count     : 62
     12// Last Modified On : Sun Dec 23 23:00:29 2018
     13// Update Count     : 79
    1414//
    1515
     
    3232S ?-=?( S & t, one_t ) { t.i -= 1; t.j -= 1; return t; }
    3333ofstream & ?|?( ofstream & os, S v ) { return os | '(' | v.i | v.j | ')'; }
     34void & ?|?( ofstream & os, S v ) { (ofstream &)(os | v); nl( os ); }
    3435
    3536int main() {
    36         while () { sout | "empty"; break; }                     sout | endl;
    37         do { sout | "empty"; break; } while ();         sout | endl;
    38         for () { sout | "empty"; break; }                       sout | endl | endl;
     37        sout | nlOff;                                                                           // turn off auto newline
     38        while () { sout | "empty"; break; }                                     sout | nl;
     39        do { sout | "empty"; break; } while ();                         sout | nl;
     40        for () { sout | "empty"; break; }                                       sout | nl | nl;
    3941
    40         for ( 0 ) { sout | "A"; }                                       sout | "zero" | endl;
    41         for ( 1 ) { sout | "A"; }                                       sout | endl;
    42         for ( 10 ) { sout | "A"; }                                      sout | endl;
    43         for ( 1 ~= 10 ~ 2 ) { sout | "B"; }                     sout | endl;
    44         for ( 10 -~= 1 ~ 2 ) { sout | "C"; }            sout | endl;
    45         for ( 0.5 ~ 5.5 ) { sout | "D"; }                       sout | endl;
    46         for ( 5.5 -~ 0.5 ) { sout | "E"; }                      sout | endl | endl;
     42        for ( 0 ) { sout | "A"; }                                                       sout | "zero" | nl;
     43        for ( 1 ) { sout | "A"; }                                                       sout | nl;
     44        for ( 10 ) { sout | "A"; }                                                      sout | nl;
     45        for ( 1 ~= 10 ~ 2 ) { sout | "B"; }                                     sout | nl;
     46        for ( 10 -~= 1 ~ 2 ) { sout | "C"; }                            sout | nl;
     47        for ( 0.5 ~ 5.5 ) { sout | "D"; }                                       sout | nl;
     48        for ( 5.5 -~ 0.5 ) { sout | "E"; }                                      sout | nl | nl;
    4749
    48         for ( i; 10 ) { sout | i; }                                     sout | endl;
    49         for ( i; 1 ~= 10 ~ 2 ) { sout | i; }            sout | endl;
    50         for ( i; 10 -~= 1 ~ 2 ) { sout | i; }           sout | endl;
    51         for ( i; 0.5 ~ 5.5 ) { sout | i; }                      sout | endl;
    52         for ( i; 5.5 -~ 0.5 ) { sout | i; }                     sout | endl;
    53         for ( ui; 2u ~= 10u ~ 2u ) { sout | ui; }       sout | endl;
    54         for ( ui; 10u -~= 2u ~ 2u ) { sout | ui; }      sout | endl | endl | endl;
     50        for ( i; 10 ) { sout | i; }                                                     sout | nl;
     51        for ( i; 1 ~= 10 ~ 2 ) { sout | i; }                            sout | nl;
     52        for ( i; 10 -~= 1 ~ 2 ) { sout | i; }                           sout | nl;
     53        for ( i; 0.5 ~ 5.5 ) { sout | i; }                                      sout | nl;
     54        for ( i; 5.5 -~ 0.5 ) { sout | i; }                                     sout | nl;
     55        for ( ui; 2u ~= 10u ~ 2u ) { sout | ui; }                       sout | nl;
     56        for ( ui; 10u -~= 2u ~ 2u ) { sout | ui; }                      sout | nl | nl | nl;
    5557
    5658        enum { N = 10 };
    57         for ( N ) { sout | "N"; }                                       sout | endl;
    58         for ( i; N ) { sout | i; }                                      sout | endl;
    59         for ( i; N -~ 0 ) { sout | i; }                         sout | endl | endl | endl;
     59        for ( N ) { sout | "N"; }                                                       sout | nl;
     60        for ( i; N ) { sout | i; }                                                      sout | nl;
     61        for ( i; N -~ 0 ) { sout | i; }                                         sout | nl | nl | nl;
    6062
    6163        const int start = 3, comp = 10, inc = 2;
    62         for ( i; start ~ comp ~ inc + 1 ) { sout | i; } sout | endl | endl;
     64        for ( i; start ~ comp ~ inc + 1 ) { sout | i; }         sout | nl | nl;
    6365
    64         sout | endl;
    65         for ( S s = (S){0}; s < (S){10,10}; s += (S){1} ) { sout | s; } sout | endl;
    66         for ( s; (S){10,10} ) { sout | s; } sout | endl;
    67         sout | endl;
    68         for ( s; (S){0} ~ (S){10,10} ) { sout | s; } sout | endl;
    69         for ( s; (S){0} ~ (S){10,10} ~ (S){1} ) { sout | s; } sout | endl;
    70         for ( s; (S){0} ~= (S){10,10} ) { sout | s; } sout | endl;
    71         for ( s; (S){0} ~= (S){10,10} ~ (S){1} ) { sout | s; } sout | endl;
    72         sout | endl;
    73         for ( s; (S){10,10} -~ (S){0} ) { sout | s; } sout | endl;
    74         for ( s; (S){10,10} -~ (S){0} ~ (S){1} ) { sout | s; } sout | endl;
    75         for ( s; (S){10,10} -~= (S){0} ) { sout | s; } sout | endl;
    76         for ( s; (S){10,10} -~= (S){0} ~ (S){1} ) { sout | s; } sout | endl;
     66        sout | nl;
     67        for ( S s = (S){0}; s < (S){10,10}; s += (S){1} ) { sout | s; } sout | nl;
     68        for ( s; (S){10,10} ) { sout | s; } sout | nl;
     69        sout | nl;
     70        for ( s; (S){0} ~ (S){10,10} ) { sout | s; }             sout | nl;
     71        for ( s; (S){0} ~ (S){10,10} ~ (S){1} ) { sout | s; } sout | nl;
     72        for ( s; (S){0} ~= (S){10,10} ) { sout | s; }            sout | nl;
     73        for ( s; (S){0} ~= (S){10,10} ~ (S){1} ) { sout | s; } sout | nl;
     74        sout | nl;
     75        for ( s; (S){10,10} -~ (S){0} ) { sout | s; }            sout | nl;
     76        for ( s; (S){10,10} -~ (S){0} ~ (S){1} ) { sout | s; } sout | nl;
     77        for ( s; (S){10,10} -~= (S){0} ) { sout | s; }           sout | nl;
     78        for ( s; (S){10,10} -~= (S){0} ~ (S){1} ) { sout | s; } sout | nl;
    7779}
    7880
  • tests/math1.cfa

    r5e49e47 rd0c91a6  
    1010// Created On       : Fri Apr 22 14:59:21 2016
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Nov  6 17:58:37 2018
    13 // Update Count     : 86
     12// Last Modified On : Wed Dec 12 16:28:49 2018
     13// Update Count     : 89
    1414//
    1515
     
    2222        long double l;
    2323
    24         sout | "fmod:" | 5.0F % -2.0F | fmod( 5.0F, -2.0F ) | 5.0D % -2.0D | fmod( 5.0D, -2.0D ) | 5.0L % -2.0L | fmod( 5.0L, -2.0L ) | endl;
    25         sout | "remainder:" | remainder( 2.0F, 3.0F ) | remainder( 2.0D, 3.0D ) | remainder( 2.0L, 3.0L ) | endl;
     24        sout | "fmod:" | 5.0F % -2.0F | fmod( 5.0F, -2.0F ) | 5.0D % -2.0D | nonl;
     25        sout | fmod( 5.0D, -2.0D ) | 5.0L % -2.0L | fmod( 5.0L, -2.0L );
     26        sout | "remainder:" | remainder( 2.0F, 3.0F ) | remainder( 2.0D, 3.0D ) | remainder( 2.0L, 3.0L );
    2627        int quot;
    2728        f = remquo( 3.6F, 0.5F, &quot );
    28         sout | "remquo:" | quot | f;
     29        sout | "remquo:" | quot | f | nonl;
    2930        d = remquo( 3.6D, 0.5F, &quot );
    30         sout | quot | d;
     31        sout | quot | d | nonl;
    3132        l = remquo( 3.6L, 0.5L, &quot );
    32         sout | quot | l | endl;
    33         sout | "div:" | div( 3.6F, 0.5F ) | div( 3.6D, 0.5D ) | div( 3.6L, 0.5L ) | endl;
    34         sout | "fma:" | fma( 3.0F, -1.0F, 1.0F ) | fma( 3.0D, -1.0D, 1.0D ) | fma( 3.0L, -1.0L, , 1.0L ) | endl;
    35         sout | "fdim:" | fdim( 1.0F, -1.0F ) | fdim( 1.0D, -1.0D ) | fdim( 1.0L, -1.0L ) | endl;
    36         sout | "nan:" | (float)nan( "" ) | (double)nan( "" ) | (long double)nan( "" ) | endl;
     33        sout | quot | l;
     34        sout | "div:" | div( 3.6F, 0.5F ) | div( 3.6D, 0.5D ) | div( 3.6L, 0.5L );
     35        sout | "fma:" | fma( 3.0F, -1.0F, 1.0F ) | fma( 3.0D, -1.0D, 1.0D ) | fma( 3.0L, -1.0L, , 1.0L );
     36        sout | "fdim:" | fdim( 1.0F, -1.0F ) | fdim( 1.0D, -1.0D ) | fdim( 1.0L, -1.0L );
     37        sout | "nan:" | (float)nan( "" ) | (double)nan( "" ) | (long double)nan( "" );
    3738
    3839        //---------------------- Exponential ----------------------
    3940
    40         sout | "exp:" | exp( 1.0F ) | exp( 1.0D ) | exp( 1.0L ) | exp( 1.0F+1.0FI ) | exp( 1.0D+1.0DI ) | exp( 1.0DL+1.0LI ) | endl;
    41         sout | "exp2:" | exp2( 1.0F ) | exp2( 1.0D ) | exp2( 1.0L ) | endl;
    42         sout | "expm1:" | expm1( 1.0F ) | expm1( 1.0D ) | expm1( 1.0L ) | endl;
    43         sout | "pow:" | pow( 1.0F, 1.0F ) | pow( 1.0D, 1.0D ) | pow( 1.0L, 1.0L ) | pow( 1.0F+1.0FI, 1.0F+1.0FI ) | pow( 1.0D+1.0DI, 1.0D+1.0DI ) | pow( 1.5DL+1.5LI, 1.5DL+1.5LI ) | endl;
     41        sout | "exp:" | exp( 1.0F ) | exp( 1.0D ) | exp( 1.0L ) | nonl;
     42        sout | exp( 1.0F+1.0FI ) | exp( 1.0D+1.0DI ) | exp( 1.0DL+1.0LI );
     43        sout | "exp2:" | exp2( 1.0F ) | exp2( 1.0D ) | exp2( 1.0L );
     44        sout | "expm1:" | expm1( 1.0F ) | expm1( 1.0D ) | expm1( 1.0L );
     45        sout | "pow:" | pow( 1.0F, 1.0F ) | pow( 1.0D, 1.0D ) | pow( 1.0L, 1.0L ) | nonl;
     46        sout | pow( 1.0F+1.0FI, 1.0F+1.0FI ) | pow( 1.0D+1.0DI, 1.0D+1.0DI ) | pow( 1.5DL+1.5LI, 1.5DL+1.5LI );
    4447
    4548        int b = 4;
    4649        unsigned int e = 2;
    4750    b \= e;
    48     sout | "\\" | b | b \ e | endl;
    49     sout | "\\" | 'a' \ 3u | 2 \ 8u | 4 \ 3u | -4 \ 3u | 4 \ -3 | -4 \ -3 | 4.0 \ 2.1 | (1.0f+2.0fi) \ (3.0f+2.0fi) | endl;
     51    sout | "\\" | b | b \ e;
     52    sout | "\\" | 'a' \ 3u | 2 \ 8u | 4 \ 3u | -4 \ 3u | nonl;
     53        sout | 4 \ -3 | -4 \ -3 | 4.0 \ 2.1 | (1.0f+2.0fi) \ (3.0f+2.0fi);
    5054} // main
    5155
  • tests/math2.cfa

    r5e49e47 rd0c91a6  
    1010// Created On       : Fri Apr 22 14:59:21 2016
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Nov  6 17:58:55 2018
    13 // Update Count     : 83
     12// Last Modified On : Wed Dec 12 16:11:35 2018
     13// Update Count     : 87
    1414//
    1515
     
    2424        //---------------------- Logarithm ----------------------
    2525
    26         sout | "log:" | log( 1.0F ) | log( 1.0D ) | log( 1.0L ) | log( 1.0F+1.0FI ) | log( 1.0D+1.0DI ) | log( 1.0DL+1.0LI ) | endl;
    27         sout | "log2:" | log2( 8.0F ) | log2( 8.0D ) | log2( 8.0L ) | endl;
    28         sout | "log10:" | log10( 100.0F ) | log10( 100.0D ) | log10( 100.0L ) | endl;
    29         sout | "log1p:" | log1p( 1.0F ) | log1p( 1.0D ) | log1p( 1.0L ) | endl;
    30         sout | "ilogb:" | ilogb( 1.0F ) | ilogb( 1.0D ) | ilogb( 1.0L ) | endl;
    31         sout | "logb:" | logb( 8.0F ) | logb( 8.0D ) | logb( 8.0L ) | endl;
     26        sout | "log:" | log( 1.0F ) | log( 1.0D ) | log( 1.0L ) | nonl;
     27        sout | log( 1.0F+1.0FI ) | log( 1.0D+1.0DI ) | log( 1.0DL+1.0LI );
     28        sout | "log2:" | log2( 8.0F ) | log2( 8.0D ) | log2( 8.0L );
     29        sout | "log10:" | log10( 100.0F ) | log10( 100.0D ) | log10( 100.0L );
     30        sout | "log1p:" | log1p( 1.0F ) | log1p( 1.0D ) | log1p( 1.0L );
     31        sout | "ilogb:" | ilogb( 1.0F ) | ilogb( 1.0D ) | ilogb( 1.0L );
     32        sout | "logb:" | logb( 8.0F ) | logb( 8.0D ) | logb( 8.0L );
    3233
    33         sout | "sqrt:" | sqrt( 1.0F ) | sqrt( 1.0D ) | sqrt( 1.0L ) | sqrt( 1.0F+1.0FI ) | sqrt( 1.0D+1.0DI ) | sqrt( 1.0DL+1.0LI ) | endl;
    34         sout | "cbrt:" | cbrt( 27.0F ) | cbrt( 27.0D ) | cbrt( 27.0L ) | endl;
    35         sout | "hypot:" | hypot( 1.0F, -1.0F ) | hypot( 1.0D, -1.0D ) | hypot( 1.0L, -1.0L ) | endl;
     34        sout | "sqrt:" | sqrt( 1.0F ) | sqrt( 1.0D ) | sqrt( 1.0L ) | nonl;
     35        sout | sqrt( 1.0F+1.0FI ) | sqrt( 1.0D+1.0DI ) | sqrt( 1.0DL+1.0LI );
     36        sout | "cbrt:" | cbrt( 27.0F ) | cbrt( 27.0D ) | cbrt( 27.0L );
     37        sout | "hypot:" | hypot( 1.0F, -1.0F ) | hypot( 1.0D, -1.0D ) | hypot( 1.0L, -1.0L );
    3638
    3739        //---------------------- Trigonometric ----------------------
    3840
    39         sout | "sin:" | sin( 1.0F ) | sin( 1.0D ) | sin( 1.0L ) | sin( 1.0F+1.0FI ) | sin( 1.0D+1.0DI ) | sin( 1.0DL+1.0LI ) | endl;
    40         sout | "cos:" | cos( 1.0F ) | cos( 1.0D ) | cos( 1.0L ) | cos( 1.0F+1.0FI ) | cos( 1.0D+1.0DI ) | cos( 1.0DL+1.0LI ) | endl;
    41         sout | "tan:" | tan( 1.0F ) | tan( 1.0D ) | tan( 1.0L ) | tan( 1.0F+1.0FI ) | tan( 1.0D+1.0DI ) | tan( 1.0DL+1.0LI ) | endl;
    42         sout | "asin:" | asin( 1.0F ) | asin( 1.0D ) | asin( 1.0L ) | asin( 1.0F+1.0FI ) | asin( 1.0D+1.0DI ) | asin( 1.0DL+1.0LI ) | endl;
    43         sout | "acos:" | acos( 1.0F ) | acos( 1.0D ) | acos( 1.0L ) | acos( 1.0F+1.0FI ) | acos( 1.0D+1.0DI ) | acos( 1.0DL+1.0LI ) | endl;
    44         sout | "atan:" | atan( 1.0F ) | atan( 1.0D ) | atan( 1.0L ) | atan( 1.0F+1.0FI ) | atan( 1.0D+1.0DI ) | atan( 1.0DL+1.0LI ) | endl;
    45         sout | "atan2:" | atan2( 1.0F, 1.0F ) | atan2( 1.0D, 1.0D ) | atan2( 1.0L, 1.0L );
    46         sout | "atan:" | atan( 1.0F, 1.0F ) | atan( 1.0D, 1.0D ) | atan( 1.0L, 1.0L ) | endl;
     41        sout | "sin:" | sin( 1.0F ) | sin( 1.0D ) | sin( 1.0L ) | nonl;
     42        sout | sin( 1.0F+1.0FI ) | sin( 1.0D+1.0DI ) | sin( 1.0DL+1.0LI );
     43        sout | "cos:" | cos( 1.0F ) | cos( 1.0D ) | cos( 1.0L ) | nonl;
     44        sout | cos( 1.0F+1.0FI ) | cos( 1.0D+1.0DI ) | cos( 1.0DL+1.0LI );
     45        sout | "tan:" | tan( 1.0F ) | tan( 1.0D ) | tan( 1.0L ) | nonl;
     46        sout | tan( 1.0F+1.0FI ) | tan( 1.0D+1.0DI ) | tan( 1.0DL+1.0LI );
     47        sout | "asin:" | asin( 1.0F ) | asin( 1.0D ) | asin( 1.0L ) | nonl;
     48        sout | asin( 1.0F+1.0FI ) | asin( 1.0D+1.0DI ) | asin( 1.0DL+1.0LI );
     49        sout | "acos:" | acos( 1.0F ) | acos( 1.0D ) | acos( 1.0L ) | nonl;
     50        sout | acos( 1.0F+1.0FI ) | acos( 1.0D+1.0DI ) | acos( 1.0DL+1.0LI );
     51        sout | "atan:" | atan( 1.0F ) | atan( 1.0D ) | atan( 1.0L ) | nonl;
     52        sout | atan( 1.0F+1.0FI ) | atan( 1.0D+1.0DI ) | atan( 1.0DL+1.0LI );
     53        sout | "atan2:" | atan2( 1.0F, 1.0F ) | atan2( 1.0D, 1.0D ) | atan2( 1.0L, 1.0L ) | nonl;
     54        sout | "atan:" | atan( 1.0F, 1.0F ) | atan( 1.0D, 1.0D ) | atan( 1.0L, 1.0L );
    4755} // main
    4856
  • tests/math3.cfa

    r5e49e47 rd0c91a6  
    1010// Created On       : Fri Apr 22 14:59:21 2016
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Nov  6 17:59:05 2018
    13 // Update Count     : 83
     12// Last Modified On : Wed Dec 12 16:30:41 2018
     13// Update Count     : 86
    1414//
    1515
     
    2424        //---------------------- Hyperbolic ----------------------
    2525
    26         sout | "sinh:" | sinh( 1.0F ) | sinh( 1.0D ) | sinh( 1.0L ) | sinh( 1.0F+1.0FI ) | sinh( 1.0D+1.0DI ) | sinh( 1.0DL+1.0LI ) | endl;
    27         sout | "cosh:" | cosh( 1.0F ) | cosh( 1.0D ) | cosh( 1.0L ) | cosh( 1.0F+1.0FI ) | cosh( 1.0D+1.0DI ) | cosh( 1.0DL+1.0LI ) | endl;
    28         sout | "tanh:" | tanh( 1.0F ) | tanh( 1.0D ) | tanh( 1.0L ) | tanh( 1.0F+1.0FI ) | tanh( 1.0D+1.0DI ) | tanh( 1.0DL+1.0LI ) | endl;
    29         sout | "acosh:" | acosh( 1.0F ) | acosh( 1.0D ) | acosh( 1.0L ) | acosh( 1.0F+1.0FI ) | acosh( 1.0D+1.0DI ) | acosh( 1.0DL+1.0LI ) | endl;
    30         sout | "asinh:" | asinh( 1.0F ) | asinh( 1.0D ) | asinh( 1.0L ) | asinh( 1.0F+1.0FI ) | asinh( 1.0D+1.0DI ) | asinh( 1.0DL+1.0LI ) | endl;
    31         sout | "atanh:" | atanh( 1.0F ) | atanh( 1.0D ) | atanh( 1.0L ) | atanh( 1.0F+1.0FI ) | atanh( 1.0D+1.0DI ) | atanh( 1.0DL+1.0LI ) | endl;
     26        sout | "sinh:" | sinh( 1.0F ) | sinh( 1.0D ) | sinh( 1.0L ) | nonl;
     27        sout | sinh( 1.0F+1.0FI ) | sinh( 1.0D+1.0DI ) | sinh( 1.0DL+1.0LI );
     28        sout | "cosh:" | cosh( 1.0F ) | cosh( 1.0D ) | cosh( 1.0L ) | nonl;
     29        sout | cosh( 1.0F+1.0FI ) | cosh( 1.0D+1.0DI ) | cosh( 1.0DL+1.0LI );
     30        sout | "tanh:" | tanh( 1.0F ) | tanh( 1.0D ) | tanh( 1.0L ) | nonl;
     31        sout | tanh( 1.0F+1.0FI ) | tanh( 1.0D+1.0DI ) | tanh( 1.0DL+1.0LI );
     32        sout | "acosh:" | acosh( 1.0F ) | acosh( 1.0D ) | acosh( 1.0L ) | nonl;
     33        sout | acosh( 1.0F+1.0FI ) | acosh( 1.0D+1.0DI ) | acosh( 1.0DL+1.0LI );
     34        sout | "asinh:" | asinh( 1.0F ) | asinh( 1.0D ) | asinh( 1.0L ) | nonl;
     35        sout | asinh( 1.0F+1.0FI ) | asinh( 1.0D+1.0DI ) | asinh( 1.0DL+1.0LI );
     36        sout | "atanh:" | atanh( 1.0F ) | atanh( 1.0D ) | atanh( 1.0L ) | nonl;
     37        sout | atanh( 1.0F+1.0FI ) | atanh( 1.0D+1.0DI ) | atanh( 1.0DL+1.0LI );
    3238
    3339        //---------------------- Error / Gamma ----------------------
    3440
    35         sout | "erf:" | erf( 1.0F ) | erf( 1.0D ) | erf( 1.0L ) | endl;
    36         sout | "erfc:" | erfc( 1.0F ) | erfc( 1.0D ) | erfc( 1.0L ) | endl;
    37         sout | "lgamma:" | lgamma( 4.0F ) | lgamma( 4.0D ) | lgamma( 4.0L ) | endl;
     41        sout | "erf:" | erf( 1.0F ) | erf( 1.0D ) | erf( 1.0L );
     42        sout | "erfc:" | erfc( 1.0F ) | erfc( 1.0D ) | erfc( 1.0L );
     43        sout | "lgamma:" | lgamma( 4.0F ) | lgamma( 4.0D ) | lgamma( 4.0L );
    3844        int sign;
    3945        f = lgamma( 4.0F, &sign );
    40         sout | "lgamma:" | f | sign;
     46        sout | "lgamma:" | f | sign | nonl;
    4147        d = lgamma( 4.0D, &sign );
    42         sout | d | sign;
     48        sout | d | sign | nonl;
    4349        l = lgamma( 4.0L, &sign );
    44         sout | l | sign | endl;
    45         sout | "tgamma:" | tgamma( 4.0F ) | tgamma( 4.0D ) | tgamma( 4.0L ) | endl;
     50        sout | l | sign;
     51        sout | "tgamma:" | tgamma( 4.0F ) | tgamma( 4.0D ) | tgamma( 4.0L );
    4652} // main
    4753
  • tests/math4.cfa

    r5e49e47 rd0c91a6  
    1010// Created On       : Thu May 24 20:56:54 2018
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Nov  6 17:59:14 2018
    13 // Update Count     : 3
     12// Last Modified On : Tue Dec  4 18:15:01 2018
     13// Update Count     : 4
    1414//
    1515
     
    2424        //---------------------- Nearest Integer ----------------------
    2525
    26         sout | "floor:" | floor( 1.2F ) | floor( 1.2D ) | floor( 1.2L ) | endl;
    27         sout | "ceil:" | ceil( 1.6F ) | ceil( 1.6D ) | ceil( 1.6L ) | endl;
    28         sout | "trunc:" | trunc( 3.5F ) | trunc( 3.5D ) | trunc( 3.5L ) | endl;
    29         sout | "rint:" | (float)rint( 1.5F ) | (double)rint( 1.5D ) | (long double)rint( 1.5L ) | endl;
    30         sout | "rint:" | (long int)rint( 1.5F ) | (long int)rint( 1.5D ) | (long int)rint( 1.5L ) | endl;
    31         sout | "rint:" | (long long int)rint( 1.5F ) | (long long int)rint( 1.5D ) | (long long int)rint( 1.5L ) | endl;
    32         sout | "lrint:" | lrint( 1.5F ) | lrint( 1.5D ) | lrint( 1.5L ) | endl;
    33         sout | "llrint:" | llrint( 1.5F ) | llrint( 1.5D ) | llrint( 1.5L ) | endl;
    34         sout | "nearbyint:" | nearbyint( 3.5F ) | nearbyint( 3.5D ) | nearbyint( 3.5L ) | endl;
    35         sout | "round:" | (float)round( 1.5F ) | (double)round( 1.5D ) | (long double)round( 1.5L ) | endl;
    36         sout | "round:" | (long int)round( 1.5F ) | (long int)round( 1.5D ) | (long int)round( 1.5L ) | endl;
    37         sout | "round:" | (long long int)round( 1.5F ) | (long long int)round( 1.5D ) | (long long int)round( 1.5L ) | endl;
    38         sout | "lround:" | lround( 1.5F ) | lround( 1.5D ) | lround( 1.5L ) | endl;
    39         sout | "llround:" | llround( 1.5F ) | llround( 1.5D ) | llround( 1.5L ) | endl;
     26        sout | "floor:" | floor( 1.2F ) | floor( 1.2D ) | floor( 1.2L );
     27        sout | "ceil:" | ceil( 1.6F ) | ceil( 1.6D ) | ceil( 1.6L );
     28        sout | "trunc:" | trunc( 3.5F ) | trunc( 3.5D ) | trunc( 3.5L );
     29        sout | "rint:" | (float)rint( 1.5F ) | (double)rint( 1.5D ) | (long double)rint( 1.5L );
     30        sout | "rint:" | (long int)rint( 1.5F ) | (long int)rint( 1.5D ) | (long int)rint( 1.5L );
     31        sout | "rint:" | (long long int)rint( 1.5F ) | (long long int)rint( 1.5D ) | (long long int)rint( 1.5L );
     32        sout | "lrint:" | lrint( 1.5F ) | lrint( 1.5D ) | lrint( 1.5L );
     33        sout | "llrint:" | llrint( 1.5F ) | llrint( 1.5D ) | llrint( 1.5L );
     34        sout | "nearbyint:" | nearbyint( 3.5F ) | nearbyint( 3.5D ) | nearbyint( 3.5L );
     35        sout | "round:" | (float)round( 1.5F ) | (double)round( 1.5D ) | (long double)round( 1.5L );
     36        sout | "round:" | (long int)round( 1.5F ) | (long int)round( 1.5D ) | (long int)round( 1.5L );
     37        sout | "round:" | (long long int)round( 1.5F ) | (long long int)round( 1.5D ) | (long long int)round( 1.5L );
     38        sout | "lround:" | lround( 1.5F ) | lround( 1.5D ) | lround( 1.5L );
     39        sout | "llround:" | llround( 1.5F ) | llround( 1.5D ) | llround( 1.5L );
    4040
    4141        //---------------------- Manipulation ----------------------
    4242
    43         sout | "copysign:" | copysign( 1.0F, -1.0F ) | copysign( 1.0D, -1.0D ) | copysign( 1.0L, -1.0L ) | endl;
     43        sout | "copysign:" | copysign( 1.0F, -1.0F ) | copysign( 1.0D, -1.0D ) | copysign( 1.0L, -1.0L );
    4444        int exp;
    4545        f = frexp( 4.0F, &exp );
    46         sout | "frexp:" | f | exp;
     46        sout | "frexp:" | f | exp | nonl;
    4747        d = frexp( 4.0D, &exp );
    48         sout | d | exp;
     48        sout | d | exp | nonl;
    4949        l = frexp( 4.0L, &exp );
    50         sout | l | exp | endl;
    51         sout | "ldexp:" | ldexp( 2.0F, 2 ) | ldexp( 2.0D, 2 ) | ldexp( 2.0L, 2 ) | endl;
     50        sout | l | exp;
     51        sout | "ldexp:" | ldexp( 2.0F, 2 ) | ldexp( 2.0D, 2 ) | ldexp( 2.0L, 2 );
    5252        float fi;
    5353        double di;
    5454        long double ldi;
    5555        f = modf( 2.3F, &fi );
    56         sout | "modf:" | fi | f;
     56        sout | "modf:" | fi | f | nonl;
    5757        d = modf( 2.3D, &di );
    58         sout | di | d;
     58        sout | di | d | nonl;
    5959        l = modf( 2.3L, &ldi );
    60         sout | ldi | l | endl;
    61         sout | "modf:" | modf( 2.3F ) | modf( 2.3D ) | modf( 2.3L ) | endl;
    62         sout | "nextafter:" | nextafter( 2.0F, 3.0F ) | nextafter( 2.0D, 3.0D ) | nextafter( 2.0L, 3.0L ) | endl;
    63         sout | "nexttoward:" | nexttoward( 2.0F, 3.0F ) | nexttoward( 2.0D, 3.0D ) | nexttoward( 2.0L, 3.0L ) | endl;
     60        sout | ldi | l;
     61        sout | "modf:" | modf( 2.3F ) | modf( 2.3D ) | modf( 2.3L );
     62        sout | "nextafter:" | nextafter( 2.0F, 3.0F ) | nextafter( 2.0D, 3.0D ) | nextafter( 2.0L, 3.0L );
     63        sout | "nexttoward:" | nexttoward( 2.0F, 3.0F ) | nexttoward( 2.0D, 3.0D ) | nexttoward( 2.0L, 3.0L );
    6464
    65         sout | "scalbn:" | scalbn( 2.0F, 3 ) | scalbn( 2.0D, 3 ) | scalbn( 2.0L, 3 ) | endl;
    66         sout | "scalbln:" | scalbln( 2.0F, 3L ) | scalbln( 2.0D, 3L ) | scalbln( 2.0L, 3L ) | endl;
     65        sout | "scalbn:" | scalbn( 2.0F, 3 ) | scalbn( 2.0D, 3 ) | scalbn( 2.0L, 3 );
     66        sout | "scalbln:" | scalbln( 2.0F, 3L ) | scalbln( 2.0D, 3L ) | scalbln( 2.0L, 3L );
    6767} // main
    6868
  • tests/minmax.cfa

    r5e49e47 rd0c91a6  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Nov  6 17:59:26 2018
    13 // Update Count     : 51
     12// Last Modified On : Tue Dec  4 21:45:31 2018
     13// Update Count     : 52
    1414//
    1515
     
    2222        int ?>?( char op1, char op2 ) { return (int)op1 > (int)op2; }
    2323
    24         sout | "char\t\t\t"                                     | 'z' | ' ' | 'a' | "\tmin " | min( 'z', 'a' ) | endl;
    25         sout | "signed int\t\t"                         | 4 | 3 | "\tmin" | min( 4, 3 ) | endl;
    26         sout | "unsigned int\t\t"                       | 4u | 3u | "\tmin" | min( 4u, 3u ) | endl;
    27         sout | "signed long int\t\t"            | 4l | 3l | "\tmin" | min( 4l, 3l ) | endl;
    28         sout | "unsigned long int\t"            | 4ul | 3ul | "\tmin" | min( 4ul, 3ul ) | endl;
    29         sout | "signed long long int\t"         | 4ll | 3ll | "\tmin" | min( 4ll, 3ll ) | endl;
    30         sout | "unsigned long long int\t"       | 4ull | 3ull | "\tmin" | min( 4ull, 3ull ) | endl;
    31         sout | "float\t\t\t"                            | 4.0f | 3.1f | "\tmin" | min( 4.0f, 3.1f ) | endl;
    32         sout | "double\t\t\t"                           | 4.0 | 3.1 | "\tmin" | min( 4.0, 3.1 ) | endl;
    33         sout | "long double\t\t"                        | 4.0l | 3.1l | "\tmin" | min( 4.0l, 3.1l ) | endl;
     24        sout | "char\t\t\t"                                     | 'z' | ' ' | 'a' | "\tmin " | min( 'z', 'a' );
     25        sout | "signed int\t\t"                         | 4 | 3 | "\tmin" | min( 4, 3 );
     26        sout | "unsigned int\t\t"                       | 4u | 3u | "\tmin" | min( 4u, 3u );
     27        sout | "signed long int\t\t"            | 4l | 3l | "\tmin" | min( 4l, 3l );
     28        sout | "unsigned long int\t"            | 4ul | 3ul | "\tmin" | min( 4ul, 3ul );
     29        sout | "signed long long int\t"         | 4ll | 3ll | "\tmin" | min( 4ll, 3ll );
     30        sout | "unsigned long long int\t"       | 4ull | 3ull | "\tmin" | min( 4ull, 3ull );
     31        sout | "float\t\t\t"                            | 4.0f | 3.1f | "\tmin" | min( 4.0f, 3.1f );
     32        sout | "double\t\t\t"                           | 4.0 | 3.1 | "\tmin" | min( 4.0, 3.1 );
     33        sout | "long double\t\t"                        | 4.0l | 3.1l | "\tmin" | min( 4.0l, 3.1l );
    3434
    35         sout | endl;
     35        sout | nl;
    3636
    37         sout | "char\t\t\t"                                     | 'z' | ' ' | 'a' | "\tmax " | max( 'z', 'a' ) | endl;
    38         sout | "signed int\t\t"                         | 4 | 3 | "\tmax" | max( 4, 3 ) | endl;
    39         sout | "unsigned int\t\t"                       | 4u | 3u | "\tmax" | max( 4u, 3u ) | endl;
    40         sout | "signed long int\t\t"            | 4l | 3l | "\tmax" | max( 4l, 3l ) | endl;
    41         sout | "unsigned long int\t"            | 4ul | 3ul | "\tmax" | max( 4ul, 3ul ) | endl;
    42         sout | "signed long long int\t"         | 4ll | 3ll | "\tmax" | max( 4ll, 3ll ) | endl;
    43         sout | "unsigned long long int\t"       | 4ull | 3ull | "\tmax" | max( 4ull, 3ull ) | endl;
    44         sout | "float\t\t\t"                            | 4.0f | 3.1f | "\tmax" | max( 4.0f, 3.1f ) | endl;
    45         sout | "double\t\t\t"                           | 4.0 | 3.1 | "\tmax" | max( 4.0, 3.1 ) | endl;
    46         sout | "long double\t\t"                        | 4.0l | 3.1l | "\tmax" | max( 4.0l, 3.1l ) | endl;
     37        sout | "char\t\t\t"                                     | 'z' | ' ' | 'a' | "\tmax " | max( 'z', 'a' );
     38        sout | "signed int\t\t"                         | 4 | 3 | "\tmax" | max( 4, 3 );
     39        sout | "unsigned int\t\t"                       | 4u | 3u | "\tmax" | max( 4u, 3u );
     40        sout | "signed long int\t\t"            | 4l | 3l | "\tmax" | max( 4l, 3l );
     41        sout | "unsigned long int\t"            | 4ul | 3ul | "\tmax" | max( 4ul, 3ul );
     42        sout | "signed long long int\t"         | 4ll | 3ll | "\tmax" | max( 4ll, 3ll );
     43        sout | "unsigned long long int\t"       | 4ull | 3ull | "\tmax" | max( 4ull, 3ull );
     44        sout | "float\t\t\t"                            | 4.0f | 3.1f | "\tmax" | max( 4.0f, 3.1f );
     45        sout | "double\t\t\t"                           | 4.0 | 3.1 | "\tmax" | max( 4.0, 3.1 );
     46        sout | "long double\t\t"                        | 4.0l | 3.1l | "\tmax" | max( 4.0l, 3.1l );
    4747} // main
    4848
  • tests/polymorphism.cfa

    r5e49e47 rd0c91a6  
    99// Author           : Rob Schluntz
    1010// Created On       : Tue Oct 17 12:19:48 2017
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Tue Oct 17 12:21:07 2017
    13 // Update Count     : 1
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Tue Dec 25 14:40:24 2018
     13// Update Count     : 3
    1414//
    1515
    1616#include <assert.h>
    1717#include <inttypes.h>
     18#include <fstream.hfa>
    1819
    1920forall(otype T)
     
    6162                int y = 456;
    6263                int z = f(x, y);
    63                 printf("%d %d %d\n", x, y, z);
     64                sout | x | y | z;
    6465        }
    65 
    6666        {
    6767                // explicitly specialize function
    6868                int (*f)(int) = ident;
    6969                ((int(*)(int))ident);
    70                 printf("%d %d\n", f(5), ((int(*)(int))ident)(5));
     70                sout | f(5) | ((int(*)(int))ident)(5);
    7171        }
    72 
    7372        {
    7473                // test aggregates with polymorphic members
     
    10099
    101100                void print(x_type x) {
    102                         printf("%"PRIu32"\n", x);
     101                        sout | x;
    103102                }
    104103
    105104                void print(y_type y) {
    106                         printf("%"PRIu64"\n", y);
     105                        sout | y;
    107106                }
    108107
  • tests/preempt_longrun/Makefile.am

    r5e49e47 rd0c91a6  
    1616
    1717AUTOMAKE_OPTIONS = foreign    # do not require all the GNU file names
     18ACLOCAL_AMFLAGS  = -I automake
    1819
    1920repeats=10
  • tests/preempt_longrun/Makefile.in

    r5e49e47 rd0c91a6  
    9393subdir = tests/preempt_longrun
    9494ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
    95 am__aclocal_m4_deps = $(top_srcdir)/automake/cfa.m4 \
    96         $(top_srcdir)/configure.ac
     95am__aclocal_m4_deps = $(top_srcdir)/automake/libtool.m4 \
     96        $(top_srcdir)/automake/ltoptions.m4 \
     97        $(top_srcdir)/automake/ltsugar.m4 \
     98        $(top_srcdir)/automake/ltversion.m4 \
     99        $(top_srcdir)/automake/lt~obsolete.m4 \
     100        $(top_srcdir)/automake/cfa.m4 $(top_srcdir)/configure.ac
    97101am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
    98102        $(ACLOCAL_M4)
     
    333337AMTAR = @AMTAR@
    334338AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
     339AR = @AR@
    335340AUTOCONF = @AUTOCONF@
    336341AUTOHEADER = @AUTOHEADER@
    337342AUTOMAKE = @AUTOMAKE@
    338343AWK = @AWK@
    339 BACKEND_CC = @BACKEND_CC@
    340344BUILD_IN_TREE_FLAGS = @BUILD_IN_TREE_FLAGS@
    341345CC = @CFACC@
     
    357361CPPFLAGS = @CPPFLAGS@
    358362CXX = @CXX@
     363CXXCPP = @CXXCPP@
    359364CXXDEPMODE = @CXXDEPMODE@
    360365CXXFLAGS = @CXXFLAGS@
     
    362367DEFS = @DEFS@
    363368DEPDIR = @DEPDIR@
     369DLLTOOL = @DLLTOOL@
    364370DRIVER_DIR = @DRIVER_DIR@
     371DSYMUTIL = @DSYMUTIL@
     372DUMPBIN = @DUMPBIN@
    365373ECHO_C = @ECHO_C@
    366374ECHO_N = @ECHO_N@
     
    368376EGREP = @EGREP@
    369377EXEEXT = @EXEEXT@
     378FGREP = @FGREP@
    370379GREP = @GREP@
    371380HOST_FLAGS = @HOST_FLAGS@
     
    375384INSTALL_SCRIPT = @INSTALL_SCRIPT@
    376385INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
     386LD = @LD@
    377387LDFLAGS = @LDFLAGS@
    378388LEX = @LEX@
     
    383393LIBOBJS = @LIBOBJS@
    384394LIBS = @LIBS@
     395LIBTOOL = @LIBTOOL@
     396LIPO = @LIPO@
     397LN_S = @LN_S@
    385398LTLIBOBJS = @LTLIBOBJS@
     399LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
    386400MAKEINFO = @MAKEINFO@
     401MANIFEST_TOOL = @MANIFEST_TOOL@
    387402MKDIR_P = @MKDIR_P@
     403NM = @NM@
     404NMEDIT = @NMEDIT@
     405OBJDUMP = @OBJDUMP@
    388406OBJEXT = @OBJEXT@
     407OTOOL = @OTOOL@
     408OTOOL64 = @OTOOL64@
    389409PACKAGE = @PACKAGE@
    390410PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
     
    396416PATH_SEPARATOR = @PATH_SEPARATOR@
    397417RANLIB = @RANLIB@
     418SED = @SED@
    398419SET_MAKE = @SET_MAKE@
    399420SHELL = @SHELL@
     
    407428abs_top_builddir = @abs_top_builddir@
    408429abs_top_srcdir = @abs_top_srcdir@
     430ac_ct_AR = @ac_ct_AR@
    409431ac_ct_CC = @ac_ct_CC@
    410432ac_ct_CXX = @ac_ct_CXX@
     433ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
    411434am__include = @am__include@
    412435am__leading_dot = @am__leading_dot@
     
    456479top_srcdir = @top_srcdir@
    457480AUTOMAKE_OPTIONS = foreign    # do not require all the GNU file names
     481ACLOCAL_AMFLAGS = -I automake
    458482repeats = 10
    459483max_time = 600
     
    503527        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
    504528$(am__aclocal_m4_deps):
     529
     530mostlyclean-libtool:
     531        -rm -f *.lo
     532
     533clean-libtool:
     534        -rm -rf .libs _libs
    505535tags TAGS:
    506536
     
    806836clean: clean-am
    807837
    808 clean-am: clean-generic clean-local mostlyclean-am
     838clean-am: clean-generic clean-libtool clean-local mostlyclean-am
    809839
    810840distclean: distclean-am
     
    858888mostlyclean: mostlyclean-am
    859889
    860 mostlyclean-am: mostlyclean-generic
     890mostlyclean-am: mostlyclean-generic mostlyclean-libtool
    861891
    862892pdf: pdf-am
     
    873903
    874904.PHONY: all all-am all-local check check-TESTS check-am clean \
    875         clean-generic clean-local cscopelist-am ctags-am distclean \
    876         distclean-generic distdir dvi dvi-am html html-am info info-am \
    877         install install-am install-data install-data-am install-dvi \
    878         install-dvi-am install-exec install-exec-am install-html \
    879         install-html-am install-info install-info-am install-man \
    880         install-pdf install-pdf-am install-ps install-ps-am \
    881         install-strip installcheck installcheck-am installdirs \
    882         maintainer-clean maintainer-clean-generic mostlyclean \
    883         mostlyclean-generic pdf pdf-am ps ps-am recheck tags-am \
     905        clean-generic clean-libtool clean-local cscopelist-am ctags-am \
     906        distclean distclean-generic distclean-libtool distdir dvi \
     907        dvi-am html html-am info info-am install install-am \
     908        install-data install-data-am install-dvi install-dvi-am \
     909        install-exec install-exec-am install-html install-html-am \
     910        install-info install-info-am install-man install-pdf \
     911        install-pdf-am install-ps install-ps-am install-strip \
     912        installcheck installcheck-am installdirs maintainer-clean \
     913        maintainer-clean-generic mostlyclean mostlyclean-generic \
     914        mostlyclean-libtool pdf pdf-am ps ps-am recheck tags-am \
    884915        uninstall uninstall-am
    885916
  • tests/pybin/tools.py

    r5e49e47 rd0c91a6  
    7979def diff( lhs, rhs ):
    8080        # diff the output of the files
    81         diff_cmd = ("diff --ignore-all-space --text "
    82                                 "--ignore-blank-lines "
     81        diff_cmd = ("diff --text "
     82#                               "--ignore-all-space "
     83#                               "--ignore-blank-lines "
    8384                                "--old-group-format='\t\tmissing lines :\n"
    8485                                "%%<' \\\n"
     
    246247        if column:
    247248                cmd = "%s 2> /dev/null" % column
    248                 print(cmd)
    249249                proc = Popen(cmd, stdin=PIPE, stderr=None, shell=True)
    250                 proc.communicate(input=text)
     250                proc.communicate(input=text + "\n")
    251251        else:
    252252                print(text)
  • tests/quotedKeyword.cfa

    r5e49e47 rd0c91a6  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Nov  6 17:46:20 2018
    13 // Update Count     : 22
     12// Last Modified On : Tue Dec  4 21:45:53 2018
     13// Update Count     : 23
    1414//
    1515
     
    4141        st.`struct` = 3;
    4242        `throw` = 4;
    43         sout | `catch` + st.`otype` + st.`struct` + `throw` | endl;
     43        sout | `catch` + st.`otype` + st.`struct` + `throw`;
    4444}
    4545
  • tests/raii/.expect/ctor-autogen-ERR1.txt

    r5e49e47 rd0c91a6  
    1 raii/ctor-autogen.c:102:1 error: Unique best alternative includes deleted identifier in Cast of:
     1raii/ctor-autogen.cfa:102:1 error: Unique best alternative includes deleted identifier in Cast of:
    22  Application of
    33    Deleted Expression
    44      Variable Expression: ?{}: static inline function
    55      ... with parameters
    6         _dst: reference to instance of struct Managed with body 1 
     6        _dst: reference to instance of struct Managed with body 1
    77        x: signed int
    8       ... returning nothing 
     8      ... returning nothing
    99
    1010      ... deleted by: ?{}: function
    1111      ... with parameters
    12         m: reference to instance of struct Managed with body 1 
    13       ... returning nothing 
    14       ... with body 
     12        m: reference to instance of struct Managed with body 1
     13      ... returning nothing
     14      ... with body
    1515        CompoundStmt
    1616          Expression Statement:
     
    2020                intrinsic reference to signed int
    2121                intrinsic signed int
    22               ... returning 
     22              ... returning
    2323                _retval__operator_assign: signed int
    24                 ... with attributes: 
     24                ... with attributes:
    2525                  Attribute with name: unused
    2626
     
    2828            ... to arguments
    2929              Cast of:
    30                 Member Expression, with field: 
     30                Member Expression, with field:
    3131                  x: signed int
    32                 ... from aggregate: 
     32                ... from aggregate:
    3333                  Cast of:
    34                     Variable Expression: m: reference to instance of struct Managed with body 1 
     34                    Variable Expression: m: reference to instance of struct Managed with body 1
    3535                  ... to:
    36                     instance of struct Managed with body 1 
     36                    instance of struct Managed with body 1
    3737              ... to:
    3838                reference to signed int
     
    4949  ... to arguments
    5050    Cast of:
    51       Variable Expression: x: instance of struct Managed with body 1 
     51      Variable Expression: x: instance of struct Managed with body 1
    5252    ... to:
    53       reference to instance of struct Managed with body 1 
     53      reference to instance of struct Managed with body 1
    5454    constant expression (123 123: signed int)
    5555
  • tests/raii/.expect/dtor-early-exit-ERR1.txt

    r5e49e47 rd0c91a6  
    1 raii/dtor-early-exit.c:150:1 error: jump to label 'L1' crosses initialization of y Branch (Goto)
     1raii/dtor-early-exit.cfa:150:1 error: jump to label 'L1' crosses initialization of y Branch (Goto)
    22  with target: L1
    33  with original target: L1
  • tests/raii/.expect/dtor-early-exit-ERR2.txt

    r5e49e47 rd0c91a6  
    1 raii/dtor-early-exit.c:214:1 error: jump to label 'L2' crosses initialization of y Branch (Goto)
     1raii/dtor-early-exit.cfa:214:1 error: jump to label 'L2' crosses initialization of y Branch (Goto)
    22  with target: L2
    33  with original target: L2
  • tests/raii/.expect/memberCtors-ERR1.txt

    r5e49e47 rd0c91a6  
    1 raii/memberCtors.c:71:1 error: in void ?{}(B &b), field a2 used before being constructed
     1raii/memberCtors.cfa:71:1 error: in void ?{}(B &b), field a2 used before being constructed
  • tests/raii/dtor-early-exit.cfa

    r5e49e47 rd0c91a6  
    1010// Created On       : Wed Aug 17 08:26:25 2016
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Aug 11 07:58:39 2018
    13 // Update Count     : 8
     12// Last Modified On : Fri Dec 21 08:45:19 2018
     13// Update Count     : 10
    1414//
    1515
     
    2525// don't want these called
    2626void ?{}(A & a) { assert( false ); }
    27 void ?{}(A & a, const char * name) { a.name = name; sout | "construct " | name | endl; a.x = (int*)malloc(); }
     27void ?{}(A & a, const char * name) { a.name = name; sout | "construct " | name; a.x = (int*)malloc(); }
    2828void ?{}(A & a, const char * name, int * ptr) { assert( false ); }
    2929
    3030A ?=?(A & a, A b) {  sout | "assign " | a.name | " " | b.name; return a; }
    31 void ?{}(A & a, A b) { sout | "copy construct " | b.name | endl; a.x = (int*)malloc(); }
    32 void ^?{}(A & a) { sout | "destruct " | a.name | endl; free(a.x); }
     31void ?{}(A & a, A b) { sout | "copy construct " | b.name; a.x = (int*)malloc(); }
     32void ^?{}(A & a) { sout | "destruct " | a.name; free(a.x); }
    3333
    3434// test returns
    3535void f(int i) {
    36         sout | "f i=" | i | endl;
     36        sout | "f i=" | i;
    3737        A x = { "x" };  // construct x
    3838        {
     
    5555void g() {
    5656        for (int i = 0; i < 10; i++) {
    57                 sout | "g for i=" | i | endl;
     57                sout | "g for i=" | i;
    5858                A x = { "x" };
    5959                // construct x
    6060                // destruct x
    6161        }
    62         sout | endl;
     62        sout | nl;
    6363        {
    6464                int i = 0;
    6565                while (i < 10) {
    66                         sout | "g while i=" | i | endl;
     66                        sout | "g while i=" | i;
    6767                        A x = { "x" };
    6868                        // construct x
     
    7171                }
    7272        }
    73         sout | endl;
     73        sout | nl;
    7474        for (int i = 0; i < 10; i++) {
    7575                switch(10) {
     
    7878                        case 10: {
    7979                                A y = { "y" };
    80                                 sout | "g switch i=" | i | endl;
     80                                sout | "g switch i=" | i;
    8181                                // construct y
    8282                                break; // destruct y
    8383                        }
    8484                        default: {
    85                                 sout | "g switch i=" | i | endl;
     85                                sout | "g switch i=" | i;
    8686                                A x = { "x" };
    8787                                // construct x
     
    9090                }
    9191        }
    92         sout | endl;
     92        sout | nl;
    9393        for (int k = 0; k < 2; k++) {
    94                 sout | "g for k=" | k | endl;
     94                sout | "g for k=" | k;
    9595                L1: for (int i = 0; i < 10; i++) {
    96                         sout | "g for i=" | i | endl;
     96                        sout | "g for i=" | i;
    9797
    9898                        A x = { "x" };
    9999                        if (i == 2) {
    100                                 sout | "continue L1" | endl;
     100                                sout | "continue L1";
    101101                                continue;  // destruct x
    102102                        } else if (i == 3) {
    103                                 sout | "break L1" | endl;
     103                                sout | "break L1";
    104104                                break;  // destruct x
    105105                        }
    106106
    107107                        L2: for (int j = 0; j < 10; j++) {
    108                                 sout | "g for j=" | j | endl;
     108                                sout | "g for j=" | j;
    109109                                A y = { "y" };
    110110                                if (j == 0) {
    111                                         sout | "continue L2" | endl;
     111                                        sout | "continue L2";
    112112                                        continue; // destruct y - missing because object that needs to be destructed is not a part of this block, it's a part of the for's block
    113113                                } else if (j == 1) {
    114                                         sout | "break L2" | endl;
     114                                        sout | "break L2";
    115115                                        break;  // destruct y
    116116                                } else if (i == 1) {
    117                                         sout | "continue L1" | endl;
     117                                        sout | "continue L1";
    118118                                        continue L1; // destruct x,y - note: continue takes you to destructors for block, so only generate destructor for y
    119119                                } else if (k == 1) {
    120                                         sout | "break L1" | endl;
     120                                        sout | "break L1";
    121121                                        break L1;  // destruct x,y
    122122                                }
     
    125125        }
    126126
    127         sout | endl;
     127        sout | nl;
    128128        L3: if( 3 ) {
    129129                A w = { "w" };
    130130                if( 4 ) {
    131131                        A v = { "v" };
    132                         sout | "break L3" | endl;
     132                        sout | "break L3";
    133133                        break L3;
    134134                }
     
    144144        // * if S_L-S_G is non-empty, error
    145145        // * emit destructors for all variables in S_G-S_L
    146         sout | "h" | endl;
     146        sout | "h";
    147147        {
    148148                L0: ;
     
    152152                        A y = { "y" };
    153153                        // S_L1 = { y }
    154                 L1: sout | "L1" | endl;
     154                L1: sout | "L1";
    155155                        A x = { "x" };
    156156                        // S_L2 = { y, x }
    157                 L2: sout | "L2" | endl;
     157                L2: sout | "L2";
    158158                        if (i == 0) {
    159159                                ++i;
    160                                 sout | "goto L1" | endl;
     160                                sout | "goto L1";
    161161                                // S_G = { y, x }
    162162                                goto L1;  // jump back, destruct b/c before x definition
     
    165165                        } else if (i == 1) {
    166166                                ++i;
    167                                 sout | "goto L2" | endl;
     167                                sout | "goto L2";
    168168                                // S_G = { y, x }
    169169                                goto L2;  // jump back, do not destruct
     
    172172                        } else if (i == 2) {
    173173                                ++i;
    174                                 sout | "goto L3" | endl;
     174                                sout | "goto L3";
    175175                                // S_G = { y, x }
    176176                                goto L3;  // jump ahead, do not destruct
     
    180180                                ++i;
    181181                                A z = { "z" };
    182                                 sout | "goto L3-2" | endl;
     182                                sout | "goto L3-2";
    183183                                // S_G = { z, y, x }
    184184                                goto L3;
     
    187187                        } else {
    188188                                ++i;
    189                                 sout | "goto L4" | endl;
     189                                sout | "goto L4";
    190190                                // S_G = { y, x }
    191191                                goto L4;  // jump ahead, destruct b/c left block x was defined in
     
    194194                        }
    195195                        // S_L3 = { y, x }
    196                 L3: sout | "L3" | endl;
    197                         sout | "goto L2-2" | endl;
     196                L3: sout | "L3";
     197                        sout | "goto L2-2";
    198198                        // S_G = { y, x }
    199199                        goto L2; // jump back, do not destruct
     
    202202        }
    203203        // S_L4 = {}
    204         L4: sout | "L4" | endl;
     204        L4: sout | "L4";
    205205        if (i == 4) {
    206                 sout | "goto L0" | endl;
     206                sout | "goto L0";
    207207                // S_G = {}
    208208                goto L0;
     
    240240                f(i);
    241241        }
    242         sout | endl;
     242        sout | nl;
    243243        g();
    244         sout | endl;
     244        sout | nl;
    245245        h();
    246246
  • tests/raii/globals.cfa

    r5e49e47 rd0c91a6  
    7070
    7171int main() {
    72         sout | "static\t\tinline\t\tautogen\t\tvalue" | endl;
     72        sout | "static\t\tinline\t\tautogen\t\tvalue";
    7373
    74         sout | "no \t\tno \t\tno \t\t" | g.val.value    | endl;
    75         sout | "no \t\tno \t\tyes\t\t" | ga.val.value   | endl;
    76         sout | "no \t\tyes\t\tno \t\t" | gi.val.value   | endl;
    77         sout | "no \t\tyes\t\tyes\t\t" | gia.val.value  | endl;
    78         sout | "yes\t\tno \t\tno \t\t" | gs.val.value   | endl;
    79         sout | "yes\t\tno \t\tyes\t\t" | gsa.val.value  | endl;
    80         sout | "yes\t\tyes\t\tno \t\t" | gsi.val.value  | endl;
    81         sout | "yes\t\tyes\t\tyes\t\t" | gsia.val.value | endl;
     74        sout | "no \t\tno \t\tno \t\t" | g.val.value;
     75        sout | "no \t\tno \t\tyes\t\t" | ga.val.value;
     76        sout | "no \t\tyes\t\tno \t\t" | gi.val.value;
     77        sout | "no \t\tyes\t\tyes\t\t" | gia.val.value;
     78        sout | "yes\t\tno \t\tno \t\t" | gs.val.value;
     79        sout | "yes\t\tno \t\tyes\t\t" | gsa.val.value;
     80        sout | "yes\t\tyes\t\tno \t\t" | gsi.val.value;
     81        sout | "yes\t\tyes\t\tyes\t\t" | gsia.val.value;
    8282
    8383}
  • tests/random.cfa

    r5e49e47 rd0c91a6  
    1010// Created On       : Tue Jul  5 21:29:30 2016
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Nov  6 18:00:15 2018
    13 // Update Count     : 20
     12// Last Modified On : Tue Dec  4 21:46:25 2018
     13// Update Count     : 22
    1414//
    1515
    1616#include <fstream.hfa>
    17 #include <stdlib.hfa>                                                                           // random
     17#include <stdlib.hfa>                                                                   // random
    1818#include <unistd.h>                                                                             // getpid
    1919
     
    2424        // test polymorphic calls to random and stream
    2525        char c = random();
    26         sout | c | endl;
     26        sout | c;
    2727        c = random( 'A' );
    28         sout | c | endl;
     28        sout | c;
    2929        c = random( 'A', 'Z' );
    30         sout | c | endl;
     30        sout | c;
    3131
    3232        int i = random();
    33     sout | i | endl;
     33    sout | i;
    3434        i = random( 10 );
    35     sout | i | endl;
     35    sout | i;
    3636        i = random( -10, 20 );
    37     sout | i | endl;
     37    sout | i;
    3838
    3939        unsigned int ui = random();
    40     sout | ui | endl;
     40    sout | ui;
    4141        ui = random( 10u );
    42     sout | ui | endl;
     42    sout | ui;
    4343        ui = random( 10u, 20u );
    44     sout | ui | endl;
     44    sout | ui;
    4545
    4646        long int li = random();
    47     sout | li | endl;
     47    sout | li;
    4848        li = random( 10l );
    49     sout | li | endl;
     49    sout | li;
    5050        li = random( -10l, 20l );
    51     sout | li | endl;
     51    sout | li;
    5252
    5353        unsigned long int uli = random();
    54     sout | uli | endl;
     54    sout | uli;
    5555        uli = random( 10ul );
    56     sout | uli | endl;
     56    sout | uli;
    5757        uli = random( 10ul, 20ul );
    58     sout | uli | endl;
     58    sout | uli;
    5959
    6060    float f = random();
    61     sout | f | endl;
     61    sout | f;
    6262
    6363    double d = random();
    64     sout | d | endl;
     64    sout | d;
    6565
    6666    float _Complex fc = random();
    67     sout | fc | endl;
     67    sout | fc;
    6868
    6969    double _Complex dc = random();
    70     sout | dc | endl;
     70    sout | dc;
    7171
    7272    long double _Complex ldc = random();
    73     sout | ldc | endl;
     73    sout | ldc;
    7474} // main
    7575
  • tests/rational.cfa

    r5e49e47 rd0c91a6  
    1010// Created On       : Mon Mar 28 08:43:12 2016
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Nov  6 18:00:27 2018
    13 // Update Count     : 68
     12// Last Modified On : Tue Dec  4 21:46:42 2018
     13// Update Count     : 69
    1414//
    1515
     
    2727
    2828int main() {
    29         sout | "constructor" | endl;
     29        sout | "constructor";
    3030        Rational(int) a = { 3 }, b = { 4 }, c;
    31         sout | a | b | c | endl;
     31        sout | a | b | c;
    3232
    3333        a = (Rational(int)){ 4, 8 };
    3434        b = (Rational(int)){ 5, 7 };
    35         sout | a | b | endl;
     35        sout | a | b;
    3636        a = (Rational(int)){ -2, -3 };
    3737        b = (Rational(int)){ 3, -2 };
    38         sout | a | b | endl;
     38        sout | a | b;
    3939        a = (Rational(int)){ -2, 3 };
    4040        b = (Rational(int)){ 3, 2 };
    41         sout | a | b | endl;
     41        sout | a | b;
    4242
    43         sout | "logical" | endl;
     43        sout | "logical";
    4444        a = (Rational(int)){ -2 };
    4545        b = (Rational(int)){ -3, 2 };
    46         sout | a | b | endl;
    47 //      sout | a == 1 | endl; // FIX ME
    48         sout | a != b | endl;
    49         sout | a <  b | endl;
    50         sout | a <= b | endl;
    51         sout | a >  b | endl;
    52         sout | a >= b | endl;
     46        sout | a | b;
     47//      sout | a == 1; // FIX ME
     48        sout | a != b;
     49        sout | a <  b;
     50        sout | a <= b;
     51        sout | a >  b;
     52        sout | a >= b;
    5353
    54         sout | "arithmetic" | endl;
    55         sout | a | b | endl;
    56         sout | a + b | endl;
    57         sout | a - b | endl;
    58         sout | a * b | endl;
    59         sout | a / b | endl;
     54        sout | "arithmetic";
     55        sout | a | b;
     56        sout | a + b;
     57        sout | a - b;
     58        sout | a * b;
     59        sout | a / b;
    6060
    61         sout | "conversion" | endl;
     61        sout | "conversion";
    6262        a = (Rational(int)){ 3, 4 };
    63         sout | widen( a ) | endl;
     63        sout | widen( a );
    6464        a = (Rational(int)){ 1, 7 };
    65         sout | widen( a ) | endl;
     65        sout | widen( a );
    6666        a = (Rational(int)){ 355, 113 };
    67         sout | widen( a ) | endl;
    68         sout | narrow( 0.75, 4 ) | endl;
    69         sout | narrow( 0.14285714285714, 16 ) | endl;
    70         sout | narrow( 3.14159265358979, 256 ) | endl;
     67        sout | widen( a );
     68        sout | narrow( 0.75, 4 );
     69        sout | narrow( 0.14285714285714, 16 );
     70        sout | narrow( 3.14159265358979, 256 );
    7171
    72         sout | "decompose" | endl;
     72        sout | "decompose";
    7373        int n, d;
    7474//      [n, d] = a;
    75 //      sout | a | n | d | endl;
     75//      sout | a | n | d;
    7676
    77         sout | "more tests" | endl;
     77        sout | "more tests";
    7878        Rational(int) x = { 1, 2 }, y = { 2 };
    79         sout | x - y | endl;
    80         sout | x > y | endl;
    81         sout | x | numerator( x, 2 ) | x | endl;
    82         sout | y | denominator( y, -2 ) | y | endl;
     79        sout | x - y;
     80        sout | x > y;
     81        sout | x | numerator( x, 2 ) | x;
     82        sout | y | denominator( y, -2 ) | y;
    8383
    8484        Rational(int) z = { 0, 5 };
    85         sout | z | endl;
     85        sout | z;
    8686
    87         sout | x | numerator( x, 0 ) | x | endl;
     87        sout | x | numerator( x, 0 ) | x;
    8888
    8989        x = (Rational(int)){ 1, MAX } + (Rational(int)){ 1, MAX };
    90         sout | x | endl;
     90        sout | x;
    9191        x = (Rational(int)){ 3, MAX } + (Rational(int)){ 2, MAX };
    92         sout | x | endl;
     92        sout | x;
    9393
    9494        sin | a | b;
    95         sout | a | b | endl;
     95        sout | a | b;
    9696} // main
    9797
  • tests/references.cfa

    r5e49e47 rd0c91a6  
    99// Author           : Rob Schluntz
    1010// Created On       : Wed Aug 23 16:11:50 2017
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Aug 23 16:12:03
    13 // Update Count     : 2
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Tue Dec 25 14:31:48 2018
     13// Update Count     : 11
    1414//
    1515
     16#include <fstream.hfa>
     17
    1618struct Y { int i; };
    17 void ?{}(Y & y) { printf("Default constructing a Y\n"); }
    18 void ?{}(Y & y, Y other) { printf("Copy constructing a Y\n"); }
    19 void ^?{}(Y & y) { printf("Destructing a Y\n"); }
    20 Y ?=?(Y & y, Y other) { printf("Assigning a Y\n"); return y; }
    21 void ?{}(Y & y, int i) { printf("Value constructing a Y %d\n", i); y.i = i; }
     19void ?{}( Y & y ) { sout | "Default constructing a Y"; }
     20void ?{}( Y & y, Y other ) { sout | "Copy constructing a Y"; }
     21void ^?{}( Y & y ) { sout | "Destructing a Y"; }
     22Y ?=?( Y & y, Y other ) { sout | "Assigning a Y"; return y; }
     23void ?{}( Y & y, int i ) { sout | "Value constructing a Y" | i; y.i = i; }
    2224
    2325struct X { Y & r; Y y; };
    24 void ?{}(X & x) {
     26void ?{}( X & x ) {
    2527        // ensure that r is not implicitly constructed
    2628}
    27 void ?{}(X & x, X other) {
     29void ?{}( X & x, X other ) {
    2830        // ensure that r is not implicitly constructed
    2931}
    30 void ^?{}(X & x) {
     32void ^?{}( X & x ) {
    3133        // ensure that r is not implicitly destructed
    3234}
    33 X ?=?(X & x, X other) { return x; }
     35X ?=?( X & x, X other ) { return x; }
    3436
    3537// ensure that generated functions do not implicitly operate on references
     
    4850        int x = 123456, x2 = 789, *p1 = &x, **p2 = &p1, ***p3 = &p2,
    4951                &r1 = x,    &&r2 = r1,   &&&r3 = r2;
    50         ***p3 = 3;                          // change x
    51         **p3 = &x;                          // change p1
    52         *p3 = &p1;                          // change p2
    53         int y = 0, z = 11, & ar[3] = { x, y, z };    // initialize array of references
    54         // &ar[1] = &z;                        // change reference array element
    55         // typeof( ar[1] ) p = 3;              // is int, i.e., the type of referenced object
    56         // typeof( &ar[1] ) q = &x;            // is int *, i.e., the type of pointer
     52        ***p3 = 3;                                                                                      // change x
     53        **p3 = &x;                                                                                      // change p1
     54        *p3 = &p1;                                                                                      // change p2
     55        int y = 0, z = 11, & ar[3] = { x, y, z };                       // initialize array of references
     56                                                                                                                // &ar[1] = &z;                        // change reference array element
     57                                                                                                                // typeof( ar[1] ) p = 3;              // is int, i.e., the type of referenced object
     58                                                                                                                // typeof( &ar[1] ) q = &x;            // is int *, i.e., the type of pointer
    5759        // _Static_assert( sizeof( ar[1] ) == sizeof( int ), "Array type should be int." );   // is true, i.e., the size of referenced object
    5860        // _Static_assert( sizeof( &ar[1] ) == sizeof( int *), "Address of array should be int *." ); // is true, i.e., the size of a reference
    5961
    60         ((int*&)&r3) = &x;                  // change r1, (&*)**r3
     62        ((int*&)&r3) = &x;                                                                      // change r1, (&*)**r3
    6163        x = 3;
    6264        // test that basic reference properties are true - r1 should be an alias for x
    63         printf("%d %d %d\n", x, r1, &x == &r1);
     65        sout | x | r1 | &x == &r1;
    6466        r1 = 12;
    65         printf("%d %d %d\n", x, r1, &x == &r1);
     67        sout | x | r1 | &x == &r1;
    6668
    6769        // test that functions using basic references work
    68         printf("%d %d %d %d\n", toref(&x), toref(p1), toptr(r1) == toptr(x), toptr(r1) == &x);
     70        sout | toref( &x ) | toref( p1 ) | toptr( r1 ) == toptr( x ) | toptr( r1 ) == &x;
    6971
    7072        changeRef( x );
    7173        changeRef( y );
    7274        changeRef( z );
    73         printf("%d %d %d\n", x, y, z);
     75        sout | x | y | z;
    7476        changeRef( r1 );
    75         printf("%d %d\n", r1, x);
     77        sout | r1 | x;
    7678
    77         r3 = 6;                               // change x, ***r3
    78         printf("x = %d ; x2 = %d\n", x, x2);  // check that x was changed
    79         &r3 = &x2;                            // change r1 to refer to x2, (&*)**r3
    80         r3 = 999;                             // modify x2
    81         printf("x = %d ; x2 = %d\n", x, x2);  // check that x2 was changed
    82         ((int**&)&&r3) = p2;                  // change r2, (&(&*)*)*r3, ensure explicit cast to reference works
    83         r3 = 12345;                           // modify x
    84         printf("x = %d ; x2 = %d\n", x, x2);  // check that x was changed
    85         &&&r3 = p3;                           // change r3 to p3, (&(&(&*)*)*)r3
    86         ((int&)r3) = 22222;                   // modify x, ensure explicit cast to reference works
    87         printf("x = %d ; x2 = %d\n", x, x2);  // check that x was changed
     79        r3 = 6;                                                                                         // change x, ***r3
     80        sout | "x = " | x | " ; x2 = " | x2;                            // check that x was changed
     81        &r3 = &x2;                                                                                      // change r1 to refer to x2, (&*)**r3
     82        r3 = 999;                                                                                       // modify x2
     83        sout | "x = " | x | " ; x2 = " | x2;                            // check that x2 was changed
     84        ((int**&)&&r3) = p2;                                                            // change r2, (&(&*)*)*r3, ensure explicit cast to reference works
     85        r3 = 12345;                                                                                     // modify x
     86        sout | "x = " | x | " ; x2 = " | x2;                            // check that x was changed
     87        &&&r3 = p3;                                                                                     // change r3 to p3, (&(&(&*)*)*)r3
     88        ((int&)r3) = 22222;                                                                     // modify x, ensure explicit cast to reference works
     89        sout | "x = " | x | " ; x2 = " | x2;                                    // check that x was changed
    8890
    8991        // test that reference members are not implicitly constructed/destructed/assigned
     
    102104                struct S { double x, y; };
    103105                void f( int & i, int & j, S & s, int v[] ) {
    104                         printf("%d %d { %g, %g }, [%d, %d, %d]\n", i, j, s.[x, y], v[0], v[1], v[2]);
     106                        sout | i | j | "{ " | s.[x, y] | " }," | "[" | v[0] | "," | v[1] | "," | v[2] | "]";
    105107                }
    106                 void g(int & i) { printf("%d\n", i); }
    107                 void h(int &&& i) { printf("%d\n", i); }
     108                void g(int & i) { sout | i; }
     109                void h(int &&& i) { sout | i; }
    108110
    109                 int &&& r = 3;  // rvalue to reference
     111                int &&& r = 3;                                                                  // rvalue to reference
    110112                int i = r;
    111                 printf("%d %d\n", i, r);  // both 3
     113                sout | i | r;                                                                   // both 3
    112114
    113                 g( 3 );          // rvalue to reference
    114                 h( (int &&&)3 ); // rvalue to reference
     115                g( 3 );                                                                                 // rvalue to reference
     116                h( (int &&&)3 );                                                                // rvalue to reference
    115117
    116118                int a = 5, b = 4;
  • tests/searchsort.cfa

    r5e49e47 rd0c91a6  
    1010// Created On       : Thu Feb  4 18:17:50 2016
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Nov  6 18:00:38 2018
    13 // Update Count     : 102
     12// Last Modified On : Thu Dec 20 22:49:46 2018
     13// Update Count     : 108
    1414//
    1515
    1616#include <fstream.hfa>
    17 #include <stdlib.hfa>                                                                           // bsearch, qsort
     17#include <stdlib.hfa>                                                                   // bsearch, qsort
    1818#include <stdlib.h>                                                                             // C version of bsearch
    1919
     
    2121
    2222int main( void ) {
    23         const unsigned int size = 10;
     23        const int size = 10;
    2424        int iarr[size];
    2525
    26         for ( i; 0u ~ size ) {
     26        sout | nlOff;                                                                           // turn off auto newline
     27
     28        for ( i; 0 ~ size ) {
    2729                iarr[i] = size - i;
    2830                sout | iarr[i] | ", ";
    2931        } // for
    30         sout | endl | endl;
     32        sout | nl | nl;
    3133
    3234        // ascending sort/search by changing < to >
    3335        qsort( iarr, size );
    34         for ( i; 0u ~ size ) {
     36        for ( i; 0 ~ size ) {
    3537                sout | iarr[i] | ", ";
    3638        } // for
    37         sout | endl;
    38         for ( i; 0u ~ size ) {          // C version
     39        sout | nl;
     40        for ( i; 0 ~ size ) {           // C version
    3941                int key = size - i;
    4042                int * v = bsearch( &key, iarr, size, sizeof( iarr[0] ), comp );
    4143                sout | key | ':' | *v | ", ";
    4244        } // for
    43         sout | endl;
     45        sout | nl;
    4446
    45         for ( i; 0u ~ size ) {
     47        for ( i; 0 ~ size ) {
    4648                int * v = bsearch( size - i, iarr, size );
    4749                sout | size - i | ':' | *v | ", ";
    4850        } // for
    49         sout | endl;
    50         for ( i; 0u ~ size ) {
     51        sout | nl;
     52        for ( i; 0 ~ size ) {
    5153                unsigned int posn = bsearch( size - i, iarr, size );
    5254                sout | size - i | ':' | iarr[posn] | ", ";
    5355        } // for
    54         sout | endl | endl;
     56        sout | nl | nl;
    5557
    5658        // descending sort/search by changing < to >
    57         for ( i; 0u ~ size ) {
     59        for ( i; 0 ~ size ) {
    5860                iarr[i] = i + 1;
    5961                sout | iarr[i] | ", ";
    6062        } // for
    61         sout | endl;
     63        sout | nl;
    6264        {
    63                 int ?<?( int x, int y ) { return x > y; }
    64                 qsort( iarr, size );
    65                 for ( i; 0u ~ size ) {
     65                // redefinition of ?<? can't overlap the loop controls:
     66                {
     67                        int (*?<?)(int, int) = ?>?;
     68                        qsort( iarr, size );
     69                }
     70                for ( i; 0 ~ size ) {
    6671                        sout | iarr[i] | ", ";
    6772                } // for
    68                 sout | endl;
    69                 for ( i; 0u ~ size ) {
     73                sout | nl;
     74                for ( i; 0 ~ size ) {
     75                        int (*?<?)(int, int) = ?>?;
    7076                        int * v = bsearch( size - i, iarr, size );
    7177                        sout | size - i | ':' | *v | ", ";
    7278                } // for
    73                 sout | endl;
    74                 for ( i; 0u ~ size ) {
     79                sout | nl;
     80                for ( i; 0 ~ size ) {
     81                        int (*?<?)(int, int) = ?>?;
    7582                        unsigned int posn = bsearch( size - i, iarr, size );
    7683                        sout | size - i | ':' | iarr[posn] | ", ";
    7784                } // for
    7885        }
    79         sout | endl | endl;
     86        sout | nl | nl;
    8087
    8188        double darr[size];
    82         for ( i; 0u ~ size ) {
     89        for ( i; 0 ~ size ) {
    8390                darr[i] = size - i + 0.5;
    8491                sout | darr[i] | ", ";
    8592        } // for
    86         sout | endl;
     93        sout | nl;
    8794        qsort( darr, size );
    88         for ( i; 0u ~ size ) {
     95        for ( i; 0 ~ size ) {
    8996                sout | darr[i] | ", ";
    9097        } // for
    91         sout | endl;
    92         for ( i; 0u ~ size ) {
     98        sout | nl;
     99        for ( i; 0 ~ size ) {
    93100                double * v = bsearch( size - i + 0.5, darr, size );
    94101                sout | size - i + 0.5 | ':' | *v | ", ";
    95102        } // for
    96         sout | endl;
    97         for ( i; 0u ~ size ) {
     103        sout | nl;
     104        for ( i; 0 ~ size ) {
    98105                unsigned int posn = bsearch( size - i + 0.5, darr, size );
    99106                sout | size - i + 0.5 | ':' | darr[posn] | ", ";
    100107        } // for
    101         sout | endl | endl;
     108        sout | nl | nl;
    102109
    103110        struct S { int i, j; } sarr[size];
    104111        int ?<?( S t1, S t2 ) { return t1.i < t2.i && t1.j < t2.j; }
    105112        ofstream & ?|?( ofstream & os, S v ) { return os | v.i | ' ' | v.j; }
    106         for ( i; 0u ~ size ) {
     113        for ( i; 0 ~ size ) {
    107114                sarr[i].i = size - i;
    108115                sarr[i].j = size - i + 1;
    109116                sout | sarr[i] | ", ";
    110117        } // for
    111         sout | endl;
     118        sout | nl;
    112119        qsort( sarr, size );
    113         for ( i; 0u ~ size ) {
     120        for ( i; 0 ~ size ) {
    114121                sout | sarr[i] | ", ";
    115122        } // for
    116         sout | endl;
    117         for ( i; 0u ~ size ) {
     123        sout | nl;
     124        for ( i; 0 ~ size ) {
    118125                S temp = { size - i, size - i + 1 };
    119126                S * v = bsearch( temp, sarr, size );
    120127                sout | temp | ':' | *v | ", ";
    121128        } // for
    122         sout | endl;
    123         for ( i; 0u ~ size ) {
     129        sout | nl;
     130        for ( i; 0 ~ size ) {
    124131                S temp = { size - i, size - i + 1 };
    125132                unsigned int posn = bsearch( temp, sarr, size );
    126133                sout | temp | ':' | sarr[posn] | ", ";
    127134        } // for
    128         sout | endl | endl;
     135        sout | nl | nl;
    129136        {
    130                 unsigned int getKey( const S & s ) { return s.j; }
    131                 for ( i; 0u ~ size ) {
     137                int getKey( const S & s ) { return s.j; }
     138                for ( i; 0 ~ size ) {
    132139                        sout | sarr[i] | ", ";
    133140                } // for
    134                 sout | endl;
    135                 for ( i; 0u ~ size ) {
     141                sout | nl;
     142                for ( i; 0 ~ size ) {
    136143                        S * v = bsearch( size - i + 1, sarr, size );
    137144                        sout | size - i + 1 | ':' | *v | ", ";
    138145                } // for
    139                 sout | endl;
    140                 for ( i; 0u ~ size ) {
     146                sout | nl;
     147                for ( i; 0 ~ size ) {
    141148                        unsigned int posn = bsearch( size - i + 1, sarr, size );
    142149                        sout | size - i + 1 | ':' | sarr[posn] | ", ";
    143150                } // for
    144                 sout | endl | endl;
     151                sout | nl | nl;
    145152        }
    146153} // main
  • tests/shortCircuit.cfa

    r5e49e47 rd0c91a6  
     1//
     2// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
     3//
     4// The contents of this file are covered under the licence agreement in the
     5// file "LICENCE" distributed with Cforall.
     6//
     7// shortCircuit.cfa --
     8//
     9// Author           : Peter A. Buhr
     10// Created On       : Thu Jan 28 18:26:16 2016
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Tue Dec  4 18:26:05 2018
     13// Update Count     : 4
     14//
     15
    116void g( float f ) {}
    217void g( int i ) {}
     
    3348}
    3449
    35 
    36 int main(int argc, char const *argv[])
    37 {
     50int main( int argc, char const *argv[] ) {
     51        sout | nlOff;
    3852        test_t true_val, false_val;
    3953        true_val.x = 1;
     
    4155
    4256        true_val && false_val;
    43         sout | endl;
     57        sout | nl;
    4458
    4559        true_val || false_val;
    46         sout | endl;
     60        sout | nl;
    4761
    4862        false_val && true_val;
    49         sout | endl;
     63        sout | nl;
    5064
    5165        false_val || true_val;
    52         sout | endl;
     66        sout | nl;
    5367
    5468        return 0;
    5569}
     70
     71// Local Variables: //
     72// tab-width: 4 //
     73// compile-command: "cfa abs.cfa" //
     74// End: //
  • tests/sum.cfa

    r5e49e47 rd0c91a6  
    1111// Created On       : Wed May 27 17:56:53 2015
    1212// Last Modified By : Peter A. Buhr
    13 // Last Modified On : Tue Nov  6 18:01:10 2018
    14 // Update Count     : 280
     13// Last Modified On : Sun Dec 23 23:00:38 2018
     14// Update Count     : 287
    1515//
    1616
     
    5656        } // for
    5757        sout | "sum from" | low | "to" | High | "is"
    58                  | sum( size, (unsigned char *)a ) | ", check" | (int)s | endl;
     58                 | sum( size, (unsigned char *)a ) | ", check" | (int)s;
    5959
    6060        int s = 0, a[size], v = low;
     
    6464        } // for
    6565        sout | "sum from" | low | "to" | High | "is"
    66                  | sum( size, (int *)a ) | ", check" | (int)s | endl;
     66                 | sum( size, (int *)a ) | ", check" | (int)s;
    6767
    6868        float s = 0.0f, a[size], v = low / 10.0f;
     
    7272        } // for
    7373        sout | "sum from" | low / 10.0f | "to" | High / 10.0f | "is"
    74                  | sum( size, (float *)a ) | ", check" | (float)s | endl;
     74                 | sum( size, (float *)a ) | ", check" | (float)s;
    7575
    7676        double s = 0.0, a[size], v = low / 10.0;
     
    8080        } // for
    8181        sout | "sum from" | low / 10.0 | "to" | High / 10.0 | "is"
    82                  | sum( size, (double *)a ) | ", check" | (double)s | endl;
     82                 | sum( size, (double *)a ) | ", check" | (double)s;
    8383
    8484        struct S { int i, j; };
     
    9393        S ?++( S & t ) { S temp = t; t += (S){1}; return temp; }
    9494        ofstream & ?|?( ofstream & os, S v ) { return os | v.i | v.j; }
     95        void ?|?( ofstream & os, S v ) { (ofstream &)(os | v); nl( os ); }
    9596
    9697        S s = (S){0}, a[size], v = { low, low };
     
    100101        } // for
    101102        sout | "sum from" | low | "to" | High | "is"
    102                  | sum( size, (S *)a ) | ", check" | (S)s | endl;
     103                 | sum( size, (S *)a ) | ", check" | (S)s;
    103104
    104105        forall( otype Impl | sumable( Impl ) )
     
    114115        } // for
    115116        sout | "sum from" | low | "to" | High | "is"
    116                  | sum( size, gs.x ) | ", check" | (int)s | endl; // add field array in generic type
     117                 | sum( size, gs.x ) | ", check" | (int)s;              // add field array in generic type
    117118        delete( gs.x );
    118119} // main
  • tests/swap.cfa

    r5e49e47 rd0c91a6  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Nov  6 18:01:23 2018
    13 // Update Count     : 72
     12// Last Modified On : Sun Dec 23 23:00:49 2018
     13// Update Count     : 77
    1414//
    1515
     
    1919int main( void ) {
    2020        char c1 = 'a', c2 = 'b';
    21         sout | "char\t\t\t" | c1 | ' ' | c2 | "\t\t\tswap ";
     21        sout | "char\t\t\t" | c1 | ' ' | c2 | "\t\t\tswap " | nonl;
    2222        swap( c1, c2 );
    23         sout | '\t' | c1 | ' ' | c2 | endl;
     23        sout | '\t' | c1 | ' ' | c2;
    2424
    2525        signed int i1 = -1, i2 = -2;
    26         sout | "signed int\t\t" | i1 | i2 | "\t\t\tswap ";
     26        sout | "signed int\t\t" | i1 | i2 | "\t\t\tswap " | nonl;
    2727        swap( i1, i2 );
    28         sout | '\t' | i1 | i2 | endl;
     28        sout | '\t' | i1 | i2;
    2929
    3030        unsigned int ui1 = 1, ui2 = 2;
    31         sout | "unsigned int\t\t" | ui1 | ui2 | "\t\t\tswap ";
     31        sout | "unsigned int\t\t" | ui1 | ui2 | "\t\t\tswap " | nonl;
    3232        swap( ui1, ui2 );
    33         sout | '\t' | ui1 | ui2 | endl;
     33        sout | '\t' | ui1 | ui2;
    3434
    3535        signed long int li1 = -1, li2 = -2;
    36         sout | "signed long int\t\t" | li1 | li2 | "\t\t\tswap ";
     36        sout | "signed long int\t\t" | li1 | li2 | "\t\t\tswap " | nonl;
    3737        swap( li1, li2 );
    38         sout | '\t' | li1 | li2 | endl;
     38        sout | '\t' | li1 | li2;
    3939
    4040        unsigned long int uli1 = 1, uli2 = 2;
    41         sout | "unsigned long int\t" | uli1 | uli2 | "\t\t\tswap ";
     41        sout | "unsigned long int\t" | uli1 | uli2 | "\t\t\tswap " | nonl;
    4242        swap( uli1, uli2 );
    43         sout | '\t' | uli1 | uli2 | endl;
     43        sout | '\t' | uli1 | uli2;
    4444
    4545        signed long long int lli1 = -1, lli2 = -2;
    46         sout | "signed long long int\t" | lli1 | lli2 | "\t\t\tswap ";
     46        sout | "signed long long int\t" | lli1 | lli2 | "\t\t\tswap " | nonl;
    4747        swap( lli1, lli2 );
    48         sout | '\t' | lli1 | lli2 | endl;
     48        sout | '\t' | lli1 | lli2;
    4949
    5050        unsigned long long int ulli1 = 1, ulli2 = 2;
    51         sout | "unsigned long long int\t" | ulli1 | ulli2 | "\t\t\tswap ";
     51        sout | "unsigned long long int\t" | ulli1 | ulli2 | "\t\t\tswap " | nonl;
    5252        swap( ulli1, ulli2 );
    53         sout | '\t' | ulli1 | ulli2 | endl;
     53        sout | '\t' | ulli1 | ulli2;
    5454
    5555        float f1 = 1.5, f2 = 2.5;
    56         sout | "float\t\t\t" | f1 | f2 | "\t\t\tswap ";
     56        sout | "float\t\t\t" | f1 | f2 | "\t\t\tswap " | nonl;
    5757        swap( f1, f2 );
    58         sout | '\t' | f1 | f2 | endl;
     58        sout | '\t' | f1 | f2;
    5959
    6060        double d1 = 1.5, d2 = 2.5;
    61         sout | "double\t\t\t" | d1 | d2 | "\t\t\tswap ";
     61        sout | "double\t\t\t" | d1 | d2 | "\t\t\tswap " | nonl;
    6262        swap( d1, d2 );
    63         sout | '\t' | d1 | d2 | endl;
     63        sout | '\t' | d1 | d2;
    6464
    6565        long double ld1 = 1.5, ld2 = 2.5;
    66         sout | "long double\t\t" | ld1 | ld2 | "\t\t\tswap ";
     66        sout | "long double\t\t" | ld1 | ld2 | "\t\t\tswap " | nonl;
    6767        swap( ld1, ld2 );
    68         sout | '\t' | ld1 | ld2 | endl;
     68        sout | '\t' | ld1 | ld2;
    6969
    7070        float _Complex fc1 = 1.5f+1.5if, fc2 = 2.5f+2.5if;
    71         sout | "float _Complex\t\t" | fc1 | fc2 | "\tswap ";
     71        sout | "float _Complex\t\t" | fc1 | fc2 | "\tswap " | nonl;
    7272        swap( fc1, fc2 );
    73         sout | '\t' | fc1 | fc2 | endl;
     73        sout | '\t' | fc1 | fc2;
    7474
    7575        double _Complex dc1 = 1.5d+1.5id, dc2 = 2.5d+2.5id;
    76         sout | "double _Complex\t\t" | dc1 | dc2 | "\tswap ";
     76        sout | "double _Complex\t\t" | dc1 | dc2 | "\tswap " | nonl;
    7777        swap( dc1, dc2 );
    78         sout | '\t' | dc1 | dc2 | endl;
     78        sout | '\t' | dc1 | dc2;
    7979
    8080        long double _Complex ldc1 = 1.5d+1.5il, ldc2 = 2.5d+2.5il;
    81         sout | "long double _Complex\t" | ldc1 | ldc2 | "\tswap ";
     81        sout | "long double _Complex\t" | ldc1 | ldc2 | "\tswap " | nonl;
    8282        swap( ldc1, ldc2 );
    83         sout | '\t' | ldc1 | ldc2 | endl;
     83        sout | '\t' | ldc1 | ldc2;
    8484
    8585        struct S { int i, j; } s1 = { 1, 2 }, s2 = { 2, 1 };
    8686        ofstream & ?|?( ofstream & os, S s ) { return os | s.i | s.j; }
    87         sout | "struct S\t\t" | s1 | "," | s2 | "\t\tswap ";
     87        void ?|?( ofstream & os, S s ) { (ofstream &)(os | s.i | s.j); nl( os ); }
     88        sout | "struct S\t\t" | s1 | "," | s2 | "\t\tswap " | nonl;
    8889        swap( s1, s2 );
    89         sout | '\t' | s1 | "," | s2 | endl;
     90        sout | '\t' | s1 | "," | s2;
    9091} // main
    9192
  • tests/test.py

    r5e49e47 rd0c91a6  
    1919
    2020        def matchTest(path):
    21                 match = re.search("%s\/([\w\/\-_]*).expect\/([\w\-_]+)(\.[\w\-_]+)?\.txt" % settings.SRCDIR, path)
     21                match = re.search("^%s\/([\w\/\-_]*).expect\/([\w\-_]+)(\.[\w\-_]+)?\.txt$" % settings.SRCDIR, path)
    2222                if match :
    2323                        test = Test()
     
    3434# reads the directory ./.expect and indentifies the tests
    3535def listTests( includes, excludes ):
    36         includes = [canonicalPath( i ) for i in includes] if includes else None
    37         excludes = [canonicalPath( i ) for i in excludes] if excludes else None
    38 
    3936        # tests directly in the .expect folder will always be processed
    4037        test_list = findTests()
  • tests/time.cfa

    r5e49e47 rd0c91a6  
    1010// Created On       : Tue Mar 27 17:24:56 2018
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Nov  6 18:01:45 2018
    13 // Update Count     : 17
     12// Last Modified On : Thu Dec 20 23:09:21 2018
     13// Update Count     : 23
    1414//
    1515
     
    1919int main() {
    2020        Duration d1 = 3`h, d2 = 2`s, d3 = 3.375`s, d4 = 12`s, d5 = 1`s + 10_000`ns;
    21         sout | d1 | d2 | d3 | d4 | d5 | endl;
     21        sout | d1 | d2 | d3 | d4 | d5;
    2222        int i;
    2323        d1 = 0;
    24         sout | d1 | d2 | d3 | endl;
     24        sout | d1 | d2 | d3;
    2525        d1 = 7`s;
    2626        d3 = d2 = d1;
    27         sout | d1 | d2 | d3 | endl;
     27        sout | d1 | d2 | d3;
    2828        d1 = d1 + d2;
    29         sout | d1 | endl;
    30         sout | d1 == 7`s | d1 == d2 | d1 == 0 | endl;
    31         sout | div( 7`s, 2`s ) | endl;
    32         sout | endl;
     29        sout | d1;
     30        sout | d1 == 7`s | d1 == d2 | d1 == 0;
     31        sout | div( 7`s, 2`s );
     32        sout | nl;
    3333
    3434        Time t = { 1970, 1, 2, 0, 0, 0, 10_000_000 };
    35         sout | t | endl;
     35        sout | t;
    3636        t = t + d1;
    37         sout | t | t.tv | endl;
     37        sout | t | t.tv;
    3838        Time t1 = (timespec){ 104_414, 10_000_000 };
    39         sout | t1 | t1.tv | endl;
    40         sout | t - t  | t + d5 | t.tv | endl;
     39        sout | t1 | t1.tv;
     40        sout | t - t  | t + d5 | t.tv;
    4141        char buf[16];
    42         sout | "yy/mm/dd" | [t, buf]`ymd;                                       // shared buf => separate calls
    43         sout | "mm/dd/yy" | mm_dd_yy( t, buf );
     42        sout | "yy/mm/dd" | [t, buf]`ymd | nonl;                        // shared buf => separate calls
     43        sout | "mm/dd/yy" | mm_dd_yy( t, buf ) | nonl;
    4444        strftime( buf, 16, "%D", t );                                           // %D => mm/dd/yy
    45         sout | "mm/dd/yy" | buf;
    46         sout | "dd/yy/mm" | [t, buf]`dmy | endl;
     45        sout | "mm/dd/yy" | buf | nonl;
     46        sout | "dd/yy/mm" | [t, buf]`dmy;
    4747        Time t2 = { 2001, 7, 4, 0, 0, 1, 0 }, t3 = (timeval){ 994_219_201 };
    48         sout | t2 | t2.tv | endl | t3 | t3.tv | endl;
    49         sout | endl;
     48        sout | t2 | t2.tv | nl | t3 | t3.tv;
     49        sout | nl;
    5050
    5151        // Clock Newfoundland = { -3.5`h }, PST = { -8`h };     // distance from GMT (UTC)
    52         // sout | "Clock Resolution" | getRes() | endl
    53         //       | "Newfoundland" | getTime( Newfoundland ) | endl
    54         //       | "local" | getTime() | endl
    55         //       | "local nsec" | getTimeNsec() | endl
    56         //       | "PST" | PST() | endl;                                                // getTime short form
    57         // sout | endl;
     52        // sout | "Clock Resolution" | getRes()
     53        //       | "Newfoundland" | getTime( Newfoundland )
     54        //       | "local" | getTime()
     55        //       | "local nsec" | getTimeNsec()
     56        //       | "PST" | PST();                                                               // getTime short form
     57        // sout | nl;
    5858
    5959        // http://en.cppreference.com/w/cpp/chrono/duration/operator_arith4
    6060        Duration s = 1`h + 2 * 10`m + 70`s / 10;
    61         sout | "1 hour + 2*10 min + 70/10 sec = " | s | "seconds" | endl;
    62         sout | "Dividing that by 2 minutes gives" | s / 2`m | endl;
    63         sout | "Dividing that by 2 gives" | s / 2 | "seconds\n";
    64         sout | s | "seconds is" | s`h | "hours," | (s % 1`h)`m | "minutes," | (s % 1`m)`s | "seconds" | endl;
     61        sout | "1 hour + 2*10 min + 70/10 sec = " | s | "seconds";
     62        sout | "Dividing that by 2 minutes gives" | s / 2`m;
     63        sout | "Dividing that by 2 gives" | s / 2 | "seconds";
     64        sout | s | "seconds is" | s`h | "hours," | (s % 1`h)`m | "minutes," | (s % 1`m)`s | "seconds";
    6565} // main
    6666
  • tests/tuple/tupleAssign.cfa

    r5e49e47 rd0c91a6  
    1010// Created On       : Tue Nov 15 17:24:32 2016
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Mar  6 21:23:58 2017
    13 // Update Count     : 34
     12// Last Modified On : Tue Dec  4 22:03:48 2018
     13// Update Count     : 35
    1414//
    1515
     
    2424                // swap x, y and store the new [x, y] in [u, v] and in z;
    2525                printf( "u=%d v=%d x=%d y=%d z=[%d, %d]\n", u, v, x, y, z );
    26                 sout | "u=" | u | "v=" | v | "x=" | x | "y=" | y | "z=[" | z | "]" | endl;
     26                sout | "u=" | u | "v=" | v | "x=" | x | "y=" | y | "z=[" | z | "]";
    2727                z = [u, v] = [x, y] = [y, x];
    2828                printf( "u=%d v=%d x=%d y=%d z=[%d, %d]\n", u, v, x, y, z );
    29                 sout | "u=" | u | "v=" | v | "x=" | x | "y=" | y | "z=[" | z | "]" | endl;
     29                sout | "u=" | u | "v=" | v | "x=" | x | "y=" | y | "z=[" | z | "]";
    3030
    3131                // shuffle elements -- v = z.0, z.0 = z.1, z.1 = u, u = v
    3232                [v, z, u] = [z, u, v];
    3333                printf( "u=%d v=%d z=[%d, %d]\n", u, v, z );
    34                 sout | "u=" | u | "v=" | v | "z=[" | z | "]" | endl;
     34                sout | "u=" | u | "v=" | v | "z=[" | z | "]";
    3535
    3636                // multiple assignment with tuple expression on right
     
    3838                [u, v] = [123, 456];
    3939                printf( "u=%d v=%d z=[%d, %d]\n", u, v, z );
    40                 sout | "u=" | u | "v=" | v | "z=[" | z | "]" | endl;
     40                sout | "u=" | u | "v=" | v | "z=[" | z | "]";
    4141        }
    4242        {
     
    5555                [t, x, d, i, c, x] = (double)94.12;
    5656                printf( "d=%lg i=%d c=%c t=[%d, %lg, %d]\n", d, i, (int)c, t );
    57                 sout | "d=" | d | "i=" | i | "c=" | c | ' ' | "t=[" | t | "]" | endl;
     57                sout | "d=" | d | "i=" | i | "c=" | c | ' ' | "t=[" | t | "]";
    5858                [x, c, i, d, x, t] = (double)-94.12;
    5959                printf( "d=%lg i=%d c=%c t=[%d, %lg, %d]\n", d, i, c, t );
    60                 sout | "d=" | d | "i=" | i | "c=" | c | ' ' | "t=[" | t | "]" | endl;
     60                sout | "d=" | d | "i=" | i | "c=" | c | ' ' | "t=[" | t | "]";
    6161        }
    6262}
  • tests/userLiterals.cfa

    r5e49e47 rd0c91a6  
    1010// Created On       : Wed Sep  6 21:40:50 2017
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Nov  6 18:02:03 2018
    13 // Update Count     : 55
     12// Last Modified On : Tue Dec  4 22:03:10 2018
     13// Update Count     : 56
    1414//
    1515
     
    1818#include <uchar.h>
    1919
    20 int ?`s( int s ) { sout | "secs" | s | endl; return s; }
    21 int ?`m( int m ) { sout | "mins" | m | endl; return m * 60; }
    22 int ?`h( int h ) { sout | "hours" | h | endl; return h * 3600; }
    23 int ?`_A_( int x ) { sout | "_A_" | x | endl; return x; }
    24 int ?`__thingy_( int x ) { sout | "_thingy_" | x | endl; return x; }
     20int ?`s( int s ) { sout | "secs" | s; return s; }
     21int ?`m( int m ) { sout | "mins" | m; return m * 60; }
     22int ?`h( int h ) { sout | "hours" | h; return h * 3600; }
     23int ?`_A_( int x ) { sout | "_A_" | x; return x; }
     24int ?`__thingy_( int x ) { sout | "_thingy_" | x; return x; }
    2525
    26 int ?`s( const char * s ) { sout | "secs" | s | endl; return 0; }
    27 int ?`m( const char16_t * m ) { sout | "mins" | m | endl; return 0;}
    28 int ?`h( const char32_t * h ) { sout | "hours" | h | endl; return 0; }
    29 int ?`_A_( const wchar_t * str ) { sout | "_A_" | str | endl; return 0; }
    30 int ?`__thingy_( const char * str ) { sout | "_thingy_" | str | endl; return 0; }
     26int ?`s( const char * s ) { sout | "secs" | s; return 0; }
     27int ?`m( const char16_t * m ) { sout | "mins" | m; return 0;}
     28int ?`h( const char32_t * h ) { sout | "hours" | h; return 0; }
     29int ?`_A_( const wchar_t * str ) { sout | "_A_" | str; return 0; }
     30int ?`__thingy_( const char * str ) { sout | "_thingy_" | str; return 0; }
    3131
    3232
     
    4646        Weight w, heavy = { 20 };                                                       // 20 stone
    4747        w = 155`lb;
    48         sout | w | endl;
     48        sout | w;
    4949        w = 0b_1111`st;
    50         sout | w | endl;
     50        sout | w;
    5151        w = 0_233`lb;                                                                           // octal weight (155)
    52         sout | w | endl;
     52        sout | w;
    5353        w = 0x_9b_u`kg;
    54         sout | w | endl;
     54        sout | w;
    5555        w = 70.3`kg;
    56         sout | w | endl;
     56        sout | w;
    5757        w = 11`st + 1`lb;
    58         sout | w | endl;
     58        sout | w;
    5959        w = 5`st + 8`kg + 25`lb + heavy;
    60         sout | w | endl;
     60        sout | w;
    6161
    6262//      0`secs;
  • tests/vector.cfa

    r5e49e47 rd0c91a6  
    1010// Created On       : Mon Jul  4 23:36:19 2016
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Nov  6 18:02:26 2018
    13 // Update Count     : 28
     12// Last Modified On : Tue Dec  4 22:02:39 2018
     13// Update Count     : 29
    1414//
    1515
     
    2121        do {                                                                            \
    2222                if ( !(x) ) {                                                   \
    23                         sout | "CHECK failed :" | #x | "at" | __FILE__ | " :" | __LINE__ | endl;        \
     23                        sout | "CHECK failed :" | #x | "at" | __FILE__ | " :" | __LINE__;       \
    2424                        abort();                                                        \
    2525                }                                                                               \
     
    3131        assert( empty( &iv ) );
    3232        assert( size( &iv ) == 0 );
    33         sout | size( &iv ) | endl;
     33        sout | size( &iv );
    3434
    3535        push_back( &iv, 1 );
    3636        assert( size( &iv ) == 1 );
    37         sout | size( &iv ) | endl;
     37        sout | size( &iv );
    3838
    3939        push_back( &iv, 2 );
    4040        assert( size( &iv ) == 2 );
    41         sout | size( &iv ) | endl;
     41        sout | size( &iv );
    4242
    4343        push_back( &iv, 3 );
    4444        assert( size( &iv ) == 3 );
    45         sout | size( &iv ) | endl;
     45        sout | size( &iv );
    4646
    4747        assert( !empty( &iv ) );
     
    5858        assert( empty( &iv ) );
    5959        assert( size( &iv ) == 0 );
    60         sout | size( &iv ) | endl;
     60        sout | size( &iv );
    6161}
    6262
  • tests/warnings/.expect/self-assignment.txt

    r5e49e47 rd0c91a6  
    1 warnings/self-assignment.c:29:1 warning: self assignment of expression: Cast of:
     1warnings/self-assignment.cfa:29:1 warning: self assignment of expression: Cast of:
    22  Variable Expression: j: signed int
    33... to:
    44  reference to signed int
    5 warnings/self-assignment.c:30:1 warning: self assignment of expression: Cast of:
    6   Variable Expression: s: instance of struct S with body 1 
     5warnings/self-assignment.cfa:30:1 warning: self assignment of expression: Cast of:
     6  Variable Expression: s: instance of struct S with body 1
    77... to:
    8   reference to instance of struct S with body 1 
    9 warnings/self-assignment.c:31:1 warning: self assignment of expression: Cast of:
    10   Member Expression, with field: 
     8  reference to instance of struct S with body 1
     9warnings/self-assignment.cfa:31:1 warning: self assignment of expression: Cast of:
     10  Member Expression, with field:
    1111    i: signed int
    12   ... from aggregate: 
    13     Variable Expression: s: instance of struct S with body 1 
     12  ... from aggregate:
     13    Variable Expression: s: instance of struct S with body 1
    1414... to:
    1515  reference to signed int
    16 warnings/self-assignment.c:32:1 warning: self assignment of expression: Cast of:
    17   Member Expression, with field: 
     16warnings/self-assignment.cfa:32:1 warning: self assignment of expression: Cast of:
     17  Member Expression, with field:
    1818    i: signed int
    19   ... from aggregate: 
    20     Member Expression, with field: 
    21       s: instance of struct S with body 1 
    22     ... from aggregate: 
    23       Variable Expression: t: instance of struct T with body 1 
     19  ... from aggregate:
     20    Member Expression, with field:
     21      s: instance of struct S with body 1
     22    ... from aggregate:
     23      Variable Expression: t: instance of struct T with body 1
    2424... to:
    2525  reference to signed int
  • tests/withStatement.cfa

    r5e49e47 rd0c91a6  
    99// Author           : Rob Schluntz
    1010// Created On       : Mon Dec 04 17:41:45 2017
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Mon Dec 04 17:45:07 2017
    13 // Update Count     : 2
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Mon Dec 24 19:08:18 2018
     13// Update Count     : 5
    1414//
    1515
     16#include <fstream.hfa>
     17
    1618struct S {
    17   int i;
    18   // dynamically allocated member ensures ctor/dtors are called correctly on temporaries
    19   int * ptr;
     19        int i;
     20        // dynamically allocated member ensures ctor/dtors are called correctly on temporaries
     21        int * ptr;
    2022};
    2123
    2224// with clause on reference parameter
    23 void ?{}(S & this, int n) with(this) {
    24   i = n;
    25   ptr = (int *)malloc(sizeof(int));
     25void ?{}( S & this, int n ) with( this ) {
     26        i = n;
     27        ptr = (int *)malloc( sizeof(int) );
    2628}
    2729
    28 void ?{}(S & this) {
    29   this{ 0 };
     30void ?{}( S & this ) {
     31        this{ 0 };
    3032}
    3133
    32 void ?{}(S & this, S other) {
    33   this{ other.i };
     34void ?{}( S & this, S other ) {
     35        this{ other.i };
    3436}
    3537
    36 S ?=?(S & this, S other) with(this) {
    37   i = other.i;
    38   *ptr = *other.ptr;
    39   return this;
     38S ?=?( S & this, S other ) with( this ) {
     39        i = other.i;
     40        *ptr = *other.ptr;
     41        return this;
    4042}
    4143
    42 void ^?{}(S & this) with(this) {
    43   free(ptr);
     44void ^?{}( S & this ) with( this ) {
     45        free( ptr );
    4446}
    4547
    4648struct S2 {
    47   S s;
     49        S s;
    4850};
    4951
    50 void ?{}(S2 & this, int n) {
    51   (this.s){ n };
     52void ?{}( S2 & this, int n ) {
     53        (this.s){ n };
    5254}
    5355
    54 forall(otype T)
     56forall( otype T )
    5557struct Box {
    56   T x;
     58        T x;
    5759};
    5860
    59 forall(otype T)
    60 void ?{}(Box(T) & this) with(this) { // with clause in polymorphic function
    61   x{};
     61forall( otype T )
     62void ?{}( Box(T) & this ) with( this ) { // with clause in polymorphic function
     63        x{};
    6264}
    6365
    64 void print(int i) { printf("%d", i); }
     66void print( int i ) { sout | i; }
    6567
    66 forall(otype T | { void print(T); })
    67 void foo(T t) {
    68   Box(T) b = { t };
    69   with(b) {  // with statement in polymorphic function
    70     print(x);
    71     printf("\n");
    72   }
     68forall( otype T | { void print( T ); })
     69void foo( T t ) {
     70        Box( T ) b = { t };
     71        with( b ) {  // with statement in polymorphic function
     72                print( x );
     73        }
    7374}
    7475
    7576// ensure with-statement temporary generation works correctly
    7677S mk() {
    77   printf("called mk\n");
    78   return (S) { 444 };
     78        sout | "called mk";
     79        return (S){ 444 };
    7980}
    8081
    8182// ensure with-statement temporary generation with reference-returning functions works correctly
    8283S & ref() {
    83   static S var = { 123456789 };
    84   return var;
     84        static S var = { 123456789 };
     85        return var;
    8586}
    8687
    8788int main() {
    88   S2 s2 = { 12345 };
    89   with (s2) {
    90     with(s) { // with s2.s
    91       printf("%d %d %d\n", i, s.i, s2.s.i);
    92       foo(i);  // s.i
    93       with(mk()) {
    94         printf("%d %d %d\n", i, i, i);
    95         with(ref()) {
    96           printf("%d %d %d\n", i, i, i);
    97         } // with ref()
    98         with(ref()) {
    99           printf("%d %d %d\n", i, i, i);
    100         } // with ref()
    101       } // with mk()
    102     } // with s
    103   } // with s2
     89        S2 s2 = { 12345 };
     90        with ( s2) {
     91                with( s ) { // with s2.s
     92                        sout | i | s.i | s2.s.i;
     93                        foo( i );  // s.i
     94                        with( mk()) {
     95                                sout | i | i | i;
     96                                with( ref()) {
     97                                        sout | i | i | i;
     98                                } // with ref()
     99                                with( ref()) {
     100                                        sout | i | i | i;
     101                                } // with ref()
     102                        } // with mk()
     103                } // with s
     104        } // with s2
    104105}
    105106
  • tools/Makefile.am

    r5e49e47 rd0c91a6  
    1616
    1717AUTOMAKE_OPTIONS = foreign    # do not require all the GNU file names
     18ACLOCAL_AMFLAGS  = -I automake
    1819
    19 CC = @BACKEND_CC@
    20 AM_CFLAGS = -Wall -Wextra -O2 -g -std=c11
     20AM_CFLAGS = -Wall -Wextra -O2 -g
    2121
    2222noinst_PROGRAMS = busy catchsig repeat watchdog
  • tools/Makefile.in

    r5e49e47 rd0c91a6  
    9696subdir = tools
    9797ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
    98 am__aclocal_m4_deps = $(top_srcdir)/automake/cfa.m4 \
    99         $(top_srcdir)/configure.ac
     98am__aclocal_m4_deps = $(top_srcdir)/automake/libtool.m4 \
     99        $(top_srcdir)/automake/ltoptions.m4 \
     100        $(top_srcdir)/automake/ltsugar.m4 \
     101        $(top_srcdir)/automake/ltversion.m4 \
     102        $(top_srcdir)/automake/lt~obsolete.m4 \
     103        $(top_srcdir)/automake/cfa.m4 $(top_srcdir)/configure.ac
    100104am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
    101105        $(ACLOCAL_M4)
     
    109113busy_OBJECTS = $(am_busy_OBJECTS)
    110114busy_LDADD = $(LDADD)
    111 busy_LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(busy_LDFLAGS) $(LDFLAGS) \
    112         -o $@
     115AM_V_lt = $(am__v_lt_@AM_V@)
     116am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
     117am__v_lt_0 = --silent
     118am__v_lt_1 =
     119busy_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
     120        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
     121        $(busy_LDFLAGS) $(LDFLAGS) -o $@
    113122am_catchsig_OBJECTS = catchsig.$(OBJEXT)
    114123catchsig_OBJECTS = $(am_catchsig_OBJECTS)
     
    138147COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
    139148        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
     149LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
     150        $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
     151        $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
     152        $(AM_CFLAGS) $(CFLAGS)
    140153AM_V_CC = $(am__v_CC_@AM_V@)
    141154am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
     
    143156am__v_CC_1 =
    144157CCLD = $(CC)
    145 LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
     158LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
     159        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
     160        $(AM_LDFLAGS) $(LDFLAGS) -o $@
    146161AM_V_CCLD = $(am__v_CCLD_@AM_V@)
    147162am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
     
    182197AMTAR = @AMTAR@
    183198AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
     199AR = @AR@
    184200AUTOCONF = @AUTOCONF@
    185201AUTOHEADER = @AUTOHEADER@
    186202AUTOMAKE = @AUTOMAKE@
    187203AWK = @AWK@
    188 BACKEND_CC = @BACKEND_CC@
    189204BUILD_IN_TREE_FLAGS = @BUILD_IN_TREE_FLAGS@
    190 CC = @BACKEND_CC@
     205CC = @CC@
    191206CCAS = @CCAS@
    192207CCASDEPMODE = @CCASDEPMODE@
     
    206221CPPFLAGS = @CPPFLAGS@
    207222CXX = @CXX@
     223CXXCPP = @CXXCPP@
    208224CXXDEPMODE = @CXXDEPMODE@
    209225CXXFLAGS = @CXXFLAGS@
     
    211227DEFS = @DEFS@
    212228DEPDIR = @DEPDIR@
     229DLLTOOL = @DLLTOOL@
    213230DRIVER_DIR = @DRIVER_DIR@
     231DSYMUTIL = @DSYMUTIL@
     232DUMPBIN = @DUMPBIN@
    214233ECHO_C = @ECHO_C@
    215234ECHO_N = @ECHO_N@
     
    217236EGREP = @EGREP@
    218237EXEEXT = @EXEEXT@
     238FGREP = @FGREP@
    219239GREP = @GREP@
    220240HOST_FLAGS = @HOST_FLAGS@
     
    224244INSTALL_SCRIPT = @INSTALL_SCRIPT@
    225245INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
     246LD = @LD@
    226247LDFLAGS = @LDFLAGS@
    227248LEX = @LEX@
     
    232253LIBOBJS = @LIBOBJS@
    233254LIBS = @LIBS@
     255LIBTOOL = @LIBTOOL@
     256LIPO = @LIPO@
     257LN_S = @LN_S@
    234258LTLIBOBJS = @LTLIBOBJS@
     259LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
    235260MAKEINFO = @MAKEINFO@
     261MANIFEST_TOOL = @MANIFEST_TOOL@
    236262MKDIR_P = @MKDIR_P@
     263NM = @NM@
     264NMEDIT = @NMEDIT@
     265OBJDUMP = @OBJDUMP@
    237266OBJEXT = @OBJEXT@
     267OTOOL = @OTOOL@
     268OTOOL64 = @OTOOL64@
    238269PACKAGE = @PACKAGE@
    239270PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
     
    245276PATH_SEPARATOR = @PATH_SEPARATOR@
    246277RANLIB = @RANLIB@
     278SED = @SED@
    247279SET_MAKE = @SET_MAKE@
    248280SHELL = @SHELL@
     
    256288abs_top_builddir = @abs_top_builddir@
    257289abs_top_srcdir = @abs_top_srcdir@
     290ac_ct_AR = @ac_ct_AR@
    258291ac_ct_CC = @ac_ct_CC@
    259292ac_ct_CXX = @ac_ct_CXX@
     293ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
    260294am__include = @am__include@
    261295am__leading_dot = @am__leading_dot@
     
    305339top_srcdir = @top_srcdir@
    306340AUTOMAKE_OPTIONS = foreign    # do not require all the GNU file names
    307 AM_CFLAGS = -Wall -Wextra -O2 -g -std=c11
     341ACLOCAL_AMFLAGS = -I automake
     342AM_CFLAGS = -Wall -Wextra -O2 -g
    308343busy_SOURCES = busy.c
    309344busy_LDFLAGS = -pthread
     
    314349
    315350.SUFFIXES:
    316 .SUFFIXES: .c .o .obj
     351.SUFFIXES: .c .lo .o .obj
    317352$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
    318353        @for dep in $?; do \
     
    346381
    347382clean-noinstPROGRAMS:
    348         -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
     383        @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
     384        echo " rm -f" $$list; \
     385        rm -f $$list || exit $$?; \
     386        test -n "$(EXEEXT)" || exit 0; \
     387        list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
     388        echo " rm -f" $$list; \
     389        rm -f $$list
    349390
    350391busy$(EXEEXT): $(busy_OBJECTS) $(busy_DEPENDENCIES) $(EXTRA_busy_DEPENDENCIES)
     
    390431@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    391432@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
     433
     434.c.lo:
     435@am__fastdepCC_TRUE@    $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
     436@am__fastdepCC_TRUE@    $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
     437@am__fastdepCC_TRUE@    $(am__mv) $$depbase.Tpo $$depbase.Plo
     438@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
     439@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     440@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
     441
     442mostlyclean-libtool:
     443        -rm -f *.lo
     444
     445clean-libtool:
     446        -rm -rf .libs _libs
    392447
    393448ID: $(am__tagged_files)
     
    509564clean: clean-am
    510565
    511 clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am
     566clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \
     567        mostlyclean-am
    512568
    513569distclean: distclean-am
     
    564620mostlyclean: mostlyclean-am
    565621
    566 mostlyclean-am: mostlyclean-compile mostlyclean-generic
     622mostlyclean-am: mostlyclean-compile mostlyclean-generic \
     623        mostlyclean-libtool
    567624
    568625pdf: pdf-am
     
    579636
    580637.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
    581         clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \
    582         distclean-compile distclean-generic distclean-tags distdir dvi \
    583         dvi-am html html-am info info-am install install-am \
    584         install-data install-data-am install-dvi install-dvi-am \
    585         install-exec install-exec-am install-html install-html-am \
    586         install-info install-info-am install-man install-pdf \
    587         install-pdf-am install-ps install-ps-am install-strip \
    588         installcheck installcheck-am installdirs maintainer-clean \
     638        clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \
     639        ctags-am distclean distclean-compile distclean-generic \
     640        distclean-libtool distclean-tags distdir dvi dvi-am html \
     641        html-am info info-am install install-am install-data \
     642        install-data-am install-dvi install-dvi-am install-exec \
     643        install-exec-am install-html install-html-am install-info \
     644        install-info-am install-man install-pdf install-pdf-am \
     645        install-ps install-ps-am install-strip installcheck \
     646        installcheck-am installdirs maintainer-clean \
    589647        maintainer-clean-generic mostlyclean mostlyclean-compile \
    590         mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \
    591         uninstall-am
     648        mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
     649        tags tags-am uninstall uninstall-am
    592650
    593651.PRECIOUS: Makefile
  • tools/prettyprinter/Makefile.am

    r5e49e47 rd0c91a6  
    1616
    1717AUTOMAKE_OPTIONS = foreign    # do not require all the GNU file names
     18ACLOCAL_AMFLAGS  = -I automake
    1819
    1920BUILT_SOURCES = parser.hh
  • tools/prettyprinter/Makefile.in

    r5e49e47 rd0c91a6  
    9595subdir = tools/prettyprinter
    9696ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
    97 am__aclocal_m4_deps = $(top_srcdir)/automake/cfa.m4 \
    98         $(top_srcdir)/configure.ac
     97am__aclocal_m4_deps = $(top_srcdir)/automake/libtool.m4 \
     98        $(top_srcdir)/automake/ltoptions.m4 \
     99        $(top_srcdir)/automake/ltsugar.m4 \
     100        $(top_srcdir)/automake/ltversion.m4 \
     101        $(top_srcdir)/automake/lt~obsolete.m4 \
     102        $(top_srcdir)/automake/cfa.m4 $(top_srcdir)/configure.ac
    99103am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
    100104        $(ACLOCAL_M4)
     
    113117am__DEPENDENCIES_1 =
    114118pretty_DEPENDENCIES = $(am__DEPENDENCIES_1)
    115 pretty_LINK = $(CXXLD) $(pretty_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
    116         $(LDFLAGS) -o $@
     119AM_V_lt = $(am__v_lt_@AM_V@)
     120am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
     121am__v_lt_0 = --silent
     122am__v_lt_1 =
     123pretty_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
     124        $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(pretty_CXXFLAGS) \
     125        $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
    117126AM_V_P = $(am__v_P_@AM_V@)
    118127am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
     
    131140am__depfiles_maybe = depfiles
    132141am__mv = mv -f
    133 AM_V_lt = $(am__v_lt_@AM_V@)
    134 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
    135 am__v_lt_0 = --silent
    136 am__v_lt_1 =
    137142CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
    138143        $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
     144LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
     145        $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
     146        $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
     147        $(AM_CXXFLAGS) $(CXXFLAGS)
    139148AM_V_CXX = $(am__v_CXX_@AM_V@)
    140149am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
     
    142151am__v_CXX_1 =
    143152CXXLD = $(CXX)
    144 CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
    145         -o $@
     153CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
     154        $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
     155        $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
    146156AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
    147157am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
     
    149159am__v_CXXLD_1 =
    150160LEXCOMPILE = $(LEX) $(AM_LFLAGS) $(LFLAGS)
     161LTLEXCOMPILE = $(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) \
     162        $(LIBTOOLFLAGS) --mode=compile $(LEX) $(AM_LFLAGS) $(LFLAGS)
    151163AM_V_LEX = $(am__v_LEX_@AM_V@)
    152164am__v_LEX_ = $(am__v_LEX_@AM_DEFAULT_V@)
     
    157169                   -e s/c++$$/h++/ -e s/c$$/h/
    158170YACCCOMPILE = $(YACC) $(AM_YFLAGS) $(YFLAGS)
     171LTYACCCOMPILE = $(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) \
     172        $(LIBTOOLFLAGS) --mode=compile $(YACC) $(AM_YFLAGS) $(YFLAGS)
    159173AM_V_YACC = $(am__v_YACC_@AM_V@)
    160174am__v_YACC_ = $(am__v_YACC_@AM_DEFAULT_V@)
     
    163177COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
    164178        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
     179LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
     180        $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
     181        $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
     182        $(AM_CFLAGS) $(CFLAGS)
    165183AM_V_CC = $(am__v_CC_@AM_V@)
    166184am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
     
    168186am__v_CC_1 =
    169187CCLD = $(CC)
    170 LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
     188LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
     189        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
     190        $(AM_LDFLAGS) $(LDFLAGS) -o $@
    171191AM_V_CCLD = $(am__v_CCLD_@AM_V@)
    172192am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
     
    206226AMTAR = @AMTAR@
    207227AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
     228AR = @AR@
    208229AUTOCONF = @AUTOCONF@
    209230AUTOHEADER = @AUTOHEADER@
    210231AUTOMAKE = @AUTOMAKE@
    211232AWK = @AWK@
    212 BACKEND_CC = @BACKEND_CC@
    213233BUILD_IN_TREE_FLAGS = @BUILD_IN_TREE_FLAGS@
    214234CC = @CC@
     
    230250CPPFLAGS = @CPPFLAGS@
    231251CXX = @CXX@
     252CXXCPP = @CXXCPP@
    232253CXXDEPMODE = @CXXDEPMODE@
    233254CXXFLAGS = @CXXFLAGS@
     
    235256DEFS = @DEFS@
    236257DEPDIR = @DEPDIR@
     258DLLTOOL = @DLLTOOL@
    237259DRIVER_DIR = @DRIVER_DIR@
     260DSYMUTIL = @DSYMUTIL@
     261DUMPBIN = @DUMPBIN@
    238262ECHO_C = @ECHO_C@
    239263ECHO_N = @ECHO_N@
     
    241265EGREP = @EGREP@
    242266EXEEXT = @EXEEXT@
     267FGREP = @FGREP@
    243268GREP = @GREP@
    244269HOST_FLAGS = @HOST_FLAGS@
     
    248273INSTALL_SCRIPT = @INSTALL_SCRIPT@
    249274INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
     275LD = @LD@
    250276LDFLAGS = @LDFLAGS@
    251277LEX = @LEX@
     
    256282LIBOBJS = @LIBOBJS@
    257283LIBS = @LIBS@
     284LIBTOOL = @LIBTOOL@
     285LIPO = @LIPO@
     286LN_S = @LN_S@
    258287LTLIBOBJS = @LTLIBOBJS@
     288LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
    259289MAKEINFO = @MAKEINFO@
     290MANIFEST_TOOL = @MANIFEST_TOOL@
    260291MKDIR_P = @MKDIR_P@
     292NM = @NM@
     293NMEDIT = @NMEDIT@
     294OBJDUMP = @OBJDUMP@
    261295OBJEXT = @OBJEXT@
     296OTOOL = @OTOOL@
     297OTOOL64 = @OTOOL64@
    262298PACKAGE = @PACKAGE@
    263299PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
     
    269305PATH_SEPARATOR = @PATH_SEPARATOR@
    270306RANLIB = @RANLIB@
     307SED = @SED@
    271308SET_MAKE = @SET_MAKE@
    272309SHELL = @SHELL@
     
    280317abs_top_builddir = @abs_top_builddir@
    281318abs_top_srcdir = @abs_top_srcdir@
     319ac_ct_AR = @ac_ct_AR@
    282320ac_ct_CC = @ac_ct_CC@
    283321ac_ct_CXX = @ac_ct_CXX@
     322ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
    284323am__include = @am__include@
    285324am__leading_dot = @am__leading_dot@
     
    329368top_srcdir = @top_srcdir@
    330369AUTOMAKE_OPTIONS = foreign    # do not require all the GNU file names
     370ACLOCAL_AMFLAGS = -I automake
    331371BUILT_SOURCES = parser.hh
    332372AM_YFLAGS = -d -t -v
     
    346386
    347387.SUFFIXES:
    348 .SUFFIXES: .cc .ll .o .obj .yy
     388.SUFFIXES: .cc .ll .lo .o .obj .yy
    349389$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
    350390        @for dep in $?; do \
     
    386426        sed 's/$(EXEEXT)$$//' | \
    387427        while read p p1; do if test -f $$p \
     428         || test -f $$p1 \
    388429          ; then echo "$$p"; echo "$$p"; else :; fi; \
    389430        done | \
     
    400441            if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
    401442            test -z "$$files" || { \
    402               echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(tools_prettyprinterdir)$$dir'"; \
    403               $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(tools_prettyprinterdir)$$dir" || exit $$?; \
     443            echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(tools_prettyprinterdir)$$dir'"; \
     444            $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(tools_prettyprinterdir)$$dir" || exit $$?; \
    404445            } \
    405446        ; done
     
    417458
    418459clean-tools_prettyprinterPROGRAMS:
    419         -test -z "$(tools_prettyprinter_PROGRAMS)" || rm -f $(tools_prettyprinter_PROGRAMS)
     460        @list='$(tools_prettyprinter_PROGRAMS)'; test -n "$$list" || exit 0; \
     461        echo " rm -f" $$list; \
     462        rm -f $$list || exit $$?; \
     463        test -n "$(EXEEXT)" || exit 0; \
     464        list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
     465        echo " rm -f" $$list; \
     466        rm -f $$list
    420467parser.hh: parser.cc
    421468        @if test ! -f $@; then rm -f parser.cc; else :; fi
     
    454501@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
    455502
     503.cc.lo:
     504@am__fastdepCXX_TRUE@   $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
     505@am__fastdepCXX_TRUE@   $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
     506@am__fastdepCXX_TRUE@   $(am__mv) $$depbase.Tpo $$depbase.Plo
     507@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
     508@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     509@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
     510
    456511pretty-lex.o: lex.cc
    457512@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pretty_CXXFLAGS) $(CXXFLAGS) -MT pretty-lex.o -MD -MP -MF $(DEPDIR)/pretty-lex.Tpo -c -o pretty-lex.o `test -f 'lex.cc' || echo '$(srcdir)/'`lex.cc
     
    529584.yy.cc:
    530585        $(AM_V_YACC)$(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h `echo $@ | $(am__yacc_c2h)` y.output $*.output -- $(YACCCOMPILE)
     586
     587mostlyclean-libtool:
     588        -rm -f *.lo
     589
     590clean-libtool:
     591        -rm -rf .libs _libs
    531592
    532593ID: $(am__tagged_files)
     
    658719clean: clean-am
    659720
    660 clean-am: clean-generic clean-tools_prettyprinterPROGRAMS \
    661         mostlyclean-am
     721clean-am: clean-generic clean-libtool \
     722        clean-tools_prettyprinterPROGRAMS mostlyclean-am
    662723
    663724distclean: distclean-am
     
    714775mostlyclean: mostlyclean-am
    715776
    716 mostlyclean-am: mostlyclean-compile mostlyclean-generic
     777mostlyclean-am: mostlyclean-compile mostlyclean-generic \
     778        mostlyclean-libtool
    717779
    718780pdf: pdf-am
     
    729791
    730792.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
    731         clean-tools_prettyprinterPROGRAMS cscopelist-am ctags ctags-am \
    732         distclean distclean-compile distclean-generic distclean-tags \
    733         distdir dvi dvi-am html html-am info info-am install \
    734         install-am install-data install-data-am install-dvi \
    735         install-dvi-am install-exec install-exec-am install-html \
    736         install-html-am install-info install-info-am install-man \
    737         install-pdf install-pdf-am install-ps install-ps-am \
    738         install-strip install-tools_prettyprinterPROGRAMS installcheck \
     793        clean-libtool clean-tools_prettyprinterPROGRAMS cscopelist-am \
     794        ctags ctags-am distclean distclean-compile distclean-generic \
     795        distclean-libtool distclean-tags distdir dvi dvi-am html \
     796        html-am info info-am install install-am install-data \
     797        install-data-am install-dvi install-dvi-am install-exec \
     798        install-exec-am install-html install-html-am install-info \
     799        install-info-am install-man install-pdf install-pdf-am \
     800        install-ps install-ps-am install-strip \
     801        install-tools_prettyprinterPROGRAMS installcheck \
    739802        installcheck-am installdirs maintainer-clean \
    740803        maintainer-clean-generic mostlyclean mostlyclean-compile \
    741         mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \
    742         uninstall-am uninstall-tools_prettyprinterPROGRAMS
     804        mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
     805        tags tags-am uninstall uninstall-am \
     806        uninstall-tools_prettyprinterPROGRAMS
    743807
    744808.PRECIOUS: Makefile
Note: See TracChangeset for help on using the changeset viewer.