1#! /bin/sh 2# 3# Output a system dependent set of variables, describing how to set the 4# run time search path of shared libraries in an executable. 5# 6# Copyright 1996-2011 Free Software Foundation, Inc. 7# Taken from GNU libtool, 2001 8# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 9# 10# This file is free software; the Free Software Foundation gives 11# unlimited permission to copy and/or distribute it, with or without 12# modifications, as long as this notice is preserved. 13# 14# The first argument passed to this file is the canonical host specification, 15# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 16# or 17# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 18# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld 19# should be set by the caller. 20# 21# The set of defined variables is at the end of this script. 22 23# Known limitations: 24# - On IRIX 6.5 with CC="cc", the run time search patch must not be longer 25# than 256 bytes, otherwise the compiler driver will dump core. The only 26# known workaround is to choose shorter directory names for the build 27# directory and/or the installation directory. 28 29# All known linkers require a `.a' archive for static linking (except MSVC, 30# which needs '.lib'). 31libext=a 32shrext=.so 33 34host="$1" 35host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` 36host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` 37host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` 38 39# Code taken from libtool.m4's _LT_CC_BASENAME. 40 41for cc_temp in $CC""; do 42 case $cc_temp in 43 compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; 44 distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; 45 \-*) ;; 46 *) break;; 47 esac 48done 49cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'` 50 51# Code taken from libtool.m4's _LT_COMPILER_PIC. 52 53wl= 54if test "$GCC" = yes; then 55 wl='-Wl,' 56else 57 case "$host_os" in 58 aix*) 59 wl='-Wl,' 60 ;; 61 mingw* | cygwin* | pw32* | os2* | cegcc*) 62 ;; 63 hpux9* | hpux10* | hpux11*) 64 wl='-Wl,' 65 ;; 66 irix5* | irix6* | nonstopux*) 67 wl='-Wl,' 68 ;; 69 linux* | k*bsd*-gnu | kopensolaris*-gnu) 70 case $cc_basename in 71 ecc*) 72 wl='-Wl,' 73 ;; 74 icc* | ifort*) 75 wl='-Wl,' 76 ;; 77 lf95*) 78 wl='-Wl,' 79 ;; 80 nagfor*) 81 wl='-Wl,-Wl,,' 82 ;; 83 pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) 84 wl='-Wl,' 85 ;; 86 ccc*) 87 wl='-Wl,' 88 ;; 89 xl* | bgxl* | bgf* | mpixl* | *bgq-linux-xl* ) 90 wl='-Wl,' 91 ;; 92 como) 93 wl='-lopt=' 94 ;; 95 *) 96 case `$CC -V 2>&1 | sed 5q` in 97 *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-4]]*) 98 wl= 99 ;; 100 *Sun\ F* | *Sun*Fortran*) 101 wl='-Wl,' 102 ;; 103 *Sun\ C*) 104 wl='-Wl,' 105 ;; 106 esac 107 ;; 108 esac 109 ;; 110 newsos6) 111 ;; 112 *nto* | *qnx*) 113 ;; 114 osf3* | osf4* | osf5*) 115 wl='-Wl,' 116 ;; 117 rdos*) 118 ;; 119 solaris*) 120 case $cc_basename in 121 f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) 122 wl='-Qoption ld ' 123 ;; 124 *) 125 wl='-Wl,' 126 ;; 127 esac 128 ;; 129 sunos4*) 130 wl='-Qoption ld ' 131 ;; 132 sysv4 | sysv4.2uw2* | sysv4.3*) 133 wl='-Wl,' 134 ;; 135 sysv4*MP*) 136 ;; 137 sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) 138 wl='-Wl,' 139 ;; 140 unicos*) 141 wl='-Wl,' 142 ;; 143 uts4*) 144 ;; 145 esac 146fi 147 148# Code taken from libtool.m4's _LT_LINKER_SHLIBS. 149 150hardcode_libdir_flag_spec= 151hardcode_libdir_separator= 152hardcode_direct=no 153hardcode_minus_L=no 154 155case "$host_os" in 156 cygwin* | mingw* | pw32* | cegcc*) 157 # FIXME: the MSVC++ port hasn't been tested in a loooong time 158 # When not using gcc, we currently assume that we are using 159 # Microsoft Visual C++. 160 if test "$GCC" != yes; then 161 with_gnu_ld=no 162 fi 163 ;; 164 interix*) 165 # we just hope/assume this is gcc and not c89 (= MSVC++) 166 with_gnu_ld=yes 167 ;; 168 openbsd*) 169 with_gnu_ld=no 170 ;; 171esac 172 173ld_shlibs=yes 174if test "$with_gnu_ld" = yes; then 175 # Set some defaults for GNU ld with shared library support. These 176 # are reset later if shared libraries are not supported. Putting them 177 # here allows them to be overridden if necessary. 178 # Unlike libtool, we use -rpath here, not --rpath, since the documented 179 # option of GNU ld is called -rpath, not --rpath. 180 hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' 181 case "$host_os" in 182 aix[3-9]*) 183 # On AIX/PPC, the GNU linker is very broken 184 if test "$host_cpu" != ia64; then 185 ld_shlibs=no 186 fi 187 ;; 188 amigaos*) 189 case "$host_cpu" in 190 powerpc) 191 ;; 192 m68k) 193 hardcode_libdir_flag_spec='-L$libdir' 194 hardcode_minus_L=yes 195 ;; 196 esac 197 ;; 198 beos*) 199 if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then 200 : 201 else 202 ld_shlibs=no 203 fi 204 ;; 205 cygwin* | mingw* | pw32* | cegcc*) 206 # hardcode_libdir_flag_spec is actually meaningless, as there is 207 # no search path for DLLs. 208 hardcode_libdir_flag_spec='-L$libdir' 209 if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then 210 : 211 else 212 ld_shlibs=no 213 fi 214 ;; 215 haiku*) 216 ;; 217 interix[3-9]*) 218 hardcode_direct=no 219 hardcode_libdir_flag_spec='${wl}-rpath,$libdir' 220 ;; 221 gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) 222 if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then 223 # use --enable-new-dtags for RUNPATH support, which is required for 224 # switching between ABI compatible libraries at runtime. 225 if test "$GCC" = yes; then 226 hardcode_libdir_flag_spec="${hardcode_libdir_flag_spec} ${wl}--enable-new-dtags" 227 else 228 case $cc_basename in ifort*) 229 hardcode_libdir_flag_spec="${hardcode_libdir_flag_spec} ${wl}--enable-new-dtags" 230 ;; 231 esac 232 fi 233 else 234 ld_shlibs=no 235 fi 236 ;; 237 netbsd*) 238 ;; 239 solaris*) 240 if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then 241 ld_shlibs=no 242 elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then 243 : 244 else 245 ld_shlibs=no 246 fi 247 ;; 248 sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) 249 case `$LD -v 2>&1` in 250 *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) 251 ld_shlibs=no 252 ;; 253 *) 254 if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then 255 hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' 256 else 257 ld_shlibs=no 258 fi 259 ;; 260 esac 261 ;; 262 sunos4*) 263 hardcode_direct=yes 264 ;; 265 *) 266 if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then 267 : 268 else 269 ld_shlibs=no 270 fi 271 ;; 272 esac 273 if test "$ld_shlibs" = no; then 274 hardcode_libdir_flag_spec= 275 fi 276else 277 case "$host_os" in 278 aix3*) 279 # Note: this linker hardcodes the directories in LIBPATH if there 280 # are no directories specified by -L. 281 hardcode_minus_L=yes 282 if test "$GCC" = yes; then 283 # Neither direct hardcoding nor static linking is supported with a 284 # broken collect2. 285 hardcode_direct=unsupported 286 fi 287 ;; 288 aix[4-9]*) 289 if test "$host_cpu" = ia64; then 290 # On IA64, the linker does run time linking by default, so we don't 291 # have to do anything special. 292 aix_use_runtimelinking=no 293 else 294 aix_use_runtimelinking=no 295 # Test if we are trying to use run time linking or normal 296 # AIX style linking. If -brtl is somewhere in LDFLAGS, we 297 # need to do runtime linking. 298 case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) 299 for ld_flag in $LDFLAGS; do 300 if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then 301 aix_use_runtimelinking=yes 302 break 303 fi 304 done 305 ;; 306 esac 307 fi 308 hardcode_direct=yes 309 hardcode_libdir_separator=':' 310 if test "$GCC" = yes; then 311 case $host_os in aix4.[012]|aix4.[012].*) 312 collect2name=`${CC} -print-prog-name=collect2` 313 if test -f "$collect2name" && \ 314 strings "$collect2name" | grep resolve_lib_name >/dev/null 315 then 316 # We have reworked collect2 317 : 318 else 319 # We have old collect2 320 hardcode_direct=unsupported 321 hardcode_minus_L=yes 322 hardcode_libdir_flag_spec='-L$libdir' 323 hardcode_libdir_separator= 324 fi 325 ;; 326 esac 327 fi 328 # Begin _LT_AC_SYS_LIBPATH_AIX. 329 echo 'int main () { return 0; }' > conftest.c 330 ${CC} ${LDFLAGS} conftest.c -o conftest 331 aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } 332}'` 333 if test -z "$aix_libpath"; then 334 aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } 335}'` 336 fi 337 if test -z "$aix_libpath"; then 338 aix_libpath="/usr/lib:/lib" 339 fi 340 rm -f conftest.c conftest 341 # End _LT_AC_SYS_LIBPATH_AIX. 342 if test "$aix_use_runtimelinking" = yes; then 343 hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" 344 else 345 if test "$host_cpu" = ia64; then 346 hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' 347 else 348 hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" 349 fi 350 fi 351 ;; 352 amigaos*) 353 case "$host_cpu" in 354 powerpc) 355 ;; 356 m68k) 357 hardcode_libdir_flag_spec='-L$libdir' 358 hardcode_minus_L=yes 359 ;; 360 esac 361 ;; 362 bsdi[45]*) 363 ;; 364 cygwin* | mingw* | pw32* | cegcc*) 365 # When not using gcc, we currently assume that we are using 366 # Microsoft Visual C++. 367 # hardcode_libdir_flag_spec is actually meaningless, as there is 368 # no search path for DLLs. 369 hardcode_libdir_flag_spec=' ' 370 libext=lib 371 ;; 372 darwin* | rhapsody*) 373 hardcode_direct=no 374 if { case $cc_basename in ifort*) true;; *) test "$GCC" = yes;; esac; }; then 375 : 376 else 377 ld_shlibs=no 378 fi 379 ;; 380 dgux*) 381 hardcode_libdir_flag_spec='-L$libdir' 382 ;; 383 freebsd2.2*) 384 hardcode_libdir_flag_spec='-R$libdir' 385 hardcode_direct=yes 386 ;; 387 freebsd2*) 388 hardcode_direct=yes 389 hardcode_minus_L=yes 390 ;; 391 freebsd* | dragonfly*) 392 hardcode_libdir_flag_spec='-R$libdir' 393 hardcode_direct=yes 394 ;; 395 hpux9*) 396 hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' 397 hardcode_libdir_separator=: 398 hardcode_direct=yes 399 # hardcode_minus_L: Not really in the search PATH, 400 # but as the default location of the library. 401 hardcode_minus_L=yes 402 ;; 403 hpux10*) 404 if test "$with_gnu_ld" = no; then 405 hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' 406 hardcode_libdir_separator=: 407 hardcode_direct=yes 408 # hardcode_minus_L: Not really in the search PATH, 409 # but as the default location of the library. 410 hardcode_minus_L=yes 411 fi 412 ;; 413 hpux11*) 414 if test "$with_gnu_ld" = no; then 415 hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' 416 hardcode_libdir_separator=: 417 case $host_cpu in 418 hppa*64*|ia64*) 419 hardcode_direct=no 420 ;; 421 *) 422 hardcode_direct=yes 423 # hardcode_minus_L: Not really in the search PATH, 424 # but as the default location of the library. 425 hardcode_minus_L=yes 426 ;; 427 esac 428 fi 429 ;; 430 irix5* | irix6* | nonstopux*) 431 hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' 432 hardcode_libdir_separator=: 433 ;; 434 netbsd*) 435 hardcode_libdir_flag_spec='-R$libdir' 436 hardcode_direct=yes 437 ;; 438 newsos6) 439 hardcode_direct=yes 440 hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' 441 hardcode_libdir_separator=: 442 ;; 443 *nto* | *qnx*) 444 ;; 445 openbsd*) 446 if test -f /usr/libexec/ld.so; then 447 hardcode_direct=yes 448 if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then 449 hardcode_libdir_flag_spec='${wl}-rpath,$libdir' 450 else 451 case "$host_os" in 452 openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) 453 hardcode_libdir_flag_spec='-R$libdir' 454 ;; 455 *) 456 hardcode_libdir_flag_spec='${wl}-rpath,$libdir' 457 ;; 458 esac 459 fi 460 else 461 ld_shlibs=no 462 fi 463 ;; 464 os2*) 465 hardcode_libdir_flag_spec='-L$libdir' 466 hardcode_minus_L=yes 467 ;; 468 osf3*) 469 hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' 470 hardcode_libdir_separator=: 471 ;; 472 osf4* | osf5*) 473 if test "$GCC" = yes; then 474 hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' 475 else 476 # Both cc and cxx compiler support -rpath directly 477 hardcode_libdir_flag_spec='-rpath $libdir' 478 fi 479 hardcode_libdir_separator=: 480 ;; 481 solaris*) 482 hardcode_libdir_flag_spec='-R$libdir' 483 ;; 484 sunos4*) 485 hardcode_libdir_flag_spec='-L$libdir' 486 hardcode_direct=yes 487 hardcode_minus_L=yes 488 ;; 489 sysv4) 490 case $host_vendor in 491 sni) 492 hardcode_direct=yes # is this really true??? 493 ;; 494 siemens) 495 hardcode_direct=no 496 ;; 497 motorola) 498 hardcode_direct=no #Motorola manual says yes, but my tests say they lie 499 ;; 500 esac 501 ;; 502 sysv4.3*) 503 ;; 504 sysv4*MP*) 505 if test -d /usr/nec; then 506 ld_shlibs=yes 507 fi 508 ;; 509 sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) 510 ;; 511 sysv5* | sco3.2v5* | sco5v6*) 512 hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' 513 hardcode_libdir_separator=':' 514 ;; 515 uts4*) 516 hardcode_libdir_flag_spec='-L$libdir' 517 ;; 518 *) 519 ld_shlibs=no 520 ;; 521 esac 522fi 523 524# Check dynamic linker characteristics 525# Code taken from libtool.m4's _LT_SYS_DYNAMIC_LINKER. 526# Unlike libtool.m4, here we don't care about _all_ names of the library, but 527# only about the one the linker finds when passed -lNAME. This is the last 528# element of library_names_spec in libtool.m4, or possibly two of them if the 529# linker has special search rules. 530library_names_spec= # the last element of library_names_spec in libtool.m4 531libname_spec='lib$name' 532case "$host_os" in 533 aix3*) 534 library_names_spec='$libname.a' 535 ;; 536 aix[4-9]*) 537 library_names_spec='$libname$shrext' 538 ;; 539 amigaos*) 540 case "$host_cpu" in 541 powerpc*) 542 library_names_spec='$libname$shrext' ;; 543 m68k) 544 library_names_spec='$libname.a' ;; 545 esac 546 ;; 547 beos*) 548 library_names_spec='$libname$shrext' 549 ;; 550 bsdi[45]*) 551 library_names_spec='$libname$shrext' 552 ;; 553 cygwin* | mingw* | pw32* | cegcc*) 554 shrext=.dll 555 library_names_spec='$libname.dll.a $libname.lib' 556 ;; 557 darwin* | rhapsody*) 558 shrext=.dylib 559 library_names_spec='$libname$shrext' 560 ;; 561 dgux*) 562 library_names_spec='$libname$shrext' 563 ;; 564 freebsd* | dragonfly*) 565 case "$host_os" in 566 freebsd[123]*) 567 library_names_spec='$libname$shrext$versuffix' ;; 568 *) 569 library_names_spec='$libname$shrext' ;; 570 esac 571 ;; 572 gnu*) 573 library_names_spec='$libname$shrext' 574 ;; 575 haiku*) 576 library_names_spec='$libname$shrext' 577 ;; 578 hpux9* | hpux10* | hpux11*) 579 case $host_cpu in 580 ia64*) 581 shrext=.so 582 ;; 583 hppa*64*) 584 shrext=.sl 585 ;; 586 *) 587 shrext=.sl 588 ;; 589 esac 590 library_names_spec='$libname$shrext' 591 ;; 592 interix[3-9]*) 593 library_names_spec='$libname$shrext' 594 ;; 595 irix5* | irix6* | nonstopux*) 596 library_names_spec='$libname$shrext' 597 case "$host_os" in 598 irix5* | nonstopux*) 599 libsuff= shlibsuff= 600 ;; 601 *) 602 case $LD in 603 *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;; 604 *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;; 605 *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;; 606 *) libsuff= shlibsuff= ;; 607 esac 608 ;; 609 esac 610 ;; 611 linux*oldld* | linux*aout* | linux*coff*) 612 ;; 613 linux* | k*bsd*-gnu | kopensolaris*-gnu) 614 library_names_spec='$libname$shrext' 615 ;; 616 knetbsd*-gnu) 617 library_names_spec='$libname$shrext' 618 ;; 619 netbsd*) 620 library_names_spec='$libname$shrext' 621 ;; 622 newsos6) 623 library_names_spec='$libname$shrext' 624 ;; 625 *nto* | *qnx*) 626 library_names_spec='$libname$shrext' 627 ;; 628 openbsd*) 629 library_names_spec='$libname$shrext$versuffix' 630 ;; 631 os2*) 632 libname_spec='$name' 633 shrext=.dll 634 library_names_spec='$libname.a' 635 ;; 636 osf3* | osf4* | osf5*) 637 library_names_spec='$libname$shrext' 638 ;; 639 rdos*) 640 ;; 641 solaris*) 642 library_names_spec='$libname$shrext' 643 ;; 644 sunos4*) 645 library_names_spec='$libname$shrext$versuffix' 646 ;; 647 sysv4 | sysv4.3*) 648 library_names_spec='$libname$shrext' 649 ;; 650 sysv4*MP*) 651 library_names_spec='$libname$shrext' 652 ;; 653 sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) 654 library_names_spec='$libname$shrext' 655 ;; 656 tpf*) 657 library_names_spec='$libname$shrext' 658 ;; 659 uts4*) 660 library_names_spec='$libname$shrext' 661 ;; 662esac 663 664sed_quote_subst='s/\(["`$\\]\)/\\\1/g' 665escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"` 666shlibext=`echo "$shrext" | sed -e 's,^\.,,'` 667escaped_libname_spec=`echo "X$libname_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` 668escaped_library_names_spec=`echo "X$library_names_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` 669escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` 670 671# MPICH modification: we don't prefix with acl_cv_ by default. This 672# is causing problems in the stock version of config.rpath as well. 673# LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <<EOF 674LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/\1=/' <<EOF 675 676# How to pass a linker flag through the compiler. 677wl="$escaped_wl" 678 679# Static library suffix (normally "a"). 680libext="$libext" 681 682# Shared library suffix (normally "so"). 683shlibext="$shlibext" 684 685# Format of library name prefix. 686libname_spec="$escaped_libname_spec" 687 688# Library names that the linker finds when passed -lNAME. 689library_names_spec="$escaped_library_names_spec" 690 691# Flag to hardcode \$libdir into a binary during linking. 692# This must work even if \$libdir does not exist. 693hardcode_libdir_flag_spec="$escaped_hardcode_libdir_flag_spec" 694 695# Whether we need a single -rpath flag with a separated argument. 696hardcode_libdir_separator="$hardcode_libdir_separator" 697 698# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the 699# resulting binary. 700hardcode_direct="$hardcode_direct" 701 702# Set to yes if using the -LDIR flag during linking hardcodes DIR into the 703# resulting binary. 704hardcode_minus_L="$hardcode_minus_L" 705 706EOF 707 708