From 7f24a313f0815854ff88a0e33a066a73de4f3be1 Mon Sep 17 00:00:00 2001 From: James Meyer Date: Wed, 22 Oct 2008 20:40:37 -0500 Subject: initial checkin of lighttpd and supporting libs. Also included is a new package callede local-website. This package contains the contents of http://localhost that runs on every LinHES box. The initial checkin is taken from R5.5 --- abs/core-testing/fcgi/PKGBUILD | 27 + abs/core-testing/fcgi/fcgi-configure.patch | 53839 +++++++++++++++++++ abs/core-testing/lighttpd/PKGBUILD | 71 + abs/core-testing/lighttpd/lighttpd.install | 16 + abs/core-testing/lighttpd/lighttpd.logrotate.d | 5 + abs/core-testing/lighttpd/lighttpd.rc.d | 38 + abs/core-testing/local-website/PKGBUILD | 21 + .../local-website/htdocs/KnoppMyth.css | 24 + abs/core-testing/local-website/htdocs/favicon.ico | Bin 0 -> 1150 bytes abs/core-testing/local-website/htdocs/header.png | Bin 0 -> 14090 bytes abs/core-testing/local-website/htdocs/index.html | 159 + abs/core-testing/local-website/htdocs/layout.css | 29 + abs/core-testing/local-website/htdocs/linhes.html | 392 + .../BlockDiagramofavideocapturedevice.eps | 331 + .../BlockDiagramofavideocapturedevice.png | Bin 0 -> 11228 bytes .../htdocs/mythtv-doc/Card1 HDTV Card2 Cable.png | Bin 0 -> 8756 bytes .../mythtv-doc/Card1 Pri 0 Card2 Pri -1-TDS.png | Bin 0 -> 8271 bytes .../htdocs/mythtv-doc/Card1 Pri 0 Card2 Pri -1.png | Bin 0 -> 7786 bytes .../htdocs/mythtv-doc/Card1 Pri 0 Card2 Pri 0.png | Bin 0 -> 8577 bytes .../local-website/htdocs/mythtv-doc/Makefile | 42 + .../local-website/htdocs/mythtv-doc/add.eps | 27 + .../local-website/htdocs/mythtv-doc/add.png | Bin 0 -> 733 bytes .../mythtv-doc/doxygen-architecture-document.cpp | 787 + .../mythtv-doc/doxygen-create-developer-docs.cfg | 1142 + .../htdocs/mythtv-doc/doxygen.perl.patch | 141 + .../htdocs/mythtv-doc/i18n/.svn/all-wcprops | 11 + .../htdocs/mythtv-doc/i18n/.svn/entries | 40 + .../htdocs/mythtv-doc/i18n/.svn/format | 1 + .../i18n/.svn/text-base/keys_de.txt.svn-base | 298 + .../htdocs/mythtv-doc/i18n/keys_de.txt | 298 + .../local-website/htdocs/mythtv-doc/index.html | 250 + .../local-website/htdocs/mythtv-doc/keys.txt | 325 + .../htdocs/mythtv-doc/mythtv-HOWTO-1.html | 272 + .../htdocs/mythtv-doc/mythtv-HOWTO-10.html | 387 + .../htdocs/mythtv-doc/mythtv-HOWTO-11.html | 626 + .../htdocs/mythtv-doc/mythtv-HOWTO-12.html | 1112 + .../htdocs/mythtv-doc/mythtv-HOWTO-13.html | 106 + .../htdocs/mythtv-doc/mythtv-HOWTO-14.html | 112 + .../htdocs/mythtv-doc/mythtv-HOWTO-15.html | 137 + .../htdocs/mythtv-doc/mythtv-HOWTO-16.html | 241 + .../htdocs/mythtv-doc/mythtv-HOWTO-17.html | 348 + .../htdocs/mythtv-doc/mythtv-HOWTO-18.html | 71 + .../htdocs/mythtv-doc/mythtv-HOWTO-19.html | 42 + .../htdocs/mythtv-doc/mythtv-HOWTO-2.html | 27 + .../htdocs/mythtv-doc/mythtv-HOWTO-20.html | 102 + .../htdocs/mythtv-doc/mythtv-HOWTO-21.html | 37 + .../htdocs/mythtv-doc/mythtv-HOWTO-22.html | 608 + .../htdocs/mythtv-doc/mythtv-HOWTO-23.html | 1193 + .../htdocs/mythtv-doc/mythtv-HOWTO-24.html | 452 + .../htdocs/mythtv-doc/mythtv-HOWTO-3.html | 805 + .../htdocs/mythtv-doc/mythtv-HOWTO-4.html | 181 + .../htdocs/mythtv-doc/mythtv-HOWTO-5.html | 426 + .../htdocs/mythtv-doc/mythtv-HOWTO-6.html | 176 + .../htdocs/mythtv-doc/mythtv-HOWTO-7.html | 130 + .../htdocs/mythtv-doc/mythtv-HOWTO-8.html | 530 + .../htdocs/mythtv-doc/mythtv-HOWTO-9.html | 649 + .../htdocs/mythtv-doc/mythtv-HOWTO-singlehtml.html | 8532 +++ .../htdocs/mythtv-doc/mythtv-HOWTO.html | 250 + .../htdocs/mythtv-doc/mythtv-HOWTO.pdf | Bin 0 -> 911395 bytes .../htdocs/mythtv-doc/mythtv-HOWTO.sgml | 7977 +++ .../htdocs/mythtv-doc/mythtv-HOWTO.txt | 9235 ++++ .../local-website/htdocs/mythtv-doc/stop.eps | 103 + .../local-website/htdocs/mythtv-doc/stop.png | Bin 0 -> 553 bytes .../local-website/htdocs/mythtv-doc/warning.eps | 134 + .../local-website/htdocs/mythtv-doc/warning.png | Bin 0 -> 1899 bytes .../local-website/htdocs/remote/COPYING | 341 + .../local-website/htdocs/remote/CREDITS | 11 + .../local-website/htdocs/remote/Changelog | 131 + .../local-website/htdocs/remote/Issues | 18 + .../local-website/htdocs/remote/README | 43 + .../local-website/htdocs/remote/backend.php | 168 + .../local-website/htdocs/remote/csshover.htc | 120 + .../local-website/htdocs/remote/images/blank.gif | Bin 0 -> 43 bytes .../htdocs/remote/images/button_30.png | Bin 0 -> 1511 bytes .../htdocs/remote/images/button_30g.png | Bin 0 -> 1535 bytes .../htdocs/remote/images/button_30r.png | Bin 0 -> 1520 bytes .../htdocs/remote/images/button_text.png | Bin 0 -> 2223 bytes .../htdocs/remote/images/button_textg.png | Bin 0 -> 3210 bytes .../htdocs/remote/images/button_textr.png | Bin 0 -> 3130 bytes .../local-website/htdocs/remote/images/down.png | Bin 0 -> 2468 bytes .../local-website/htdocs/remote/images/down_g.png | Bin 0 -> 2600 bytes .../local-website/htdocs/remote/images/down_r.png | Bin 0 -> 2575 bytes .../htdocs/remote/images/fast_forward.png | Bin 0 -> 2775 bytes .../htdocs/remote/images/fast_forward_g.png | Bin 0 -> 2838 bytes .../htdocs/remote/images/fast_forward_r.png | Bin 0 -> 2814 bytes .../htdocs/remote/images/fast_rewind.png | Bin 0 -> 2743 bytes .../htdocs/remote/images/fast_rewind_g.png | Bin 0 -> 2804 bytes .../htdocs/remote/images/fast_rewind_r.png | Bin 0 -> 2805 bytes .../local-website/htdocs/remote/images/left.png | Bin 0 -> 2503 bytes .../local-website/htdocs/remote/images/left_g.png | Bin 0 -> 2618 bytes .../local-website/htdocs/remote/images/left_r.png | Bin 0 -> 2617 bytes .../local-website/htdocs/remote/images/ok.png | Bin 0 -> 2614 bytes .../local-website/htdocs/remote/images/ok_g.png | Bin 0 -> 2662 bytes .../local-website/htdocs/remote/images/ok_r.png | Bin 0 -> 2636 bytes .../local-website/htdocs/remote/images/pause.png | Bin 0 -> 2259 bytes .../local-website/htdocs/remote/images/pause_g.png | Bin 0 -> 2236 bytes .../local-website/htdocs/remote/images/pause_r.png | Bin 0 -> 2254 bytes .../local-website/htdocs/remote/images/rec.png | Bin 0 -> 2433 bytes .../local-website/htdocs/remote/images/rec_g.png | Bin 0 -> 2406 bytes .../local-website/htdocs/remote/images/rec_r.png | Bin 0 -> 2396 bytes .../local-website/htdocs/remote/images/right.png | Bin 0 -> 2520 bytes .../local-website/htdocs/remote/images/right_g.png | Bin 0 -> 2656 bytes .../local-website/htdocs/remote/images/right_r.png | Bin 0 -> 2593 bytes .../htdocs/remote/images/skip_back.png | Bin 0 -> 2513 bytes .../htdocs/remote/images/skip_back_g.png | Bin 0 -> 2614 bytes .../htdocs/remote/images/skip_back_r.png | Bin 0 -> 2646 bytes .../htdocs/remote/images/skip_forward.png | Bin 0 -> 2560 bytes .../htdocs/remote/images/skip_forward_g.png | Bin 0 -> 2575 bytes .../htdocs/remote/images/skip_forward_r.png | Bin 0 -> 2615 bytes .../local-website/htdocs/remote/images/stop.png | Bin 0 -> 1950 bytes .../local-website/htdocs/remote/images/stop_g.png | Bin 0 -> 1977 bytes .../local-website/htdocs/remote/images/stop_r.png | Bin 0 -> 1980 bytes .../local-website/htdocs/remote/images/up.png | Bin 0 -> 2473 bytes .../local-website/htdocs/remote/images/up_g.png | Bin 0 -> 2570 bytes .../local-website/htdocs/remote/images/up_r.png | Bin 0 -> 2553 bytes .../local-website/htdocs/remote/inc/process.php | 131 + .../local-website/htdocs/remote/index.html | 19 + .../local-website/htdocs/remote/layout-wide.html | 250 + .../local-website/htdocs/remote/layout.html | 269 + .../local-website/htdocs/remote/nav.php | 57 + .../local-website/htdocs/remote/num.php | 57 + .../local-website/htdocs/remote/pda.php | 39 + .../local-website/htdocs/remote/remote-wide.html | 275 + .../local-website/htdocs/remote/remote-wide.php | 380 + .../local-website/htdocs/remote/remote.css | 436 + .../local-website/htdocs/remote/remote.html | 307 + .../local-website/htdocs/remote/remote.php | 413 + .../local-website/htdocs/remote/svg/button.svg | 353 + .../local-website/htdocs/remote/svg/button_30.xcf | Bin 0 -> 1506 bytes .../local-website/htdocs/remote/svg/button_g.svg | 373 + .../local-website/htdocs/remote/svg/button_r.svg | 371 + .../local-website/htdocs/remote/svg/down.svg | 361 + .../htdocs/remote/svg/fast_forward.svg | 406 + .../htdocs/remote/svg/fast_rewind.svg | 406 + .../local-website/htdocs/remote/svg/left.svg | 358 + .../local-website/htdocs/remote/svg/ok.svg | 378 + .../local-website/htdocs/remote/svg/pause.svg | 410 + .../local-website/htdocs/remote/svg/rec.svg | 395 + .../local-website/htdocs/remote/svg/right.svg | 370 + .../local-website/htdocs/remote/svg/scratch.svg | 243 + .../local-website/htdocs/remote/svg/skip_back.svg | 407 + .../htdocs/remote/svg/skip_forward.svg | 413 + .../local-website/htdocs/remote/svg/stop.svg | 384 + .../local-website/htdocs/remote/svg/up.svg | 349 + abs/core-testing/local-website/htdocs/rrd/Disabled | 0 .../local-website/htdocs/rrd/index.html | 29 + abs/core-testing/local-website/htdocs/style.css | 227 + abs/core-testing/sqlite3/PKGBUILD | 34 + .../sqlite3/build_fts_as_part_of_libsqlite.patch | 139 + abs/core-testing/sqlite3/license.txt | 33 + .../sqlite3/sqlite-3.5.8-pkgconfig-version.patch | 12 + 151 files changed, 103231 insertions(+) create mode 100644 abs/core-testing/fcgi/PKGBUILD create mode 100644 abs/core-testing/fcgi/fcgi-configure.patch create mode 100644 abs/core-testing/lighttpd/PKGBUILD create mode 100644 abs/core-testing/lighttpd/lighttpd.install create mode 100644 abs/core-testing/lighttpd/lighttpd.logrotate.d create mode 100644 abs/core-testing/lighttpd/lighttpd.rc.d create mode 100644 abs/core-testing/local-website/PKGBUILD create mode 100644 abs/core-testing/local-website/htdocs/KnoppMyth.css create mode 100644 abs/core-testing/local-website/htdocs/favicon.ico create mode 100644 abs/core-testing/local-website/htdocs/header.png create mode 100644 abs/core-testing/local-website/htdocs/index.html create mode 100644 abs/core-testing/local-website/htdocs/layout.css create mode 100644 abs/core-testing/local-website/htdocs/linhes.html create mode 100644 abs/core-testing/local-website/htdocs/mythtv-doc/BlockDiagramofavideocapturedevice.eps create mode 100644 abs/core-testing/local-website/htdocs/mythtv-doc/BlockDiagramofavideocapturedevice.png create mode 100644 abs/core-testing/local-website/htdocs/mythtv-doc/Card1 HDTV Card2 Cable.png create mode 100644 abs/core-testing/local-website/htdocs/mythtv-doc/Card1 Pri 0 Card2 Pri -1-TDS.png create mode 100644 abs/core-testing/local-website/htdocs/mythtv-doc/Card1 Pri 0 Card2 Pri -1.png create mode 100644 abs/core-testing/local-website/htdocs/mythtv-doc/Card1 Pri 0 Card2 Pri 0.png create mode 100644 abs/core-testing/local-website/htdocs/mythtv-doc/Makefile create mode 100644 abs/core-testing/local-website/htdocs/mythtv-doc/add.eps create mode 100644 abs/core-testing/local-website/htdocs/mythtv-doc/add.png create mode 100644 abs/core-testing/local-website/htdocs/mythtv-doc/doxygen-architecture-document.cpp create mode 100644 abs/core-testing/local-website/htdocs/mythtv-doc/doxygen-create-developer-docs.cfg create mode 100644 abs/core-testing/local-website/htdocs/mythtv-doc/doxygen.perl.patch create mode 100644 abs/core-testing/local-website/htdocs/mythtv-doc/i18n/.svn/all-wcprops create mode 100644 abs/core-testing/local-website/htdocs/mythtv-doc/i18n/.svn/entries create mode 100644 abs/core-testing/local-website/htdocs/mythtv-doc/i18n/.svn/format create mode 100644 abs/core-testing/local-website/htdocs/mythtv-doc/i18n/.svn/text-base/keys_de.txt.svn-base create mode 100644 abs/core-testing/local-website/htdocs/mythtv-doc/i18n/keys_de.txt create mode 100644 abs/core-testing/local-website/htdocs/mythtv-doc/index.html create mode 100644 abs/core-testing/local-website/htdocs/mythtv-doc/keys.txt create mode 100644 abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-1.html create mode 100644 abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-10.html create mode 100644 abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-11.html create mode 100644 abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-12.html create mode 100644 abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-13.html create mode 100644 abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-14.html create mode 100644 abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-15.html create mode 100644 abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-16.html create mode 100644 abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-17.html create mode 100644 abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-18.html create mode 100644 abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-19.html create mode 100644 abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-2.html create mode 100644 abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-20.html create mode 100644 abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-21.html create mode 100644 abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-22.html create mode 100644 abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-23.html create mode 100644 abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-24.html create mode 100644 abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-3.html create mode 100644 abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-4.html create mode 100644 abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-5.html create mode 100644 abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-6.html create mode 100644 abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-7.html create mode 100644 abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-8.html create mode 100644 abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-9.html create mode 100644 abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-singlehtml.html create mode 100644 abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO.html create mode 100644 abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO.pdf create mode 100644 abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO.sgml create mode 100644 abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO.txt create mode 100644 abs/core-testing/local-website/htdocs/mythtv-doc/stop.eps create mode 100644 abs/core-testing/local-website/htdocs/mythtv-doc/stop.png create mode 100644 abs/core-testing/local-website/htdocs/mythtv-doc/warning.eps create mode 100644 abs/core-testing/local-website/htdocs/mythtv-doc/warning.png create mode 100644 abs/core-testing/local-website/htdocs/remote/COPYING create mode 100644 abs/core-testing/local-website/htdocs/remote/CREDITS create mode 100644 abs/core-testing/local-website/htdocs/remote/Changelog create mode 100644 abs/core-testing/local-website/htdocs/remote/Issues create mode 100644 abs/core-testing/local-website/htdocs/remote/README create mode 100644 abs/core-testing/local-website/htdocs/remote/backend.php create mode 100644 abs/core-testing/local-website/htdocs/remote/csshover.htc create mode 100644 abs/core-testing/local-website/htdocs/remote/images/blank.gif create mode 100644 abs/core-testing/local-website/htdocs/remote/images/button_30.png create mode 100644 abs/core-testing/local-website/htdocs/remote/images/button_30g.png create mode 100644 abs/core-testing/local-website/htdocs/remote/images/button_30r.png create mode 100644 abs/core-testing/local-website/htdocs/remote/images/button_text.png create mode 100644 abs/core-testing/local-website/htdocs/remote/images/button_textg.png create mode 100644 abs/core-testing/local-website/htdocs/remote/images/button_textr.png create mode 100644 abs/core-testing/local-website/htdocs/remote/images/down.png create mode 100644 abs/core-testing/local-website/htdocs/remote/images/down_g.png create mode 100644 abs/core-testing/local-website/htdocs/remote/images/down_r.png create mode 100644 abs/core-testing/local-website/htdocs/remote/images/fast_forward.png create mode 100644 abs/core-testing/local-website/htdocs/remote/images/fast_forward_g.png create mode 100644 abs/core-testing/local-website/htdocs/remote/images/fast_forward_r.png create mode 100644 abs/core-testing/local-website/htdocs/remote/images/fast_rewind.png create mode 100644 abs/core-testing/local-website/htdocs/remote/images/fast_rewind_g.png create mode 100644 abs/core-testing/local-website/htdocs/remote/images/fast_rewind_r.png create mode 100644 abs/core-testing/local-website/htdocs/remote/images/left.png create mode 100644 abs/core-testing/local-website/htdocs/remote/images/left_g.png create mode 100644 abs/core-testing/local-website/htdocs/remote/images/left_r.png create mode 100644 abs/core-testing/local-website/htdocs/remote/images/ok.png create mode 100644 abs/core-testing/local-website/htdocs/remote/images/ok_g.png create mode 100644 abs/core-testing/local-website/htdocs/remote/images/ok_r.png create mode 100644 abs/core-testing/local-website/htdocs/remote/images/pause.png create mode 100644 abs/core-testing/local-website/htdocs/remote/images/pause_g.png create mode 100644 abs/core-testing/local-website/htdocs/remote/images/pause_r.png create mode 100644 abs/core-testing/local-website/htdocs/remote/images/rec.png create mode 100644 abs/core-testing/local-website/htdocs/remote/images/rec_g.png create mode 100644 abs/core-testing/local-website/htdocs/remote/images/rec_r.png create mode 100644 abs/core-testing/local-website/htdocs/remote/images/right.png create mode 100644 abs/core-testing/local-website/htdocs/remote/images/right_g.png create mode 100644 abs/core-testing/local-website/htdocs/remote/images/right_r.png create mode 100644 abs/core-testing/local-website/htdocs/remote/images/skip_back.png create mode 100644 abs/core-testing/local-website/htdocs/remote/images/skip_back_g.png create mode 100644 abs/core-testing/local-website/htdocs/remote/images/skip_back_r.png create mode 100644 abs/core-testing/local-website/htdocs/remote/images/skip_forward.png create mode 100644 abs/core-testing/local-website/htdocs/remote/images/skip_forward_g.png create mode 100644 abs/core-testing/local-website/htdocs/remote/images/skip_forward_r.png create mode 100644 abs/core-testing/local-website/htdocs/remote/images/stop.png create mode 100644 abs/core-testing/local-website/htdocs/remote/images/stop_g.png create mode 100644 abs/core-testing/local-website/htdocs/remote/images/stop_r.png create mode 100644 abs/core-testing/local-website/htdocs/remote/images/up.png create mode 100644 abs/core-testing/local-website/htdocs/remote/images/up_g.png create mode 100644 abs/core-testing/local-website/htdocs/remote/images/up_r.png create mode 100644 abs/core-testing/local-website/htdocs/remote/inc/process.php create mode 100644 abs/core-testing/local-website/htdocs/remote/index.html create mode 100644 abs/core-testing/local-website/htdocs/remote/layout-wide.html create mode 100644 abs/core-testing/local-website/htdocs/remote/layout.html create mode 100644 abs/core-testing/local-website/htdocs/remote/nav.php create mode 100644 abs/core-testing/local-website/htdocs/remote/num.php create mode 100644 abs/core-testing/local-website/htdocs/remote/pda.php create mode 100644 abs/core-testing/local-website/htdocs/remote/remote-wide.html create mode 100644 abs/core-testing/local-website/htdocs/remote/remote-wide.php create mode 100644 abs/core-testing/local-website/htdocs/remote/remote.css create mode 100644 abs/core-testing/local-website/htdocs/remote/remote.html create mode 100644 abs/core-testing/local-website/htdocs/remote/remote.php create mode 100644 abs/core-testing/local-website/htdocs/remote/svg/button.svg create mode 100644 abs/core-testing/local-website/htdocs/remote/svg/button_30.xcf create mode 100644 abs/core-testing/local-website/htdocs/remote/svg/button_g.svg create mode 100644 abs/core-testing/local-website/htdocs/remote/svg/button_r.svg create mode 100644 abs/core-testing/local-website/htdocs/remote/svg/down.svg create mode 100644 abs/core-testing/local-website/htdocs/remote/svg/fast_forward.svg create mode 100644 abs/core-testing/local-website/htdocs/remote/svg/fast_rewind.svg create mode 100644 abs/core-testing/local-website/htdocs/remote/svg/left.svg create mode 100644 abs/core-testing/local-website/htdocs/remote/svg/ok.svg create mode 100644 abs/core-testing/local-website/htdocs/remote/svg/pause.svg create mode 100644 abs/core-testing/local-website/htdocs/remote/svg/rec.svg create mode 100644 abs/core-testing/local-website/htdocs/remote/svg/right.svg create mode 100644 abs/core-testing/local-website/htdocs/remote/svg/scratch.svg create mode 100644 abs/core-testing/local-website/htdocs/remote/svg/skip_back.svg create mode 100644 abs/core-testing/local-website/htdocs/remote/svg/skip_forward.svg create mode 100644 abs/core-testing/local-website/htdocs/remote/svg/stop.svg create mode 100644 abs/core-testing/local-website/htdocs/remote/svg/up.svg create mode 100644 abs/core-testing/local-website/htdocs/rrd/Disabled create mode 100644 abs/core-testing/local-website/htdocs/rrd/index.html create mode 100644 abs/core-testing/local-website/htdocs/style.css create mode 100644 abs/core-testing/sqlite3/PKGBUILD create mode 100644 abs/core-testing/sqlite3/build_fts_as_part_of_libsqlite.patch create mode 100644 abs/core-testing/sqlite3/license.txt create mode 100644 abs/core-testing/sqlite3/sqlite-3.5.8-pkgconfig-version.patch diff --git a/abs/core-testing/fcgi/PKGBUILD b/abs/core-testing/fcgi/PKGBUILD new file mode 100644 index 0000000..e7cf3c5 --- /dev/null +++ b/abs/core-testing/fcgi/PKGBUILD @@ -0,0 +1,27 @@ +# $Id: PKGBUILD 12749 2008-09-19 13:48:16Z pierre $ +# Maintainer: tobias +# Modified by: eliott +# Original by Benjamin Andresen, klapmuetz [at] gmail [dot] com + +pkgname=fcgi +pkgver=2.4.0 +pkgrel=5 +depends=('gcc-libs') +pkgdesc="FASTCgi(fcgi) islanguage independent, high performant extension to CGI" +arch=(i686 x86_64) +license=('custom') +options=('!libtool') +url="http://www.fastcgi.com" +source=("http://www.fastcgi.com/dist/$pkgname-$pkgver.tar.gz" 'fcgi-configure.patch') +md5sums=('d15060a813b91383a9f3c66faf84867e' '4312cdf8ee47c9f8a276e7d892a18ea6') + +build() { + cd $startdir/src/$pkgname-$pkgver + # fix from Debian: http://ftp.debian.org/debian/pool/main/libf/libfcgi/libfcgi_2.4.0-7.diff.gz + patch -p1 -i ${srcdir}/fcgi-configure.patch || return 1 + ./configure --prefix=/usr + make || return 1 + make DESTDIR=$startdir/pkg install || return 1 + install -Dm 644 LICENSE.TERMS \ + ${startdir}/pkg/usr/share/licenses/${pkgname}/LICENSE +} diff --git a/abs/core-testing/fcgi/fcgi-configure.patch b/abs/core-testing/fcgi/fcgi-configure.patch new file mode 100644 index 0000000..0c4799a --- /dev/null +++ b/abs/core-testing/fcgi/fcgi-configure.patch @@ -0,0 +1,53839 @@ +--- libfcgi-2.4.0.orig/depcomp ++++ libfcgi-2.4.0/depcomp +@@ -1,7 +1,10 @@ + #! /bin/sh +- + # depcomp - compile a program generating dependencies as side-effects +-# Copyright 1999, 2000 Free Software Foundation, Inc. ++ ++scriptversion=2006-10-15.18 ++ ++# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006 Free Software ++# Foundation, Inc. + + # This program is free software; you can redistribute it and/or modify + # it under the terms of the GNU General Public License as published by +@@ -15,8 +18,8 @@ + + # You should have received a copy of the GNU General Public License + # along with this program; if not, write to the Free Software +-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +-# 02111-1307, USA. ++# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA ++# 02110-1301, USA. + + # As a special exception to the GNU General Public License, if you + # distribute this file as part of a program that contains a +@@ -25,13 +28,45 @@ + + # Originally written by Alexandre Oliva . + ++case $1 in ++ '') ++ echo "$0: No command. Try \`$0 --help' for more information." 1>&2 ++ exit 1; ++ ;; ++ -h | --h*) ++ cat <<\EOF ++Usage: depcomp [--help] [--version] PROGRAM [ARGS] ++ ++Run PROGRAMS ARGS to compile a file, generating dependencies ++as side-effects. ++ ++Environment variables: ++ depmode Dependency tracking mode. ++ source Source file read by `PROGRAMS ARGS'. ++ object Object file output by `PROGRAMS ARGS'. ++ DEPDIR directory where to store dependencies. ++ depfile Dependency file to output. ++ tmpdepfile Temporary file to use when outputing dependencies. ++ libtool Whether libtool is used (yes/no). ++ ++Report bugs to . ++EOF ++ exit $? ++ ;; ++ -v | --v*) ++ echo "depcomp $scriptversion" ++ exit $? ++ ;; ++esac ++ + if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 + fi +-# `libtool' can also be set to `yes' or `no'. + +-depfile=${depfile-`echo "$object" | sed 's,\([^/]*\)$,.deps/\1,;s/\.\([^.]*\)$/.P\1/'`} ++# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. ++depfile=${depfile-`echo "$object" | ++ sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} + tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + + rm -f "$tmpdepfile" +@@ -57,7 +92,20 @@ + ## gcc 3 implements dependency tracking that does exactly what + ## we want. Yay! Note: for some reason libtool 1.4 doesn't like + ## it if -MD -MP comes after the -MF stuff. Hmm. +- "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" ++## Unfortunately, FreeBSD c89 acceptance of flags depends upon ++## the command line argument order; so add the flags where they ++## appear in depend2.am. Note that the slowdown incurred here ++## affects only configure: in makefiles, %FASTDEP% shortcuts this. ++ for arg ++ do ++ case $arg in ++ -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; ++ *) set fnord "$@" "$arg" ;; ++ esac ++ shift # fnord ++ shift # $arg ++ done ++ "$@" + stat=$? + if test $stat -eq 0; then : + else +@@ -163,19 +211,25 @@ + + aix) + # The C for AIX Compiler uses -M and outputs the dependencies +- # in a .u file. This file always lives in the current directory. +- # Also, the AIX compiler puts `$object:' at the start of each line; +- # $object doesn't have directory information. +- stripped=`echo "$object" | sed -e 's,^.*/,,' -e 's/\(.*\)\..*$/\1/'` ++ # in a .u file. In older versions, this file always lives in the ++ # current directory. Also, the AIX compiler puts `$object:' at the ++ # start of each line; $object doesn't have directory information. ++ # Version 6 uses the directory in both cases. ++ stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` + tmpdepfile="$stripped.u" +- outname="$stripped.o" + if test "$libtool" = yes; then + "$@" -Wc,-M + else + "$@" -M + fi +- + stat=$? ++ ++ if test -f "$tmpdepfile"; then : ++ else ++ stripped=`echo "$stripped" | sed 's,^.*/,,'` ++ tmpdepfile="$stripped.u" ++ fi ++ + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" +@@ -183,6 +237,7 @@ + fi + + if test -f "$tmpdepfile"; then ++ outname="$stripped.o" + # Each line is of the form `foo.o: dependent.h'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. +@@ -197,37 +252,136 @@ + rm -f "$tmpdepfile" + ;; + ++icc) ++ # Intel's C compiler understands `-MD -MF file'. However on ++ # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c ++ # ICC 7.0 will fill foo.d with something like ++ # foo.o: sub/foo.c ++ # foo.o: sub/foo.h ++ # which is wrong. We want: ++ # sub/foo.o: sub/foo.c ++ # sub/foo.o: sub/foo.h ++ # sub/foo.c: ++ # sub/foo.h: ++ # ICC 7.1 will output ++ # foo.o: sub/foo.c sub/foo.h ++ # and will wrap long lines using \ : ++ # foo.o: sub/foo.c ... \ ++ # sub/foo.h ... \ ++ # ... ++ ++ "$@" -MD -MF "$tmpdepfile" ++ stat=$? ++ if test $stat -eq 0; then : ++ else ++ rm -f "$tmpdepfile" ++ exit $stat ++ fi ++ rm -f "$depfile" ++ # Each line is of the form `foo.o: dependent.h', ++ # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. ++ # Do two passes, one to just change these to ++ # `$object: dependent.h' and one to simply `dependent.h:'. ++ sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" ++ # Some versions of the HPUX 10.20 sed can't process this invocation ++ # correctly. Breaking it into two sed invocations is a workaround. ++ sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | ++ sed -e 's/$/ :/' >> "$depfile" ++ rm -f "$tmpdepfile" ++ ;; ++ ++hp2) ++ # The "hp" stanza above does not work with aCC (C++) and HP's ia64 ++ # compilers, which have integrated preprocessors. The correct option ++ # to use with these is +Maked; it writes dependencies to a file named ++ # 'foo.d', which lands next to the object file, wherever that ++ # happens to be. ++ # Much of this is similar to the tru64 case; see comments there. ++ dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` ++ test "x$dir" = "x$object" && dir= ++ base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` ++ if test "$libtool" = yes; then ++ tmpdepfile1=$dir$base.d ++ tmpdepfile2=$dir.libs/$base.d ++ "$@" -Wc,+Maked ++ else ++ tmpdepfile1=$dir$base.d ++ tmpdepfile2=$dir$base.d ++ "$@" +Maked ++ fi ++ stat=$? ++ if test $stat -eq 0; then : ++ else ++ rm -f "$tmpdepfile1" "$tmpdepfile2" ++ exit $stat ++ fi ++ ++ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" ++ do ++ test -f "$tmpdepfile" && break ++ done ++ if test -f "$tmpdepfile"; then ++ sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" ++ # Add `dependent.h:' lines. ++ sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile" ++ else ++ echo "#dummy" > "$depfile" ++ fi ++ rm -f "$tmpdepfile" "$tmpdepfile2" ++ ;; ++ + tru64) +- # The Tru64 AIX compiler uses -MD to generate dependencies as a side ++ # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. +- # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put ++ # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in `foo.d' instead, so we check for that too. + # Subdirectories are respected. ++ dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` ++ test "x$dir" = "x$object" && dir= ++ base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + +- tmpdepfile1="$object.d" +- tmpdepfile2=`echo "$object" | sed -e 's/.o$/.d/'` + if test "$libtool" = yes; then ++ # With Tru64 cc, shared objects can also be used to make a ++ # static library. This mechanism is used in libtool 1.4 series to ++ # handle both shared and static libraries in a single compilation. ++ # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. ++ # ++ # With libtool 1.5 this exception was removed, and libtool now ++ # generates 2 separate objects for the 2 libraries. These two ++ # compilations output dependencies in $dir.libs/$base.o.d and ++ # in $dir$base.o.d. We have to check for both files, because ++ # one of the two compilations can be disabled. We should prefer ++ # $dir$base.o.d over $dir.libs/$base.o.d because the latter is ++ # automatically cleaned when .libs/ is deleted, while ignoring ++ # the former would cause a distcleancheck panic. ++ tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 ++ tmpdepfile2=$dir$base.o.d # libtool 1.5 ++ tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 ++ tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else ++ tmpdepfile1=$dir$base.o.d ++ tmpdepfile2=$dir$base.d ++ tmpdepfile3=$dir$base.d ++ tmpdepfile4=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -eq 0; then : + else +- rm -f "$tmpdepfile1" "$tmpdepfile2" ++ rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + exit $stat + fi + +- if test -f "$tmpdepfile1"; then +- tmpdepfile="$tmpdepfile1" +- else +- tmpdepfile="$tmpdepfile2" +- fi ++ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" ++ do ++ test -f "$tmpdepfile" && break ++ done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" +- # That's a space and a tab in the []. +- sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" ++ # That's a tab and a space in the []. ++ sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" + else + echo "#dummy" > "$depfile" + fi +@@ -240,34 +394,42 @@ + + dashmstdout) + # Important note: in order to support this mode, a compiler *must* +- # always write the proprocessed file to stdout, regardless of -o, +- # because we must use -o when running libtool. +- test -z "$dashmflag" && dashmflag=-M +- ( IFS=" " +- case " $* " in +- *" --mode=compile "*) # this is libtool, let us make it quiet +- for arg +- do # cycle over the arguments +- case "$arg" in +- "--mode=compile") +- # insert --quiet before "--mode=compile" +- set fnord "$@" --quiet +- shift # fnord +- ;; +- esac +- set fnord "$@" "$arg" +- shift # fnord +- shift # "$arg" +- done ++ # always write the preprocessed file to stdout, regardless of -o. ++ "$@" || exit $? ++ ++ # Remove the call to Libtool. ++ if test "$libtool" = yes; then ++ while test $1 != '--mode=compile'; do ++ shift ++ done ++ shift ++ fi ++ ++ # Remove `-o $object'. ++ IFS=" " ++ for arg ++ do ++ case $arg in ++ -o) ++ shift ++ ;; ++ $object) ++ shift ++ ;; ++ *) ++ set fnord "$@" "$arg" ++ shift # fnord ++ shift # $arg + ;; + esac +- "$@" $dashmflag | sed 's:^[^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" +- ) & +- proc=$! +- "$@" +- stat=$? +- wait "$proc" +- if test "$stat" != 0; then exit $stat; fi ++ done ++ ++ test -z "$dashmflag" && dashmflag=-M ++ # Require at least two characters before searching for `:' ++ # in the target name. This is to cope with DOS-style filenames: ++ # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. ++ "$@" $dashmflag | ++ sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + tr ' ' ' +@@ -285,36 +447,40 @@ + ;; + + makedepend) +- # X makedepend +- ( +- shift +- cleared=no +- for arg in "$@"; do +- case $cleared in no) +- set ""; shift +- cleared=yes +- esac +- case "$arg" in +- -D*|-I*) +- set fnord "$@" "$arg"; shift;; +- -*) +- ;; +- *) +- set fnord "$@" "$arg"; shift;; +- esac ++ "$@" || exit $? ++ # Remove any Libtool call ++ if test "$libtool" = yes; then ++ while test $1 != '--mode=compile'; do ++ shift + done +- obj_suffix="`echo $object | sed 's/^.*\././'`" +- touch "$tmpdepfile" +- ${MAKEDEPEND-makedepend} 2>/dev/null -o"$obj_suffix" -f"$tmpdepfile" "$@" +- ) & +- proc=$! +- "$@" +- stat=$? +- wait "$proc" +- if test "$stat" != 0; then exit $stat; fi ++ shift ++ fi ++ # X makedepend ++ shift ++ cleared=no ++ for arg in "$@"; do ++ case $cleared in ++ no) ++ set ""; shift ++ cleared=yes ;; ++ esac ++ case "$arg" in ++ -D*|-I*) ++ set fnord "$@" "$arg"; shift ;; ++ # Strip any option that makedepend may not understand. Remove ++ # the object too, otherwise makedepend will parse it as a source file. ++ -*|$object) ++ ;; ++ *) ++ set fnord "$@" "$arg"; shift ;; ++ esac ++ done ++ obj_suffix="`echo $object | sed 's/^.*\././'`" ++ touch "$tmpdepfile" ++ ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" +- tail +3 "$tmpdepfile" | tr ' ' ' ++ sed '1,2d' "$tmpdepfile" | tr ' ' ' + ' | \ + ## Some versions of the HPUX 10.20 sed can't process this invocation + ## correctly. Breaking it into two sed invocations is a workaround. +@@ -324,35 +490,40 @@ + + cpp) + # Important note: in order to support this mode, a compiler *must* +- # always write the proprocessed file to stdout, regardless of -o, +- # because we must use -o when running libtool. +- ( IFS=" " +- case " $* " in +- *" --mode=compile "*) +- for arg +- do # cycle over the arguments +- case $arg in +- "--mode=compile") +- # insert --quiet before "--mode=compile" +- set fnord "$@" --quiet +- shift # fnord +- ;; +- esac +- set fnord "$@" "$arg" +- shift # fnord +- shift # "$arg" +- done ++ # always write the preprocessed file to stdout. ++ "$@" || exit $? ++ ++ # Remove the call to Libtool. ++ if test "$libtool" = yes; then ++ while test $1 != '--mode=compile'; do ++ shift ++ done ++ shift ++ fi ++ ++ # Remove `-o $object'. ++ IFS=" " ++ for arg ++ do ++ case $arg in ++ -o) ++ shift ++ ;; ++ $object) ++ shift ++ ;; ++ *) ++ set fnord "$@" "$arg" ++ shift # fnord ++ shift # $arg + ;; + esac +- "$@" -E | +- sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | ++ done ++ ++ "$@" -E | ++ sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ ++ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | + sed '$ s: \\$::' > "$tmpdepfile" +- ) & +- proc=$! +- "$@" +- stat=$? +- wait "$proc" +- if test "$stat" != 0; then exit $stat; fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" +@@ -362,34 +533,27 @@ + + msvisualcpp) + # Important note: in order to support this mode, a compiler *must* +- # always write the proprocessed file to stdout, regardless of -o, ++ # always write the preprocessed file to stdout, regardless of -o, + # because we must use -o when running libtool. +- ( IFS=" " +- case " $* " in +- *" --mode=compile "*) +- for arg +- do # cycle over the arguments +- case $arg in +- "--mode=compile") +- # insert --quiet before "--mode=compile" +- set fnord "$@" --quiet +- shift # fnord +- ;; +- esac ++ "$@" || exit $? ++ IFS=" " ++ for arg ++ do ++ case "$arg" in ++ "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") ++ set fnord "$@" ++ shift ++ shift ++ ;; ++ *) + set fnord "$@" "$arg" +- shift # fnord +- shift # "$arg" +- done +- ;; ++ shift ++ shift ++ ;; + esac +- "$@" -E | +- sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" +- ) & +- proc=$! +- "$@" +- stat=$? +- wait "$proc" +- if test "$stat" != 0; then exit $stat; fi ++ done ++ "$@" -E | ++ sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" +@@ -409,3 +573,12 @@ + esac + + exit 0 ++ ++# Local Variables: ++# mode: shell-script ++# sh-indentation: 2 ++# eval: (add-hook 'write-file-hooks 'time-stamp) ++# time-stamp-start: "scriptversion=" ++# time-stamp-format: "%:y-%02m-%02d.%02H" ++# time-stamp-end: "$" ++# End: +--- libfcgi-2.4.0.orig/aclocal.m4 ++++ libfcgi-2.4.0/aclocal.m4 +@@ -1,7 +1,7 @@ +-# aclocal.m4 generated automatically by aclocal 1.5 ++# generated automatically by aclocal 1.10 -*- Autoconf -*- + +-# Copyright 1996, 1997, 1998, 1999, 2000, 2001 +-# Free Software Foundation, Inc. ++# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, ++# 2005, 2006 Free Software Foundation, Inc. + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, + # with or without modifications, as long as this notice is preserved. +@@ -11,4434 +11,7446 @@ + # even the implied warranty of MERCHANTABILITY or FITNESS FOR A + # PARTICULAR PURPOSE. + +-dnl $Id: acinclude.m4,v 1.2 2001/12/21 03:12:50 robs Exp $ ++m4_if(m4_PACKAGE_VERSION, [2.61],, ++[m4_fatal([this file was generated for autoconf 2.61. ++You have another version of autoconf. If you want to use that, ++you should regenerate the build system entirely.], [63])]) + +-AC_DEFUN(FCGI_COMMON_CHECKS, [ +- AC_CHECK_TYPE([ssize_t], [int]) ++# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- + +- AC_MSG_CHECKING([for sun_len in sys/un.h]) +- AC_EGREP_HEADER([sun_len], [sys/un.h], +- [AC_MSG_RESULT([yes]) +- AC_DEFINE([HAVE_SOCKADDR_UN_SUN_LEN], [1], +- [Define if sockaddr_un in sys/un.h contains a sun_len component])], +- AC_MSG_RESULT([no])) +- +- AC_MSG_CHECKING([for fpos_t in stdio.h]) +- AC_EGREP_HEADER([fpos_t], [stdio.h], +- [AC_MSG_RESULT([yes]) +- AC_DEFINE([HAVE_FPOS], [1], +- [Define if the fpos_t typedef is in stdio.h])], +- AC_MSG_RESULT([no])) +- +- AC_CHECK_HEADERS([sys/socket.h netdb.h netinet/in.h arpa/inet.h]) +- AC_CHECK_HEADERS([sys/time.h limits.h sys/param.h unistd.h]) +- +- AC_MSG_CHECKING([for a fileno() prototype in stdio.h]) +- AC_EGREP_HEADER([fileno], [stdio.h], +- [AC_MSG_RESULT([yes]) +- AC_DEFINE([HAVE_FILENO_PROTO], [1], +- [Define if there's a fileno() prototype in stdio.h])], +- AC_MSG_RESULT([no])) +- +- if test "$HAVE_SYS_SOCKET_H"; then +- AC_MSG_CHECKING([for socklen_t in sys/socket.h]) +- AC_EGREP_HEADER([socklen_t], [sys/socket.h], +- [AC_MSG_RESULT([yes]) +- AC_DEFINE([HAVE_SOCKLEN], [1], +- [Define if the socklen_t typedef is in sys/socket.h])], +- AC_MSG_RESULT([no])) +- fi ++# serial 51 Debian 1.5.24-1 AC_PROG_LIBTOOL + +- #-------------------------------------------------------------------- +- # Do we need cross-process locking on this platform? +- #-------------------------------------------------------------------- +- AC_MSG_CHECKING([whether cross-process locking is required by accept()]) +- case "`uname -sr`" in +- IRIX\ 5.* | SunOS\ 5.* | UNIX_System_V\ 4.0) +- AC_MSG_RESULT([yes]) +- AC_DEFINE([USE_LOCKING], [1], +- [Define if cross-process locking is required by accept()]) +- ;; +- *) +- AC_MSG_RESULT([no]) +- ;; +- esac + +- #-------------------------------------------------------------------- +- # Does va_arg(arg, long double) crash the compiler? +- # hpux 9.04 compiler does and so does Stratus FTX (uses HP's compiler) +- #-------------------------------------------------------------------- +- AC_MSG_CHECKING([whether va_arg(arg, long double) crashes the compiler]) +- AC_TRY_COMPILE([#include ], +- [long double lDblArg; va_list arg; lDblArg = va_arg(arg, long double);], +- AC_MSG_RESULT([no]), +- [AC_MSG_RESULT([yes]) +- AC_DEFINE([HAVE_VA_ARG_LONG_DOUBLE_BUG], [1], +- [Define if va_arg(arg, long double) crashes the compiler])]) ++# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED) ++# ----------------------------------------------------------- ++# If this macro is not defined by Autoconf, define it here. ++m4_ifdef([AC_PROVIDE_IFELSE], ++ [], ++ [m4_define([AC_PROVIDE_IFELSE], ++ [m4_ifdef([AC_PROVIDE_$1], ++ [$2], [$3])])]) + +- AC_C_CONST +-]) + ++# AC_PROG_LIBTOOL ++# --------------- ++AC_DEFUN([AC_PROG_LIBTOOL], ++[AC_REQUIRE([_AC_PROG_LIBTOOL])dnl ++dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX ++dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX. ++ AC_PROVIDE_IFELSE([AC_PROG_CXX], ++ [AC_LIBTOOL_CXX], ++ [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX ++ ])]) ++dnl And a similar setup for Fortran 77 support ++ AC_PROVIDE_IFELSE([AC_PROG_F77], ++ [AC_LIBTOOL_F77], ++ [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77 ++])]) ++ ++dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly. ++dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run ++dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both. ++ AC_PROVIDE_IFELSE([AC_PROG_GCJ], ++ [AC_LIBTOOL_GCJ], ++ [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], ++ [AC_LIBTOOL_GCJ], ++ [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ], ++ [AC_LIBTOOL_GCJ], ++ [ifdef([AC_PROG_GCJ], ++ [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])]) ++ ifdef([A][M_PROG_GCJ], ++ [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])]) ++ ifdef([LT_AC_PROG_GCJ], ++ [define([LT_AC_PROG_GCJ], ++ defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])]) ++])])# AC_PROG_LIBTOOL ++ ++ ++# _AC_PROG_LIBTOOL ++# ---------------- ++AC_DEFUN([_AC_PROG_LIBTOOL], ++[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl ++AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl ++AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl ++AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl + +-dnl @synopsis ACX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) +-dnl +-dnl This macro figures out how to build C programs using POSIX +-dnl threads. It sets the PTHREAD_LIBS output variable to the threads +-dnl library and linker flags, and the PTHREAD_CFLAGS output variable +-dnl to any special C compiler flags that are needed. (The user can also +-dnl force certain compiler flags/libs to be tested by setting these +-dnl environment variables.) +-dnl +-dnl Also sets PTHREAD_CC to any special C compiler that is needed for +-dnl multi-threaded programs (defaults to the value of CC otherwise). +-dnl (This is necessary on AIX to use the special cc_r compiler alias.) +-dnl +-dnl If you are only building threads programs, you may wish to +-dnl use these variables in your default LIBS, CFLAGS, and CC: +-dnl +-dnl LIBS="$PTHREAD_LIBS $LIBS" +-dnl CFLAGS="$CFLAGS $PTHREAD_CFLAGS" +-dnl CC="$PTHREAD_CC" +-dnl +-dnl In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute +-dnl constant has a nonstandard name, defines PTHREAD_CREATE_JOINABLE +-dnl to that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX). +-dnl +-dnl ACTION-IF-FOUND is a list of shell commands to run if a threads +-dnl library is found, and ACTION-IF-NOT-FOUND is a list of commands +-dnl to run it if it is not found. If ACTION-IF-FOUND is not specified, +-dnl the default action will define HAVE_PTHREAD. +-dnl +-dnl Please let the authors know if this macro fails on any platform, +-dnl or if you have any other suggestions or comments. This macro was +-dnl based on work by SGJ on autoconf scripts for FFTW (www.fftw.org) +-dnl (with help from M. Frigo), as well as ac_pthread and hb_pthread +-dnl macros posted by AFC to the autoconf macro repository. We are also +-dnl grateful for the helpful feedback of numerous users. ++# This can be used to rebuild libtool when needed ++LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" ++ ++# Always use our own libtool. ++LIBTOOL='$(SHELL) $(top_builddir)/libtool' ++AC_SUBST(LIBTOOL)dnl ++ ++# Prevent multiple expansion ++define([AC_PROG_LIBTOOL], []) ++])# _AC_PROG_LIBTOOL ++ ++ ++# AC_LIBTOOL_SETUP ++# ---------------- ++AC_DEFUN([AC_LIBTOOL_SETUP], ++[AC_PREREQ(2.50)dnl ++AC_REQUIRE([AC_ENABLE_SHARED])dnl ++AC_REQUIRE([AC_ENABLE_STATIC])dnl ++AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl ++AC_REQUIRE([AC_CANONICAL_HOST])dnl ++AC_REQUIRE([AC_CANONICAL_BUILD])dnl ++AC_REQUIRE([AC_PROG_CC])dnl ++AC_REQUIRE([AC_PROG_LD])dnl ++AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl ++AC_REQUIRE([AC_PROG_NM])dnl ++ ++AC_REQUIRE([AC_PROG_LN_S])dnl ++AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl ++# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! ++AC_REQUIRE([AC_OBJEXT])dnl ++AC_REQUIRE([AC_EXEEXT])dnl + dnl +-dnl @version $Id: acinclude.m4,v 1.2 2001/12/21 03:12:50 robs Exp $ +-dnl @author Steven G. Johnson and Alejandro Forero Cuervo + +-AC_DEFUN([ACX_PTHREAD], [ +-AC_REQUIRE([AC_CANONICAL_HOST]) +-acx_pthread_ok=no +- +-# First, check if the POSIX threads header, pthread.h, is available. +-# If it isn't, don't bother looking for the threads libraries. +-AC_CHECK_HEADER(pthread.h, , acx_pthread_ok=noheader) +- +-# We must check for the threads library under a number of different +-# names; the ordering is very important because some systems +-# (e.g. DEC) have both -lpthread and -lpthreads, where one of the +-# libraries is broken (non-POSIX). +- +-# First of all, check if the user has set any of the PTHREAD_LIBS, +-# etcetera environment variables, and if threads linking works using +-# them: +-if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then +- save_CFLAGS="$CFLAGS" +- CFLAGS="$CFLAGS $PTHREAD_CFLAGS" +- save_LIBS="$LIBS" +- LIBS="$PTHREAD_LIBS $LIBS" +- AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS]) +- AC_TRY_LINK_FUNC(pthread_join, acx_pthread_ok=yes) +- AC_MSG_RESULT($acx_pthread_ok) +- if test x"$acx_pthread_ok" = xno; then +- PTHREAD_LIBS="" +- PTHREAD_CFLAGS="" +- fi +- LIBS="$save_LIBS" +- CFLAGS="$save_CFLAGS" +-fi ++AC_LIBTOOL_SYS_MAX_CMD_LEN ++AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE ++AC_LIBTOOL_OBJDIR + +-# Create a list of thread flags to try. Items starting with a "-" are +-# C compiler flags, and other items are library names, except for "none" +-# which indicates that we try without any flags at all. +- +-acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt" +- +-# The ordering *is* (sometimes) important. Some notes on the +-# individual items follow: +- +-# pthreads: AIX (must check this before -lpthread) +-# none: in case threads are in libc; should be tried before -Kthread and +-# other compiler flags to prevent continual compiler warnings +-# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) +-# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) +-# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) +-# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads) +-# -pthreads: Solaris/gcc +-# -mthreads: Mingw32/gcc, Lynx/gcc +-# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it +-# doesn't hurt to check since this sometimes defines pthreads too; +-# also defines -D_REENTRANT) +-# pthread: Linux, etcetera +-# --thread-safe: KAI C++ +- +-case "${host_cpu}-${host_os}" in +- *solaris*) +- +- # On Solaris (at least, for some versions), libc contains stubbed +- # (non-functional) versions of the pthreads routines, so link-based +- # tests will erroneously succeed. (We need to link with -pthread or +- # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather +- # a function called by this macro, so we could check for that, but +- # who knows whether they'll stub that too in a future libc.) So, +- # we'll just look for -pthreads and -lpthread first: ++AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl ++_LT_AC_PROG_ECHO_BACKSLASH + +- acx_pthread_flags="-pthread -pthreads pthread -mt $acx_pthread_flags" +- ;; ++case $host_os in ++aix3*) ++ # AIX sometimes has problems with the GCC collect2 program. For some ++ # reason, if we set the COLLECT_NAMES environment variable, the problems ++ # vanish in a puff of smoke. ++ if test "X${COLLECT_NAMES+set}" != Xset; then ++ COLLECT_NAMES= ++ export COLLECT_NAMES ++ fi ++ ;; + esac + +-if test x"$acx_pthread_ok" = xno; then +-for flag in $acx_pthread_flags; do ++# Sed substitution that helps us do robust quoting. It backslashifies ++# metacharacters that are still active within double-quoted strings. ++Xsed='sed -e 1s/^X//' ++[sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'] + +- case $flag in +- none) +- AC_MSG_CHECKING([whether pthreads work without any flags]) +- ;; +- +- -*) +- AC_MSG_CHECKING([whether pthreads work with $flag]) +- PTHREAD_CFLAGS="$flag" +- ;; +- +- *) +- AC_MSG_CHECKING([for the pthreads library -l$flag]) +- PTHREAD_LIBS="-l$flag" +- ;; +- esac ++# Same as above, but do not quote variable references. ++[double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'] + +- save_LIBS="$LIBS" +- save_CFLAGS="$CFLAGS" +- LIBS="$PTHREAD_LIBS $LIBS" +- CFLAGS="$CFLAGS $PTHREAD_CFLAGS" +- +- # Check for various functions. We must include pthread.h, +- # since some functions may be macros. (On the Sequent, we +- # need a special flag -Kthread to make this header compile.) +- # We check for pthread_join because it is in -lpthread on IRIX +- # while pthread_create is in libc. We check for pthread_attr_init +- # due to DEC craziness with -lpthreads. We check for +- # pthread_cleanup_push because it is one of the few pthread +- # functions on Solaris that doesn't have a non-functional libc stub. +- # We try pthread_create on general principles. +- AC_TRY_LINK([#include ], +- [pthread_t th; pthread_join(th, 0); +- pthread_attr_init(0); pthread_cleanup_push(0, 0); +- pthread_create(0,0,0,0); pthread_cleanup_pop(0); ], +- [acx_pthread_ok=yes]) +- +- LIBS="$save_LIBS" +- CFLAGS="$save_CFLAGS" +- +- AC_MSG_RESULT($acx_pthread_ok) +- if test "x$acx_pthread_ok" = xyes; then +- break; +- fi ++# Sed substitution to delay expansion of an escaped shell variable in a ++# double_quote_subst'ed string. ++delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +- PTHREAD_LIBS="" +- PTHREAD_CFLAGS="" +-done +-fi ++# Sed substitution to avoid accidental globbing in evaled expressions ++no_glob_subst='s/\*/\\\*/g' + +-# Various other checks: +-if test "x$acx_pthread_ok" = xyes; then +- save_LIBS="$LIBS" +- LIBS="$PTHREAD_LIBS $LIBS" +- save_CFLAGS="$CFLAGS" +- CFLAGS="$CFLAGS $PTHREAD_CFLAGS" +- +- # Detect AIX lossage: threads are created detached by default +- # and the JOINABLE attribute has a nonstandard name (UNDETACHED). +- AC_MSG_CHECKING([for joinable pthread attribute]) +- AC_TRY_LINK([#include ], +- [int attr=PTHREAD_CREATE_JOINABLE;], +- ok=PTHREAD_CREATE_JOINABLE, ok=unknown) +- if test x"$ok" = xunknown; then +- AC_TRY_LINK([#include ], +- [int attr=PTHREAD_CREATE_UNDETACHED;], +- ok=PTHREAD_CREATE_UNDETACHED, ok=unknown) +- fi +- if test x"$ok" != xPTHREAD_CREATE_JOINABLE; then +- AC_DEFINE(PTHREAD_CREATE_JOINABLE, $ok, +- [Define to the necessary symbol if this constant +- uses a non-standard name on your system.]) +- fi +- AC_MSG_RESULT(${ok}) +- if test x"$ok" = xunknown; then +- AC_MSG_WARN([we do not know how to create joinable pthreads]) +- fi ++# Constants: ++rm="rm -f" + +- AC_MSG_CHECKING([if more special flags are required for pthreads]) +- flag=no +- case "${host_cpu}-${host_os}" in +- *-aix* | *-freebsd*) flag="-D_THREAD_SAFE";; +- *solaris* | alpha*-osf*) flag="-D_REENTRANT";; +- esac +- AC_MSG_RESULT(${flag}) +- if test "x$flag" != xno; then +- PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" +- fi ++# Global variables: ++default_ofile=libtool ++can_build_shared=yes + +- LIBS="$save_LIBS" +- CFLAGS="$save_CFLAGS" ++# All known linkers require a `.a' archive for static linking (except MSVC, ++# which needs '.lib'). ++libext=a ++ltmain="$ac_aux_dir/ltmain.sh" ++ofile="$default_ofile" ++with_gnu_ld="$lt_cv_prog_gnu_ld" + +- # More AIX lossage: must compile with cc_r +- AC_CHECK_PROG(PTHREAD_CC, cc_r, cc_r, ${CC}) +-else +- PTHREAD_CC="$CC" +-fi ++AC_CHECK_TOOL(AR, ar, false) ++AC_CHECK_TOOL(RANLIB, ranlib, :) ++AC_CHECK_TOOL(STRIP, strip, :) + +-AC_SUBST(PTHREAD_LIBS) +-AC_SUBST(PTHREAD_CFLAGS) +-AC_SUBST(PTHREAD_CC) ++old_CC="$CC" ++old_CFLAGS="$CFLAGS" + +-# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: +-if test x"$acx_pthread_ok" = xyes; then +- ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1]) +- : +-else +- acx_pthread_ok=no +- $2 +-fi ++# Set sane defaults for various variables ++test -z "$AR" && AR=ar ++test -z "$AR_FLAGS" && AR_FLAGS=cru ++test -z "$AS" && AS=as ++test -z "$CC" && CC=cc ++test -z "$LTCC" && LTCC=$CC ++test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS ++test -z "$DLLTOOL" && DLLTOOL=dlltool ++test -z "$LD" && LD=ld ++test -z "$LN_S" && LN_S="ln -s" ++test -z "$MAGIC_CMD" && MAGIC_CMD=file ++test -z "$NM" && NM=nm ++test -z "$SED" && SED=sed ++test -z "$OBJDUMP" && OBJDUMP=objdump ++test -z "$RANLIB" && RANLIB=: ++test -z "$STRIP" && STRIP=: ++test -z "$ac_objext" && ac_objext=o + +-])dnl ACX_PTHREAD ++# Determine commands to create old-style static archives. ++old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' ++old_postinstall_cmds='chmod 644 $oldlib' ++old_postuninstall_cmds= + ++if test -n "$RANLIB"; then ++ case $host_os in ++ openbsd*) ++ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" ++ ;; ++ *) ++ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" ++ ;; ++ esac ++ old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" ++fi + ++_LT_CC_BASENAME([$compiler]) + +-dnl @synopsis AC_PROG_CC_WARNINGS([ANSI]) +-dnl +-dnl Enables a reasonable set of warnings for the C compiler. Optionally, +-dnl if the first argument is nonempty, turns on flags which enforce and/or +-dnl enable proper ANSI C if such flags are known to the compiler used. +-dnl +-dnl Currently this macro knows about GCC, Solaris C compiler, +-dnl Digital Unix C compiler, C for AIX Compiler, HP-UX C compiler, +-dnl and IRIX C compiler. +-dnl +-dnl @version $Id: acinclude.m4,v 1.2 2001/12/21 03:12:50 robs Exp $ +-dnl @author Ville Laurikari +-dnl +-AC_DEFUN([AC_PROG_CC_WARNINGS], [ +- ansi=$1 +- if test -z "$ansi"; then +- msg="for C compiler warning flags" +- else +- msg="for C compiler warning and ANSI conformance flags" ++# Only perform the check for file, if the check method requires it ++case $deplibs_check_method in ++file_magic*) ++ if test "$file_magic_cmd" = '$MAGIC_CMD'; then ++ AC_PATH_MAGIC + fi +- AC_CACHE_CHECK($msg, ac_cv_prog_cc_warnings, [ +- if test -n "$CC"; then +- cat > conftest.c <&1 | grep "Xc.*strict ANSI C" > /dev/null 2>&1 && +- $CC -c -v -Xc conftest.c > /dev/null 2>&1 && +- test -f conftest.o; then +- if test -z "$ansi"; then +- ac_cv_prog_cc_warnings="-v" +- else +- ac_cv_prog_cc_warnings="-v -Xc" +- fi ++AC_ARG_ENABLE([libtool-lock], ++ [AC_HELP_STRING([--disable-libtool-lock], ++ [avoid locking (might break parallel builds)])]) ++test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +- dnl HP-UX C compiler +- elif $CC > /dev/null 2>&1 && +- $CC -c -Aa +w1 conftest.c > /dev/null 2>&1 && +- test -f conftest.o; then +- if test -z "$ansi"; then +- ac_cv_prog_cc_warnings="+w1" +- else +- ac_cv_prog_cc_warnings="+w1 -Aa" +- fi ++AC_ARG_WITH([pic], ++ [AC_HELP_STRING([--with-pic], ++ [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], ++ [pic_mode="$withval"], ++ [pic_mode=default]) ++test -z "$pic_mode" && pic_mode=default + +- dnl Digital Unix C compiler +- elif ! $CC > /dev/null 2>&1 && +- $CC -c -verbose -w0 -warnprotos -std1 conftest.c > /dev/null 2>&1 && +- test -f conftest.o; then +- if test -z "$ansi"; then +- ac_cv_prog_cc_warnings="-verbose -w0 -warnprotos" +- else +- ac_cv_prog_cc_warnings="-verbose -w0 -warnprotos -std1" +- fi ++# Use C for the default configuration in the libtool script ++tagname= ++AC_LIBTOOL_LANG_C_CONFIG ++_LT_AC_TAGCONFIG ++])# AC_LIBTOOL_SETUP + +- dnl C for AIX Compiler +- elif $CC > /dev/null 2>&1 | grep AIX > /dev/null 2>&1 && +- $CC -c -qlanglvl=ansi -qinfo=all conftest.c > /dev/null 2>&1 && +- test -f conftest.o; then +- if test -z "$ansi"; then +- ac_cv_prog_cc_warnings="-qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd" +- else +- ac_cv_prog_cc_warnings="-qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd -qlanglvl=ansi" +- fi + +- dnl IRIX C compiler +- elif $CC -fullwarn -ansi -ansiE > /dev/null 2>&1 && +- test -f conftest.o; then +- if test -z "$ansi"; then +- ac_cv_prog_cc_warnings="-fullwarn" +- else +- ac_cv_prog_cc_warnings="-fullwarn -ansi -ansiE" +- fi ++# _LT_AC_SYS_COMPILER ++# ------------------- ++AC_DEFUN([_LT_AC_SYS_COMPILER], ++[AC_REQUIRE([AC_PROG_CC])dnl + +- fi +- rm -f conftest.* +- fi +- if test -n "$ac_cv_prog_cc_warnings"; then +- CFLAGS="$CFLAGS $ac_cv_prog_cc_warnings" +- else +- ac_cv_prog_cc_warnings="unknown" +- fi +- ]) +-]) ++# If no C compiler was specified, use CC. ++LTCC=${LTCC-"$CC"} + ++# If no C compiler flags were specified, use CFLAGS. ++LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + ++# Allow CC to be a program name with arguments. ++compiler=$CC ++])# _LT_AC_SYS_COMPILER + +-# Do all the work for Automake. This macro actually does too much -- +-# some checks are only needed if your package does certain things. +-# But this isn't really a big deal. + +-# serial 5 ++# _LT_CC_BASENAME(CC) ++# ------------------- ++# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. ++AC_DEFUN([_LT_CC_BASENAME], ++[for cc_temp in $1""; do ++ case $cc_temp in ++ compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; ++ distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; ++ \-*) ;; ++ *) break;; ++ esac ++done ++cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` ++]) + +-# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be +-# written in clear, in which case automake, when reading aclocal.m4, +-# will think it sees a *use*, and therefore will trigger all it's +-# C support machinery. Also note that it means that autoscan, seeing +-# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + ++# _LT_COMPILER_BOILERPLATE ++# ------------------------ ++# Check for compiler boilerplate output or warnings with ++# the simple compiler test code. ++AC_DEFUN([_LT_COMPILER_BOILERPLATE], ++[AC_REQUIRE([LT_AC_PROG_SED])dnl ++ac_outfile=conftest.$ac_objext ++echo "$lt_simple_compile_test_code" >conftest.$ac_ext ++eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err ++_lt_compiler_boilerplate=`cat conftest.err` ++$rm conftest* ++])# _LT_COMPILER_BOILERPLATE ++ ++ ++# _LT_LINKER_BOILERPLATE ++# ---------------------- ++# Check for linker boilerplate output or warnings with ++# the simple link test code. ++AC_DEFUN([_LT_LINKER_BOILERPLATE], ++[AC_REQUIRE([LT_AC_PROG_SED])dnl ++ac_outfile=conftest.$ac_objext ++echo "$lt_simple_link_test_code" >conftest.$ac_ext ++eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err ++_lt_linker_boilerplate=`cat conftest.err` ++$rm conftest* ++])# _LT_LINKER_BOILERPLATE ++ ++ ++# _LT_AC_SYS_LIBPATH_AIX ++# ---------------------- ++# Links a minimal program and checks the executable ++# for the system default hardcoded library path. In most cases, ++# this is /usr/lib:/lib, but when the MPI compilers are used ++# the location of the communication and MPI libs are included too. ++# If we don't find anything, use the default library path according ++# to the aix ld manual. ++AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX], ++[AC_REQUIRE([LT_AC_PROG_SED])dnl ++AC_LINK_IFELSE(AC_LANG_PROGRAM,[ ++lt_aix_libpath_sed=' ++ /Import File Strings/,/^$/ { ++ /^0/ { ++ s/^0 *\(.*\)$/\1/ ++ p ++ } ++ }' ++aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++# Check for a 64-bit object if we didn't find anything. ++if test -z "$aix_libpath"; then ++ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++fi],[]) ++if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ++])# _LT_AC_SYS_LIBPATH_AIX ++ ++ ++# _LT_AC_SHELL_INIT(ARG) ++# ---------------------- ++AC_DEFUN([_LT_AC_SHELL_INIT], ++[ifdef([AC_DIVERSION_NOTICE], ++ [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], ++ [AC_DIVERT_PUSH(NOTICE)]) ++$1 ++AC_DIVERT_POP ++])# _LT_AC_SHELL_INIT + +-# We require 2.13 because we rely on SHELL being computed by configure. +-AC_PREREQ([2.13]) + +-# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED) +-# ----------------------------------------------------------- +-# If MACRO-NAME is provided do IF-PROVIDED, else IF-NOT-PROVIDED. +-# The purpose of this macro is to provide the user with a means to +-# check macros which are provided without letting her know how the +-# information is coded. +-# If this macro is not defined by Autoconf, define it here. +-ifdef([AC_PROVIDE_IFELSE], +- [], +- [define([AC_PROVIDE_IFELSE], +- [ifdef([AC_PROVIDE_$1], +- [$2], [$3])])]) ++# _LT_AC_PROG_ECHO_BACKSLASH ++# -------------------------- ++# Add some code to the start of the generated configure script which ++# will find an echo command which doesn't interpret backslashes. ++AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH], ++[_LT_AC_SHELL_INIT([ ++# Check that we are running under the correct shell. ++SHELL=${CONFIG_SHELL-/bin/sh} + ++case X$ECHO in ++X*--fallback-echo) ++ # Remove one level of quotation (which was required for Make). ++ ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` ++ ;; ++esac + +-# AM_INIT_AUTOMAKE(PACKAGE,VERSION, [NO-DEFINE]) +-# ---------------------------------------------- +-AC_DEFUN([AM_INIT_AUTOMAKE], +-[AC_REQUIRE([AC_PROG_INSTALL])dnl +-# test to see if srcdir already configured +-if test "`CDPATH=:; cd $srcdir && pwd`" != "`pwd`" && +- test -f $srcdir/config.status; then +- AC_MSG_ERROR([source directory already configured; run \"make distclean\" there first]) ++echo=${ECHO-echo} ++if test "X[$]1" = X--no-reexec; then ++ # Discard the --no-reexec flag, and continue. ++ shift ++elif test "X[$]1" = X--fallback-echo; then ++ # Avoid inline document here, it may be left over ++ : ++elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then ++ # Yippee, $echo works! ++ : ++else ++ # Restart under the correct shell. ++ exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} + fi + +-# Define the identity of the package. +-PACKAGE=$1 +-AC_SUBST(PACKAGE)dnl +-VERSION=$2 +-AC_SUBST(VERSION)dnl +-ifelse([$3],, +-[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) +-AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])]) ++if test "X[$]1" = X--fallback-echo; then ++ # used as fallback echo ++ shift ++ cat </dev/null 2>&1 && unset CDPATH + +-# Some tools Automake needs. +-AC_REQUIRE([AM_SANITY_CHECK])dnl +-AC_REQUIRE([AC_ARG_PROGRAM])dnl +-AM_MISSING_PROG(ACLOCAL, aclocal) +-AM_MISSING_PROG(AUTOCONF, autoconf) +-AM_MISSING_PROG(AUTOMAKE, automake) +-AM_MISSING_PROG(AUTOHEADER, autoheader) +-AM_MISSING_PROG(MAKEINFO, makeinfo) +-AM_MISSING_PROG(AMTAR, tar) +-AM_PROG_INSTALL_SH +-AM_PROG_INSTALL_STRIP +-# We need awk for the "check" target. The system "awk" is bad on +-# some platforms. +-AC_REQUIRE([AC_PROG_AWK])dnl +-AC_REQUIRE([AC_PROG_MAKE_SET])dnl +-AC_REQUIRE([AM_DEP_TRACK])dnl +-AC_REQUIRE([AM_SET_DEPDIR])dnl +-AC_PROVIDE_IFELSE([AC_PROG_][CC], +- [_AM_DEPENDENCIES(CC)], +- [define([AC_PROG_][CC], +- defn([AC_PROG_][CC])[_AM_DEPENDENCIES(CC)])])dnl +-AC_PROVIDE_IFELSE([AC_PROG_][CXX], +- [_AM_DEPENDENCIES(CXX)], +- [define([AC_PROG_][CXX], +- defn([AC_PROG_][CXX])[_AM_DEPENDENCIES(CXX)])])dnl +-]) ++if test -z "$ECHO"; then ++if test "X${echo_test_string+set}" != Xset; then ++# find a string as large as possible, as long as the shell can cope with it ++ for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do ++ # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... ++ if (echo_test_string=`eval $cmd`) 2>/dev/null && ++ echo_test_string=`eval $cmd` && ++ (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null ++ then ++ break ++ fi ++ done ++fi + +-# +-# Check to make sure that the build environment is sane. +-# ++if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && ++ echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && ++ test "X$echo_testing_string" = "X$echo_test_string"; then ++ : ++else ++ # The Solaris, AIX, and Digital Unix default echo programs unquote ++ # backslashes. This makes it impossible to quote backslashes using ++ # echo "$something" | sed 's/\\/\\\\/g' ++ # ++ # So, first we look for a working echo in the user's PATH. + +-# serial 3 ++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ++ for dir in $PATH /usr/ucb; do ++ IFS="$lt_save_ifs" ++ if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && ++ test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && ++ echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && ++ test "X$echo_testing_string" = "X$echo_test_string"; then ++ echo="$dir/echo" ++ break ++ fi ++ done ++ IFS="$lt_save_ifs" + +-# AM_SANITY_CHECK +-# --------------- +-AC_DEFUN([AM_SANITY_CHECK], +-[AC_MSG_CHECKING([whether build environment is sane]) +-# Just in case +-sleep 1 +-echo timestamp > conftest.file +-# Do `set' in a subshell so we don't clobber the current shell's +-# arguments. Must try -L first in case configure is actually a +-# symlink; some systems play weird games with the mod time of symlinks +-# (eg FreeBSD returns the mod time of the symlink's containing +-# directory). +-if ( +- set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` +- if test "$[*]" = "X"; then +- # -L didn't work. +- set X `ls -t $srcdir/configure conftest.file` ++ if test "X$echo" = Xecho; then ++ # We didn't find a better echo, so look for alternatives. ++ if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && ++ echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && ++ test "X$echo_testing_string" = "X$echo_test_string"; then ++ # This shell has a builtin print -r that does the trick. ++ echo='print -r' ++ elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && ++ test "X$CONFIG_SHELL" != X/bin/ksh; then ++ # If we have ksh, try running configure again with it. ++ ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} ++ export ORIGINAL_CONFIG_SHELL ++ CONFIG_SHELL=/bin/ksh ++ export CONFIG_SHELL ++ exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} ++ else ++ # Try using printf. ++ echo='printf %s\n' ++ if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && ++ echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && ++ test "X$echo_testing_string" = "X$echo_test_string"; then ++ # Cool, printf works ++ : ++ elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && ++ test "X$echo_testing_string" = 'X\t' && ++ echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && ++ test "X$echo_testing_string" = "X$echo_test_string"; then ++ CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL ++ export CONFIG_SHELL ++ SHELL="$CONFIG_SHELL" ++ export SHELL ++ echo="$CONFIG_SHELL [$]0 --fallback-echo" ++ elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && ++ test "X$echo_testing_string" = 'X\t' && ++ echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && ++ test "X$echo_testing_string" = "X$echo_test_string"; then ++ echo="$CONFIG_SHELL [$]0 --fallback-echo" ++ else ++ # maybe with a smaller string... ++ prev=: ++ ++ for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do ++ if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null ++ then ++ break ++ fi ++ prev="$cmd" ++ done ++ ++ if test "$prev" != 'sed 50q "[$]0"'; then ++ echo_test_string=`eval $prev` ++ export echo_test_string ++ exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} ++ else ++ # Oops. We lost completely, so just stick with echo. ++ echo=echo ++ fi ++ fi ++ fi ++ fi ++fi ++fi ++ ++# Copy echo and quote the copy suitably for passing to libtool from ++# the Makefile, instead of quoting the original, which is used later. ++ECHO=$echo ++if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then ++ ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" ++fi ++ ++AC_SUBST(ECHO) ++])])# _LT_AC_PROG_ECHO_BACKSLASH ++ ++ ++# _LT_AC_LOCK ++# ----------- ++AC_DEFUN([_LT_AC_LOCK], ++[AC_ARG_ENABLE([libtool-lock], ++ [AC_HELP_STRING([--disable-libtool-lock], ++ [avoid locking (might break parallel builds)])]) ++test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes ++ ++# Some flags need to be propagated to the compiler or linker for good ++# libtool support. ++case $host in ++ia64-*-hpux*) ++ # Find out which ABI we are using. ++ echo 'int i;' > conftest.$ac_ext ++ if AC_TRY_EVAL(ac_compile); then ++ case `/usr/bin/file conftest.$ac_objext` in ++ *ELF-32*) ++ HPUX_IA64_MODE="32" ++ ;; ++ *ELF-64*) ++ HPUX_IA64_MODE="64" ++ ;; ++ esac ++ fi ++ rm -rf conftest* ++ ;; ++*-*-irix6*) ++ # Find out which ABI we are using. ++ echo '[#]line __oline__ "configure"' > conftest.$ac_ext ++ if AC_TRY_EVAL(ac_compile); then ++ if test "$lt_cv_prog_gnu_ld" = yes; then ++ case `/usr/bin/file conftest.$ac_objext` in ++ *32-bit*) ++ LD="${LD-ld} -melf32bsmip" ++ ;; ++ *N32*) ++ LD="${LD-ld} -melf32bmipn32" ++ ;; ++ *64-bit*) ++ LD="${LD-ld} -melf64bmip" ++ ;; ++ esac ++ else ++ case `/usr/bin/file conftest.$ac_objext` in ++ *32-bit*) ++ LD="${LD-ld} -32" ++ ;; ++ *N32*) ++ LD="${LD-ld} -n32" ++ ;; ++ *64-bit*) ++ LD="${LD-ld} -64" ++ ;; ++ esac + fi +- rm -f conftest.file +- if test "$[*]" != "X $srcdir/configure conftest.file" \ +- && test "$[*]" != "X conftest.file $srcdir/configure"; then ++ fi ++ rm -rf conftest* ++ ;; ++ ++x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ ++s390*-*linux*|sparc*-*linux*) ++ # Find out which ABI we are using. ++ echo 'int i;' > conftest.$ac_ext ++ if AC_TRY_EVAL(ac_compile); then ++ case `/usr/bin/file conftest.o` in ++ *32-bit*) ++ case $host in ++ x86_64-*kfreebsd*-gnu) ++ LD="${LD-ld} -m elf_i386_fbsd" ++ ;; ++ x86_64-*linux*) ++ LD="${LD-ld} -m elf_i386" ++ ;; ++ ppc64-*linux*|powerpc64-*linux*) ++ LD="${LD-ld} -m elf32ppclinux" ++ ;; ++ s390x-*linux*) ++ LD="${LD-ld} -m elf_s390" ++ ;; ++ sparc64-*linux*) ++ LD="${LD-ld} -m elf32_sparc" ++ ;; ++ esac ++ ;; ++ *64-bit*) ++ case $host in ++ x86_64-*kfreebsd*-gnu) ++ LD="${LD-ld} -m elf_x86_64_fbsd" ++ ;; ++ x86_64-*linux*) ++ LD="${LD-ld} -m elf_x86_64" ++ ;; ++ ppc*-*linux*|powerpc*-*linux*) ++ LD="${LD-ld} -m elf64ppc" ++ ;; ++ s390*-*linux*) ++ LD="${LD-ld} -m elf64_s390" ++ ;; ++ sparc*-*linux*) ++ LD="${LD-ld} -m elf64_sparc" ++ ;; ++ esac ++ ;; ++ esac ++ fi ++ rm -rf conftest* ++ ;; ++ ++*-*-sco3.2v5*) ++ # On SCO OpenServer 5, we need -belf to get full-featured binaries. ++ SAVE_CFLAGS="$CFLAGS" ++ CFLAGS="$CFLAGS -belf" ++ AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, ++ [AC_LANG_PUSH(C) ++ AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) ++ AC_LANG_POP]) ++ if test x"$lt_cv_cc_needs_belf" != x"yes"; then ++ # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf ++ CFLAGS="$SAVE_CFLAGS" ++ fi ++ ;; ++sparc*-*solaris*) ++ # Find out which ABI we are using. ++ echo 'int i;' > conftest.$ac_ext ++ if AC_TRY_EVAL(ac_compile); then ++ case `/usr/bin/file conftest.o` in ++ *64-bit*) ++ case $lt_cv_prog_gnu_ld in ++ yes*) LD="${LD-ld} -m elf64_sparc" ;; ++ *) LD="${LD-ld} -64" ;; ++ esac ++ ;; ++ esac ++ fi ++ rm -rf conftest* ++ ;; ++ ++AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], ++[*-*-cygwin* | *-*-mingw* | *-*-pw32*) ++ AC_CHECK_TOOL(DLLTOOL, dlltool, false) ++ AC_CHECK_TOOL(AS, as, false) ++ AC_CHECK_TOOL(OBJDUMP, objdump, false) ++ ;; ++ ]) ++esac ++ ++need_locks="$enable_libtool_lock" ++ ++])# _LT_AC_LOCK ++ ++ ++# AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, ++# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) ++# ---------------------------------------------------------------- ++# Check whether the given compiler option works ++AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], ++[AC_REQUIRE([LT_AC_PROG_SED]) ++AC_CACHE_CHECK([$1], [$2], ++ [$2=no ++ ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ lt_compiler_flag="$3" ++ # Insert the option either (1) after the last *FLAGS variable, or ++ # (2) before a word containing "conftest.", or (3) at the end. ++ # Note that $ac_compile itself does not contain backslashes and begins ++ # with a dollar sign (not a hyphen), so the echo should work correctly. ++ # The option is referenced via a variable to avoid confusing sed. ++ lt_compile=`echo "$ac_compile" | $SED \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ ++ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ ++ -e 's:$: $lt_compiler_flag:'` ++ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) ++ (eval "$lt_compile" 2>conftest.err) ++ ac_status=$? ++ cat conftest.err >&AS_MESSAGE_LOG_FD ++ echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD ++ if (exit $ac_status) && test -s "$ac_outfile"; then ++ # The compiler can only warn and ignore the option if not recognized ++ # So say no if there are warnings other than the usual output. ++ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then ++ $2=yes ++ fi ++ fi ++ $rm conftest* ++]) ++ ++if test x"[$]$2" = xyes; then ++ ifelse([$5], , :, [$5]) ++else ++ ifelse([$6], , :, [$6]) ++fi ++])# AC_LIBTOOL_COMPILER_OPTION ++ ++ ++# AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, ++# [ACTION-SUCCESS], [ACTION-FAILURE]) ++# ------------------------------------------------------------ ++# Check whether the given compiler option works ++AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], ++[AC_REQUIRE([LT_AC_PROG_SED])dnl ++AC_CACHE_CHECK([$1], [$2], ++ [$2=no ++ save_LDFLAGS="$LDFLAGS" ++ LDFLAGS="$LDFLAGS $3" ++ echo "$lt_simple_link_test_code" > conftest.$ac_ext ++ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then ++ # The linker can only warn and ignore the option if not recognized ++ # So say no if there are warnings ++ if test -s conftest.err; then ++ # Append any errors to the config.log. ++ cat conftest.err 1>&AS_MESSAGE_LOG_FD ++ $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if diff conftest.exp conftest.er2 >/dev/null; then ++ $2=yes ++ fi ++ else ++ $2=yes ++ fi ++ fi ++ $rm conftest* ++ LDFLAGS="$save_LDFLAGS" ++]) ++ ++if test x"[$]$2" = xyes; then ++ ifelse([$4], , :, [$4]) ++else ++ ifelse([$5], , :, [$5]) ++fi ++])# AC_LIBTOOL_LINKER_OPTION ++ ++ ++# AC_LIBTOOL_SYS_MAX_CMD_LEN ++# -------------------------- ++AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], ++[# find the maximum length of command line arguments ++AC_MSG_CHECKING([the maximum length of command line arguments]) ++AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl ++ i=0 ++ teststring="ABCD" ++ ++ case $build_os in ++ msdosdjgpp*) ++ # On DJGPP, this test can blow up pretty badly due to problems in libc ++ # (any single argument exceeding 2000 bytes causes a buffer overrun ++ # during glob expansion). Even if it were fixed, the result of this ++ # check would be larger than it should be. ++ lt_cv_sys_max_cmd_len=12288; # 12K is about right ++ ;; ++ ++ gnu*) ++ # Under GNU Hurd, this test is not required because there is ++ # no limit to the length of command line arguments. ++ # Libtool will interpret -1 as no limit whatsoever ++ lt_cv_sys_max_cmd_len=-1; ++ ;; ++ ++ cygwin* | mingw*) ++ # On Win9x/ME, this test blows up -- it succeeds, but takes ++ # about 5 minutes as the teststring grows exponentially. ++ # Worse, since 9x/ME are not pre-emptively multitasking, ++ # you end up with a "frozen" computer, even though with patience ++ # the test eventually succeeds (with a max line length of 256k). ++ # Instead, let's just punt: use the minimum linelength reported by ++ # all of the supported platforms: 8192 (on NT/2K/XP). ++ lt_cv_sys_max_cmd_len=8192; ++ ;; ++ ++ amigaos*) ++ # On AmigaOS with pdksh, this test takes hours, literally. ++ # So we just punt and use a minimum line length of 8192. ++ lt_cv_sys_max_cmd_len=8192; ++ ;; ++ ++ netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) ++ # This has been around since 386BSD, at least. Likely further. ++ if test -x /sbin/sysctl; then ++ lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` ++ elif test -x /usr/sbin/sysctl; then ++ lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` ++ else ++ lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs ++ fi ++ # And add a safety zone ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ++ ;; ++ ++ interix*) ++ # We know the value 262144 and hardcode it with a safety zone (like BSD) ++ lt_cv_sys_max_cmd_len=196608 ++ ;; ++ ++ osf*) ++ # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure ++ # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not ++ # nice to cause kernel panics so lets avoid the loop below. ++ # First set a reasonable default. ++ lt_cv_sys_max_cmd_len=16384 ++ # ++ if test -x /sbin/sysconfig; then ++ case `/sbin/sysconfig -q proc exec_disable_arg_limit` in ++ *1*) lt_cv_sys_max_cmd_len=-1 ;; ++ esac ++ fi ++ ;; ++ sco3.2v5*) ++ lt_cv_sys_max_cmd_len=102400 ++ ;; ++ sysv5* | sco5v6* | sysv4.2uw2*) ++ kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` ++ if test -n "$kargmax"; then ++ lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` ++ else ++ lt_cv_sys_max_cmd_len=32768 ++ fi ++ ;; ++ *) ++ lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` ++ if test -n "$lt_cv_sys_max_cmd_len"; then ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ++ else ++ SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} ++ while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \ ++ = "XX$teststring") >/dev/null 2>&1 && ++ new_result=`expr "X$teststring" : ".*" 2>&1` && ++ lt_cv_sys_max_cmd_len=$new_result && ++ test $i != 17 # 1/2 MB should be enough ++ do ++ i=`expr $i + 1` ++ teststring=$teststring$teststring ++ done ++ teststring= ++ # Add a significant safety factor because C++ compilers can tack on massive ++ # amounts of additional arguments before passing them to the linker. ++ # It appears as though 1/2 is a usable value. ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` ++ fi ++ ;; ++ esac ++]) ++if test -n $lt_cv_sys_max_cmd_len ; then ++ AC_MSG_RESULT($lt_cv_sys_max_cmd_len) ++else ++ AC_MSG_RESULT(none) ++fi ++])# AC_LIBTOOL_SYS_MAX_CMD_LEN ++ ++ ++# _LT_AC_CHECK_DLFCN ++# ------------------ ++AC_DEFUN([_LT_AC_CHECK_DLFCN], ++[AC_CHECK_HEADERS(dlfcn.h)dnl ++])# _LT_AC_CHECK_DLFCN ++ ++ ++# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, ++# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) ++# --------------------------------------------------------------------- ++AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF], ++[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl ++if test "$cross_compiling" = yes; then : ++ [$4] ++else ++ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 ++ lt_status=$lt_dlunknown ++ cat > conftest.$ac_ext < ++#endif ++ ++#include ++ ++#ifdef RTLD_GLOBAL ++# define LT_DLGLOBAL RTLD_GLOBAL ++#else ++# ifdef DL_GLOBAL ++# define LT_DLGLOBAL DL_GLOBAL ++# else ++# define LT_DLGLOBAL 0 ++# endif ++#endif ++ ++/* We may have to define LT_DLLAZY_OR_NOW in the command line if we ++ find out it does not work in some platform. */ ++#ifndef LT_DLLAZY_OR_NOW ++# ifdef RTLD_LAZY ++# define LT_DLLAZY_OR_NOW RTLD_LAZY ++# else ++# ifdef DL_LAZY ++# define LT_DLLAZY_OR_NOW DL_LAZY ++# else ++# ifdef RTLD_NOW ++# define LT_DLLAZY_OR_NOW RTLD_NOW ++# else ++# ifdef DL_NOW ++# define LT_DLLAZY_OR_NOW DL_NOW ++# else ++# define LT_DLLAZY_OR_NOW 0 ++# endif ++# endif ++# endif ++# endif ++#endif ++ ++#ifdef __cplusplus ++extern "C" void exit (int); ++#endif ++ ++void fnord() { int i=42;} ++int main () ++{ ++ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); ++ int status = $lt_dlunknown; ++ ++ if (self) ++ { ++ if (dlsym (self,"fnord")) status = $lt_dlno_uscore; ++ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; ++ /* dlclose (self); */ ++ } ++ else ++ puts (dlerror ()); ++ ++ exit (status); ++}] ++EOF ++ if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then ++ (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null ++ lt_status=$? ++ case x$lt_status in ++ x$lt_dlno_uscore) $1 ;; ++ x$lt_dlneed_uscore) $2 ;; ++ x$lt_dlunknown|x*) $3 ;; ++ esac ++ else : ++ # compilation failed ++ $3 ++ fi ++fi ++rm -fr conftest* ++])# _LT_AC_TRY_DLOPEN_SELF ++ ++ ++# AC_LIBTOOL_DLOPEN_SELF ++# ---------------------- ++AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], ++[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl ++if test "x$enable_dlopen" != xyes; then ++ enable_dlopen=unknown ++ enable_dlopen_self=unknown ++ enable_dlopen_self_static=unknown ++else ++ lt_cv_dlopen=no ++ lt_cv_dlopen_libs= ++ ++ case $host_os in ++ beos*) ++ lt_cv_dlopen="load_add_on" ++ lt_cv_dlopen_libs= ++ lt_cv_dlopen_self=yes ++ ;; ++ ++ mingw* | pw32*) ++ lt_cv_dlopen="LoadLibrary" ++ lt_cv_dlopen_libs= ++ ;; ++ ++ cygwin*) ++ lt_cv_dlopen="dlopen" ++ lt_cv_dlopen_libs= ++ ;; ++ ++ darwin*) ++ # if libdl is installed we need to link against it ++ AC_CHECK_LIB([dl], [dlopen], ++ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ ++ lt_cv_dlopen="dyld" ++ lt_cv_dlopen_libs= ++ lt_cv_dlopen_self=yes ++ ]) ++ ;; ++ ++ *) ++ AC_CHECK_FUNC([shl_load], ++ [lt_cv_dlopen="shl_load"], ++ [AC_CHECK_LIB([dld], [shl_load], ++ [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], ++ [AC_CHECK_FUNC([dlopen], ++ [lt_cv_dlopen="dlopen"], ++ [AC_CHECK_LIB([dl], [dlopen], ++ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], ++ [AC_CHECK_LIB([svld], [dlopen], ++ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], ++ [AC_CHECK_LIB([dld], [dld_link], ++ [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) ++ ]) ++ ]) ++ ]) ++ ]) ++ ]) ++ ;; ++ esac ++ ++ if test "x$lt_cv_dlopen" != xno; then ++ enable_dlopen=yes ++ else ++ enable_dlopen=no ++ fi ++ ++ case $lt_cv_dlopen in ++ dlopen) ++ save_CPPFLAGS="$CPPFLAGS" ++ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" ++ ++ save_LDFLAGS="$LDFLAGS" ++ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" ++ ++ save_LIBS="$LIBS" ++ LIBS="$lt_cv_dlopen_libs $LIBS" ++ ++ AC_CACHE_CHECK([whether a program can dlopen itself], ++ lt_cv_dlopen_self, [dnl ++ _LT_AC_TRY_DLOPEN_SELF( ++ lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, ++ lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ++ ]) ++ ++ if test "x$lt_cv_dlopen_self" = xyes; then ++ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" ++ AC_CACHE_CHECK([whether a statically linked program can dlopen itself], ++ lt_cv_dlopen_self_static, [dnl ++ _LT_AC_TRY_DLOPEN_SELF( ++ lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, ++ lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) ++ ]) ++ fi ++ ++ CPPFLAGS="$save_CPPFLAGS" ++ LDFLAGS="$save_LDFLAGS" ++ LIBS="$save_LIBS" ++ ;; ++ esac ++ ++ case $lt_cv_dlopen_self in ++ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; ++ *) enable_dlopen_self=unknown ;; ++ esac ++ ++ case $lt_cv_dlopen_self_static in ++ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; ++ *) enable_dlopen_self_static=unknown ;; ++ esac ++fi ++])# AC_LIBTOOL_DLOPEN_SELF ++ ++ ++# AC_LIBTOOL_PROG_CC_C_O([TAGNAME]) ++# --------------------------------- ++# Check to see if options -c and -o are simultaneously supported by compiler ++AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O], ++[AC_REQUIRE([LT_AC_PROG_SED])dnl ++AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl ++AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], ++ [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)], ++ [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no ++ $rm -r conftest 2>/dev/null ++ mkdir conftest ++ cd conftest ++ mkdir out ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ ++ lt_compiler_flag="-o out/conftest2.$ac_objext" ++ # Insert the option either (1) after the last *FLAGS variable, or ++ # (2) before a word containing "conftest.", or (3) at the end. ++ # Note that $ac_compile itself does not contain backslashes and begins ++ # with a dollar sign (not a hyphen), so the echo should work correctly. ++ lt_compile=`echo "$ac_compile" | $SED \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ ++ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ ++ -e 's:$: $lt_compiler_flag:'` ++ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) ++ (eval "$lt_compile" 2>out/conftest.err) ++ ac_status=$? ++ cat out/conftest.err >&AS_MESSAGE_LOG_FD ++ echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD ++ if (exit $ac_status) && test -s out/conftest2.$ac_objext ++ then ++ # The compiler can only warn and ignore the option if not recognized ++ # So say no if there are warnings ++ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp ++ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 ++ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then ++ _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes ++ fi ++ fi ++ chmod u+w . 2>&AS_MESSAGE_LOG_FD ++ $rm conftest* ++ # SGI C++ compiler will create directory out/ii_files/ for ++ # template instantiation ++ test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files ++ $rm out/* && rmdir out ++ cd .. ++ rmdir conftest ++ $rm conftest* ++]) ++])# AC_LIBTOOL_PROG_CC_C_O ++ ++ ++# AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME]) ++# ----------------------------------------- ++# Check to see if we can do hard links to lock some files if needed ++AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], ++[AC_REQUIRE([_LT_AC_LOCK])dnl ++ ++hard_links="nottested" ++if test "$_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then ++ # do not overwrite the value of need_locks provided by the user ++ AC_MSG_CHECKING([if we can lock with hard links]) ++ hard_links=yes ++ $rm conftest* ++ ln conftest.a conftest.b 2>/dev/null && hard_links=no ++ touch conftest.a ++ ln conftest.a conftest.b 2>&5 || hard_links=no ++ ln conftest.a conftest.b 2>/dev/null && hard_links=no ++ AC_MSG_RESULT([$hard_links]) ++ if test "$hard_links" = no; then ++ AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) ++ need_locks=warn ++ fi ++else ++ need_locks=no ++fi ++])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS ++ ++ ++# AC_LIBTOOL_OBJDIR ++# ----------------- ++AC_DEFUN([AC_LIBTOOL_OBJDIR], ++[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], ++[rm -f .libs 2>/dev/null ++mkdir .libs 2>/dev/null ++if test -d .libs; then ++ lt_cv_objdir=.libs ++else ++ # MS-DOS does not allow filenames that begin with a dot. ++ lt_cv_objdir=_libs ++fi ++rmdir .libs 2>/dev/null]) ++objdir=$lt_cv_objdir ++])# AC_LIBTOOL_OBJDIR ++ ++ ++# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME]) ++# ---------------------------------------------- ++# Check hardcoding attributes. ++AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], ++[AC_MSG_CHECKING([how to hardcode library paths into programs]) ++_LT_AC_TAGVAR(hardcode_action, $1)= ++if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \ ++ test -n "$_LT_AC_TAGVAR(runpath_var, $1)" || \ ++ test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then ++ ++ # We can hardcode non-existant directories. ++ if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no && ++ # If the only mechanism to avoid hardcoding is shlibpath_var, we ++ # have to relink, otherwise we might link with an installed library ++ # when we should be linking with a yet-to-be-installed one ++ ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no && ++ test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then ++ # Linking always hardcodes the temporary library directory. ++ _LT_AC_TAGVAR(hardcode_action, $1)=relink ++ else ++ # We can link without hardcoding, and we can hardcode nonexisting dirs. ++ _LT_AC_TAGVAR(hardcode_action, $1)=immediate ++ fi ++else ++ # We cannot hardcode anything, or else we can only hardcode existing ++ # directories. ++ _LT_AC_TAGVAR(hardcode_action, $1)=unsupported ++fi ++AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)]) ++ ++if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; then ++ # Fast installation is not supported ++ enable_fast_install=no ++elif test "$shlibpath_overrides_runpath" = yes || ++ test "$enable_shared" = no; then ++ # Fast installation is not necessary ++ enable_fast_install=needless ++fi ++])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH ++ ++ ++# AC_LIBTOOL_SYS_LIB_STRIP ++# ------------------------ ++AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP], ++[striplib= ++old_striplib= ++AC_MSG_CHECKING([whether stripping libraries is possible]) ++if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then ++ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" ++ test -z "$striplib" && striplib="$STRIP --strip-unneeded" ++ AC_MSG_RESULT([yes]) ++else ++# FIXME - insert some real tests, host_os isn't really good enough ++ case $host_os in ++ darwin*) ++ if test -n "$STRIP" ; then ++ striplib="$STRIP -x" ++ old_striplib="$STRIP -S" ++ AC_MSG_RESULT([yes]) ++ else ++ AC_MSG_RESULT([no]) ++fi ++ ;; ++ *) ++ AC_MSG_RESULT([no]) ++ ;; ++ esac ++fi ++])# AC_LIBTOOL_SYS_LIB_STRIP ++ ++ ++# AC_LIBTOOL_SYS_DYNAMIC_LINKER ++# ----------------------------- ++# PORTME Fill in your ld.so characteristics ++AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER], ++[AC_REQUIRE([LT_AC_PROG_SED])dnl ++AC_MSG_CHECKING([dynamic linker characteristics]) ++library_names_spec= ++libname_spec='lib$name' ++soname_spec= ++shrext_cmds=".so" ++postinstall_cmds= ++postuninstall_cmds= ++finish_cmds= ++finish_eval= ++shlibpath_var= ++shlibpath_overrides_runpath=unknown ++version_type=none ++dynamic_linker="$host_os ld.so" ++sys_lib_dlsearch_path_spec="/lib /usr/lib" ++m4_if($1,[],[ ++if test "$GCC" = yes; then ++ case $host_os in ++ darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; ++ *) lt_awk_arg="/^libraries:/" ;; ++ esac ++ lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` ++ if echo "$lt_search_path_spec" | grep ';' >/dev/null ; then ++ # if the path contains ";" then we assume it to be the separator ++ # otherwise default to the standard path separator (i.e. ":") - it is ++ # assumed that no part of a normal pathname contains ";" but that should ++ # okay in the real world where ";" in dirpaths is itself problematic. ++ lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e 's/;/ /g'` ++ else ++ lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ++ fi ++ # Ok, now we have the path, separated by spaces, we can step through it ++ # and add multilib dir if necessary. ++ lt_tmp_lt_search_path_spec= ++ lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` ++ for lt_sys_path in $lt_search_path_spec; do ++ if test -d "$lt_sys_path/$lt_multi_os_dir"; then ++ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" ++ else ++ test -d "$lt_sys_path" && \ ++ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" ++ fi ++ done ++ lt_search_path_spec=`echo $lt_tmp_lt_search_path_spec | awk ' ++BEGIN {RS=" "; FS="/|\n";} { ++ lt_foo=""; ++ lt_count=0; ++ for (lt_i = NF; lt_i > 0; lt_i--) { ++ if ($lt_i != "" && $lt_i != ".") { ++ if ($lt_i == "..") { ++ lt_count++; ++ } else { ++ if (lt_count == 0) { ++ lt_foo="/" $lt_i lt_foo; ++ } else { ++ lt_count--; ++ } ++ } ++ } ++ } ++ if (lt_foo != "") { lt_freq[[lt_foo]]++; } ++ if (lt_freq[[lt_foo]] == 1) { print lt_foo; } ++}'` ++ sys_lib_search_path_spec=`echo $lt_search_path_spec` ++else ++ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" ++fi]) ++need_lib_prefix=unknown ++hardcode_into_libs=no ++ ++# when you set need_version to no, make sure it does not cause -set_version ++# flags to be left without arguments ++need_version=unknown ++ ++case $host_os in ++aix3*) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' ++ shlibpath_var=LIBPATH ++ ++ # AIX 3 has no versioning support, so we append a major version to the name. ++ soname_spec='${libname}${release}${shared_ext}$major' ++ ;; ++ ++aix4* | aix5*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ hardcode_into_libs=yes ++ if test "$host_cpu" = ia64; then ++ # AIX 5 supports IA64 ++ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' ++ shlibpath_var=LD_LIBRARY_PATH ++ else ++ # With GCC up to 2.95.x, collect2 would create an import file ++ # for dependence libraries. The import file would start with ++ # the line `#! .'. This would cause the generated library to ++ # depend on `.', always an invalid library. This was fixed in ++ # development snapshots of GCC prior to 3.0. ++ case $host_os in ++ aix4 | aix4.[[01]] | aix4.[[01]].*) ++ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' ++ echo ' yes ' ++ echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then ++ : ++ else ++ can_build_shared=no ++ fi ++ ;; ++ esac ++ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct ++ # soname into executable. Probably we can add versioning support to ++ # collect2, so additional links can be useful in future. ++ if test "$aix_use_runtimelinking" = yes; then ++ # If using run time linking (on AIX 4.2 or later) use lib.so ++ # instead of lib.a to let people know that these are not ++ # typical AIX shared libraries. ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ else ++ # We preserve .a as extension for shared libraries through AIX4.2 ++ # and later when we are not doing run time linking. ++ library_names_spec='${libname}${release}.a $libname.a' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ fi ++ shlibpath_var=LIBPATH ++ fi ++ ;; ++ ++amigaos*) ++ library_names_spec='$libname.ixlibrary $libname.a' ++ # Create ${libname}_ixlibrary.a entries in /sys/libs. ++ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $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' ++ ;; ++ ++beos*) ++ library_names_spec='${libname}${shared_ext}' ++ dynamic_linker="$host_os ld.so" ++ shlibpath_var=LIBRARY_PATH ++ ;; ++ ++bsdi[[45]]*) ++ version_type=linux ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" ++ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" ++ # the default ld.so.conf also contains /usr/contrib/lib and ++ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow ++ # libtool to hard-code these into programs ++ ;; ++ ++cygwin* | mingw* | pw32*) ++ version_type=windows ++ shrext_cmds=".dll" ++ need_version=no ++ need_lib_prefix=no ++ ++ case $GCC,$host_os in ++ yes,cygwin* | yes,mingw* | yes,pw32*) ++ library_names_spec='$libname.dll.a' ++ # DLL is installed to $(libdir)/../bin by postinstall_cmds ++ postinstall_cmds='base_file=`basename \${file}`~ ++ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ ++ dldir=$destdir/`dirname \$dlpath`~ ++ test -d \$dldir || mkdir -p \$dldir~ ++ $install_prog $dir/$dlname \$dldir/$dlname~ ++ chmod a+x \$dldir/$dlname' ++ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ ++ dlpath=$dir/\$dldll~ ++ $rm \$dlpath' ++ shlibpath_overrides_runpath=yes ++ ++ case $host_os in ++ cygwin*) ++ # Cygwin DLLs use 'cyg' prefix rather than 'lib' ++ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ++ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ++ ;; ++ mingw*) ++ # MinGW DLLs use traditional 'lib' prefix ++ soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ++ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` ++ if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then ++ # It is most probably a Windows format PATH printed by ++ # mingw gcc, but we are running on Cygwin. Gcc prints its search ++ # path with ; separators, and with drive letters. We can handle the ++ # drive letters (cygwin fileutils understands them), so leave them, ++ # especially as we might pass files found there to a mingw objdump, ++ # which wouldn't understand a cygwinified path. Ahh. ++ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` ++ else ++ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ++ fi ++ ;; ++ pw32*) ++ # pw32 DLLs use 'pw' prefix rather than 'lib' ++ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ++ ;; ++ esac ++ ;; ++ ++ *) ++ library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' ++ ;; ++ esac ++ dynamic_linker='Win32 ld.exe' ++ # FIXME: first we should search . and the directory the executable is in ++ shlibpath_var=PATH ++ ;; ++ ++darwin* | rhapsody*) ++ dynamic_linker="$host_os dyld" ++ version_type=darwin ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' ++ soname_spec='${libname}${release}${major}$shared_ext' ++ shlibpath_overrides_runpath=yes ++ shlibpath_var=DYLD_LIBRARY_PATH ++ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' ++ m4_if([$1], [],[ ++ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) ++ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ++ ;; ++ ++dgux*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ ;; ++ ++freebsd1*) ++ dynamic_linker=no ++ ;; ++ ++freebsd* | dragonfly*) ++ # DragonFly does not have aout. When/if they implement a new ++ # versioning mechanism, adjust this. ++ if test -x /usr/bin/objformat; then ++ objformat=`/usr/bin/objformat` ++ else ++ case $host_os in ++ freebsd[[123]]*) objformat=aout ;; ++ *) objformat=elf ;; ++ esac ++ fi ++ version_type=freebsd-$objformat ++ case $version_type in ++ freebsd-elf*) ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' ++ need_version=no ++ need_lib_prefix=no ++ ;; ++ freebsd-*) ++ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' ++ need_version=yes ++ ;; ++ esac ++ shlibpath_var=LD_LIBRARY_PATH ++ case $host_os in ++ freebsd2*) ++ shlibpath_overrides_runpath=yes ++ ;; ++ freebsd3.[[01]]* | freebsdelf3.[[01]]*) ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ ;; ++ freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ ++ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ ;; ++ *) # from 4.6 on, and DragonFly ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ ;; ++ esac ++ ;; ++ ++gnu*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ hardcode_into_libs=yes ++ ;; ++ ++hpux9* | hpux10* | hpux11*) ++ # Give a soname corresponding to the major version so that dld.sl refuses to ++ # link against other versions. ++ version_type=sunos ++ need_lib_prefix=no ++ need_version=no ++ case $host_cpu in ++ ia64*) ++ shrext_cmds='.so' ++ hardcode_into_libs=yes ++ dynamic_linker="$host_os dld.so" ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ if test "X$HPUX_IA64_MODE" = X32; then ++ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" ++ else ++ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" ++ fi ++ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ++ ;; ++ hppa*64*) ++ shrext_cmds='.sl' ++ hardcode_into_libs=yes ++ dynamic_linker="$host_os dld.sl" ++ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH ++ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" ++ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ++ ;; ++ *) ++ shrext_cmds='.sl' ++ dynamic_linker="$host_os dld.sl" ++ shlibpath_var=SHLIB_PATH ++ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ ;; ++ esac ++ # HP-UX runs *really* slowly unless shared libraries are mode 555. ++ postinstall_cmds='chmod 555 $lib' ++ ;; ++ ++interix[[3-9]]*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ ;; ++ ++irix5* | irix6* | nonstopux*) ++ case $host_os in ++ nonstopux*) version_type=nonstopux ;; ++ *) ++ if test "$lt_cv_prog_gnu_ld" = yes; then ++ version_type=linux ++ else ++ version_type=irix ++ fi ;; ++ esac ++ need_lib_prefix=no ++ need_version=no ++ soname_spec='${libname}${release}${shared_ext}$major' ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' ++ case $host_os in ++ irix5* | nonstopux*) ++ libsuff= shlibsuff= ++ ;; ++ *) ++ case $LD in # libtool.m4 will add one of these switches to LD ++ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") ++ libsuff= shlibsuff= libmagic=32-bit;; ++ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") ++ libsuff=32 shlibsuff=N32 libmagic=N32;; ++ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") ++ libsuff=64 shlibsuff=64 libmagic=64-bit;; ++ *) libsuff= shlibsuff= libmagic=never-match;; ++ esac ++ ;; ++ esac ++ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH ++ shlibpath_overrides_runpath=no ++ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" ++ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" ++ hardcode_into_libs=yes ++ ;; ++ ++# No shared lib support for Linux oldld, aout, or coff. ++linux*oldld* | linux*aout* | linux*coff*) ++ dynamic_linker=no ++ ;; ++ ++# This must be Linux ELF. ++linux* | k*bsd*-gnu) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ # This implies no fast_install, which is unacceptable. ++ # Some rework will be needed to allow for fast_install ++ # before this can be enabled. ++ hardcode_into_libs=yes ++ ++ # Append ld.so.conf contents to the search path ++ if test -f /etc/ld.so.conf; then ++ 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;/^$/d' | tr '\n' ' '` ++ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" ++ fi ++ ++ # We used to test for /lib/ld.so.1 and disable shared libraries on ++ # powerpc, because MkLinux only supported shared libraries with the ++ # GNU dynamic linker. Since this was broken with cross compilers, ++ # most powerpc-linux boxes support dynamic linking these days and ++ # people can always --disable-shared, the test was removed, and we ++ # assume the GNU/Linux dynamic linker is in use. ++ dynamic_linker='GNU/Linux ld.so' ++ ;; ++ ++netbsdelf*-gnu) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ dynamic_linker='NetBSD ld.elf_so' ++ ;; ++ ++netbsd*) ++ version_type=sunos ++ need_lib_prefix=no ++ need_version=no ++ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' ++ dynamic_linker='NetBSD (a.out) ld.so' ++ else ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ dynamic_linker='NetBSD ld.elf_so' ++ fi ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ ;; ++ ++newsos6) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ ;; ++ ++nto-qnx*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ ;; ++ ++openbsd*) ++ version_type=sunos ++ sys_lib_dlsearch_path_spec="/usr/lib" ++ need_lib_prefix=no ++ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. ++ case $host_os in ++ openbsd3.3 | openbsd3.3.*) need_version=yes ;; ++ *) need_version=no ;; ++ esac ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then ++ case $host_os in ++ openbsd2.[[89]] | openbsd2.[[89]].*) ++ shlibpath_overrides_runpath=no ++ ;; ++ *) ++ shlibpath_overrides_runpath=yes ++ ;; ++ esac ++ else ++ shlibpath_overrides_runpath=yes ++ fi ++ ;; ++ ++os2*) ++ libname_spec='$name' ++ shrext_cmds=".dll" ++ need_lib_prefix=no ++ library_names_spec='$libname${shared_ext} $libname.a' ++ dynamic_linker='OS/2 ld.exe' ++ shlibpath_var=LIBPATH ++ ;; ++ ++osf3* | osf4* | osf5*) ++ version_type=osf ++ need_lib_prefix=no ++ need_version=no ++ soname_spec='${libname}${release}${shared_ext}$major' ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ shlibpath_var=LD_LIBRARY_PATH ++ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" ++ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ++ ;; ++ ++rdos*) ++ dynamic_linker=no ++ ;; ++ ++solaris*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ # ldd complains unless libraries are executable ++ postinstall_cmds='chmod +x $lib' ++ ;; ++ ++sunos4*) ++ version_type=sunos ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' ++ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ if test "$with_gnu_ld" = yes; then ++ need_lib_prefix=no ++ fi ++ need_version=yes ++ ;; ++ ++sysv4 | sysv4.3*) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ case $host_vendor in ++ sni) ++ shlibpath_overrides_runpath=no ++ need_lib_prefix=no ++ export_dynamic_flag_spec='${wl}-Blargedynsym' ++ runpath_var=LD_RUN_PATH ++ ;; ++ siemens) ++ need_lib_prefix=no ++ ;; ++ motorola) ++ need_lib_prefix=no ++ need_version=no ++ shlibpath_overrides_runpath=no ++ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ++ ;; ++ esac ++ ;; ++ ++sysv4*MP*) ++ if test -d /usr/nec ;then ++ version_type=linux ++ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' ++ soname_spec='$libname${shared_ext}.$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ fi ++ ;; ++ ++sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) ++ version_type=freebsd-elf ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ hardcode_into_libs=yes ++ if test "$with_gnu_ld" = yes; then ++ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' ++ shlibpath_overrides_runpath=no ++ else ++ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' ++ shlibpath_overrides_runpath=yes ++ case $host_os in ++ sco3.2v5*) ++ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ++ ;; ++ esac ++ fi ++ sys_lib_dlsearch_path_spec='/usr/lib' ++ ;; ++ ++uts4*) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ ;; ++ ++*) ++ dynamic_linker=no ++ ;; ++esac ++AC_MSG_RESULT([$dynamic_linker]) ++test "$dynamic_linker" = no && can_build_shared=no ++ ++variables_saved_for_relink="PATH $shlibpath_var $runpath_var" ++if test "$GCC" = yes; then ++ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" ++fi ++])# AC_LIBTOOL_SYS_DYNAMIC_LINKER ++ ++ ++# _LT_AC_TAGCONFIG ++# ---------------- ++AC_DEFUN([_LT_AC_TAGCONFIG], ++[AC_REQUIRE([LT_AC_PROG_SED])dnl ++AC_ARG_WITH([tags], ++ [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@], ++ [include additional configurations @<:@automatic@:>@])], ++ [tagnames="$withval"]) ++ ++if test -f "$ltmain" && test -n "$tagnames"; then ++ if test ! -f "${ofile}"; then ++ AC_MSG_WARN([output file `$ofile' does not exist]) ++ fi ++ ++ if test -z "$LTCC"; then ++ eval "`$SHELL ${ofile} --config | grep '^LTCC='`" ++ if test -z "$LTCC"; then ++ AC_MSG_WARN([output file `$ofile' does not look like a libtool script]) ++ else ++ AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile']) ++ fi ++ fi ++ if test -z "$LTCFLAGS"; then ++ eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`" ++ fi ++ ++ # Extract list of available tagged configurations in $ofile. ++ # Note that this assumes the entire list is on one line. ++ available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` ++ ++ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," ++ for tagname in $tagnames; do ++ IFS="$lt_save_ifs" ++ # Check whether tagname contains only valid characters ++ case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in ++ "") ;; ++ *) AC_MSG_ERROR([invalid tag name: $tagname]) ++ ;; ++ esac ++ ++ if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null ++ then ++ AC_MSG_ERROR([tag name \"$tagname\" already exists]) ++ fi ++ ++ # Update the list of available tags. ++ if test -n "$tagname"; then ++ echo appending configuration tag \"$tagname\" to $ofile ++ ++ case $tagname in ++ CXX) ++ if test -n "$CXX" && ( test "X$CXX" != "Xno" && ++ ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || ++ (test "X$CXX" != "Xg++"))) ; then ++ AC_LIBTOOL_LANG_CXX_CONFIG ++ else ++ tagname="" ++ fi ++ ;; ++ ++ F77) ++ if test -n "$F77" && test "X$F77" != "Xno"; then ++ AC_LIBTOOL_LANG_F77_CONFIG ++ else ++ tagname="" ++ fi ++ ;; ++ ++ GCJ) ++ if test -n "$GCJ" && test "X$GCJ" != "Xno"; then ++ AC_LIBTOOL_LANG_GCJ_CONFIG ++ else ++ tagname="" ++ fi ++ ;; ++ ++ RC) ++ AC_LIBTOOL_LANG_RC_CONFIG ++ ;; ++ ++ *) ++ AC_MSG_ERROR([Unsupported tag name: $tagname]) ++ ;; ++ esac ++ ++ # Append the new tag name to the list of available tags. ++ if test -n "$tagname" ; then ++ available_tags="$available_tags $tagname" ++ fi ++ fi ++ done ++ IFS="$lt_save_ifs" ++ ++ # Now substitute the updated list of available tags. ++ if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then ++ mv "${ofile}T" "$ofile" ++ chmod +x "$ofile" ++ else ++ rm -f "${ofile}T" ++ AC_MSG_ERROR([unable to update list of available tagged configurations.]) ++ fi ++fi ++])# _LT_AC_TAGCONFIG ++ ++ ++# AC_LIBTOOL_DLOPEN ++# ----------------- ++# enable checks for dlopen support ++AC_DEFUN([AC_LIBTOOL_DLOPEN], ++ [AC_BEFORE([$0],[AC_LIBTOOL_SETUP]) ++])# AC_LIBTOOL_DLOPEN ++ ++ ++# AC_LIBTOOL_WIN32_DLL ++# -------------------- ++# declare package support for building win32 DLLs ++AC_DEFUN([AC_LIBTOOL_WIN32_DLL], ++[AC_BEFORE([$0], [AC_LIBTOOL_SETUP]) ++])# AC_LIBTOOL_WIN32_DLL ++ ++ ++# AC_ENABLE_SHARED([DEFAULT]) ++# --------------------------- ++# implement the --enable-shared flag ++# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. ++AC_DEFUN([AC_ENABLE_SHARED], ++[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl ++AC_ARG_ENABLE([shared], ++ [AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@], ++ [build shared libraries @<:@default=]AC_ENABLE_SHARED_DEFAULT[@:>@])], ++ [p=${PACKAGE-default} ++ case $enableval in ++ yes) enable_shared=yes ;; ++ no) enable_shared=no ;; ++ *) ++ enable_shared=no ++ # Look at the argument we got. We use all the common list separators. ++ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," ++ for pkg in $enableval; do ++ IFS="$lt_save_ifs" ++ if test "X$pkg" = "X$p"; then ++ enable_shared=yes ++ fi ++ done ++ IFS="$lt_save_ifs" ++ ;; ++ esac], ++ [enable_shared=]AC_ENABLE_SHARED_DEFAULT) ++])# AC_ENABLE_SHARED ++ ++ ++# AC_DISABLE_SHARED ++# ----------------- ++# set the default shared flag to --disable-shared ++AC_DEFUN([AC_DISABLE_SHARED], ++[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl ++AC_ENABLE_SHARED(no) ++])# AC_DISABLE_SHARED ++ ++ ++# AC_ENABLE_STATIC([DEFAULT]) ++# --------------------------- ++# implement the --enable-static flag ++# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. ++AC_DEFUN([AC_ENABLE_STATIC], ++[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl ++AC_ARG_ENABLE([static], ++ [AC_HELP_STRING([--enable-static@<:@=PKGS@:>@], ++ [build static libraries @<:@default=]AC_ENABLE_STATIC_DEFAULT[@:>@])], ++ [p=${PACKAGE-default} ++ case $enableval in ++ yes) enable_static=yes ;; ++ no) enable_static=no ;; ++ *) ++ enable_static=no ++ # Look at the argument we got. We use all the common list separators. ++ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," ++ for pkg in $enableval; do ++ IFS="$lt_save_ifs" ++ if test "X$pkg" = "X$p"; then ++ enable_static=yes ++ fi ++ done ++ IFS="$lt_save_ifs" ++ ;; ++ esac], ++ [enable_static=]AC_ENABLE_STATIC_DEFAULT) ++])# AC_ENABLE_STATIC ++ ++ ++# AC_DISABLE_STATIC ++# ----------------- ++# set the default static flag to --disable-static ++AC_DEFUN([AC_DISABLE_STATIC], ++[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl ++AC_ENABLE_STATIC(no) ++])# AC_DISABLE_STATIC ++ ++ ++# AC_ENABLE_FAST_INSTALL([DEFAULT]) ++# --------------------------------- ++# implement the --enable-fast-install flag ++# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. ++AC_DEFUN([AC_ENABLE_FAST_INSTALL], ++[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl ++AC_ARG_ENABLE([fast-install], ++ [AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], ++ [optimize for fast installation @<:@default=]AC_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], ++ [p=${PACKAGE-default} ++ case $enableval in ++ yes) enable_fast_install=yes ;; ++ no) enable_fast_install=no ;; ++ *) ++ enable_fast_install=no ++ # Look at the argument we got. We use all the common list separators. ++ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," ++ for pkg in $enableval; do ++ IFS="$lt_save_ifs" ++ if test "X$pkg" = "X$p"; then ++ enable_fast_install=yes ++ fi ++ done ++ IFS="$lt_save_ifs" ++ ;; ++ esac], ++ [enable_fast_install=]AC_ENABLE_FAST_INSTALL_DEFAULT) ++])# AC_ENABLE_FAST_INSTALL ++ ++ ++# AC_DISABLE_FAST_INSTALL ++# ----------------------- ++# set the default to --disable-fast-install ++AC_DEFUN([AC_DISABLE_FAST_INSTALL], ++[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl ++AC_ENABLE_FAST_INSTALL(no) ++])# AC_DISABLE_FAST_INSTALL ++ ++ ++# AC_LIBTOOL_PICMODE([MODE]) ++# -------------------------- ++# implement the --with-pic flag ++# MODE is either `yes' or `no'. If omitted, it defaults to `both'. ++AC_DEFUN([AC_LIBTOOL_PICMODE], ++[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl ++pic_mode=ifelse($#,1,$1,default) ++])# AC_LIBTOOL_PICMODE ++ ++ ++# AC_PROG_EGREP ++# ------------- ++# This is predefined starting with Autoconf 2.54, so this conditional ++# definition can be removed once we require Autoconf 2.54 or later. ++m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP], ++[AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep], ++ [if echo a | (grep -E '(a|b)') >/dev/null 2>&1 ++ then ac_cv_prog_egrep='grep -E' ++ else ac_cv_prog_egrep='egrep' ++ fi]) ++ EGREP=$ac_cv_prog_egrep ++ AC_SUBST([EGREP]) ++])]) ++ ++ ++# AC_PATH_TOOL_PREFIX ++# ------------------- ++# find a file program which can recognize shared library ++AC_DEFUN([AC_PATH_TOOL_PREFIX], ++[AC_REQUIRE([AC_PROG_EGREP])dnl ++AC_MSG_CHECKING([for $1]) ++AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, ++[case $MAGIC_CMD in ++[[\\/*] | ?:[\\/]*]) ++ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ++ ;; ++*) ++ lt_save_MAGIC_CMD="$MAGIC_CMD" ++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ++dnl $ac_dummy forces splitting on constant user-supplied paths. ++dnl POSIX.2 word splitting is done only on the output of word expansions, ++dnl not every word. This closes a longstanding sh security hole. ++ ac_dummy="ifelse([$2], , $PATH, [$2])" ++ for ac_dir in $ac_dummy; do ++ IFS="$lt_save_ifs" ++ test -z "$ac_dir" && ac_dir=. ++ if test -f $ac_dir/$1; then ++ lt_cv_path_MAGIC_CMD="$ac_dir/$1" ++ if test -n "$file_magic_test_file"; then ++ case $deplibs_check_method in ++ "file_magic "*) ++ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` ++ MAGIC_CMD="$lt_cv_path_MAGIC_CMD" ++ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | ++ $EGREP "$file_magic_regex" > /dev/null; then ++ : ++ else ++ cat <&2 ++ ++*** Warning: the command libtool uses to detect shared libraries, ++*** $file_magic_cmd, produces output that libtool cannot recognize. ++*** The result is that libtool may fail to recognize shared libraries ++*** as such. This will affect the creation of libtool libraries that ++*** depend on shared libraries, but programs linked with such libtool ++*** libraries will work regardless of this problem. Nevertheless, you ++*** may want to report the problem to your system manager and/or to ++*** bug-libtool@gnu.org ++ ++EOF ++ fi ;; ++ esac ++ fi ++ break ++ fi ++ done ++ IFS="$lt_save_ifs" ++ MAGIC_CMD="$lt_save_MAGIC_CMD" ++ ;; ++esac]) ++MAGIC_CMD="$lt_cv_path_MAGIC_CMD" ++if test -n "$MAGIC_CMD"; then ++ AC_MSG_RESULT($MAGIC_CMD) ++else ++ AC_MSG_RESULT(no) ++fi ++])# AC_PATH_TOOL_PREFIX ++ ++ ++# AC_PATH_MAGIC ++# ------------- ++# find a file program which can recognize a shared library ++AC_DEFUN([AC_PATH_MAGIC], ++[AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) ++if test -z "$lt_cv_path_MAGIC_CMD"; then ++ if test -n "$ac_tool_prefix"; then ++ AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) ++ else ++ MAGIC_CMD=: ++ fi ++fi ++])# AC_PATH_MAGIC + +- # If neither matched, then we have a broken ls. This can happen +- # if, for instance, CONFIG_SHELL is bash and it inherits a +- # broken ls alias from the environment. This has actually +- # happened. Such a system could not be considered "sane". +- AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken +-alias in your environment]) +- fi + +- test "$[2]" = conftest.file +- ) +-then +- # Ok. +- : ++# AC_PROG_LD ++# ---------- ++# find the pathname to the GNU or non-GNU linker ++AC_DEFUN([AC_PROG_LD], ++[AC_ARG_WITH([gnu-ld], ++ [AC_HELP_STRING([--with-gnu-ld], ++ [assume the C compiler uses GNU ld @<:@default=no@:>@])], ++ [test "$withval" = no || with_gnu_ld=yes], ++ [with_gnu_ld=no]) ++AC_REQUIRE([LT_AC_PROG_SED])dnl ++AC_REQUIRE([AC_PROG_CC])dnl ++AC_REQUIRE([AC_CANONICAL_HOST])dnl ++AC_REQUIRE([AC_CANONICAL_BUILD])dnl ++ac_prog=ld ++if test "$GCC" = yes; then ++ # Check if gcc -print-prog-name=ld gives a path. ++ AC_MSG_CHECKING([for ld used by $CC]) ++ case $host in ++ *-*-mingw*) ++ # gcc leaves a trailing carriage return which upsets mingw ++ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; ++ *) ++ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; ++ esac ++ case $ac_prog in ++ # Accept absolute paths. ++ [[\\/]]* | ?:[[\\/]]*) ++ re_direlt='/[[^/]][[^/]]*/\.\./' ++ # Canonicalize the pathname of ld ++ ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` ++ while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ++ ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` ++ done ++ test -z "$LD" && LD="$ac_prog" ++ ;; ++ "") ++ # If it fails, then pretend we aren't using GCC. ++ ac_prog=ld ++ ;; ++ *) ++ # If it is relative, then search for the first ld in PATH. ++ with_gnu_ld=unknown ++ ;; ++ esac ++elif test "$with_gnu_ld" = yes; then ++ AC_MSG_CHECKING([for GNU ld]) + else +- AC_MSG_ERROR([newly created file is older than distributed files! +-Check your system clock]) ++ AC_MSG_CHECKING([for non-GNU ld]) + fi +-AC_MSG_RESULT(yes)]) ++AC_CACHE_VAL(lt_cv_path_LD, ++[if test -z "$LD"; then ++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ++ for ac_dir in $PATH; do ++ IFS="$lt_save_ifs" ++ test -z "$ac_dir" && ac_dir=. ++ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then ++ lt_cv_path_LD="$ac_dir/$ac_prog" ++ # Check to see if the program is GNU ld. I'd rather use --version, ++ # but apparently some variants of GNU ld only accept -v. ++ # Break only if it was the GNU/non-GNU ld that we prefer. ++ case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then ++ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' ++ lt_cv_file_magic_cmd='func_win32_libid' ++ else ++ lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' ++ lt_cv_file_magic_cmd='$OBJDUMP -f' ++ fi ++ ;; ++ ++darwin* | rhapsody*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++freebsd* | dragonfly*) ++ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then ++ case $host_cpu in ++ i*86 ) ++ # Not sure whether the presence of OpenBSD here was a mistake. ++ # Let's accept both of them until this is cleared up. ++ lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' ++ lt_cv_file_magic_cmd=/usr/bin/file ++ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ++ ;; ++ esac ++ else ++ lt_cv_deplibs_check_method=pass_all ++ fi ++ ;; + +-# serial 4 -*- Autoconf -*- ++gnu*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++hpux10.20* | hpux11*) ++ lt_cv_file_magic_cmd=/usr/bin/file ++ case $host_cpu in ++ ia64*) ++ lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' ++ lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ++ ;; ++ hppa*64*) ++ [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] ++ lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ++ ;; ++ *) ++ lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' ++ lt_cv_file_magic_test_file=/usr/lib/libc.sl ++ ;; ++ esac ++ ;; ++ ++interix[[3-9]]*) ++ # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here ++ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' ++ ;; ++ ++irix5* | irix6* | nonstopux*) ++ case $LD in ++ *-32|*"-32 ") libmagic=32-bit;; ++ *-n32|*"-n32 ") libmagic=N32;; ++ *-64|*"-64 ") libmagic=64-bit;; ++ *) libmagic=never-match;; ++ esac ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++# This must be Linux ELF. ++linux* | k*bsd*-gnu) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++netbsd* | netbsdelf*-gnu) ++ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then ++ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' ++ else ++ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' ++ fi ++ ;; ++ ++newos6*) ++ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' ++ lt_cv_file_magic_cmd=/usr/bin/file ++ lt_cv_file_magic_test_file=/usr/lib/libnls.so ++ ;; + ++nto-qnx*) ++ lt_cv_deplibs_check_method=unknown ++ ;; + ++openbsd*) ++ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then ++ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' ++ else ++ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' ++ fi ++ ;; + +-# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be +-# written in clear, in which case automake, when reading aclocal.m4, +-# will think it sees a *use*, and therefore will trigger all it's +-# C support machinery. Also note that it means that autoscan, seeing +-# CC etc. in the Makefile, will ask for an AC_PROG_CC use... ++osf3* | osf4* | osf5*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; + ++rdos*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; + ++solaris*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; + +-# _AM_DEPENDENCIES(NAME) +-# --------------------- +-# See how the compiler implements dependency checking. +-# NAME is "CC", "CXX" or "OBJC". +-# We try a few techniques and use that to set a single cache variable. +-# +-# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +-# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +-# dependency, and given that the user is not expected to run this macro, +-# just rely on AC_PROG_CC. +-AC_DEFUN([_AM_DEPENDENCIES], +-[AC_REQUIRE([AM_SET_DEPDIR])dnl +-AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +-AC_REQUIRE([AM_MAKE_INCLUDE])dnl +-AC_REQUIRE([AM_DEP_TRACK])dnl ++sysv4 | sysv4.3*) ++ case $host_vendor in ++ motorola) ++ 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]]' ++ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ++ ;; ++ ncr) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ sequent) ++ lt_cv_file_magic_cmd='/bin/file' ++ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ++ ;; ++ sni) ++ lt_cv_file_magic_cmd='/bin/file' ++ lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" ++ lt_cv_file_magic_test_file=/lib/libc.so ++ ;; ++ siemens) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ pc) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ esac ++ ;; + +-ifelse([$1], CC, [depcc="$CC" am_compiler_list=], +- [$1], CXX, [depcc="$CXX" am_compiler_list=], +- [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'] +- [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], +- [depcc="$$1" am_compiler_list=]) ++sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++esac ++]) ++file_magic_cmd=$lt_cv_file_magic_cmd ++deplibs_check_method=$lt_cv_deplibs_check_method ++test -z "$deplibs_check_method" && deplibs_check_method=unknown ++])# AC_DEPLIBS_CHECK_METHOD + +-AC_CACHE_CHECK([dependency style of $depcc], +- [am_cv_$1_dependencies_compiler_type], +-[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then +- # We make a subdir and do the tests there. Otherwise we can end up +- # making bogus files that we don't know about and never remove. For +- # instance it was reported that on HP-UX the gcc test will end up +- # making a dummy file named `D' -- because `-MD' means `put the output +- # in D'. +- mkdir conftest.dir +- # Copy depcomp to subdir because otherwise we won't find it if we're +- # using a relative directory. +- cp "$am_depcomp" conftest.dir +- cd conftest.dir + +- am_cv_$1_dependencies_compiler_type=none +- if test "$am_compiler_list" = ""; then +- am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` ++# AC_PROG_NM ++# ---------- ++# find the pathname to a BSD-compatible name lister ++AC_DEFUN([AC_PROG_NM], ++[AC_CACHE_CHECK([for BSD-compatible nm], lt_cv_path_NM, ++[if test -n "$NM"; then ++ # Let the user override the test. ++ lt_cv_path_NM="$NM" ++else ++ lt_nm_to_check="${ac_tool_prefix}nm" ++ if test -n "$ac_tool_prefix" && test "$build" = "$host"; then ++ lt_nm_to_check="$lt_nm_to_check nm" + fi +- for depmode in $am_compiler_list; do +- # We need to recreate these files for each test, as the compiler may +- # overwrite some of them when testing with obscure command lines. +- # This happens at least with the AIX C compiler. +- echo '#include "conftest.h"' > conftest.c +- echo 'int i;' > conftest.h +- echo "${am__include} ${am__quote}conftest.Po${am__quote}" > confmf +- +- case $depmode in +- nosideeffect) +- # after this tag, mechanisms are not by side-effect, so they'll +- # only be used when explicitly requested +- if test "x$enable_dependency_tracking" = xyes; then +- continue +- else +- break ++ for lt_tmp_nm in $lt_nm_to_check; do ++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ++ for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do ++ IFS="$lt_save_ifs" ++ test -z "$ac_dir" && ac_dir=. ++ tmp_nm="$ac_dir/$lt_tmp_nm" ++ if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then ++ # Check to see if the nm accepts a BSD-compat flag. ++ # Adding the `sed 1q' prevents false positives on HP-UX, which says: ++ # nm: unknown option "B" ignored ++ # Tru64's nm complains that /dev/null is an invalid object file ++ case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in ++ */dev/null* | *'Invalid file or object type'*) ++ lt_cv_path_NM="$tmp_nm -B" ++ break ++ ;; ++ *) ++ case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in ++ */dev/null*) ++ lt_cv_path_NM="$tmp_nm -p" ++ break ++ ;; ++ *) ++ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but ++ continue # so that we can try to find one that supports BSD flags ++ ;; ++ esac ++ ;; ++ esac + fi +- ;; +- none) break ;; +- esac +- # We check with `-c' and `-o' for the sake of the "dashmstdout" +- # mode. It turns out that the SunPro C++ compiler does not properly +- # handle `-M -o', and we need to detect this. +- if depmode=$depmode \ +- source=conftest.c object=conftest.o \ +- depfile=conftest.Po tmpdepfile=conftest.TPo \ +- $SHELL ./depcomp $depcc -c conftest.c -o conftest.o >/dev/null 2>&1 && +- grep conftest.h conftest.Po > /dev/null 2>&1 && +- ${MAKE-make} -s -f confmf > /dev/null 2>&1; then +- am_cv_$1_dependencies_compiler_type=$depmode +- break +- fi ++ done ++ IFS="$lt_save_ifs" + done +- +- cd .. +- rm -rf conftest.dir +-else +- am_cv_$1_dependencies_compiler_type=none +-fi +-]) +-$1DEPMODE="depmode=$am_cv_$1_dependencies_compiler_type" +-AC_SUBST([$1DEPMODE]) +-]) ++ test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm ++fi]) ++NM="$lt_cv_path_NM" ++])# AC_PROG_NM + + +-# AM_SET_DEPDIR ++# AC_CHECK_LIBM + # ------------- +-# Choose a directory name for dependency files. +-# This macro is AC_REQUIREd in _AM_DEPENDENCIES +-AC_DEFUN([AM_SET_DEPDIR], +-[rm -f .deps 2>/dev/null +-mkdir .deps 2>/dev/null +-if test -d .deps; then +- DEPDIR=.deps +-else +- # MS-DOS does not allow filenames that begin with a dot. +- DEPDIR=_deps +-fi +-rmdir .deps 2>/dev/null +-AC_SUBST(DEPDIR) +-]) +- +- +-# AM_DEP_TRACK +-# ------------ +-AC_DEFUN([AM_DEP_TRACK], +-[AC_ARG_ENABLE(dependency-tracking, +-[ --disable-dependency-tracking Speeds up one-time builds +- --enable-dependency-tracking Do not reject slow dependency extractors]) +-if test "x$enable_dependency_tracking" != xno; then +- am_depcomp="$ac_aux_dir/depcomp" +- AMDEPBACKSLASH='\' +-fi +-AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +-pushdef([subst], defn([AC_SUBST])) +-subst(AMDEPBACKSLASH) +-popdef([subst]) +-]) ++# check for math library ++AC_DEFUN([AC_CHECK_LIBM], ++[AC_REQUIRE([AC_CANONICAL_HOST])dnl ++LIBM= ++case $host in ++*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) ++ # These system don't have libm, or don't need it ++ ;; ++*-ncr-sysv4.3*) ++ AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") ++ AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") ++ ;; ++*) ++ AC_CHECK_LIB(m, cos, LIBM="-lm") ++ ;; ++esac ++])# AC_CHECK_LIBM + +-# Generate code to set up dependency tracking. +-# This macro should only be invoked once -- use via AC_REQUIRE. +-# Usage: +-# AM_OUTPUT_DEPENDENCY_COMMANDS + +-# +-# This code is only required when automatic dependency tracking +-# is enabled. FIXME. This creates each `.P' file that we will +-# need in order to bootstrap the dependency handling code. +-AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],[ +-AC_OUTPUT_COMMANDS([ +-test x"$AMDEP_TRUE" != x"" || +-for mf in $CONFIG_FILES; do +- case "$mf" in +- Makefile) dirpart=.;; +- */Makefile) dirpart=`echo "$mf" | sed -e 's|/[^/]*$||'`;; +- *) continue;; ++# AC_LIBLTDL_CONVENIENCE([DIRECTORY]) ++# ----------------------------------- ++# sets LIBLTDL to the link flags for the libltdl convenience library and ++# LTDLINCL to the include flags for the libltdl header and adds ++# --enable-ltdl-convenience to the configure arguments. Note that ++# AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided, ++# it is assumed to be `libltdl'. LIBLTDL will be prefixed with ++# '${top_builddir}/' and LTDLINCL will be prefixed with '${top_srcdir}/' ++# (note the single quotes!). If your package is not flat and you're not ++# using automake, define top_builddir and top_srcdir appropriately in ++# the Makefiles. ++AC_DEFUN([AC_LIBLTDL_CONVENIENCE], ++[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl ++ case $enable_ltdl_convenience in ++ no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; ++ "") enable_ltdl_convenience=yes ++ ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; + esac +- grep '^DEP_FILES *= *[^ #]' < "$mf" > /dev/null || continue +- # Extract the definition of DEP_FILES from the Makefile without +- # running `make'. +- DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"` +- test -z "$DEPDIR" && continue +- # When using ansi2knr, U may be empty or an underscore; expand it +- U=`sed -n -e '/^U = / s///p' < "$mf"` +- test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" +- # We invoke sed twice because it is the simplest approach to +- # changing $(DEPDIR) to its actual value in the expansion. +- for file in `sed -n -e ' +- /^DEP_FILES = .*\\\\$/ { +- s/^DEP_FILES = // +- :loop +- s/\\\\$// +- p +- n +- /\\\\$/ b loop +- p +- } +- /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \ +- sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do +- # Make sure the directory exists. +- test -f "$dirpart/$file" && continue +- fdir=`echo "$file" | sed -e 's|/[^/]*$||'` +- $ac_aux_dir/mkinstalldirs "$dirpart/$fdir" > /dev/null 2>&1 +- # echo "creating $dirpart/$file" +- echo '# dummy' > "$dirpart/$file" +- done +-done +-], [AMDEP_TRUE="$AMDEP_TRUE" +-ac_aux_dir="$ac_aux_dir"])]) +- +-# AM_MAKE_INCLUDE() +-# ----------------- +-# Check to see how make treats includes. +-AC_DEFUN([AM_MAKE_INCLUDE], +-[am_make=${MAKE-make} +-cat > confinc << 'END' +-doit: +- @echo done +-END +-# If we don't find an include directive, just comment out the code. +-AC_MSG_CHECKING([for style of include used by $am_make]) +-am__include='#' +-am__quote= +-_am_result=none +-# First try GNU make style include. +-echo "include confinc" > confmf +-# We grep out `Entering directory' and `Leaving directory' +-# messages which can occur if `w' ends up in MAKEFLAGS. +-# In particular we don't look at `^make:' because GNU make might +-# be invoked under some other name (usually "gmake"), in which +-# case it prints its new name instead of `make'. +-if test "`$am_make -s -f confmf 2> /dev/null | fgrep -v 'ing directory'`" = "done"; then +- am__include=include +- am__quote= +- _am_result=GNU +-fi +-# Now try BSD make style include. +-if test "$am__include" = "#"; then +- echo '.include "confinc"' > confmf +- if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then +- am__include=.include +- am__quote='"' +- _am_result=BSD +- fi +-fi +-AC_SUBST(am__include) +-AC_SUBST(am__quote) +-AC_MSG_RESULT($_am_result) +-rm -f confinc confmf +-]) +- +-# serial 3 ++ LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la ++ LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) ++ # For backwards non-gettext consistent compatibility... ++ INCLTDL="$LTDLINCL" ++])# AC_LIBLTDL_CONVENIENCE + +-# AM_CONDITIONAL(NAME, SHELL-CONDITION) +-# ------------------------------------- +-# Define a conditional. +-# +-# FIXME: Once using 2.50, use this: +-# m4_match([$1], [^TRUE\|FALSE$], [AC_FATAL([$0: invalid condition: $1])])dnl +-AC_DEFUN([AM_CONDITIONAL], +-[ifelse([$1], [TRUE], +- [errprint(__file__:__line__: [$0: invalid condition: $1 +-])dnl +-m4exit(1)])dnl +-ifelse([$1], [FALSE], +- [errprint(__file__:__line__: [$0: invalid condition: $1 +-])dnl +-m4exit(1)])dnl +-AC_SUBST([$1_TRUE]) +-AC_SUBST([$1_FALSE]) +-if $2; then +- $1_TRUE= +- $1_FALSE='#' +-else +- $1_TRUE='#' +- $1_FALSE= +-fi]) + +-# Like AC_CONFIG_HEADER, but automatically create stamp file. ++# AC_LIBLTDL_INSTALLABLE([DIRECTORY]) ++# ----------------------------------- ++# sets LIBLTDL to the link flags for the libltdl installable library and ++# LTDLINCL to the include flags for the libltdl header and adds ++# --enable-ltdl-install to the configure arguments. Note that ++# AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided, ++# and an installed libltdl is not found, it is assumed to be `libltdl'. ++# LIBLTDL will be prefixed with '${top_builddir}/'# and LTDLINCL with ++# '${top_srcdir}/' (note the single quotes!). If your package is not ++# flat and you're not using automake, define top_builddir and top_srcdir ++# appropriately in the Makefiles. ++# In the future, this macro may have to be called after AC_PROG_LIBTOOL. ++AC_DEFUN([AC_LIBLTDL_INSTALLABLE], ++[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl ++ AC_CHECK_LIB(ltdl, lt_dlinit, ++ [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], ++ [if test x"$enable_ltdl_install" = xno; then ++ AC_MSG_WARN([libltdl not installed, but installation disabled]) ++ else ++ enable_ltdl_install=yes ++ fi ++ ]) ++ if test x"$enable_ltdl_install" = x"yes"; then ++ ac_configure_args="$ac_configure_args --enable-ltdl-install" ++ LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la ++ LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) ++ else ++ ac_configure_args="$ac_configure_args --enable-ltdl-install=no" ++ LIBLTDL="-lltdl" ++ LTDLINCL= ++ fi ++ # For backwards non-gettext consistent compatibility... ++ INCLTDL="$LTDLINCL" ++])# AC_LIBLTDL_INSTALLABLE + +-# serial 3 + +-# When config.status generates a header, we must update the stamp-h file. +-# This file resides in the same directory as the config header +-# that is generated. We must strip everything past the first ":", +-# and everything past the last "/". ++# AC_LIBTOOL_CXX ++# -------------- ++# enable support for C++ libraries ++AC_DEFUN([AC_LIBTOOL_CXX], ++[AC_REQUIRE([_LT_AC_LANG_CXX]) ++])# AC_LIBTOOL_CXX + +-AC_PREREQ([2.12]) + +-AC_DEFUN([AM_CONFIG_HEADER], +-[ifdef([AC_FOREACH],dnl +- [dnl init our file count if it isn't already +- m4_ifndef([_AM_Config_Header_Index], m4_define([_AM_Config_Header_Index], [0])) +- dnl prepare to store our destination file list for use in config.status +- AC_FOREACH([_AM_File], [$1], +- [m4_pushdef([_AM_Dest], m4_patsubst(_AM_File, [:.*])) +- m4_define([_AM_Config_Header_Index], m4_incr(_AM_Config_Header_Index)) +- dnl and add it to the list of files AC keeps track of, along +- dnl with our hook +- AC_CONFIG_HEADERS(_AM_File, +-dnl COMMANDS, [, INIT-CMDS] +-[# update the timestamp +-echo timestamp >"AS_ESCAPE(_AM_DIRNAME(]_AM_Dest[))/stamp-h]_AM_Config_Header_Index[" +-][$2]m4_ifval([$3], [, [$3]]))dnl AC_CONFIG_HEADERS +- m4_popdef([_AM_Dest])])],dnl +-[AC_CONFIG_HEADER([$1]) +- AC_OUTPUT_COMMANDS( +- ifelse(patsubst([$1], [[^ ]], []), +- [], +- [test -z "$CONFIG_HEADERS" || echo timestamp >dnl +- patsubst([$1], [^\([^:]*/\)?.*], [\1])stamp-h]),dnl +-[am_indx=1 +-for am_file in $1; do +- case " \$CONFIG_HEADERS " in +- *" \$am_file "*) +- am_dir=\`echo \$am_file |sed 's%:.*%%;s%[^/]*\$%%'\` +- if test -n "\$am_dir"; then +- am_tmpdir=\`echo \$am_dir |sed 's%^\(/*\).*\$%\1%'\` +- for am_subdir in \`echo \$am_dir |sed 's%/% %'\`; do +- am_tmpdir=\$am_tmpdir\$am_subdir/ +- if test ! -d \$am_tmpdir; then +- mkdir \$am_tmpdir +- fi +- done +- fi +- echo timestamp > "\$am_dir"stamp-h\$am_indx +- ;; +- esac +- am_indx=\`expr \$am_indx + 1\` +-done]) +-])]) # AM_CONFIG_HEADER ++# _LT_AC_LANG_CXX ++# --------------- ++AC_DEFUN([_LT_AC_LANG_CXX], ++[AC_REQUIRE([AC_PROG_CXX]) ++AC_REQUIRE([_LT_AC_PROG_CXXCPP]) ++_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX]) ++])# _LT_AC_LANG_CXX + +-# _AM_DIRNAME(PATH) +-# ----------------- +-# Like AS_DIRNAME, only do it during macro expansion +-AC_DEFUN([_AM_DIRNAME], +- [m4_if(m4_regexp([$1], [^.*[^/]//*[^/][^/]*/*$]), -1, +- m4_if(m4_regexp([$1], [^//\([^/]\|$\)]), -1, +- m4_if(m4_regexp([$1], [^/.*]), -1, +- [.], +- m4_patsubst([$1], [^\(/\).*], [\1])), +- m4_patsubst([$1], [^\(//\)\([^/].*\|$\)], [\1])), +- m4_patsubst([$1], [^\(.*[^/]\)//*[^/][^/]*/*$], [\1]))[]dnl +-]) # _AM_DIRNAME ++# _LT_AC_PROG_CXXCPP ++# ------------------ ++AC_DEFUN([_LT_AC_PROG_CXXCPP], ++[ ++AC_REQUIRE([AC_PROG_CXX]) ++if test -n "$CXX" && ( test "X$CXX" != "Xno" && ++ ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || ++ (test "X$CXX" != "Xg++"))) ; then ++ AC_PROG_CXXCPP ++fi ++])# _LT_AC_PROG_CXXCPP ++ ++# AC_LIBTOOL_F77 ++# -------------- ++# enable support for Fortran 77 libraries ++AC_DEFUN([AC_LIBTOOL_F77], ++[AC_REQUIRE([_LT_AC_LANG_F77]) ++])# AC_LIBTOOL_F77 + +-# libtool.m4 - Configure libtool for the host system. -*-Shell-script-*- + +-# serial 46 AC_PROG_LIBTOOL ++# _LT_AC_LANG_F77 ++# --------------- ++AC_DEFUN([_LT_AC_LANG_F77], ++[AC_REQUIRE([AC_PROG_F77]) ++_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77]) ++])# _LT_AC_LANG_F77 + +-AC_DEFUN([AC_PROG_LIBTOOL], +-[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl + +-# This can be used to rebuild libtool when needed +-LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" ++# AC_LIBTOOL_GCJ ++# -------------- ++# enable support for GCJ libraries ++AC_DEFUN([AC_LIBTOOL_GCJ], ++[AC_REQUIRE([_LT_AC_LANG_GCJ]) ++])# AC_LIBTOOL_GCJ + +-# Always use our own libtool. +-LIBTOOL='$(SHELL) $(top_builddir)/libtool' +-AC_SUBST(LIBTOOL)dnl + +-# Prevent multiple expansion +-define([AC_PROG_LIBTOOL], []) +-]) ++# _LT_AC_LANG_GCJ ++# --------------- ++AC_DEFUN([_LT_AC_LANG_GCJ], ++[AC_PROVIDE_IFELSE([AC_PROG_GCJ],[], ++ [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[], ++ [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[], ++ [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])], ++ [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])], ++ [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])]) ++_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ]) ++])# _LT_AC_LANG_GCJ + +-AC_DEFUN([AC_LIBTOOL_SETUP], +-[AC_PREREQ(2.13)dnl +-AC_REQUIRE([AC_ENABLE_SHARED])dnl +-AC_REQUIRE([AC_ENABLE_STATIC])dnl +-AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl +-AC_REQUIRE([AC_CANONICAL_HOST])dnl +-AC_REQUIRE([AC_CANONICAL_BUILD])dnl +-AC_REQUIRE([AC_PROG_CC])dnl +-AC_REQUIRE([AC_PROG_LD])dnl +-AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl +-AC_REQUIRE([AC_PROG_NM])dnl +-AC_REQUIRE([AC_PROG_LN_S])dnl +-AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl +-AC_REQUIRE([AC_OBJEXT])dnl +-AC_REQUIRE([AC_EXEEXT])dnl +-dnl + +-_LT_AC_PROG_ECHO_BACKSLASH +-# Only perform the check for file, if the check method requires it +-case $deplibs_check_method in +-file_magic*) +- if test "$file_magic_cmd" = '$MAGIC_CMD'; then +- AC_PATH_MAGIC +- fi +- ;; +-esac ++# AC_LIBTOOL_RC ++# ------------- ++# enable support for Windows resource files ++AC_DEFUN([AC_LIBTOOL_RC], ++[AC_REQUIRE([LT_AC_PROG_RC]) ++_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}RC]) ++])# AC_LIBTOOL_RC + +-AC_CHECK_TOOL(RANLIB, ranlib, :) +-AC_CHECK_TOOL(STRIP, strip, :) + +-ifdef([AC_PROVIDE_AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no) +-ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL], +-enable_win32_dll=yes, enable_win32_dll=no) ++# AC_LIBTOOL_LANG_C_CONFIG ++# ------------------------ ++# Ensure that the configuration vars for the C compiler are ++# suitably defined. Those variables are subsequently used by ++# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. ++AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG]) ++AC_DEFUN([_LT_AC_LANG_C_CONFIG], ++[lt_save_CC="$CC" ++AC_LANG_PUSH(C) ++ ++# Source file extension for C test sources. ++ac_ext=c ++ ++# Object file extension for compiled C test sources. ++objext=o ++_LT_AC_TAGVAR(objext, $1)=$objext ++ ++# Code to be used in simple compile tests ++lt_simple_compile_test_code="int some_variable = 0;" ++ ++# Code to be used in simple link tests ++lt_simple_link_test_code='int main(){return(0);}' ++ ++_LT_AC_SYS_COMPILER ++ ++# save warnings/boilerplate of simple test code ++_LT_COMPILER_BOILERPLATE ++_LT_LINKER_BOILERPLATE ++ ++AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) ++AC_LIBTOOL_PROG_COMPILER_PIC($1) ++AC_LIBTOOL_PROG_CC_C_O($1) ++AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) ++AC_LIBTOOL_PROG_LD_SHLIBS($1) ++AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) ++AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) ++AC_LIBTOOL_SYS_LIB_STRIP ++AC_LIBTOOL_DLOPEN_SELF + +-AC_ARG_ENABLE(libtool-lock, +- [ --disable-libtool-lock avoid locking (might break parallel builds)]) +-test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes ++# Report which library types will actually be built ++AC_MSG_CHECKING([if libtool supports shared libraries]) ++AC_MSG_RESULT([$can_build_shared]) + +-# Some flags need to be propagated to the compiler or linker for good +-# libtool support. +-case $host in +-*-*-irix6*) +- # Find out which ABI we are using. +- echo '[#]line __oline__ "configure"' > conftest.$ac_ext +- if AC_TRY_EVAL(ac_compile); then +- case `/usr/bin/file conftest.$ac_objext` in +- *32-bit*) +- LD="${LD-ld} -32" +- ;; +- *N32*) +- LD="${LD-ld} -n32" +- ;; +- *64-bit*) +- LD="${LD-ld} -64" +- ;; +- esac +- fi +- rm -rf conftest* +- ;; ++AC_MSG_CHECKING([whether to build shared libraries]) ++test "$can_build_shared" = "no" && enable_shared=no + +-*-*-sco3.2v5*) +- # On SCO OpenServer 5, we need -belf to get full-featured binaries. +- SAVE_CFLAGS="$CFLAGS" +- CFLAGS="$CFLAGS -belf" +- AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, +- [AC_LANG_SAVE +- AC_LANG_C +- AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) +- AC_LANG_RESTORE]) +- if test x"$lt_cv_cc_needs_belf" != x"yes"; then +- # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf +- CFLAGS="$SAVE_CFLAGS" ++# On AIX, shared libraries and static libraries use the same namespace, and ++# are all built from PIC. ++case $host_os in ++aix3*) ++ test "$enable_shared" = yes && enable_static=no ++ if test -n "$RANLIB"; then ++ archive_cmds="$archive_cmds~\$RANLIB \$lib" ++ postinstall_cmds='$RANLIB $lib' + fi + ;; + +-ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL], +-[*-*-cygwin* | *-*-mingw* | *-*-pw32*) +- AC_CHECK_TOOL(DLLTOOL, dlltool, false) +- AC_CHECK_TOOL(AS, as, false) +- AC_CHECK_TOOL(OBJDUMP, objdump, false) +- +- # recent cygwin and mingw systems supply a stub DllMain which the user +- # can override, but on older systems we have to supply one +- AC_CACHE_CHECK([if libtool should supply DllMain function], lt_cv_need_dllmain, +- [AC_TRY_LINK([], +- [extern int __attribute__((__stdcall__)) DllMain(void*, int, void*); +- DllMain (0, 0, 0);], +- [lt_cv_need_dllmain=no],[lt_cv_need_dllmain=yes])]) +- +- case $host/$CC in +- *-*-cygwin*/gcc*-mno-cygwin*|*-*-mingw*) +- # old mingw systems require "-dll" to link a DLL, while more recent ones +- # require "-mdll" +- SAVE_CFLAGS="$CFLAGS" +- CFLAGS="$CFLAGS -mdll" +- AC_CACHE_CHECK([how to link DLLs], lt_cv_cc_dll_switch, +- [AC_TRY_LINK([], [], [lt_cv_cc_dll_switch=-mdll],[lt_cv_cc_dll_switch=-dll])]) +- CFLAGS="$SAVE_CFLAGS" ;; +- *-*-cygwin* | *-*-pw32*) +- # cygwin systems need to pass --dll to the linker, and not link +- # crt.o which will require a WinMain@16 definition. +- lt_cv_cc_dll_switch="-Wl,--dll -nostartfiles" ;; +- esac +- ;; +- ]) ++aix4* | aix5*) ++ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then ++ test "$enable_shared" = yes && enable_static=no ++ fi ++ ;; + esac ++AC_MSG_RESULT([$enable_shared]) + +-_LT_AC_LTCONFIG_HACK +- +-]) ++AC_MSG_CHECKING([whether to build static libraries]) ++# Make sure either enable_shared or enable_static is yes. ++test "$enable_shared" = yes || enable_static=yes ++AC_MSG_RESULT([$enable_static]) + +-# AC_LIBTOOL_HEADER_ASSERT +-# ------------------------ +-AC_DEFUN([AC_LIBTOOL_HEADER_ASSERT], +-[AC_CACHE_CHECK([whether $CC supports assert without backlinking], +- [lt_cv_func_assert_works], +- [case $host in +- *-*-solaris*) +- if test "$GCC" = yes && test "$with_gnu_ld" != yes; then +- case `$CC --version 2>/dev/null` in +- [[12]].*) lt_cv_func_assert_works=no ;; +- *) lt_cv_func_assert_works=yes ;; +- esac +- fi +- ;; +- esac]) ++AC_LIBTOOL_CONFIG($1) + +-if test "x$lt_cv_func_assert_works" = xyes; then +- AC_CHECK_HEADERS(assert.h) +-fi +-])# AC_LIBTOOL_HEADER_ASSERT ++AC_LANG_POP ++CC="$lt_save_CC" ++])# AC_LIBTOOL_LANG_C_CONFIG + +-# _LT_AC_CHECK_DLFCN +-# -------------------- +-AC_DEFUN([_LT_AC_CHECK_DLFCN], +-[AC_CHECK_HEADERS(dlfcn.h) +-])# _LT_AC_CHECK_DLFCN + +-# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE +-# --------------------------------- +-AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], +-[AC_REQUIRE([AC_CANONICAL_HOST]) +-AC_REQUIRE([AC_PROG_NM]) +-AC_REQUIRE([AC_OBJEXT]) +-# Check for command to grab the raw symbol name followed by C symbol from nm. +-AC_MSG_CHECKING([command to parse $NM output]) +-AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [dnl ++# AC_LIBTOOL_LANG_CXX_CONFIG ++# -------------------------- ++# Ensure that the configuration vars for the C compiler are ++# suitably defined. Those variables are subsequently used by ++# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. ++AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)]) ++AC_DEFUN([_LT_AC_LANG_CXX_CONFIG], ++[AC_LANG_PUSH(C++) ++AC_REQUIRE([AC_PROG_CXX]) ++AC_REQUIRE([_LT_AC_PROG_CXXCPP]) ++ ++_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ++_LT_AC_TAGVAR(allow_undefined_flag, $1)= ++_LT_AC_TAGVAR(always_export_symbols, $1)=no ++_LT_AC_TAGVAR(archive_expsym_cmds, $1)= ++_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= ++_LT_AC_TAGVAR(hardcode_direct, $1)=no ++_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= ++_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= ++_LT_AC_TAGVAR(hardcode_libdir_separator, $1)= ++_LT_AC_TAGVAR(hardcode_minus_L, $1)=no ++_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported ++_LT_AC_TAGVAR(hardcode_automatic, $1)=no ++_LT_AC_TAGVAR(module_cmds, $1)= ++_LT_AC_TAGVAR(module_expsym_cmds, $1)= ++_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown ++_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds ++_LT_AC_TAGVAR(no_undefined_flag, $1)= ++_LT_AC_TAGVAR(whole_archive_flag_spec, $1)= ++_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no ++ ++# Dependencies to place before and after the object being linked: ++_LT_AC_TAGVAR(predep_objects, $1)= ++_LT_AC_TAGVAR(postdep_objects, $1)= ++_LT_AC_TAGVAR(predeps, $1)= ++_LT_AC_TAGVAR(postdeps, $1)= ++_LT_AC_TAGVAR(compiler_lib_search_path, $1)= ++ ++# Source file extension for C++ test sources. ++ac_ext=cpp ++ ++# Object file extension for compiled C++ test sources. ++objext=o ++_LT_AC_TAGVAR(objext, $1)=$objext ++ ++# Code to be used in simple compile tests ++lt_simple_compile_test_code="int some_variable = 0;" ++ ++# Code to be used in simple link tests ++lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' ++ ++# ltmain only uses $CC for tagged configurations so make sure $CC is set. ++_LT_AC_SYS_COMPILER ++ ++# save warnings/boilerplate of simple test code ++_LT_COMPILER_BOILERPLATE ++_LT_LINKER_BOILERPLATE + +-# These are sane defaults that work on at least a few old systems. +-# [They come from Ultrix. What could be older than Ultrix?!! ;)] ++# Allow CC to be a program name with arguments. ++lt_save_CC=$CC ++lt_save_LD=$LD ++lt_save_GCC=$GCC ++GCC=$GXX ++lt_save_with_gnu_ld=$with_gnu_ld ++lt_save_path_LD=$lt_cv_path_LD ++if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then ++ lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx ++else ++ $as_unset lt_cv_prog_gnu_ld ++fi ++if test -n "${lt_cv_path_LDCXX+set}"; then ++ lt_cv_path_LD=$lt_cv_path_LDCXX ++else ++ $as_unset lt_cv_path_LD ++fi ++test -z "${LDCXX+set}" || LD=$LDCXX ++CC=${CXX-"c++"} ++compiler=$CC ++_LT_AC_TAGVAR(compiler, $1)=$CC ++_LT_CC_BASENAME([$compiler]) ++ ++# We don't want -fno-exception wen compiling C++ code, so set the ++# no_builtin_flag separately ++if test "$GXX" = yes; then ++ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ++else ++ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= ++fi + +-# Character class describing NM global symbol codes. +-symcode='[[BCDEGRST]]' ++if test "$GXX" = yes; then ++ # Set up default GNU C++ configuration + +-# Regexp to match symbols that can be accessed directly from C. +-sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' ++ AC_PROG_LD + +-# Transform the above into a raw symbol and a C symbol. +-symxfrm='\1 \2\3 \3' ++ # Check if GNU C++ uses GNU ld as the underlying linker, since the ++ # archiving commands below assume that GNU ld is being used. ++ if test "$with_gnu_ld" = yes; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + +-# Transform an extracted symbol line into a proper C declaration +-lt_cv_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'" ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + +-# Transform an extracted symbol line into symbol name and symbol address +-lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" ++ # If archive_cmds runs LD, not CC, wlarc should be empty ++ # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to ++ # investigate it a little bit more. (MM) ++ wlarc='${wl}' ++ ++ # ancient GNU ld didn't support --whole-archive et. al. ++ if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ ++ grep 'no-whole-archive' > /dev/null; then ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' ++ else ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= ++ fi ++ else ++ with_gnu_ld=no ++ wlarc= + +-# Define system-specific variables. +-case $host_os in +-aix*) +- symcode='[[BCDT]]' +- ;; +-cygwin* | mingw* | pw32*) +- symcode='[[ABCDGISTW]]' +- ;; +-hpux*) # Its linker distinguishes data from code symbols +- lt_cv_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" +- lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" +- ;; +-irix*) +- symcode='[[BCDEGRST]]' +- ;; +-solaris* | sysv5*) +- symcode='[[BDT]]' +- ;; +-sysv4) +- symcode='[[DFNSTU]]' +- ;; +-esac ++ # A generic and very simple default shared library creation ++ # command for GNU C++ for the case where it uses the native ++ # linker, instead of GNU ld. If possible, this setting should ++ # overridden to take advantage of the native linker features on ++ # the platform it is being used on. ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' ++ fi + +-# Handle CRLF in mingw tool chain +-opt_cr= +-case $host_os in +-mingw*) +- opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp +- ;; +-esac ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + +-# If we're using GNU nm, then use its standard symbol codes. +-if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then +- symcode='[[ABCDGISTW]]' ++else ++ GXX=no ++ with_gnu_ld=no ++ wlarc= + fi + +-# Try without a prefix undercore, then with it. +-for ac_symprfx in "" "_"; do +- +- # Write the raw and C identifiers. +-lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'" +- +- # Check to see that the pipe works correctly. +- pipe_works=no +- rm -f conftest* +- cat > conftest.$ac_ext < $nlist) && test -s "$nlist"; then +- # Try sorting and uniquifying the output. +- if sort "$nlist" | uniq > "$nlist"T; then +- mv -f "$nlist"T "$nlist" +- else +- rm -f "$nlist"T +- fi ++# PORTME: fill in a description of your system's C++ link characteristics ++AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) ++_LT_AC_TAGVAR(ld_shlibs, $1)=yes ++case $host_os in ++ aix3*) ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ aix4* | aix5*) ++ if test "$host_cpu" = ia64; then ++ # On IA64, the linker does run time linking by default, so we don't ++ # have to do anything special. ++ aix_use_runtimelinking=no ++ exp_sym_flag='-Bexport' ++ no_entry_flag="" ++ else ++ aix_use_runtimelinking=no + +- # Make sure that we snagged all the symbols we need. +- if egrep ' nm_test_var$' "$nlist" >/dev/null; then +- if egrep ' nm_test_func$' "$nlist" >/dev/null; then +- cat < conftest.$ac_ext +-#ifdef __cplusplus +-extern "C" { +-#endif ++ # Test if we are trying to use run time linking or normal ++ # AIX style linking. If -brtl is somewhere in LDFLAGS, we ++ # need to do runtime linking. ++ case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) ++ for ld_flag in $LDFLAGS; do ++ case $ld_flag in ++ *-brtl*) ++ aix_use_runtimelinking=yes ++ break ++ ;; ++ esac ++ done ++ ;; ++ esac + +-EOF +- # Now generate the symbol file. +- eval "$lt_cv_global_symbol_to_cdecl"' < "$nlist" >> conftest.$ac_ext' ++ exp_sym_flag='-bexport' ++ no_entry_flag='-bnoentry' ++ fi + +- cat <> conftest.$ac_ext +-#if defined (__STDC__) && __STDC__ +-# define lt_ptr void * +-#else +-# define lt_ptr char * +-# define const +-#endif ++ # When large executables or shared objects are built, AIX ld can ++ # have problems creating the table of contents. If linking a library ++ # or program results in "error TOC overflow" add -mminimal-toc to ++ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not ++ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + +-/* The mapping between symbol names and symbols. */ +-const struct { +- const char *name; +- lt_ptr address; +-} +-lt_preloaded_symbols[[]] = +-{ +-EOF +- sed "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr) \&\2},/" < "$nlist" >> conftest.$ac_ext +- cat <<\EOF >> conftest.$ac_ext +- {0, (lt_ptr) 0} +-}; ++ _LT_AC_TAGVAR(archive_cmds, $1)='' ++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' ++ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + +-#ifdef __cplusplus +-} +-#endif +-EOF +- # Now try linking the two files. +- mv conftest.$ac_objext conftstm.$ac_objext +- save_LIBS="$LIBS" +- save_CFLAGS="$CFLAGS" +- LIBS="conftstm.$ac_objext" +- CFLAGS="$CFLAGS$no_builtin_flag" +- if AC_TRY_EVAL(ac_link) && test -s conftest; then +- pipe_works=yes +- fi +- LIBS="$save_LIBS" +- CFLAGS="$save_CFLAGS" ++ if test "$GXX" = yes; then ++ case $host_os in aix4.[[012]]|aix4.[[012]].*) ++ # We only want to do this on AIX 4.2 and lower, the check ++ # below for broken collect2 doesn't work under 4.3+ ++ collect2name=`${CC} -print-prog-name=collect2` ++ if test -f "$collect2name" && \ ++ strings "$collect2name" | grep resolve_lib_name >/dev/null ++ then ++ # We have reworked collect2 ++ : + else +- echo "cannot find nm_test_func in $nlist" >&AC_FD_CC ++ # We have old collect2 ++ _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported ++ # It fails to find uninstalled libraries when the uninstalled ++ # path is not listed in the libpath. Setting hardcode_minus_L ++ # to unsupported forces relinking ++ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= + fi +- else +- echo "cannot find nm_test_var in $nlist" >&AC_FD_CC ++ ;; ++ esac ++ shared_flag='-shared' ++ if test "$aix_use_runtimelinking" = yes; then ++ shared_flag="$shared_flag "'${wl}-G' + fi + else +- echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AC_FD_CC ++ # not using gcc ++ if test "$host_cpu" = ia64; then ++ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release ++ # chokes on -Wl,-G. The following line is correct: ++ shared_flag='-G' ++ else ++ if test "$aix_use_runtimelinking" = yes; then ++ shared_flag='${wl}-G' ++ else ++ shared_flag='${wl}-bM:SRE' ++ fi ++ fi + fi +- else +- echo "$progname: failed program was:" >&AC_FD_CC +- cat conftest.$ac_ext >&5 +- fi +- rm -f conftest* conftst* + +- # Do not use the global_symbol_pipe unless it works. +- if test "$pipe_works" = yes; then +- break +- else +- lt_cv_sys_global_symbol_pipe= +- fi +-done +-]) +-global_symbol_pipe="$lt_cv_sys_global_symbol_pipe" +-if test -z "$lt_cv_sys_global_symbol_pipe"; then +- global_symbol_to_cdecl= +- global_symbol_to_c_name_address= +-else +- global_symbol_to_cdecl="$lt_cv_global_symbol_to_cdecl" +- global_symbol_to_c_name_address="$lt_cv_global_symbol_to_c_name_address" +-fi +-if test -z "$global_symbol_pipe$global_symbol_to_cdec$global_symbol_to_c_name_address"; +-then +- AC_MSG_RESULT(failed) +-else +- AC_MSG_RESULT(ok) +-fi +-]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE ++ # It seems that -bexpall does not export symbols beginning with ++ # underscore (_), so it is better to generate a list of symbols to export. ++ _LT_AC_TAGVAR(always_export_symbols, $1)=yes ++ if test "$aix_use_runtimelinking" = yes; then ++ # Warning - without using the other runtime loading flags (-brtl), ++ # -berok will link without error, but may produce a broken library. ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' ++ # Determine the default libpath from the value encoded in an empty executable. ++ _LT_AC_SYS_LIBPATH_AIX ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + +-# _LT_AC_LIBTOOL_SYS_PATH_SEPARATOR +-# --------------------------------- +-AC_DEFUN([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR], +-[# Find the correct PATH separator. Usually this is `:', but +-# DJGPP uses `;' like DOS. +-if test "X${PATH_SEPARATOR+set}" != Xset; then +- UNAME=${UNAME-`uname 2>/dev/null`} +- case X$UNAME in +- *-DOS) lt_cv_sys_path_separator=';' ;; +- *) lt_cv_sys_path_separator=':' ;; +- esac +- PATH_SEPARATOR=$lt_cv_sys_path_separator +-fi +-])# _LT_AC_LIBTOOL_SYS_PATH_SEPARATOR ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" ++ else ++ if test "$host_cpu" = ia64; then ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$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" ++ else ++ # Determine the default libpath from the value encoded in an empty executable. ++ _LT_AC_SYS_LIBPATH_AIX ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" ++ # Warning - without using the other run time loading flags, ++ # -berok will link without error, but may produce a broken library. ++ _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' ++ # Exported symbols can be pulled into shared objects from archives ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience' ++ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes ++ # This is similar to how AIX traditionally builds its shared libraries. ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' ++ fi ++ fi ++ ;; + +-# _LT_AC_PROG_ECHO_BACKSLASH +-# -------------------------- +-# Add some code to the start of the generated configure script which +-# will find an echo command which doesn't interpret backslashes. +-AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH], +-[ifdef([AC_DIVERSION_NOTICE], [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], +- [AC_DIVERT_PUSH(NOTICE)]) +-_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR ++ beos*) ++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported ++ # Joseph Beckenbach says some releases of gcc ++ # support --undefined. This deserves some investigation. FIXME ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ else ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ fi ++ ;; + +-# Check that we are running under the correct shell. +-SHELL=${CONFIG_SHELL-/bin/sh} ++ chorus*) ++ case $cc_basename in ++ *) ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ esac ++ ;; + +-case X$ECHO in +-X*--fallback-echo) +- # Remove one level of quotation (which was required for Make). +- ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` ++ cygwin* | mingw* | pw32*) ++ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, ++ # as there is no search path for DLLs. ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported ++ _LT_AC_TAGVAR(always_export_symbols, $1)=no ++ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ++ ++ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$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' ++ # If the export-symbols file already is a .def file (1st line ++ # is EXPORTS), use it as is; otherwise, prepend... ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then ++ cp $export_symbols $output_objdir/$soname.def; ++ else ++ echo EXPORTS > $output_objdir/$soname.def; ++ cat $export_symbols >> $output_objdir/$soname.def; ++ fi~ ++ $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' ++ else ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ fi + ;; +-esac +- +-echo=${ECHO-echo} +-if test "X[$]1" = X--no-reexec; then +- # Discard the --no-reexec flag, and continue. +- shift +-elif test "X[$]1" = X--fallback-echo; then +- # Avoid inline document here, it may be left over +- : +-elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then +- # Yippee, $echo works! +- : +-else +- # Restart under the correct shell. +- exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} +-fi +- +-if test "X[$]1" = X--fallback-echo; then +- # used as fallback echo +- shift +- cat <&1 | $EGREP 'single_module' >/dev/null ; then ++ lt_int_apple_cc_single_mod=yes ++ fi ++ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' ++ else ++ _LT_AC_TAGVAR(archive_cmds, $1)='$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' ++ fi ++ _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' ++ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds ++ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ else ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "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~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ fi ++ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ else ++ case $cc_basename in ++ xlc*) ++ output_verbose_link_cmd='echo' ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' ++ _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' ++ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ ;; ++ *) ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ esac ++ fi ++ ;; + +-# The HP-UX ksh and POSIX shell print the target directory to stdout +-# if CDPATH is set. +-if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi ++ dgux*) ++ case $cc_basename in ++ ec++*) ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ ghcx*) ++ # Green Hills C++ Compiler ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ *) ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ esac ++ ;; ++ freebsd[[12]]*) ++ # C++ shared libraries reported to be fairly broken before switch to ELF ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ freebsd-elf*) ++ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ++ ;; ++ freebsd* | dragonfly*) ++ # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF ++ # conventions ++ _LT_AC_TAGVAR(ld_shlibs, $1)=yes ++ ;; ++ gnu*) ++ ;; ++ hpux9*) ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes ++ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, ++ # but as the default ++ # location of the library. ++ ++ case $cc_basename in ++ CC*) ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ aCC*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ # ++ # There doesn't appear to be a way to prevent this compiler from ++ # explicitly linking system object files so we need to strip them ++ # from the output so that they don't get included in the library ++ # dependencies. ++ 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; echo $list' ++ ;; ++ *) ++ if test "$GXX" = yes; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ++ else ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ fi ++ ;; ++ esac ++ ;; ++ hpux10*|hpux11*) ++ if test $with_gnu_ld = no; then ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + +-if test -z "$ECHO"; then +-if test "X${echo_test_string+set}" != Xset; then +-# find a string as large as possible, as long as the shell can cope with it +- for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do +- # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... +- if (echo_test_string="`eval $cmd`") 2>/dev/null && +- echo_test_string="`eval $cmd`" && +- (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null +- then +- break ++ case $host_cpu in ++ hppa*64*|ia64*) ;; ++ *) ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ++ ;; ++ esac + fi +- done +-fi +- +-if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && +- echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && +- test "X$echo_testing_string" = "X$echo_test_string"; then +- : +-else +- # The Solaris, AIX, and Digital Unix default echo programs unquote +- # backslashes. This makes it impossible to quote backslashes using +- # echo "$something" | sed 's/\\/\\\\/g' +- # +- # So, first we look for a working echo in the user's PATH. ++ case $host_cpu in ++ hppa*64*|ia64*) ++ _LT_AC_TAGVAR(hardcode_direct, $1)=no ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ ;; ++ *) ++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes ++ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, ++ # but as the default ++ # location of the library. ++ ;; ++ esac + +- IFS="${IFS= }"; save_ifs="$IFS"; IFS=$PATH_SEPARATOR +- for dir in $PATH /usr/ucb; do +- if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && +- test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && +- echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && +- test "X$echo_testing_string" = "X$echo_test_string"; then +- echo="$dir/echo" +- break ++ case $cc_basename in ++ CC*) ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ aCC*) ++ case $host_cpu in ++ hppa*64*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ++ ;; ++ ia64*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ++ ;; ++ *) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ++ ;; ++ esac ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ # ++ # There doesn't appear to be a way to prevent this compiler from ++ # explicitly linking system object files so we need to strip them ++ # from the output so that they don't get included in the library ++ # dependencies. ++ 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; echo $list' ++ ;; ++ *) ++ if test "$GXX" = yes; then ++ if test $with_gnu_ld = no; then ++ case $host_cpu in ++ hppa*64*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ++ ;; ++ ia64*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ++ ;; ++ *) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ++ ;; ++ esac ++ fi ++ else ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ fi ++ ;; ++ esac ++ ;; ++ interix[[3-9]]*) ++ _LT_AC_TAGVAR(hardcode_direct, $1)=no ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ++ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. ++ # Instead, shared libraries are loaded at an image base (0x10000000 by ++ # default) and relocated if they conflict, which is a slow very memory ++ # consuming and fragmenting process. To avoid this, we pick a random, ++ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link ++ # time. Moving up from 0x10000000 also allows more sbrk(2) space. ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='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' ++ ;; ++ irix5* | irix6*) ++ case $cc_basename in ++ CC*) ++ # SGI C++ ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' ++ ++ # Archives containing C++ object files must be created using ++ # "CC -ar", where "CC" is the IRIX C++ compiler. This is ++ # necessary to make sure instantiated templates are included ++ # in the archive. ++ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' ++ ;; ++ *) ++ if test "$GXX" = yes; then ++ if test "$with_gnu_ld" = no; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ else ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' ++ fi ++ fi ++ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ++ ;; ++ esac ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ++ ;; ++ linux* | k*bsd*-gnu) ++ case $cc_basename in ++ KCC*) ++ # Kuck and Associates, Inc. (KAI) C++ Compiler ++ ++ # KCC will only create a shared library if the output file ++ # ends with ".so" (or ".sl" for HP-UX), so rename the library ++ # to its proper name (with version) after linking. ++ _LT_AC_TAGVAR(archive_cmds, $1)='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' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='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' ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ # ++ # There doesn't appear to be a way to prevent this compiler from ++ # explicitly linking system object files so we need to strip them ++ # from the output so that they don't get included in the library ++ # dependencies. ++ 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; echo $list' ++ ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir' ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' ++ ++ # Archives containing C++ object files must be created using ++ # "CC -Bstatic", where "CC" is the KAI C++ compiler. ++ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ++ ;; ++ icpc*) ++ # Intel C++ ++ with_gnu_ld=yes ++ # version 8.0 and above of icpc choke on multiply defined symbols ++ # if we add $predep_objects and $postdep_objects, however 7.1 and ++ # earlier do not add the objects themselves. ++ case `$CC -V 2>&1` in ++ *"Version 7."*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ ;; ++ *) # Version 8.0 or newer ++ tmp_idyn= ++ case $host_cpu in ++ ia64*) tmp_idyn=' -i_dynamic';; ++ esac ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ ;; ++ esac ++ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ++ ;; ++ pgCC*) ++ # Portland Group C++ compiler ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$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' ++ ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ++ ;; ++ cxx*) ++ # Compaq C++ ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' ++ ++ runpath_var=LD_RUN_PATH ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ++ ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ # ++ # There doesn't appear to be a way to prevent this compiler from ++ # explicitly linking system object files so we need to strip them ++ # from the output so that they don't get included in the library ++ # dependencies. ++ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $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; echo $list' ++ ;; ++ *) ++ case `$CC -V 2>&1 | sed 5q` in ++ *Sun\ C*) ++ # Sun C++ 5.9 ++ _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs' ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ++ ++ # Not sure whether something based on ++ # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 ++ # would be better. ++ output_verbose_link_cmd='echo' ++ ++ # Archives containing C++ object files must be created using ++ # "CC -xar", where "CC" is the Sun C++ compiler. This is ++ # necessary to make sure instantiated templates are included ++ # in the archive. ++ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ++ ;; ++ esac ++ ;; ++ esac ++ ;; ++ lynxos*) ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ m88k*) ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ mvs*) ++ case $cc_basename in ++ cxx*) ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ *) ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ esac ++ ;; ++ netbsd* | netbsdelf*-gnu) ++ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' ++ wlarc= ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + fi +- done +- IFS="$save_ifs" +- +- if test "X$echo" = Xecho; then +- # We didn't find a better echo, so look for alternatives. +- if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && +- echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && +- test "X$echo_testing_string" = "X$echo_test_string"; then +- # This shell has a builtin print -r that does the trick. +- echo='print -r' +- elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && +- test "X$CONFIG_SHELL" != X/bin/ksh; then +- # If we have ksh, try running configure again with it. +- ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} +- export ORIGINAL_CONFIG_SHELL +- CONFIG_SHELL=/bin/ksh +- export CONFIG_SHELL +- exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} +- else +- # Try using printf. +- echo='printf %s\n' +- if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && +- echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && +- test "X$echo_testing_string" = "X$echo_test_string"; then +- # Cool, printf works +- : +- elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && +- test "X$echo_testing_string" = 'X\t' && +- echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && +- test "X$echo_testing_string" = "X$echo_test_string"; then +- CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL +- export CONFIG_SHELL +- SHELL="$CONFIG_SHELL" +- export SHELL +- echo="$CONFIG_SHELL [$]0 --fallback-echo" +- elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && +- test "X$echo_testing_string" = 'X\t' && +- echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && +- test "X$echo_testing_string" = "X$echo_test_string"; then +- echo="$CONFIG_SHELL [$]0 --fallback-echo" +- else +- # maybe with a smaller string... +- prev=: ++ # Workaround some broken pre-1.5 toolchains ++ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ++ ;; ++ openbsd2*) ++ # C++ shared libraries are fairly broken ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ openbsd*) ++ if test -f /usr/libexec/ld.so; then ++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ++ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' ++ fi ++ output_verbose_link_cmd='echo' ++ else ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ fi ++ ;; ++ osf3*) ++ case $cc_basename in ++ KCC*) ++ # Kuck and Associates, Inc. (KAI) C++ Compiler ++ ++ # KCC will only create a shared library if the output file ++ # ends with ".so" (or ".sl" for HP-UX), so rename the library ++ # to its proper name (with version) after linking. ++ _LT_AC_TAGVAR(archive_cmds, $1)='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' ++ ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ++ ++ # Archives containing C++ object files must be created using ++ # "CC -Bstatic", where "CC" is the KAI C++ compiler. ++ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + +- for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do +- if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null +- then +- break +- fi +- prev="$cmd" +- done ++ ;; ++ RCC*) ++ # Rational C++ 2.4.1 ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ cxx*) ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' ++ ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ++ ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ # ++ # There doesn't appear to be a way to prevent this compiler from ++ # explicitly linking system object files so we need to strip them ++ # from the output so that they don't get included in the library ++ # dependencies. ++ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $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; echo $list' ++ ;; ++ *) ++ if test "$GXX" = yes && test "$with_gnu_ld" = no; then ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ++ ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + +- if test "$prev" != 'sed 50q "[$]0"'; then +- echo_test_string=`eval $prev` +- export echo_test_string +- exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} + else +- # Oops. We lost completely, so just stick with echo. +- echo=echo ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi +- fi +- fi +- fi +-fi +-fi ++ ;; ++ esac ++ ;; ++ osf4* | osf5*) ++ case $cc_basename in ++ KCC*) ++ # Kuck and Associates, Inc. (KAI) C++ Compiler ++ ++ # KCC will only create a shared library if the output file ++ # ends with ".so" (or ".sl" for HP-UX), so rename the library ++ # to its proper name (with version) after linking. ++ _LT_AC_TAGVAR(archive_cmds, $1)='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' ++ ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ++ ++ # Archives containing C++ object files must be created using ++ # the KAI C++ compiler. ++ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ++ ;; ++ RCC*) ++ # Rational C++ 2.4.1 ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ cxx*) ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ ++ echo "-hidden">> $lib.exp~ ++ $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~ ++ $rm $lib.exp' ++ ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ++ ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ # ++ # There doesn't appear to be a way to prevent this compiler from ++ # explicitly linking system object files so we need to strip them ++ # from the output so that they don't get included in the library ++ # dependencies. ++ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $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; echo $list' ++ ;; ++ *) ++ if test "$GXX" = yes && test "$with_gnu_ld" = no; then ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ++ ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + +-# Copy echo and quote the copy suitably for passing to libtool from +-# the Makefile, instead of quoting the original, which is used later. +-ECHO=$echo +-if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then +- ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" +-fi ++ else ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ fi ++ ;; ++ esac ++ ;; ++ psos*) ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ sunos4*) ++ case $cc_basename in ++ CC*) ++ # Sun C++ 4.x ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ lcc*) ++ # Lucid ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ *) ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ esac ++ ;; ++ solaris*) ++ case $cc_basename in ++ CC*) ++ # Sun C++ 4.2, 5.x and Centerline C++ ++ _LT_AC_TAGVAR(archive_cmds_need_lc,$1)=yes ++ _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs' ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ ++ $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' ++ ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ case $host_os in ++ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; ++ *) ++ # The compiler driver will combine and reorder linker options, ++ # but understands `-z linker_flag'. ++ # Supported since Solaris 2.6 (maybe 2.5.1?) ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ++ ;; ++ esac ++ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + +-AC_SUBST(ECHO) +-AC_DIVERT_POP +-])# _LT_AC_PROG_ECHO_BACKSLASH ++ output_verbose_link_cmd='echo' + +-# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +-# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +-# ------------------------------------------------------------------ +-AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF], +-[if test "$cross_compiling" = yes; then : +- [$4] +-else +- AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl +- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 +- lt_status=$lt_dlunknown +- cat > conftest.$ac_ext < +-#endif ++ # The C++ compiler must be used to create the archive. ++ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ++ ;; ++ *) ++ # GNU C++ compiler with Solaris linker ++ if test "$GXX" = yes && test "$with_gnu_ld" = no; then ++ _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' ++ if $CC --version | grep -v '^2\.7' > /dev/null; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ ++ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' ++ ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" ++ else ++ # g++ 2.7 appears to require `-G' NOT `-shared' on this ++ # platform. ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ ++ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' ++ ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" ++ fi + +-#include ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' ++ case $host_os in ++ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; ++ *) ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ++ ;; ++ esac ++ fi ++ ;; ++ esac ++ ;; ++ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) ++ _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' ++ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ runpath_var='LD_RUN_PATH' + +-#ifdef RTLD_GLOBAL +-# define LT_DLGLOBAL RTLD_GLOBAL +-#else +-# ifdef DL_GLOBAL +-# define LT_DLGLOBAL DL_GLOBAL +-# else +-# define LT_DLGLOBAL 0 +-# endif +-#endif ++ case $cc_basename in ++ CC*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ *) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ esac ++ ;; ++ sysv5* | sco3.2v5* | sco5v6*) ++ # Note: We can NOT use -z defs as we might desire, because we do not ++ # link with -lc, and that would cause any symbols used from libc to ++ # always be unresolved, which means just about no library would ++ # ever link correctly. If we're not using GNU ld we use -z text ++ # though, which does catch some bad symbols but isn't as heavy-handed ++ # as -z defs. ++ # For security reasons, it is highly recommended that you always ++ # use absolute paths for naming shared libraries, and exclude the ++ # DT_RUNPATH tag from executables and libraries. But doing so ++ # requires that you compile everything twice, which is a pain. ++ # So that behaviour is only enabled if SCOABSPATH is set to a ++ # non-empty value in the environment. Most likely only useful for ++ # creating official distributions of packages. ++ # This is a hack until libtool officially supports absolute path ++ # names for shared libraries. ++ _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' ++ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' ++ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' ++ runpath_var='LD_RUN_PATH' + +-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we +- find out it does not work in some platform. */ +-#ifndef LT_DLLAZY_OR_NOW +-# ifdef RTLD_LAZY +-# define LT_DLLAZY_OR_NOW RTLD_LAZY +-# else +-# ifdef DL_LAZY +-# define LT_DLLAZY_OR_NOW DL_LAZY +-# else +-# ifdef RTLD_NOW +-# define LT_DLLAZY_OR_NOW RTLD_NOW +-# else +-# ifdef DL_NOW +-# define LT_DLLAZY_OR_NOW DL_NOW +-# else +-# define LT_DLLAZY_OR_NOW 0 +-# endif +-# endif +-# endif +-# endif +-#endif ++ case $cc_basename in ++ CC*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ *) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ esac ++ ;; ++ tandem*) ++ case $cc_basename in ++ NCC*) ++ # NonStop-UX NCC 3.20 ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ *) ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ esac ++ ;; ++ vxworks*) ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ *) ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++esac ++AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) ++test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + +-#ifdef __cplusplus +-extern "C" void exit (int); +-#endif ++_LT_AC_TAGVAR(GCC, $1)="$GXX" ++_LT_AC_TAGVAR(LD, $1)="$LD" + +-void fnord() { int i=42;} +-int main () ++AC_LIBTOOL_POSTDEP_PREDEP($1) ++AC_LIBTOOL_PROG_COMPILER_PIC($1) ++AC_LIBTOOL_PROG_CC_C_O($1) ++AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) ++AC_LIBTOOL_PROG_LD_SHLIBS($1) ++AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) ++AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) ++ ++AC_LIBTOOL_CONFIG($1) ++ ++AC_LANG_POP ++CC=$lt_save_CC ++LDCXX=$LD ++LD=$lt_save_LD ++GCC=$lt_save_GCC ++with_gnu_ldcxx=$with_gnu_ld ++with_gnu_ld=$lt_save_with_gnu_ld ++lt_cv_path_LDCXX=$lt_cv_path_LD ++lt_cv_path_LD=$lt_save_path_LD ++lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld ++lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld ++])# AC_LIBTOOL_LANG_CXX_CONFIG ++ ++# AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME]) ++# ------------------------------------ ++# Figure out "hidden" library dependencies from verbose ++# compiler output when linking a shared library. ++# Parse the compiler output and extract the necessary ++# objects, libraries and library flags. ++AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP],[ ++dnl we can't use the lt_simple_compile_test_code here, ++dnl because it contains code intended for an executable, ++dnl not a library. It's possible we should let each ++dnl tag define a new lt_????_link_test_code variable, ++dnl but it's only used here... ++ifelse([$1],[],[cat > conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext </dev/null; then +- (./conftest; exit; ) 2>/dev/null +- lt_status=$? +- case x$lt_status in +- x$lt_dlno_uscore) $1 ;; +- x$lt_dlneed_uscore) $2 ;; +- x$lt_unknown|x*) $3 ;; + esac +- else : +- # compilation failed +- $3 +- fi +-fi +-rm -fr conftest* +-])# _LT_AC_TRY_DLOPEN_SELF ++ done + +-# AC_LIBTOOL_DLOPEN_SELF +-# ------------------- +-AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], +-[if test "x$enable_dlopen" != xyes; then +- enable_dlopen=unknown +- enable_dlopen_self=unknown +- enable_dlopen_self_static=unknown ++ # Clean up. ++ rm -f a.out a.exe + else +- lt_cv_dlopen=no +- lt_cv_dlopen_libs= ++ echo "libtool.m4: error: problem compiling $1 test program" ++fi + +- case $host_os in +- beos*) +- lt_cv_dlopen="load_add_on" +- lt_cv_dlopen_libs= +- lt_cv_dlopen_self=yes ++$rm -f confest.$objext ++ ++# PORTME: override above test on systems where it is broken ++ifelse([$1],[CXX], ++[case $host_os in ++interix[[3-9]]*) ++ # Interix 3.5 installs completely hosed .la files for C++, so rather than ++ # hack all around it, let's just trust "g++" to DTRT. ++ _LT_AC_TAGVAR(predep_objects,$1)= ++ _LT_AC_TAGVAR(postdep_objects,$1)= ++ _LT_AC_TAGVAR(postdeps,$1)= ++ ;; ++ ++linux*) ++ case `$CC -V 2>&1 | sed 5q` in ++ *Sun\ C*) ++ # Sun C++ 5.9 ++ # ++ # The more standards-conforming stlport4 library is ++ # incompatible with the Cstd library. Avoid specifying ++ # it if it's in CXXFLAGS. Ignore libCrun as ++ # -library=stlport4 depends on it. ++ case " $CXX $CXXFLAGS " in ++ *" -library=stlport4 "*) ++ solaris_use_stlport4=yes ++ ;; ++ esac ++ if test "$solaris_use_stlport4" != yes; then ++ _LT_AC_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' ++ fi + ;; ++ esac ++ ;; + +- cygwin* | mingw* | pw32*) +- lt_cv_dlopen="LoadLibrary" +- lt_cv_dlopen_libs= +- ;; ++solaris*) ++ case $cc_basename in ++ CC*) ++ # The more standards-conforming stlport4 library is ++ # incompatible with the Cstd library. Avoid specifying ++ # it if it's in CXXFLAGS. Ignore libCrun as ++ # -library=stlport4 depends on it. ++ case " $CXX $CXXFLAGS " in ++ *" -library=stlport4 "*) ++ solaris_use_stlport4=yes ++ ;; ++ esac + +- *) +- AC_CHECK_FUNC([shl_load], +- [lt_cv_dlopen="shl_load"], +- [AC_CHECK_LIB([dld], [shl_load], +- [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], +- [AC_CHECK_FUNC([dlopen], +- [lt_cv_dlopen="dlopen"], +- [AC_CHECK_LIB([dl], [dlopen], +- [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], +- [AC_CHECK_LIB([svld], [dlopen], +- [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], +- [AC_CHECK_LIB([dld], [dld_link], +- [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) +- ]) +- ]) +- ]) +- ]) +- ]) ++ # Adding this requires a known-good setup of shared libraries for ++ # Sun compiler versions before 5.6, else PIC objects from an old ++ # archive will be linked into the output, leading to subtle bugs. ++ if test "$solaris_use_stlport4" != yes; then ++ _LT_AC_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' ++ fi + ;; + esac ++ ;; ++esac ++]) + +- if test "x$lt_cv_dlopen" != xno; then +- enable_dlopen=yes +- else +- enable_dlopen=no ++case " $_LT_AC_TAGVAR(postdeps, $1) " in ++*" -lc "*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;; ++esac ++])# AC_LIBTOOL_POSTDEP_PREDEP ++ ++# AC_LIBTOOL_LANG_F77_CONFIG ++# -------------------------- ++# Ensure that the configuration vars for the C compiler are ++# suitably defined. Those variables are subsequently used by ++# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. ++AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG], [_LT_AC_LANG_F77_CONFIG(F77)]) ++AC_DEFUN([_LT_AC_LANG_F77_CONFIG], ++[AC_REQUIRE([AC_PROG_F77]) ++AC_LANG_PUSH(Fortran 77) ++ ++_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ++_LT_AC_TAGVAR(allow_undefined_flag, $1)= ++_LT_AC_TAGVAR(always_export_symbols, $1)=no ++_LT_AC_TAGVAR(archive_expsym_cmds, $1)= ++_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= ++_LT_AC_TAGVAR(hardcode_direct, $1)=no ++_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= ++_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= ++_LT_AC_TAGVAR(hardcode_libdir_separator, $1)= ++_LT_AC_TAGVAR(hardcode_minus_L, $1)=no ++_LT_AC_TAGVAR(hardcode_automatic, $1)=no ++_LT_AC_TAGVAR(module_cmds, $1)= ++_LT_AC_TAGVAR(module_expsym_cmds, $1)= ++_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown ++_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds ++_LT_AC_TAGVAR(no_undefined_flag, $1)= ++_LT_AC_TAGVAR(whole_archive_flag_spec, $1)= ++_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no ++ ++# Source file extension for f77 test sources. ++ac_ext=f ++ ++# Object file extension for compiled f77 test sources. ++objext=o ++_LT_AC_TAGVAR(objext, $1)=$objext ++ ++# Code to be used in simple compile tests ++lt_simple_compile_test_code="\ ++ subroutine t ++ return ++ end ++" ++ ++# Code to be used in simple link tests ++lt_simple_link_test_code="\ ++ program t ++ end ++" ++ ++# ltmain only uses $CC for tagged configurations so make sure $CC is set. ++_LT_AC_SYS_COMPILER ++ ++# save warnings/boilerplate of simple test code ++_LT_COMPILER_BOILERPLATE ++_LT_LINKER_BOILERPLATE ++ ++# Allow CC to be a program name with arguments. ++lt_save_CC="$CC" ++CC=${F77-"f77"} ++compiler=$CC ++_LT_AC_TAGVAR(compiler, $1)=$CC ++_LT_CC_BASENAME([$compiler]) ++ ++AC_MSG_CHECKING([if libtool supports shared libraries]) ++AC_MSG_RESULT([$can_build_shared]) ++ ++AC_MSG_CHECKING([whether to build shared libraries]) ++test "$can_build_shared" = "no" && enable_shared=no ++ ++# On AIX, shared libraries and static libraries use the same namespace, and ++# are all built from PIC. ++case $host_os in ++aix3*) ++ test "$enable_shared" = yes && enable_static=no ++ if test -n "$RANLIB"; then ++ archive_cmds="$archive_cmds~\$RANLIB \$lib" ++ postinstall_cmds='$RANLIB $lib' + fi ++ ;; ++aix4* | aix5*) ++ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then ++ test "$enable_shared" = yes && enable_static=no ++ fi ++ ;; ++esac ++AC_MSG_RESULT([$enable_shared]) ++ ++AC_MSG_CHECKING([whether to build static libraries]) ++# Make sure either enable_shared or enable_static is yes. ++test "$enable_shared" = yes || enable_static=yes ++AC_MSG_RESULT([$enable_static]) ++ ++_LT_AC_TAGVAR(GCC, $1)="$G77" ++_LT_AC_TAGVAR(LD, $1)="$LD" ++ ++AC_LIBTOOL_PROG_COMPILER_PIC($1) ++AC_LIBTOOL_PROG_CC_C_O($1) ++AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) ++AC_LIBTOOL_PROG_LD_SHLIBS($1) ++AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) ++AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) ++ ++AC_LIBTOOL_CONFIG($1) + +- case $lt_cv_dlopen in +- dlopen) +- save_CPPFLAGS="$CPPFLAGS" +- AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl +- test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" ++AC_LANG_POP ++CC="$lt_save_CC" ++])# AC_LIBTOOL_LANG_F77_CONFIG + +- save_LDFLAGS="$LDFLAGS" +- eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + +- save_LIBS="$LIBS" +- LIBS="$lt_cv_dlopen_libs $LIBS" ++# AC_LIBTOOL_LANG_GCJ_CONFIG ++# -------------------------- ++# Ensure that the configuration vars for the C compiler are ++# suitably defined. Those variables are subsequently used by ++# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. ++AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG], [_LT_AC_LANG_GCJ_CONFIG(GCJ)]) ++AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG], ++[AC_LANG_SAVE ++ ++# Source file extension for Java test sources. ++ac_ext=java ++ ++# Object file extension for compiled Java test sources. ++objext=o ++_LT_AC_TAGVAR(objext, $1)=$objext ++ ++# Code to be used in simple compile tests ++lt_simple_compile_test_code="class foo {}" ++ ++# Code to be used in simple link tests ++lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' ++ ++# ltmain only uses $CC for tagged configurations so make sure $CC is set. ++_LT_AC_SYS_COMPILER ++ ++# save warnings/boilerplate of simple test code ++_LT_COMPILER_BOILERPLATE ++_LT_LINKER_BOILERPLATE + +- AC_CACHE_CHECK([whether a program can dlopen itself], +- lt_cv_dlopen_self, [dnl +- _LT_AC_TRY_DLOPEN_SELF( +- lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, +- lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) +- ]) ++# Allow CC to be a program name with arguments. ++lt_save_CC="$CC" ++CC=${GCJ-"gcj"} ++compiler=$CC ++_LT_AC_TAGVAR(compiler, $1)=$CC ++_LT_CC_BASENAME([$compiler]) ++ ++# GCJ did not exist at the time GCC didn't implicitly link libc in. ++_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ++ ++_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds ++ ++AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) ++AC_LIBTOOL_PROG_COMPILER_PIC($1) ++AC_LIBTOOL_PROG_CC_C_O($1) ++AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) ++AC_LIBTOOL_PROG_LD_SHLIBS($1) ++AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) ++AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) ++ ++AC_LIBTOOL_CONFIG($1) ++ ++AC_LANG_RESTORE ++CC="$lt_save_CC" ++])# AC_LIBTOOL_LANG_GCJ_CONFIG ++ ++ ++# AC_LIBTOOL_LANG_RC_CONFIG ++# ------------------------- ++# Ensure that the configuration vars for the Windows resource compiler are ++# suitably defined. Those variables are subsequently used by ++# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. ++AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG], [_LT_AC_LANG_RC_CONFIG(RC)]) ++AC_DEFUN([_LT_AC_LANG_RC_CONFIG], ++[AC_LANG_SAVE ++ ++# Source file extension for RC test sources. ++ac_ext=rc ++ ++# Object file extension for compiled RC test sources. ++objext=o ++_LT_AC_TAGVAR(objext, $1)=$objext ++ ++# Code to be used in simple compile tests ++lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' ++ ++# Code to be used in simple link tests ++lt_simple_link_test_code="$lt_simple_compile_test_code" ++ ++# ltmain only uses $CC for tagged configurations so make sure $CC is set. ++_LT_AC_SYS_COMPILER ++ ++# save warnings/boilerplate of simple test code ++_LT_COMPILER_BOILERPLATE ++_LT_LINKER_BOILERPLATE + +- if test "x$lt_cv_dlopen_self" = xyes; then +- LDFLAGS="$LDFLAGS $link_static_flag" +- AC_CACHE_CHECK([whether a statically linked program can dlopen itself], +- lt_cv_dlopen_self_static, [dnl +- _LT_AC_TRY_DLOPEN_SELF( +- lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, +- lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) +- ]) +- fi ++# Allow CC to be a program name with arguments. ++lt_save_CC="$CC" ++CC=${RC-"windres"} ++compiler=$CC ++_LT_AC_TAGVAR(compiler, $1)=$CC ++_LT_CC_BASENAME([$compiler]) ++_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes ++ ++AC_LIBTOOL_CONFIG($1) ++ ++AC_LANG_RESTORE ++CC="$lt_save_CC" ++])# AC_LIBTOOL_LANG_RC_CONFIG ++ ++ ++# AC_LIBTOOL_CONFIG([TAGNAME]) ++# ---------------------------- ++# If TAGNAME is not passed, then create an initial libtool script ++# with a default configuration from the untagged config vars. Otherwise ++# add code to config.status for appending the configuration named by ++# TAGNAME from the matching tagged config vars. ++AC_DEFUN([AC_LIBTOOL_CONFIG], ++[# The else clause should only fire when bootstrapping the ++# libtool distribution, otherwise you forgot to ship ltmain.sh ++# with your package, and you will get complaints that there are ++# no rules to generate ltmain.sh. ++if test -f "$ltmain"; then ++ # See if we are running on zsh, and set the options which allow our commands through ++ # without removal of \ escapes. ++ if test -n "${ZSH_VERSION+set}" ; then ++ setopt NO_GLOB_SUBST ++ fi ++ # Now quote all the things that may contain metacharacters while being ++ # careful not to overquote the AC_SUBSTed values. We take copies of the ++ # variables and quote the copies for generation of the libtool script. ++ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ ++ SED SHELL STRIP \ ++ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ ++ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ ++ deplibs_check_method reload_flag reload_cmds need_locks \ ++ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ ++ lt_cv_sys_global_symbol_to_c_name_address \ ++ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ ++ old_postinstall_cmds old_postuninstall_cmds \ ++ _LT_AC_TAGVAR(compiler, $1) \ ++ _LT_AC_TAGVAR(CC, $1) \ ++ _LT_AC_TAGVAR(LD, $1) \ ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1) \ ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1) \ ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1) \ ++ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) \ ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1) \ ++ _LT_AC_TAGVAR(thread_safe_flag_spec, $1) \ ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1) \ ++ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) \ ++ _LT_AC_TAGVAR(old_archive_cmds, $1) \ ++ _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) \ ++ _LT_AC_TAGVAR(predep_objects, $1) \ ++ _LT_AC_TAGVAR(postdep_objects, $1) \ ++ _LT_AC_TAGVAR(predeps, $1) \ ++ _LT_AC_TAGVAR(postdeps, $1) \ ++ _LT_AC_TAGVAR(compiler_lib_search_path, $1) \ ++ _LT_AC_TAGVAR(archive_cmds, $1) \ ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1) \ ++ _LT_AC_TAGVAR(postinstall_cmds, $1) \ ++ _LT_AC_TAGVAR(postuninstall_cmds, $1) \ ++ _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) \ ++ _LT_AC_TAGVAR(allow_undefined_flag, $1) \ ++ _LT_AC_TAGVAR(no_undefined_flag, $1) \ ++ _LT_AC_TAGVAR(export_symbols_cmds, $1) \ ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) \ ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) \ ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1) \ ++ _LT_AC_TAGVAR(hardcode_automatic, $1) \ ++ _LT_AC_TAGVAR(module_cmds, $1) \ ++ _LT_AC_TAGVAR(module_expsym_cmds, $1) \ ++ _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) \ ++ _LT_AC_TAGVAR(fix_srcfile_path, $1) \ ++ _LT_AC_TAGVAR(exclude_expsyms, $1) \ ++ _LT_AC_TAGVAR(include_expsyms, $1); do + +- CPPFLAGS="$save_CPPFLAGS" +- LDFLAGS="$save_LDFLAGS" +- LIBS="$save_LIBS" +- ;; +- esac ++ case $var in ++ _LT_AC_TAGVAR(old_archive_cmds, $1) | \ ++ _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) | \ ++ _LT_AC_TAGVAR(archive_cmds, $1) | \ ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1) | \ ++ _LT_AC_TAGVAR(module_cmds, $1) | \ ++ _LT_AC_TAGVAR(module_expsym_cmds, $1) | \ ++ _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) | \ ++ _LT_AC_TAGVAR(export_symbols_cmds, $1) | \ ++ extract_expsyms_cmds | reload_cmds | finish_cmds | \ ++ postinstall_cmds | postuninstall_cmds | \ ++ old_postinstall_cmds | old_postuninstall_cmds | \ ++ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) ++ # Double-quote double-evaled strings. ++ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ++ ;; ++ *) ++ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ++ ;; ++ esac ++ done + +- case $lt_cv_dlopen_self in +- yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; +- *) enable_dlopen_self=unknown ;; ++ case $lt_echo in ++ *'\[$]0 --fallback-echo"') ++ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\[$]0 --fallback-echo"[$]/[$]0 --fallback-echo"/'` ++ ;; + esac + +- case $lt_cv_dlopen_self_static in +- yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; +- *) enable_dlopen_self_static=unknown ;; +- esac +-fi +-])# AC_LIBTOOL_DLOPEN_SELF ++ifelse([$1], [], ++ [cfgfile="${ofile}T" ++ trap "$rm \"$cfgfile\"; exit 1" 1 2 15 ++ $rm -f "$cfgfile" ++ AC_MSG_NOTICE([creating $ofile])], ++ [cfgfile="$ofile"]) ++ ++ cat <<__EOF__ >> "$cfgfile" ++ifelse([$1], [], ++[#! $SHELL + +-AC_DEFUN([_LT_AC_LTCONFIG_HACK], +-[AC_REQUIRE([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])dnl +-# Sed substitution that helps us do robust quoting. It backslashifies +-# metacharacters that are still active within double-quoted strings. +-Xsed='sed -e s/^X//' +-sed_quote_subst='s/\([[\\"\\`$\\\\]]\)/\\\1/g' ++# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. ++# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) ++# NOTE: Changes made to this file will be lost: look at ltmain.sh. ++# ++# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 ++# Free Software Foundation, Inc. ++# ++# This file is part of GNU Libtool: ++# Originally by Gordon Matzigkeit , 1996 ++# ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 2 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, but ++# WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++# General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program; if not, write to the Free Software ++# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ++# ++# As a special exception to the GNU General Public License, if you ++# distribute this file as part of a program that contains a ++# configuration script generated by Autoconf, you may include it under ++# the same distribution terms that you use for the rest of that program. + +-# Same as above, but do not quote variable references. +-double_quote_subst='s/\([[\\"\\`\\\\]]\)/\\\1/g' ++# A sed program that does not truncate output. ++SED=$lt_SED + +-# Sed substitution to delay expansion of an escaped shell variable in a +-# double_quote_subst'ed string. +-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' ++# Sed that helps us avoid accidentally triggering echo(1) options like -n. ++Xsed="$SED -e 1s/^X//" + +-# Constants: +-rm="rm -f" ++# The HP-UX ksh and POSIX shell print the target directory to stdout ++# if CDPATH is set. ++(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +-# Global variables: +-default_ofile=libtool +-can_build_shared=yes ++# The names of the tagged configurations supported by this script. ++available_tags= + +-# All known linkers require a `.a' archive for static linking (except M$VC, +-# which needs '.lib'). +-libext=a +-ltmain="$ac_aux_dir/ltmain.sh" +-ofile="$default_ofile" +-with_gnu_ld="$lt_cv_prog_gnu_ld" +-need_locks="$enable_libtool_lock" ++# ### BEGIN LIBTOOL CONFIG], ++[# ### BEGIN LIBTOOL TAG CONFIG: $tagname]) + +-old_CC="$CC" +-old_CFLAGS="$CFLAGS" ++# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +-# Set sane defaults for various variables +-test -z "$AR" && AR=ar +-test -z "$AR_FLAGS" && AR_FLAGS=cru +-test -z "$AS" && AS=as +-test -z "$CC" && CC=cc +-test -z "$DLLTOOL" && DLLTOOL=dlltool +-test -z "$LD" && LD=ld +-test -z "$LN_S" && LN_S="ln -s" +-test -z "$MAGIC_CMD" && MAGIC_CMD=file +-test -z "$NM" && NM=nm +-test -z "$OBJDUMP" && OBJDUMP=objdump +-test -z "$RANLIB" && RANLIB=: +-test -z "$STRIP" && STRIP=: +-test -z "$ac_objext" && ac_objext=o ++# Shell to use when invoking shell scripts. ++SHELL=$lt_SHELL + +-if test x"$host" != x"$build"; then +- ac_tool_prefix=${host_alias}- +-else +- ac_tool_prefix= +-fi ++# Whether or not to build shared libraries. ++build_libtool_libs=$enable_shared + +-# Transform linux* to *-*-linux-gnu*, to support old configure scripts. +-case $host_os in +-linux-gnu*) ;; +-linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` +-esac ++# Whether or not to build static libraries. ++build_old_libs=$enable_static + +-case $host_os in +-aix3*) +- # AIX sometimes has problems with the GCC collect2 program. For some +- # reason, if we set the COLLECT_NAMES environment variable, the problems +- # vanish in a puff of smoke. +- if test "X${COLLECT_NAMES+set}" != Xset; then +- COLLECT_NAMES= +- export COLLECT_NAMES +- fi +- ;; +-esac ++# Whether or not to add -lc for building shared libraries. ++build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1) + +-# Determine commands to create old-style static archives. +-old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' +-old_postinstall_cmds='chmod 644 $oldlib' +-old_postuninstall_cmds= ++# Whether or not to disallow shared libs when runtime libs are static ++allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) + +-if test -n "$RANLIB"; then +- case $host_os in +- openbsd*) +- old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" +- ;; +- *) +- old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" +- ;; +- esac +- old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +-fi ++# Whether or not to optimize for fast installation. ++fast_install=$enable_fast_install + +-# Allow CC to be a program name with arguments. +-set dummy $CC +-compiler="[$]2" ++# The host system. ++host_alias=$host_alias ++host=$host ++host_os=$host_os + +-AC_MSG_CHECKING([for objdir]) +-rm -f .libs 2>/dev/null +-mkdir .libs 2>/dev/null +-if test -d .libs; then +- objdir=.libs +-else +- # MS-DOS does not allow filenames that begin with a dot. +- objdir=_libs +-fi +-rmdir .libs 2>/dev/null +-AC_MSG_RESULT($objdir) ++# The build system. ++build_alias=$build_alias ++build=$build ++build_os=$build_os + ++# An echo program that does not interpret backslashes. ++echo=$lt_echo + +-AC_ARG_WITH(pic, +-[ --with-pic try to use only PIC/non-PIC objects [default=use both]], +-pic_mode="$withval", pic_mode=default) +-test -z "$pic_mode" && pic_mode=default ++# The archiver. ++AR=$lt_AR ++AR_FLAGS=$lt_AR_FLAGS + +-# We assume here that the value for lt_cv_prog_cc_pic will not be cached +-# in isolation, and that seeing it set (from the cache) indicates that +-# the associated values are set (in the cache) correctly too. +-AC_MSG_CHECKING([for $compiler option to produce PIC]) +-AC_CACHE_VAL(lt_cv_prog_cc_pic, +-[ lt_cv_prog_cc_pic= +- lt_cv_prog_cc_shlib= +- lt_cv_prog_cc_wl= +- lt_cv_prog_cc_static= +- lt_cv_prog_cc_no_builtin= +- lt_cv_prog_cc_can_build_shared=$can_build_shared ++# A C compiler. ++LTCC=$lt_LTCC + +- if test "$GCC" = yes; then +- lt_cv_prog_cc_wl='-Wl,' +- lt_cv_prog_cc_static='-static' ++# LTCC compiler flags. ++LTCFLAGS=$lt_LTCFLAGS + +- case $host_os in +- aix*) +- # Below there is a dirty hack to force normal static linking with -ldl +- # The problem is because libdl dynamically linked with both libc and +- # libC (AIX C++ library), which obviously doesn't included in libraries +- # list by gcc. This cause undefined symbols with -static flags. +- # This hack allows C programs to be linked with "-static -ldl", but +- # not sure about C++ programs. +- lt_cv_prog_cc_static="$lt_cv_prog_cc_static ${lt_cv_prog_cc_wl}-lC" +- ;; +- amigaos*) +- # FIXME: we need at least 68020 code to build shared libraries, but +- # adding the `-m68020' flag to GCC prevents building anything better, +- # like `-m68040'. +- lt_cv_prog_cc_pic='-m68020 -resident32 -malways-restore-a4' +- ;; +- beos* | irix5* | irix6* | osf3* | osf4* | osf5*) +- # PIC is the default for these OSes. +- ;; +- darwin* | rhapsody*) +- # PIC is the default on this platform +- # Common symbols not allowed in MH_DYLIB files +- lt_cv_prog_cc_pic='-fno-common' +- ;; +- cygwin* | mingw* | pw32* | os2*) +- # This hack is so that the source file can tell whether it is being +- # built for inclusion in a dll (and should export symbols for example). +- lt_cv_prog_cc_pic='-DDLL_EXPORT' +- ;; +- sysv4*MP*) +- if test -d /usr/nec; then +- lt_cv_prog_cc_pic=-Kconform_pic +- fi +- ;; +- *) +- lt_cv_prog_cc_pic='-fPIC' +- ;; +- esac +- else +- # PORTME Check for PIC flags for the system compiler. +- case $host_os in +- aix3* | aix4* | aix5*) +- lt_cv_prog_cc_wl='-Wl,' +- # All AIX code is PIC. +- if test "$host_cpu" = ia64; then +- # AIX 5 now supports IA64 processor +- lt_cv_prog_cc_static='-Bstatic' +- else +- lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp' +- fi +- ;; ++# A language-specific compiler. ++CC=$lt_[]_LT_AC_TAGVAR(compiler, $1) + +- hpux9* | hpux10* | hpux11*) +- # Is there a better lt_cv_prog_cc_static that works with the bundled CC? +- lt_cv_prog_cc_wl='-Wl,' +- lt_cv_prog_cc_static="${lt_cv_prog_cc_wl}-a ${lt_cv_prog_cc_wl}archive" +- lt_cv_prog_cc_pic='+Z' +- ;; ++# Is the compiler the GNU C compiler? ++with_gcc=$_LT_AC_TAGVAR(GCC, $1) + +- irix5* | irix6*) +- lt_cv_prog_cc_wl='-Wl,' +- lt_cv_prog_cc_static='-non_shared' +- # PIC (with -KPIC) is the default. +- ;; ++# An ERE matcher. ++EGREP=$lt_EGREP + +- cygwin* | mingw* | pw32* | os2*) +- # This hack is so that the source file can tell whether it is being +- # built for inclusion in a dll (and should export symbols for example). +- lt_cv_prog_cc_pic='-DDLL_EXPORT' +- ;; ++# The linker used to build libraries. ++LD=$lt_[]_LT_AC_TAGVAR(LD, $1) + +- newsos6) +- lt_cv_prog_cc_pic='-KPIC' +- lt_cv_prog_cc_static='-Bstatic' +- ;; ++# Whether we need hard or soft links. ++LN_S=$lt_LN_S + +- osf3* | osf4* | osf5*) +- # All OSF/1 code is PIC. +- lt_cv_prog_cc_wl='-Wl,' +- lt_cv_prog_cc_static='-non_shared' +- ;; ++# A BSD-compatible nm program. ++NM=$lt_NM + +- sco3.2v5*) +- lt_cv_prog_cc_pic='-Kpic' +- lt_cv_prog_cc_static='-dn' +- lt_cv_prog_cc_shlib='-belf' +- ;; ++# A symbol stripping program ++STRIP=$lt_STRIP + +- solaris*) +- lt_cv_prog_cc_pic='-KPIC' +- lt_cv_prog_cc_static='-Bstatic' +- lt_cv_prog_cc_wl='-Wl,' +- ;; ++# Used to examine libraries when file_magic_cmd begins "file" ++MAGIC_CMD=$MAGIC_CMD + +- sunos4*) +- lt_cv_prog_cc_pic='-PIC' +- lt_cv_prog_cc_static='-Bstatic' +- lt_cv_prog_cc_wl='-Qoption ld ' +- ;; ++# Used on cygwin: DLL creation program. ++DLLTOOL="$DLLTOOL" + +- sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) +- lt_cv_prog_cc_pic='-KPIC' +- lt_cv_prog_cc_static='-Bstatic' +- if test "x$host_vendor" = xsni; then +- lt_cv_prog_cc_wl='-LD' +- else +- lt_cv_prog_cc_wl='-Wl,' +- fi +- ;; ++# Used on cygwin: object dumper. ++OBJDUMP="$OBJDUMP" + +- uts4*) +- lt_cv_prog_cc_pic='-pic' +- lt_cv_prog_cc_static='-Bstatic' +- ;; ++# Used on cygwin: assembler. ++AS="$AS" + +- sysv4*MP*) +- if test -d /usr/nec ;then +- lt_cv_prog_cc_pic='-Kconform_pic' +- lt_cv_prog_cc_static='-Bstatic' +- fi +- ;; ++# The name of the directory that contains temporary libtool files. ++objdir=$objdir + +- *) +- lt_cv_prog_cc_can_build_shared=no +- ;; +- esac +- fi +-]) +-if test -z "$lt_cv_prog_cc_pic"; then +- AC_MSG_RESULT([none]) +-else +- AC_MSG_RESULT([$lt_cv_prog_cc_pic]) ++# How to create reloadable object files. ++reload_flag=$lt_reload_flag ++reload_cmds=$lt_reload_cmds + +- # Check to make sure the pic_flag actually works. +- AC_MSG_CHECKING([if $compiler PIC flag $lt_cv_prog_cc_pic works]) +- AC_CACHE_VAL(lt_cv_prog_cc_pic_works, [dnl +- save_CFLAGS="$CFLAGS" +- CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC" +- AC_TRY_COMPILE([], [], [dnl +- case $host_os in +- hpux9* | hpux10* | hpux11*) +- # On HP-UX, both CC and GCC only warn that PIC is supported... then +- # they create non-PIC objects. So, if there were any warnings, we +- # assume that PIC is not supported. +- if test -s conftest.err; then +- lt_cv_prog_cc_pic_works=no +- else +- lt_cv_prog_cc_pic_works=yes +- fi +- ;; +- *) +- lt_cv_prog_cc_pic_works=yes +- ;; +- esac +- ], [dnl +- lt_cv_prog_cc_pic_works=no +- ]) +- CFLAGS="$save_CFLAGS" +- ]) ++# How to pass a linker flag through the compiler. ++wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) + +- if test "X$lt_cv_prog_cc_pic_works" = Xno; then +- lt_cv_prog_cc_pic= +- lt_cv_prog_cc_can_build_shared=no +- else +- lt_cv_prog_cc_pic=" $lt_cv_prog_cc_pic" +- fi ++# Object file suffix (normally "o"). ++objext="$ac_objext" + +- AC_MSG_RESULT([$lt_cv_prog_cc_pic_works]) +-fi ++# Old archive suffix (normally "a"). ++libext="$libext" + +-# Check for any special shared library compilation flags. +-if test -n "$lt_cv_prog_cc_shlib"; then +- AC_MSG_WARN([\`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries]) +- if echo "$old_CC $old_CFLAGS " | egrep -e "[[ ]]$lt_cv_prog_cc_shlib[[ ]]" >/dev/null; then : +- else +- AC_MSG_WARN([add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure]) +- lt_cv_prog_cc_can_build_shared=no +- fi +-fi ++# Shared library suffix (normally ".so"). ++shrext_cmds='$shrext_cmds' + +-AC_MSG_CHECKING([if $compiler static flag $lt_cv_prog_cc_static works]) +-AC_CACHE_VAL([lt_cv_prog_cc_static_works], [dnl +- lt_cv_prog_cc_static_works=no +- save_LDFLAGS="$LDFLAGS" +- LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static" +- AC_TRY_LINK([], [], [lt_cv_prog_cc_static_works=yes]) +- LDFLAGS="$save_LDFLAGS" +-]) ++# Executable file suffix (normally ""). ++exeext="$exeext" + +-# Belt *and* braces to stop my trousers falling down: +-test "X$lt_cv_prog_cc_static_works" = Xno && lt_cv_prog_cc_static= +-AC_MSG_RESULT([$lt_cv_prog_cc_static_works]) +- +-pic_flag="$lt_cv_prog_cc_pic" +-special_shlib_compile_flags="$lt_cv_prog_cc_shlib" +-wl="$lt_cv_prog_cc_wl" +-link_static_flag="$lt_cv_prog_cc_static" +-no_builtin_flag="$lt_cv_prog_cc_no_builtin" +-can_build_shared="$lt_cv_prog_cc_can_build_shared" +- +- +-# Check to see if options -o and -c are simultaneously supported by compiler +-AC_MSG_CHECKING([if $compiler supports -c -o file.$ac_objext]) +-AC_CACHE_VAL([lt_cv_compiler_c_o], [ +-$rm -r conftest 2>/dev/null +-mkdir conftest +-cd conftest +-echo "int some_variable = 0;" > conftest.$ac_ext +-mkdir out +-# According to Tom Tromey, Ian Lance Taylor reported there are C compilers +-# that will create temporary files in the current directory regardless of +-# the output directory. Thus, making CWD read-only will cause this test +-# to fail, enabling locking or at least warning the user not to do parallel +-# builds. +-chmod -w . +-save_CFLAGS="$CFLAGS" +-CFLAGS="$CFLAGS -o out/conftest2.$ac_objext" +-compiler_c_o=no +-if { (eval echo configure:__oline__: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then +- # The compiler can only warn and ignore the option if not recognized +- # So say no if there are warnings +- if test -s out/conftest.err; then +- lt_cv_compiler_c_o=no +- else +- lt_cv_compiler_c_o=yes +- fi +-else +- # Append any errors to the config.log. +- cat out/conftest.err 1>&AC_FD_CC +- lt_cv_compiler_c_o=no +-fi +-CFLAGS="$save_CFLAGS" +-chmod u+w . +-$rm conftest* out/* +-rmdir out +-cd .. +-rmdir conftest +-$rm -r conftest 2>/dev/null +-]) +-compiler_c_o=$lt_cv_compiler_c_o +-AC_MSG_RESULT([$compiler_c_o]) ++# Additional compiler flags for building library objects. ++pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) ++pic_mode=$pic_mode + +-if test x"$compiler_c_o" = x"yes"; then +- # Check to see if we can write to a .lo +- AC_MSG_CHECKING([if $compiler supports -c -o file.lo]) +- AC_CACHE_VAL([lt_cv_compiler_o_lo], [ +- lt_cv_compiler_o_lo=no +- save_CFLAGS="$CFLAGS" +- CFLAGS="$CFLAGS -c -o conftest.lo" +- save_objext="$ac_objext" +- ac_objext=lo +- AC_TRY_COMPILE([], [int some_variable = 0;], [dnl +- # The compiler can only warn and ignore the option if not recognized +- # So say no if there are warnings +- if test -s conftest.err; then +- lt_cv_compiler_o_lo=no +- else +- lt_cv_compiler_o_lo=yes +- fi +- ]) +- ac_objext="$save_objext" +- CFLAGS="$save_CFLAGS" +- ]) +- compiler_o_lo=$lt_cv_compiler_o_lo +- AC_MSG_RESULT([$compiler_o_lo]) +-else +- compiler_o_lo=no +-fi ++# What is the maximum length of a command? ++max_cmd_len=$lt_cv_sys_max_cmd_len + +-# Check to see if we can do hard links to lock some files if needed +-hard_links="nottested" +-if test "$compiler_c_o" = no && test "$need_locks" != no; then +- # do not overwrite the value of need_locks provided by the user +- AC_MSG_CHECKING([if we can lock with hard links]) +- hard_links=yes +- $rm conftest* +- ln conftest.a conftest.b 2>/dev/null && hard_links=no +- touch conftest.a +- ln conftest.a conftest.b 2>&5 || hard_links=no +- ln conftest.a conftest.b 2>/dev/null && hard_links=no +- AC_MSG_RESULT([$hard_links]) +- if test "$hard_links" = no; then +- AC_MSG_WARN([\`$CC' does not support \`-c -o', so \`make -j' may be unsafe]) +- need_locks=warn +- fi +-else +- need_locks=no +-fi ++# Does compiler simultaneously support -c and -o options? ++compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) + +-if test "$GCC" = yes; then +- # Check to see if options -fno-rtti -fno-exceptions are supported by compiler +- AC_MSG_CHECKING([if $compiler supports -fno-rtti -fno-exceptions]) +- echo "int some_variable = 0;" > conftest.$ac_ext +- save_CFLAGS="$CFLAGS" +- CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext" +- compiler_rtti_exceptions=no +- AC_TRY_COMPILE([], [int some_variable = 0;], [dnl +- # The compiler can only warn and ignore the option if not recognized +- # So say no if there are warnings +- if test -s conftest.err; then +- compiler_rtti_exceptions=no +- else +- compiler_rtti_exceptions=yes +- fi +- ]) +- CFLAGS="$save_CFLAGS" +- AC_MSG_RESULT([$compiler_rtti_exceptions]) ++# Must we lock files when doing compilation? ++need_locks=$lt_need_locks + +- if test "$compiler_rtti_exceptions" = "yes"; then +- no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions' +- else +- no_builtin_flag=' -fno-builtin' +- fi +-fi ++# Do we need the lib prefix for modules? ++need_lib_prefix=$need_lib_prefix + +-# See if the linker supports building shared libraries. +-AC_MSG_CHECKING([whether the linker ($LD) supports shared libraries]) ++# Do we need a version for libraries? ++need_version=$need_version + +-allow_undefined_flag= +-no_undefined_flag= +-need_lib_prefix=unknown +-need_version=unknown +-# when you set need_version to no, make sure it does not cause -set_version +-# flags to be left without arguments +-archive_cmds= +-archive_expsym_cmds= +-old_archive_from_new_cmds= +-old_archive_from_expsyms_cmds= +-export_dynamic_flag_spec= +-whole_archive_flag_spec= +-thread_safe_flag_spec= +-hardcode_into_libs=no +-hardcode_libdir_flag_spec= +-hardcode_libdir_separator= +-hardcode_direct=no +-hardcode_minus_L=no +-hardcode_shlibpath_var=unsupported +-runpath_var= +-link_all_deplibs=unknown +-always_export_symbols=no +-export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols' +-# include_expsyms should be a list of space-separated symbols to be *always* +-# included in the symbol list +-include_expsyms= +-# exclude_expsyms can be an egrep regular expression of symbols to exclude +-# it will be wrapped by ` (' and `)$', so one must not match beginning or +-# end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', +-# as well as any symbol that contains `d'. +-exclude_expsyms="_GLOBAL_OFFSET_TABLE_" +-# Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out +-# platforms (ab)use it in PIC code, but their linkers get confused if +-# the symbol is explicitly referenced. Since portable code cannot +-# rely on this symbol name, it's probably fine to never include it in +-# preloaded symbol tables. +-extract_expsyms_cmds= ++# Whether dlopen is supported. ++dlopen_support=$enable_dlopen + +-case $host_os in +-cygwin* | mingw* | pw32*) +- # FIXME: the MSVC++ port hasn't been tested in a loooong time +- # When not using gcc, we currently assume that we are using +- # Microsoft Visual C++. +- if test "$GCC" != yes; then +- with_gnu_ld=no +- fi +- ;; +-openbsd*) +- with_gnu_ld=no +- ;; +-esac ++# Whether dlopen of programs is supported. ++dlopen_self=$enable_dlopen_self + +-ld_shlibs=yes +-if test "$with_gnu_ld" = yes; then +- # If archive_cmds runs LD, not CC, wlarc should be empty +- wlarc='${wl}' ++# Whether dlopen of statically linked programs is supported. ++dlopen_self_static=$enable_dlopen_self_static + +- # See if GNU ld supports shared libraries. +- case $host_os in +- aix3* | aix4* | aix5*) +- # On AIX, the GNU linker is very broken +- # Note:Check GNU linker on AIX 5-IA64 when/if it becomes available. +- ld_shlibs=no +- cat <&2 ++# Compiler flag to prevent dynamic linking. ++link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1) + +-*** Warning: the GNU linker, at least up to release 2.9.1, is reported +-*** to be unable to reliably create shared libraries on AIX. +-*** Therefore, libtool is disabling shared libraries support. If you +-*** really care for shared libraries, you may want to modify your PATH +-*** so that a non-GNU linker is found, and then restart. ++# Compiler flag to turn off builtin functions. ++no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) + +-EOF +- ;; ++# Compiler flag to allow reflexive dlopens. ++export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1) + +- amigaos*) +- 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)' +- hardcode_libdir_flag_spec='-L$libdir' +- hardcode_minus_L=yes +- +- # Samuel A. Falvo II reports +- # that the semantics of dynamic libraries on AmigaOS, at least up +- # to version 4, is to share data among multiple programs linked +- # with the same dynamic library. Since this doesn't match the +- # behavior of shared libraries on other platforms, we can use +- # them. +- ld_shlibs=no +- ;; ++# Compiler flag to generate shared objects directly from archives. ++whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1) + +- beos*) +- if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then +- allow_undefined_flag=unsupported +- # Joseph Beckenbach says some releases of gcc +- # support --undefined. This deserves some investigation. FIXME +- archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- else +- ld_shlibs=no +- fi +- ;; ++# Compiler flag to generate thread-safe objects. ++thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1) + +- cygwin* | mingw* | pw32*) +- # hardcode_libdir_flag_spec is actually meaningless, as there is +- # no search path for DLLs. +- hardcode_libdir_flag_spec='-L$libdir' +- allow_undefined_flag=unsupported +- always_export_symbols=yes +- +- extract_expsyms_cmds='test -f $output_objdir/impgen.c || \ +- sed -e "/^# \/\* impgen\.c starts here \*\//,/^# \/\* impgen.c ends here \*\// { s/^# //;s/^# *$//; p; }" -e d < $''0 > $output_objdir/impgen.c~ +- test -f $output_objdir/impgen.exe || (cd $output_objdir && \ +- if test "x$HOST_CC" != "x" ; then $HOST_CC -o impgen impgen.c ; \ +- else $CC -o impgen impgen.c ; fi)~ +- $output_objdir/impgen $dir/$soroot > $output_objdir/$soname-def' +- +- old_archive_from_expsyms_cmds='$DLLTOOL --as=$AS --dllname $soname --def $output_objdir/$soname-def --output-lib $output_objdir/$newlib' +- +- # cygwin and mingw dlls have different entry points and sets of symbols +- # to exclude. +- # FIXME: what about values for MSVC? +- dll_entry=__cygwin_dll_entry@12 +- dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12~ +- case $host_os in +- mingw*) +- # mingw values +- dll_entry=_DllMainCRTStartup@12 +- dll_exclude_symbols=DllMain@12,DllMainCRTStartup@12,DllEntryPoint@12~ +- ;; +- esac ++# Library versioning type. ++version_type=$version_type + +- # mingw and cygwin differ, and it's simplest to just exclude the union +- # of the two symbol sets. +- dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12,DllMainCRTStartup@12,DllEntryPoint@12 +- +- # recent cygwin and mingw systems supply a stub DllMain which the user +- # can override, but on older systems we have to supply one (in ltdll.c) +- if test "x$lt_cv_need_dllmain" = "xyes"; then +- ltdll_obj='$output_objdir/$soname-ltdll.'"$ac_objext " +- ltdll_cmds='test -f $output_objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $''0 > $output_objdir/$soname-ltdll.c~ +- test -f $output_objdir/$soname-ltdll.$ac_objext || (cd $output_objdir && $CC -c $soname-ltdll.c)~' +- else +- ltdll_obj= +- ltdll_cmds= +- fi ++# Format of library name prefix. ++libname_spec=$lt_libname_spec + +- # Extract the symbol export list from an `--export-all' def file, +- # then regenerate the def file from the symbol export list, so that +- # the compiled dll only exports the symbol export list. +- # Be careful not to strip the DATA tag left be newer dlltools. +- export_symbols_cmds="$ltdll_cmds"' +- $DLLTOOL --export-all --exclude-symbols '$dll_exclude_symbols' --output-def $output_objdir/$soname-def '$ltdll_obj'$libobjs $convenience~ +- sed -e "1,/EXPORTS/d" -e "s/ @ [[0-9]]*//" -e "s/ *;.*$//" < $output_objdir/$soname-def > $export_symbols' +- +- # If the export-symbols file already is a .def file (1st line +- # is EXPORTS), use it as is. +- # If DATA tags from a recent dlltool are present, honour them! +- archive_expsym_cmds='if test "x`head -1 $export_symbols`" = xEXPORTS; then +- cp $export_symbols $output_objdir/$soname-def; +- else +- echo EXPORTS > $output_objdir/$soname-def; +- _lt_hint=1; +- cat $export_symbols | while read symbol; do +- set dummy \$symbol; +- case \[$]# in +- 2) echo " \[$]2 @ \$_lt_hint ; " >> $output_objdir/$soname-def;; +- *) echo " \[$]2 @ \$_lt_hint \[$]3 ; " >> $output_objdir/$soname-def;; +- esac; +- _lt_hint=`expr 1 + \$_lt_hint`; +- done; +- fi~ +- '"$ltdll_cmds"' +- $CC -Wl,--base-file,$output_objdir/$soname-base '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ +- $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp~ +- $CC -Wl,--base-file,$output_objdir/$soname-base $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ +- $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp --output-lib $output_objdir/$libname.dll.a~ +- $CC $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags' +- ;; ++# List of archive names. First name is the real one, the rest are links. ++# The last name is the one that the linker finds with -lNAME. ++library_names_spec=$lt_library_names_spec + +- netbsd*) +- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then +- archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' +- wlarc= +- else +- archive_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- archive_expsym_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +- fi +- ;; ++# The coded name of the library, if different from the real name. ++soname_spec=$lt_soname_spec + +- solaris* | sysv5*) +- if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then +- ld_shlibs=no +- cat <&2 ++# Commands used to build and install an old-style archive. ++RANLIB=$lt_RANLIB ++old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1) ++old_postinstall_cmds=$lt_old_postinstall_cmds ++old_postuninstall_cmds=$lt_old_postuninstall_cmds + +-*** Warning: The releases 2.8.* of the GNU linker cannot reliably +-*** create shared libraries on Solaris systems. Therefore, libtool +-*** is disabling shared libraries support. We urge you to upgrade GNU +-*** binutils to release 2.9.1 or newer. Another option is to modify +-*** your PATH or compiler configuration so that the native linker is +-*** used, and then restart. ++# Create an old-style archive from a shared archive. ++old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1) + +-EOF +- elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then +- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +- else +- ld_shlibs=no +- fi +- ;; ++# Create a temporary old-style archive to link instead of a shared archive. ++old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) + +- sunos4*) +- archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' +- wlarc= +- hardcode_direct=yes +- hardcode_shlibpath_var=no +- ;; ++# Commands used to build and install a shared archive. ++archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1) ++archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1) ++postinstall_cmds=$lt_postinstall_cmds ++postuninstall_cmds=$lt_postuninstall_cmds + +- *) +- if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then +- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +- else +- ld_shlibs=no +- fi +- ;; +- esac ++# Commands used to build a loadable module (assumed same as above if empty) ++module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1) ++module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1) + +- if test "$ld_shlibs" = yes; then +- runpath_var=LD_RUN_PATH +- hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' +- export_dynamic_flag_spec='${wl}--export-dynamic' +- case $host_os in +- cygwin* | mingw* | pw32*) +- # dlltool doesn't understand --whole-archive et. al. +- whole_archive_flag_spec= +- ;; +- *) +- # ancient GNU ld didn't support --whole-archive et. al. +- if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then +- whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' +- else +- whole_archive_flag_spec= +- fi +- ;; +- esac +- fi +-else +- # PORTME fill in a description of your system's linker (not GNU ld) +- case $host_os in +- aix3*) +- allow_undefined_flag=unsupported +- always_export_symbols=yes +- 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' +- # Note: this linker hardcodes the directories in LIBPATH if there +- # are no directories specified by -L. +- hardcode_minus_L=yes +- if test "$GCC" = yes && test -z "$link_static_flag"; then +- # Neither direct hardcoding nor static linking is supported with a +- # broken collect2. +- hardcode_direct=unsupported +- fi +- ;; ++# Commands to strip libraries. ++old_striplib=$lt_old_striplib ++striplib=$lt_striplib + +- aix4* | aix5*) +- if test "$host_cpu" = ia64; then +- # On IA64, the linker does run time linking by default, so we don't +- # have to do anything special. +- aix_use_runtimelinking=no +- exp_sym_flag='-Bexport' +- no_entry_flag="" +- else +- aix_use_runtimelinking=no ++# Dependencies to place before the objects being linked to create a ++# shared library. ++predep_objects=$lt_[]_LT_AC_TAGVAR(predep_objects, $1) ++ ++# Dependencies to place after the objects being linked to create a ++# shared library. ++postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1) ++ ++# Dependencies to place before the objects being linked to create a ++# shared library. ++predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1) ++ ++# Dependencies to place after the objects being linked to create a ++# shared library. ++postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1) ++ ++# The library search path used internally by the compiler when linking ++# a shared library. ++compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1) + +- # Test if we are trying to use run time linking or normal +- # AIX style linking. If -brtl is somewhere in LDFLAGS, we +- # need to do runtime linking. +- case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) +- for ld_flag in $LDFLAGS; do +- if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then +- aix_use_runtimelinking=yes +- break +- fi +- done +- esac ++# Method to check whether dependent libraries are shared objects. ++deplibs_check_method=$lt_deplibs_check_method + +- exp_sym_flag='-bexport' +- no_entry_flag='-bnoentry' +- fi ++# Command to use when deplibs_check_method == file_magic. ++file_magic_cmd=$lt_file_magic_cmd + +- # When large executables or shared objects are built, AIX ld can +- # have problems creating the table of contents. If linking a library +- # or program results in "error TOC overflow" add -mminimal-toc to +- # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not +- # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. ++# Flag that allows shared libraries with undefined symbols to be built. ++allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1) + +- hardcode_direct=yes +- archive_cmds='' +- hardcode_libdir_separator=':' +- if test "$GCC" = yes; then +- case $host_os in aix4.[[012]]|aix4.[[012]].*) +- collect2name=`${CC} -print-prog-name=collect2` +- if test -f "$collect2name" && \ +- strings "$collect2name" | grep resolve_lib_name >/dev/null +- then +- # We have reworked collect2 +- hardcode_direct=yes +- else +- # We have old collect2 +- hardcode_direct=unsupported +- # It fails to find uninstalled libraries when the uninstalled +- # path is not listed in the libpath. Setting hardcode_minus_L +- # to unsupported forces relinking +- hardcode_minus_L=yes +- hardcode_libdir_flag_spec='-L$libdir' +- hardcode_libdir_separator= +- fi +- esac ++# Flag that forces no undefined symbols. ++no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1) + +- shared_flag='-shared' +- else +- # not using gcc +- if test "$host_cpu" = ia64; then +- shared_flag='${wl}-G' +- else +- if test "$aix_use_runtimelinking" = yes; then +- shared_flag='${wl}-G' +- else +- shared_flag='${wl}-bM:SRE' +- fi +- fi +- fi ++# Commands used to finish a libtool library installation in a directory. ++finish_cmds=$lt_finish_cmds + +- # It seems that -bexpall can do strange things, so it is better to +- # generate a list of symbols to export. +- always_export_symbols=yes +- if test "$aix_use_runtimelinking" = yes; then +- # Warning - without using the other runtime loading flags (-brtl), +- # -berok will link without error, but may produce a broken library. +- allow_undefined_flag='-berok' +- hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib' +- archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" +- else +- if test "$host_cpu" = ia64; then +- hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' +- allow_undefined_flag="-z nodefs" +- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname ${wl}-h$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" +- else +- hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib' +- # Warning - without using the other run time loading flags, +- # -berok will link without error, but may produce a broken library. +- allow_undefined_flag='${wl}-berok' +- # This is a bit strange, but is similar to how AIX traditionally builds +- # it's shared libraries. +- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"' ~$AR -crlo $objdir/$libname$release.a $objdir/$soname' +- fi +- fi +- ;; ++# Same as above, but a single script fragment to be evaled but not shown. ++finish_eval=$lt_finish_eval ++ ++# Take the output of nm and produce a listing of raw symbols and C names. ++global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe ++ ++# Transform the output of nm in a proper C declaration ++global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +- amigaos*) +- 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)' +- hardcode_libdir_flag_spec='-L$libdir' +- hardcode_minus_L=yes +- # see comment about different semantics on the GNU ld section +- ld_shlibs=no +- ;; ++# Transform the output of nm in a C name address pair ++global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +- cygwin* | mingw* | pw32*) +- # When not using gcc, we currently assume that we are using +- # Microsoft Visual C++. +- # hardcode_libdir_flag_spec is actually meaningless, as there is +- # no search path for DLLs. +- hardcode_libdir_flag_spec=' ' +- allow_undefined_flag=unsupported +- # Tell ltmain to make .lib files, not .a files. +- libext=lib +- # FIXME: Setting linknames here is a bad hack. +- archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames=' +- # The linker will automatically build a .lib file if we build a DLL. +- old_archive_from_new_cmds='true' +- # FIXME: Should let the user specify the lib program. +- old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs' +- fix_srcfile_path='`cygpath -w "$srcfile"`' +- ;; +- +- darwin* | rhapsody*) +- case "$host_os" in +- rhapsody* | darwin1.[[012]]) +- allow_undefined_flag='-undefined suppress' +- ;; +- *) # Darwin 1.3 on +- allow_undefined_flag='-flat_namespace -undefined suppress' +- ;; +- esac +- # FIXME: Relying on posixy $() will cause problems for +- # cross-compilation, but unfortunately the echo tests do not +- # yet detect zsh echo's removal of \ escapes. +- archive_cmds='$nonopt $(test "x$module" = xyes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib $libobjs $deplibs$linker_flags -install_name $rpath/$soname $verstring' +- # We need to add '_' to the symbols in $export_symbols first +- #archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols' +- hardcode_direct=yes +- hardcode_shlibpath_var=no +- whole_archive_flag_spec='-all_load $convenience' +- ;; +- +- freebsd1*) +- ld_shlibs=no +- ;; +- +- # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor +- # support. Future versions do this automatically, but an explicit c++rt0.o +- # does not break anything, and helps significantly (at the cost of a little +- # extra space). +- freebsd2.2*) +- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' +- hardcode_libdir_flag_spec='-R$libdir' +- hardcode_direct=yes +- hardcode_shlibpath_var=no +- ;; ++# This is the shared library runtime path variable. ++runpath_var=$runpath_var + +- # Unfortunately, older versions of FreeBSD 2 do not have this feature. +- freebsd2*) +- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' +- hardcode_direct=yes +- hardcode_minus_L=yes +- hardcode_shlibpath_var=no +- ;; ++# This is the shared library path variable. ++shlibpath_var=$shlibpath_var + +- # FreeBSD 3 and greater uses gcc -shared to do shared libraries. +- freebsd*) +- archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' +- hardcode_libdir_flag_spec='-R$libdir' +- hardcode_direct=yes +- hardcode_shlibpath_var=no +- ;; ++# Is shlibpath searched before the hard-coded library search path? ++shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +- hpux9* | hpux10* | hpux11*) +- case $host_os in +- hpux9*) archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ;; +- *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;; +- esac +- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' +- hardcode_libdir_separator=: +- hardcode_direct=yes +- hardcode_minus_L=yes # Not in the search PATH, but as the default +- # location of the library. +- export_dynamic_flag_spec='${wl}-E' +- ;; ++# How to hardcode a shared library path into an executable. ++hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1) + +- irix5* | irix6*) +- if test "$GCC" = yes; then +- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +- else +- archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' +- fi +- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' +- hardcode_libdir_separator=: +- link_all_deplibs=yes +- ;; ++# Whether we should hardcode library paths into libraries. ++hardcode_into_libs=$hardcode_into_libs + +- netbsd*) +- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then +- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out +- else +- archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF +- fi +- hardcode_libdir_flag_spec='-R$libdir' +- hardcode_direct=yes +- hardcode_shlibpath_var=no +- ;; ++# Flag to hardcode \$libdir into a binary during linking. ++# This must work even if \$libdir does not exist. ++hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) + +- newsos6) +- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_direct=yes +- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' +- hardcode_libdir_separator=: +- hardcode_shlibpath_var=no +- ;; ++# If ld is used when linking, flag to hardcode \$libdir into ++# a binary during linking. This must work even if \$libdir does ++# not exist. ++hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) + +- openbsd*) +- hardcode_direct=yes +- hardcode_shlibpath_var=no +- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +- archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $linker_flags' +- hardcode_libdir_flag_spec='${wl}-rpath,$libdir' +- export_dynamic_flag_spec='${wl}-E' +- else +- case "$host_os" in +- openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) +- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' +- hardcode_libdir_flag_spec='-R$libdir' +- ;; +- *) +- archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $linker_flags' +- hardcode_libdir_flag_spec='${wl}-rpath,$libdir' +- ;; +- esac +- fi +- ;; ++# Whether we need a single -rpath flag with a separated argument. ++hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1) + +- os2*) +- hardcode_libdir_flag_spec='-L$libdir' +- hardcode_minus_L=yes +- allow_undefined_flag=unsupported +- archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' +- old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' +- ;; ++# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the ++# resulting binary. ++hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1) + +- osf3*) +- if test "$GCC" = yes; then +- allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' +- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +- else +- allow_undefined_flag=' -expect_unresolved \*' +- archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' +- fi +- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' +- hardcode_libdir_separator=: +- ;; ++# Set to yes if using the -LDIR flag during linking hardcodes DIR into the ++# resulting binary. ++hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1) + +- osf4* | osf5*) # as osf3* with the addition of -msym flag +- if test "$GCC" = yes; then +- allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' +- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' +- else +- allow_undefined_flag=' -expect_unresolved \*' +- archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' +- archive_expsym_cmds='for i in `cat $export_symbols`; do printf "-exported_symbol " >> $lib.exp; echo "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ +- $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' ++# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into ++# the resulting binary. ++hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1) + +- #Both c and cxx compiler support -rpath directly +- hardcode_libdir_flag_spec='-rpath $libdir' +- fi +- hardcode_libdir_separator=: +- ;; ++# Set to yes if building a shared library automatically hardcodes DIR into the library ++# and all subsequent libraries and executables linked against it. ++hardcode_automatic=$_LT_AC_TAGVAR(hardcode_automatic, $1) + +- sco3.2v5*) +- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_shlibpath_var=no +- runpath_var=LD_RUN_PATH +- hardcode_runpath_var=yes +- export_dynamic_flag_spec='${wl}-Bexport' +- ;; ++# Variables whose values should be saved in libtool wrapper scripts and ++# restored at relink time. ++variables_saved_for_relink="$variables_saved_for_relink" + +- solaris*) +- # gcc --version < 3.0 without binutils cannot create self contained +- # shared libraries reliably, requiring libgcc.a to resolve some of +- # the object symbols generated in some cases. Libraries that use +- # assert need libgcc.a to resolve __eprintf, for example. Linking +- # a copy of libgcc.a into every shared library to guarantee resolving +- # such symbols causes other problems: According to Tim Van Holder +- # , C++ libraries end up with a separate +- # (to the application) exception stack for one thing. +- no_undefined_flag=' -z defs' +- if test "$GCC" = yes; then +- case `$CC --version 2>/dev/null` in +- [[12]].*) +- cat <&2 ++# Whether libtool must link a program against all its dependency libraries. ++link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1) + +-*** Warning: Releases of GCC earlier than version 3.0 cannot reliably +-*** create self contained shared libraries on Solaris systems, without +-*** introducing a dependency on libgcc.a. Therefore, libtool is disabling +-*** -no-undefined support, which will at least allow you to build shared +-*** libraries. However, you may find that when you link such libraries +-*** into an application without using GCC, you have to manually add +-*** \`gcc --print-libgcc-file-name\` to the link command. We urge you to +-*** upgrade to a newer version of GCC. Another option is to rebuild your +-*** current GCC to use the GNU linker from GNU binutils 2.9.1 or newer. ++# Compile-time system search path for libraries ++sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +-EOF +- no_undefined_flag= +- ;; +- esac +- fi +- # $CC -shared without GNU ld will not create a library from C++ +- # object files and a static libstdc++, better avoid it by now +- archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' +- archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ +- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' +- hardcode_libdir_flag_spec='-R$libdir' +- hardcode_shlibpath_var=no +- case $host_os in +- solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; +- *) # Supported since Solaris 2.6 (maybe 2.5.1?) +- whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; +- esac +- link_all_deplibs=yes +- ;; ++# Run-time system search path for libraries ++sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +- sunos4*) +- if test "x$host_vendor" = xsequent; then +- # Use $CC to link under sequent, because it throws in some extra .o +- # files that make .init and .fini sections work. +- archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' +- else +- archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' +- fi +- hardcode_libdir_flag_spec='-L$libdir' +- hardcode_direct=yes +- hardcode_minus_L=yes +- hardcode_shlibpath_var=no +- ;; ++# Fix the shell variable \$srcfile for the compiler. ++fix_srcfile_path=$lt_fix_srcfile_path + +- sysv4) +- if test "x$host_vendor" = xsno; then +- archive_cmds='$LD -G -Bsymbolic -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_direct=yes # is this really true??? +- else +- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_direct=no #Motorola manual says yes, but my tests say they lie +- fi +- runpath_var='LD_RUN_PATH' +- hardcode_shlibpath_var=no +- ;; ++# Set to yes if exported symbols are required. ++always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1) + +- sysv4.3*) +- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_shlibpath_var=no +- export_dynamic_flag_spec='-Bexport' +- ;; +- +- sysv5*) +- no_undefined_flag=' -z text' +- # $CC -shared without GNU ld will not create a library from C++ +- # object files and a static libstdc++, better avoid it by now +- archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' +- archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ +- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' +- hardcode_libdir_flag_spec= +- hardcode_shlibpath_var=no +- runpath_var='LD_RUN_PATH' +- ;; ++# The commands to list exported symbols. ++export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1) + +- uts4*) +- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_libdir_flag_spec='-L$libdir' +- hardcode_shlibpath_var=no +- ;; ++# The commands to extract the exported symbol list from a shared archive. ++extract_expsyms_cmds=$lt_extract_expsyms_cmds + +- dgux*) +- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_libdir_flag_spec='-L$libdir' +- hardcode_shlibpath_var=no +- ;; ++# Symbols that should not be listed in the preloaded symbols. ++exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1) + +- sysv4*MP*) +- if test -d /usr/nec; then +- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_shlibpath_var=no +- runpath_var=LD_RUN_PATH +- hardcode_runpath_var=yes +- ld_shlibs=yes +- fi +- ;; ++# Symbols that must always be exported. ++include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1) + +- sysv4.2uw2*) +- archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' +- hardcode_direct=yes +- hardcode_minus_L=no +- hardcode_shlibpath_var=no +- hardcode_runpath_var=yes +- runpath_var=LD_RUN_PATH +- ;; ++ifelse([$1],[], ++[# ### END LIBTOOL CONFIG], ++[# ### END LIBTOOL TAG CONFIG: $tagname]) + +- sysv5uw7* | unixware7*) +- no_undefined_flag='${wl}-z ${wl}text' +- if test "$GCC" = yes; then +- archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' +- else +- archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' +- fi +- runpath_var='LD_RUN_PATH' +- hardcode_shlibpath_var=no +- ;; ++__EOF__ + +- *) +- ld_shlibs=no ++ifelse([$1],[], [ ++ case $host_os in ++ aix3*) ++ cat <<\EOF >> "$cfgfile" ++ ++# AIX sometimes has problems with the GCC collect2 program. For some ++# reason, if we set the COLLECT_NAMES environment variable, the problems ++# vanish in a puff of smoke. ++if test "X${COLLECT_NAMES+set}" != Xset; then ++ COLLECT_NAMES= ++ export COLLECT_NAMES ++fi ++EOF + ;; + esac +-fi +-AC_MSG_RESULT([$ld_shlibs]) +-test "$ld_shlibs" = no && can_build_shared=no + +-# Check hardcoding attributes. +-AC_MSG_CHECKING([how to hardcode library paths into programs]) +-hardcode_action= +-if test -n "$hardcode_libdir_flag_spec" || \ +- test -n "$runpath_var"; then ++ # We use sed instead of cat because bash on DJGPP gets confused if ++ # if finds mixed CR/LF and LF-only lines. Since sed operates in ++ # text mode, it properly converts lines to CR/LF. This bash problem ++ # is reportedly fixed, but why not run on old versions too? ++ sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) + +- # We can hardcode non-existant directories. +- if test "$hardcode_direct" != no && +- # If the only mechanism to avoid hardcoding is shlibpath_var, we +- # have to relink, otherwise we might link with an installed library +- # when we should be linking with a yet-to-be-installed one +- ## test "$hardcode_shlibpath_var" != no && +- test "$hardcode_minus_L" != no; then +- # Linking always hardcodes the temporary library directory. +- hardcode_action=relink +- else +- # We can link without hardcoding, and we can hardcode nonexisting dirs. +- hardcode_action=immediate +- fi ++ mv -f "$cfgfile" "$ofile" || \ ++ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") ++ chmod +x "$ofile" ++]) + else +- # We cannot hardcode anything, or else we can only hardcode existing +- # directories. +- hardcode_action=unsupported ++ # If there is no Makefile yet, we rely on a make rule to execute ++ # `config.status --recheck' to rerun these tests and create the ++ # libtool script then. ++ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` ++ if test -f "$ltmain_in"; then ++ test -f Makefile && make "$ltmain" ++ fi + fi +-AC_MSG_RESULT([$hardcode_action]) ++])# AC_LIBTOOL_CONFIG + +-striplib= +-old_striplib= +-AC_MSG_CHECKING([whether stripping libraries is possible]) +-if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then +- test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" +- test -z "$striplib" && striplib="$STRIP --strip-unneeded" +- AC_MSG_RESULT([yes]) +-else +- AC_MSG_RESULT([no]) ++ ++# AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME]) ++# ------------------------------------------- ++AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], ++[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl ++ ++_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= ++ ++if test "$GCC" = yes; then ++ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ++ ++ AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], ++ lt_cv_prog_compiler_rtti_exceptions, ++ [-fno-rtti -fno-exceptions], [], ++ [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) + fi ++])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI + +-reload_cmds='$LD$reload_flag -o $output$reload_objs' +-test -z "$deplibs_check_method" && deplibs_check_method=unknown + +-# PORTME Fill in your ld.so characteristics +-AC_MSG_CHECKING([dynamic linker characteristics]) +-library_names_spec= +-libname_spec='lib$name' +-soname_spec= +-postinstall_cmds= +-postuninstall_cmds= +-finish_cmds= +-finish_eval= +-shlibpath_var= +-shlibpath_overrides_runpath=unknown +-version_type=none +-dynamic_linker="$host_os ld.so" +-sys_lib_dlsearch_path_spec="/lib /usr/lib" +-sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" ++# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE ++# --------------------------------- ++AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], ++[AC_REQUIRE([AC_CANONICAL_HOST]) ++AC_REQUIRE([LT_AC_PROG_SED]) ++AC_REQUIRE([AC_PROG_NM]) ++AC_REQUIRE([AC_OBJEXT]) ++# Check for command to grab the raw symbol name followed by C symbol from nm. ++AC_MSG_CHECKING([command to parse $NM output from $compiler object]) ++AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], ++[ ++# These are sane defaults that work on at least a few old systems. ++# [They come from Ultrix. What could be older than Ultrix?!! ;)] ++ ++# Character class describing NM global symbol codes. ++symcode='[[BCDEGRST]]' ++ ++# Regexp to match symbols that can be accessed directly from C. ++sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' ++ ++# Transform an extracted symbol line into a proper C declaration ++lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" ++ ++# Transform an extracted symbol line into symbol name and symbol address ++lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" ++ ++# Define system-specific variables. ++case $host_os in ++aix*) ++ symcode='[[BCDT]]' ++ ;; ++cygwin* | mingw* | pw32*) ++ symcode='[[ABCDGISTW]]' ++ ;; ++hpux*) # Its linker distinguishes data from code symbols ++ if test "$host_cpu" = ia64; then ++ symcode='[[ABCDEGRST]]' ++ fi ++ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" ++ lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" ++ ;; ++linux* | k*bsd*-gnu) ++ if test "$host_cpu" = ia64; then ++ symcode='[[ABCDGIRSTW]]' ++ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" ++ lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" ++ fi ++ ;; ++irix* | nonstopux*) ++ symcode='[[BCDEGRST]]' ++ ;; ++osf*) ++ symcode='[[BCDEGQRST]]' ++ ;; ++solaris*) ++ symcode='[[BDRT]]' ++ ;; ++sco3.2v5*) ++ symcode='[[DT]]' ++ ;; ++sysv4.2uw2*) ++ symcode='[[DT]]' ++ ;; ++sysv5* | sco5v6* | unixware* | OpenUNIX*) ++ symcode='[[ABDT]]' ++ ;; ++sysv4) ++ symcode='[[DFNSTU]]' ++ ;; ++esac ++ ++# Handle CRLF in mingw tool chain ++opt_cr= ++case $build_os in ++mingw*) ++ opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp ++ ;; ++esac ++ ++# If we're using GNU nm, then use its standard symbol codes. ++case `$NM -V 2>&1` in ++*GNU* | *'with BFD'*) ++ symcode='[[ABCDGIRSTW]]' ;; ++esac ++ ++# Try without a prefix undercore, then with it. ++for ac_symprfx in "" "_"; do ++ ++ # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. ++ symxfrm="\\1 $ac_symprfx\\2 \\2" ++ ++ # Write the raw and C identifiers. ++ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" ++ ++ # Check to see that the pipe works correctly. ++ pipe_works=no ++ ++ rm -f conftest* ++ cat > conftest.$ac_ext < $nlist) && test -s "$nlist"; then ++ # Try sorting and uniquifying the output. ++ if sort "$nlist" | uniq > "$nlist"T; then ++ mv -f "$nlist"T "$nlist" ++ else ++ rm -f "$nlist"T ++ fi ++ ++ # Make sure that we snagged all the symbols we need. ++ if grep ' nm_test_var$' "$nlist" >/dev/null; then ++ if grep ' nm_test_func$' "$nlist" >/dev/null; then ++ cat < conftest.$ac_ext ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++EOF ++ # Now generate the symbol file. ++ eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' + +-case $host_os in +-aix3*) +- version_type=linux +- library_names_spec='${libname}${release}.so$versuffix $libname.a' +- shlibpath_var=LIBPATH ++ cat <> conftest.$ac_ext ++#if defined (__STDC__) && __STDC__ ++# define lt_ptr_t void * ++#else ++# define lt_ptr_t char * ++# define const ++#endif + +- # AIX has no versioning support, so we append a major version to the name. +- soname_spec='${libname}${release}.so$major' +- ;; ++/* The mapping between symbol names and symbols. */ ++const struct { ++ const char *name; ++ lt_ptr_t address; ++} ++lt_preloaded_symbols[[]] = ++{ ++EOF ++ $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext ++ cat <<\EOF >> conftest.$ac_ext ++ {0, (lt_ptr_t) 0} ++}; + +-aix4* | aix5*) +- version_type=linux +- if test "$host_cpu" = ia64; then +- # AIX 5 supports IA64 +- library_names_spec='${libname}${release}.so$major ${libname}${release}.so$versuffix $libname.so' +- shlibpath_var=LD_LIBRARY_PATH +- else +- # With GCC up to 2.95.x, collect2 would create an import file +- # for dependence libraries. The import file would start with +- # the line `#! .'. This would cause the generated library to +- # depend on `.', always an invalid library. This was fixed in +- # development snapshots of GCC prior to 3.0. +- case $host_os in +- aix4 | aix4.[[01]] | aix4.[[01]].*) +- if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' +- echo ' yes ' +- echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then +- : ++#ifdef __cplusplus ++} ++#endif ++EOF ++ # Now try linking the two files. ++ mv conftest.$ac_objext conftstm.$ac_objext ++ lt_save_LIBS="$LIBS" ++ lt_save_CFLAGS="$CFLAGS" ++ LIBS="conftstm.$ac_objext" ++ CFLAGS="$CFLAGS$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" ++ if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then ++ pipe_works=yes ++ fi ++ LIBS="$lt_save_LIBS" ++ CFLAGS="$lt_save_CFLAGS" + else +- can_build_shared=no ++ echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD + fi +- ;; +- esac +- # AIX (on Power*) has no versioning support, so currently we can +- # not hardcode correct soname into executable. Probably we can +- # add versioning support to collect2, so additional links can +- # be useful in future. +- if test "$aix_use_runtimelinking" = yes; then +- # If using run time linking (on AIX 4.2 or later) use lib.so +- # instead of lib.a to let people know that these are not +- # typical AIX shared libraries. +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' ++ else ++ echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD ++ fi + else +- # We preserve .a as extension for shared libraries through AIX4.2 +- # and later when we are not doing run time linking. +- library_names_spec='${libname}${release}.a $libname.a' +- soname_spec='${libname}${release}.so$major' ++ echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD + fi +- shlibpath_var=LIBPATH ++ else ++ echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD ++ cat conftest.$ac_ext >&5 + fi +- ;; +- +-amigaos*) +- library_names_spec='$libname.ixlibrary $libname.a' +- # Create ${libname}_ixlibrary.a entries in /sys/libs. +- finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $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' +- ;; +- +-beos*) +- library_names_spec='${libname}.so' +- dynamic_linker="$host_os ld.so" +- shlibpath_var=LIBRARY_PATH +- ;; ++ rm -f conftest* conftst* + +-bsdi4*) +- version_type=linux +- need_version=no +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' +- soname_spec='${libname}${release}.so$major' +- finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' +- shlibpath_var=LD_LIBRARY_PATH +- sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" +- sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" +- export_dynamic_flag_spec=-rdynamic +- # the default ld.so.conf also contains /usr/contrib/lib and +- # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow +- # libtool to hard-code these into programs +- ;; ++ # Do not use the global_symbol_pipe unless it works. ++ if test "$pipe_works" = yes; then ++ break ++ else ++ lt_cv_sys_global_symbol_pipe= ++ fi ++done ++]) ++if test -z "$lt_cv_sys_global_symbol_pipe"; then ++ lt_cv_sys_global_symbol_to_cdecl= ++fi ++if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then ++ AC_MSG_RESULT(failed) ++else ++ AC_MSG_RESULT(ok) ++fi ++]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE + +-cygwin* | mingw* | pw32*) +- version_type=windows +- need_version=no +- need_lib_prefix=no +- case $GCC,$host_os in +- yes,cygwin*) +- library_names_spec='$libname.dll.a' +- soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}.dll' +- postinstall_cmds='dlpath=`bash 2>&1 -c '\''. $dir/${file}i;echo \$dlname'\''`~ +- dldir=$destdir/`dirname \$dlpath`~ +- test -d \$dldir || mkdir -p \$dldir~ +- $install_prog .libs/$dlname \$dldir/$dlname' +- postuninstall_cmds='dldll=`bash 2>&1 -c '\''. $file; echo \$dlname'\''`~ +- dlpath=$dir/\$dldll~ +- $rm \$dlpath' +- ;; +- yes,mingw*) +- library_names_spec='${libname}`echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}.dll' +- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g"` +- ;; +- yes,pw32*) +- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll' +- ;; +- *) +- library_names_spec='${libname}`echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}.dll $libname.lib' +- ;; +- esac +- dynamic_linker='Win32 ld.exe' +- # FIXME: first we should search . and the directory the executable is in +- shlibpath_var=PATH +- ;; + +-darwin* | rhapsody*) +- dynamic_linker="$host_os dyld" +- version_type=darwin +- need_lib_prefix=no +- need_version=no +- # FIXME: Relying on posixy $() will cause problems for +- # cross-compilation, but unfortunately the echo tests do not +- # yet detect zsh echo's removal of \ escapes. +- library_names_spec='${libname}${release}${versuffix}.$(test .$module = .yes && echo so || echo dylib) ${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib) ${libname}.$(test .$module = .yes && echo so || echo dylib)' +- soname_spec='${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib)' +- shlibpath_overrides_runpath=yes +- shlibpath_var=DYLD_LIBRARY_PATH +- ;; ++# AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME]) ++# --------------------------------------- ++AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC], ++[_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)= ++_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= ++_LT_AC_TAGVAR(lt_prog_compiler_static, $1)= + +-freebsd1*) +- dynamic_linker=no +- ;; ++AC_MSG_CHECKING([for $compiler option to produce PIC]) ++ ifelse([$1],[CXX],[ ++ # C++ specific cases for pic, static, wl, etc. ++ if test "$GXX" = yes; then ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + +-freebsd*) +- objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` +- version_type=freebsd-$objformat +- case $version_type in +- freebsd-elf*) +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' +- need_version=no +- need_lib_prefix=no ++ case $host_os in ++ aix*) ++ # All AIX code is PIC. ++ if test "$host_cpu" = ia64; then ++ # AIX 5 now supports IA64 processor ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ fi + ;; +- freebsd-*) +- library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix' +- need_version=yes ++ amigaos*) ++ # FIXME: we need at least 68020 code to build shared libraries, but ++ # adding the `-m68020' flag to GCC prevents building anything better, ++ # like `-m68040'. ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; +- esac +- shlibpath_var=LD_LIBRARY_PATH +- case $host_os in +- freebsd2*) +- shlibpath_overrides_runpath=yes +- ;; +- *) +- shlibpath_overrides_runpath=no +- hardcode_into_libs=yes +- ;; +- esac +- ;; ++ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) ++ # PIC is the default for these OSes. ++ ;; ++ mingw* | cygwin* | os2* | pw32*) ++ # This hack is so that the source file can tell whether it is being ++ # built for inclusion in a dll (and should export symbols for example). ++ # Although the cygwin gcc ignores -fPIC, still need this for old-style ++ # (--disable-auto-import) libraries ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' ++ ;; ++ darwin* | rhapsody*) ++ # PIC is the default on this platform ++ # Common symbols not allowed in MH_DYLIB files ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ++ ;; ++ *djgpp*) ++ # DJGPP does not support shared libraries at all ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= ++ ;; ++ interix[[3-9]]*) ++ # Interix 3.x gcc -fpic/-fPIC options generate broken code. ++ # Instead, we relocate shared libraries at runtime. ++ ;; ++ sysv4*MP*) ++ if test -d /usr/nec; then ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic ++ fi ++ ;; ++ hpux*) ++ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but ++ # not for PA HP-UX. ++ case $host_cpu in ++ hppa*64*|ia64*) ++ ;; ++ *) ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ++ ;; ++ esac ++ ;; ++ *) ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ++ ;; ++ esac ++ else ++ case $host_os in ++ aix4* | aix5*) ++ # All AIX code is PIC. ++ if test "$host_cpu" = ia64; then ++ # AIX 5 now supports IA64 processor ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ else ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' ++ fi ++ ;; ++ chorus*) ++ case $cc_basename in ++ cxch68*) ++ # Green Hills C++ Compiler ++ # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--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" ++ ;; ++ esac ++ ;; ++ darwin*) ++ # PIC is the default on this platform ++ # Common symbols not allowed in MH_DYLIB files ++ case $cc_basename in ++ xlc*) ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ ;; ++ esac ++ ;; ++ dgux*) ++ case $cc_basename in ++ ec++*) ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ++ ;; ++ ghcx*) ++ # Green Hills C++ Compiler ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ++ ;; ++ *) ++ ;; ++ esac ++ ;; ++ freebsd* | dragonfly*) ++ # FreeBSD uses GNU C++ ++ ;; ++ hpux9* | hpux10* | hpux11*) ++ case $cc_basename in ++ CC*) ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' ++ if test "$host_cpu" != ia64; then ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ++ fi ++ ;; ++ aCC*) ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' ++ case $host_cpu in ++ hppa*64*|ia64*) ++ # +Z the default ++ ;; ++ *) ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ++ ;; ++ esac ++ ;; ++ *) ++ ;; ++ esac ++ ;; ++ interix*) ++ # This is c89, which is MS Visual C++ (no shared libs) ++ # Anyone wants to do a port? ++ ;; ++ irix5* | irix6* | nonstopux*) ++ case $cc_basename in ++ CC*) ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ++ # CC pic flag -KPIC is the default. ++ ;; ++ *) ++ ;; ++ esac ++ ;; ++ linux* | k*bsd*-gnu) ++ case $cc_basename in ++ KCC*) ++ # KAI C++ Compiler ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ++ ;; ++ icpc* | ecpc*) ++ # Intel C++ ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' ++ ;; ++ pgCC*) ++ # Portland Group C++ compiler. ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ ;; ++ cxx*) ++ # Compaq C++ ++ # Make sure the PIC flag is empty. It appears that all Alpha ++ # Linux and Compaq Tru64 Unix objects are PIC. ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ++ ;; ++ *) ++ case `$CC -V 2>&1 | sed 5q` in ++ *Sun\ C*) ++ # Sun C++ 5.9 ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ++ ;; ++ esac ++ ;; ++ esac ++ ;; ++ lynxos*) ++ ;; ++ m88k*) ++ ;; ++ mvs*) ++ case $cc_basename in ++ cxx*) ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' ++ ;; ++ *) ++ ;; ++ esac ++ ;; ++ netbsd* | netbsdelf*-gnu) ++ ;; ++ osf3* | osf4* | osf5*) ++ case $cc_basename in ++ KCC*) ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' ++ ;; ++ RCC*) ++ # Rational C++ 2.4.1 ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ++ ;; ++ cxx*) ++ # Digital/Compaq C++ ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ # Make sure the PIC flag is empty. It appears that all Alpha ++ # Linux and Compaq Tru64 Unix objects are PIC. ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ++ ;; ++ *) ++ ;; ++ esac ++ ;; ++ psos*) ++ ;; ++ solaris*) ++ case $cc_basename in ++ CC*) ++ # Sun C++ 4.2, 5.x and Centerline C++ ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ++ ;; ++ gcx*) ++ # Green Hills C++ Compiler ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' ++ ;; ++ *) ++ ;; ++ esac ++ ;; ++ sunos4*) ++ case $cc_basename in ++ CC*) ++ # Sun C++ 4.x ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ ;; ++ lcc*) ++ # Lucid ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ++ ;; ++ *) ++ ;; ++ esac ++ ;; ++ tandem*) ++ case $cc_basename in ++ NCC*) ++ # NonStop-UX NCC 3.20 ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ++ ;; ++ *) ++ ;; ++ esac ++ ;; ++ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) ++ case $cc_basename in ++ CC*) ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ ;; ++ esac ++ ;; ++ vxworks*) ++ ;; ++ *) ++ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ++ ;; ++ esac ++ fi ++], ++[ ++ if test "$GCC" = yes; then ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + +-gnu*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so' +- soname_spec='${libname}${release}.so$major' +- shlibpath_var=LD_LIBRARY_PATH +- hardcode_into_libs=yes +- ;; ++ case $host_os in ++ aix*) ++ # All AIX code is PIC. ++ if test "$host_cpu" = ia64; then ++ # AIX 5 now supports IA64 processor ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ fi ++ ;; + +-hpux9* | hpux10* | hpux11*) +- # Give a soname corresponding to the major version so that dld.sl refuses to +- # link against other versions. +- dynamic_linker="$host_os dld.sl" +- version_type=sunos +- need_lib_prefix=no +- need_version=no +- shlibpath_var=SHLIB_PATH +- shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH +- library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl' +- soname_spec='${libname}${release}.sl$major' +- # HP-UX runs *really* slowly unless shared libraries are mode 555. +- postinstall_cmds='chmod 555 $lib' +- ;; ++ amigaos*) ++ # FIXME: we need at least 68020 code to build shared libraries, but ++ # adding the `-m68020' flag to GCC prevents building anything better, ++ # like `-m68040'. ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ++ ;; + +-irix5* | irix6*) +- version_type=irix +- need_lib_prefix=no +- need_version=no +- soname_spec='${libname}${release}.so$major' +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so $libname.so' +- case $host_os in +- irix5*) +- libsuff= shlibsuff= +- ;; +- *) +- case $LD in # libtool.m4 will add one of these switches to LD +- *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;; +- *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; +- *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;; +- *) libsuff= shlibsuff= libmagic=never-match;; +- esac +- ;; +- esac +- shlibpath_var=LD_LIBRARY${shlibsuff}_PATH +- shlibpath_overrides_runpath=no +- sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" +- sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" +- ;; ++ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) ++ # PIC is the default for these OSes. ++ ;; + +-# No shared lib support for Linux oldld, aout, or coff. +-linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) +- dynamic_linker=no +- ;; ++ mingw* | cygwin* | pw32* | os2*) ++ # This hack is so that the source file can tell whether it is being ++ # built for inclusion in a dll (and should export symbols for example). ++ # Although the cygwin gcc ignores -fPIC, still need this for old-style ++ # (--disable-auto-import) libraries ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' ++ ;; + +-# This must be Linux ELF. +-linux-gnu*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' +- soname_spec='${libname}${release}.so$major' +- finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=no +- # This implies no fast_install, which is unacceptable. +- # Some rework will be needed to allow for fast_install +- # before this can be enabled. +- hardcode_into_libs=yes ++ darwin* | rhapsody*) ++ # PIC is the default on this platform ++ # Common symbols not allowed in MH_DYLIB files ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ++ ;; + +- # We used to test for /lib/ld.so.1 and disable shared libraries on +- # powerpc, because MkLinux only supported shared libraries with the +- # GNU dynamic linker. Since this was broken with cross compilers, +- # most powerpc-linux boxes support dynamic linking these days and +- # people can always --disable-shared, the test was removed, and we +- # assume the GNU/Linux dynamic linker is in use. +- dynamic_linker='GNU/Linux ld.so' +- ;; ++ interix[[3-9]]*) ++ # Interix 3.x gcc -fpic/-fPIC options generate broken code. ++ # Instead, we relocate shared libraries at runtime. ++ ;; + +-netbsd*) +- version_type=sunos +- need_lib_prefix=no +- need_version=no +- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then +- library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' +- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' +- dynamic_linker='NetBSD (a.out) ld.so' +- else +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so' +- soname_spec='${libname}${release}.so$major' +- dynamic_linker='NetBSD ld.elf_so' +- fi +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- hardcode_into_libs=yes +- ;; ++ msdosdjgpp*) ++ # Just because we use GCC doesn't mean we suddenly get shared libraries ++ # on systems that don't support them. ++ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ++ enable_shared=no ++ ;; + +-newsos6) +- version_type=linux +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- ;; ++ sysv4*MP*) ++ if test -d /usr/nec; then ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic ++ fi ++ ;; + +-openbsd*) +- version_type=sunos +- need_lib_prefix=no +- need_version=no +- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +- case "$host_os" in +- openbsd2.[[89]] | openbsd2.[[89]].*) +- shlibpath_overrides_runpath=no ++ hpux*) ++ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but ++ # not for PA HP-UX. ++ case $host_cpu in ++ hppa*64*|ia64*) ++ # +Z the default ++ ;; ++ *) ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ++ ;; ++ esac + ;; ++ + *) +- shlibpath_overrides_runpath=yes ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else +- shlibpath_overrides_runpath=yes +- fi +- library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' +- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' +- shlibpath_var=LD_LIBRARY_PATH +- ;; +- +-os2*) +- libname_spec='$name' +- need_lib_prefix=no +- library_names_spec='$libname.dll $libname.a' +- dynamic_linker='OS/2 ld.exe' +- shlibpath_var=LIBPATH +- ;; ++ # PORTME Check for flag to pass linker flags through the system compiler. ++ case $host_os in ++ aix*) ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ if test "$host_cpu" = ia64; then ++ # AIX 5 now supports IA64 processor ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ else ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' ++ fi ++ ;; ++ darwin*) ++ # PIC is the default on this platform ++ # Common symbols not allowed in MH_DYLIB files ++ case $cc_basename in ++ xlc*) ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ ;; ++ esac ++ ;; + +-osf3* | osf4* | osf5*) +- version_type=osf +- need_version=no +- soname_spec='${libname}${release}.so' +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' +- shlibpath_var=LD_LIBRARY_PATH +- sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" +- sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" +- ;; ++ mingw* | cygwin* | pw32* | os2*) ++ # This hack is so that the source file can tell whether it is being ++ # built for inclusion in a dll (and should export symbols for example). ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' ++ ;; + +-sco3.2v5*) +- version_type=osf +- soname_spec='${libname}${release}.so$major' +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' +- shlibpath_var=LD_LIBRARY_PATH +- ;; ++ hpux9* | hpux10* | hpux11*) ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but ++ # not for PA HP-UX. ++ case $host_cpu in ++ hppa*64*|ia64*) ++ # +Z the default ++ ;; ++ *) ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ++ ;; ++ esac ++ # Is there a better lt_prog_compiler_static that works with the bundled CC? ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' ++ ;; + +-solaris*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' +- soname_spec='${libname}${release}.so$major' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- hardcode_into_libs=yes +- # ldd complains unless libraries are executable +- postinstall_cmds='chmod +x $lib' +- ;; ++ irix5* | irix6* | nonstopux*) ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ # PIC (with -KPIC) is the default. ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ++ ;; + +-sunos4*) +- version_type=sunos +- library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' +- finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- if test "$with_gnu_ld" = yes; then +- need_lib_prefix=no +- fi +- need_version=yes +- ;; ++ newsos6) ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ ;; + +-sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) +- version_type=linux +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' +- soname_spec='${libname}${release}.so$major' +- shlibpath_var=LD_LIBRARY_PATH +- case $host_vendor in +- sni) +- shlibpath_overrides_runpath=no ++ linux* | k*bsd*-gnu) ++ case $cc_basename in ++ icc* | ecc*) ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' ++ ;; ++ pgcc* | pgf77* | pgf90* | pgf95*) ++ # Portland Group compilers (*not* the Pentium gcc compiler, ++ # which looks to be a dead project) ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ ;; ++ ccc*) ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ # All Alpha code is PIC. ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ++ ;; ++ *) ++ case `$CC -V 2>&1 | sed 5q` in ++ *Sun\ C*) ++ # Sun C 5.9 ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ ;; ++ *Sun\ F*) ++ # Sun Fortran 8.3 passes all unrecognized flags to the linker ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='' ++ ;; ++ esac ++ ;; ++ esac + ;; +- motorola) +- need_lib_prefix=no +- need_version=no +- shlibpath_overrides_runpath=no +- sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ++ ++ osf3* | osf4* | osf5*) ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ # All OSF/1 code is PIC. ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; +- esac +- ;; + +-uts4*) +- version_type=linux +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' +- soname_spec='${libname}${release}.so$major' +- shlibpath_var=LD_LIBRARY_PATH +- ;; ++ rdos*) ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ++ ;; + +-dgux*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' +- soname_spec='${libname}${release}.so$major' +- shlibpath_var=LD_LIBRARY_PATH +- ;; ++ solaris*) ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ case $cc_basename in ++ f77* | f90* | f95*) ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; ++ *) ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; ++ esac ++ ;; + +-sysv4*MP*) +- if test -d /usr/nec ;then +- version_type=linux +- library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so' +- soname_spec='$libname.so.$major' +- shlibpath_var=LD_LIBRARY_PATH +- fi +- ;; ++ sunos4*) ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ ;; + +-*) +- dynamic_linker=no +- ;; +-esac +-AC_MSG_RESULT([$dynamic_linker]) +-test "$dynamic_linker" = no && can_build_shared=no ++ sysv4 | sysv4.2uw2* | sysv4.3*) ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ ;; + +-# Report the final consequences. +-AC_MSG_CHECKING([if libtool supports shared libraries]) +-AC_MSG_RESULT([$can_build_shared]) ++ sysv4*MP*) ++ if test -d /usr/nec ;then ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ fi ++ ;; + +-AC_MSG_CHECKING([whether to build shared libraries]) +-test "$can_build_shared" = "no" && enable_shared=no ++ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ ;; + +-# On AIX, shared libraries and static libraries use the same namespace, and +-# are all built from PIC. +-case "$host_os" in +-aix3*) +- test "$enable_shared" = yes && enable_static=no +- if test -n "$RANLIB"; then +- archive_cmds="$archive_cmds~\$RANLIB \$lib" +- postinstall_cmds='$RANLIB $lib' +- fi +- ;; ++ unicos*) ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ++ ;; + +-aix4*) +- if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then +- test "$enable_shared" = yes && enable_static=no +- fi +- ;; +-esac +-AC_MSG_RESULT([$enable_shared]) ++ uts4*) ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ ;; + +-AC_MSG_CHECKING([whether to build static libraries]) +-# Make sure either enable_shared or enable_static is yes. +-test "$enable_shared" = yes || enable_static=yes +-AC_MSG_RESULT([$enable_static]) ++ *) ++ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ++ ;; ++ esac ++ fi ++]) ++AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)]) + +-if test "$hardcode_action" = relink; then +- # Fast installation is not supported +- enable_fast_install=no +-elif test "$shlibpath_overrides_runpath" = yes || +- test "$enable_shared" = no; then +- # Fast installation is not necessary +- enable_fast_install=needless ++# ++# Check to make sure the PIC flag actually works. ++# ++if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then ++ AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works], ++ _LT_AC_TAGVAR(lt_prog_compiler_pic_works, $1), ++ [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [], ++ [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in ++ "" | " "*) ;; ++ *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;; ++ esac], ++ [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= ++ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) + fi ++case $host_os in ++ # For platforms which do not support PIC, -DPIC is meaningless: ++ *djgpp*) ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= ++ ;; ++ *) ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])" ++ ;; ++esac + +-variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +-if test "$GCC" = yes; then +- variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +-fi ++# ++# Check to make sure the static flag actually works. ++# ++wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_AC_TAGVAR(lt_prog_compiler_static, $1)\" ++AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], ++ _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1), ++ $lt_tmp_static_flag, ++ [], ++ [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=]) ++]) + +-AC_LIBTOOL_DLOPEN_SELF + +-if test "$enable_shared" = yes && test "$GCC" = yes; then +- case $archive_cmds in +- *'~'*) +- # FIXME: we may have to deal with multi-command sequences. +- ;; +- '$CC '*) +- # Test whether the compiler implicitly links with -lc since on some +- # systems, -lgcc has to come before -lc. If gcc already passes -lc +- # to ld, don't add -lc before -lgcc. +- AC_MSG_CHECKING([whether -lc should be explicitly linked in]) +- AC_CACHE_VAL([lt_cv_archive_cmds_need_lc], +- [$rm conftest* +- echo 'static int dummy;' > conftest.$ac_ext +- +- if AC_TRY_EVAL(ac_compile); then +- soname=conftest +- lib=conftest +- libobjs=conftest.$ac_objext +- deplibs= +- wl=$lt_cv_prog_cc_wl +- compiler_flags=-v +- linker_flags=-v +- verstring= +- output_objdir=. +- libname=conftest +- save_allow_undefined_flag=$allow_undefined_flag +- allow_undefined_flag= +- if AC_TRY_EVAL(archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) +- then +- lt_cv_archive_cmds_need_lc=no +- else +- lt_cv_archive_cmds_need_lc=yes +- fi +- allow_undefined_flag=$save_allow_undefined_flag ++# AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME]) ++# ------------------------------------ ++# See if the linker supports building shared libraries. ++AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS], ++[AC_REQUIRE([LT_AC_PROG_SED])dnl ++AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) ++ifelse([$1],[CXX],[ ++ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ++ case $host_os in ++ aix4* | aix5*) ++ # If we're using GNU nm, then we don't want the "-C" option. ++ # -C means demangle to AIX nm, but means don't demangle with GNU nm ++ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then ++ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + else +- cat conftest.err 1>&5 +- fi]) +- AC_MSG_RESULT([$lt_cv_archive_cmds_need_lc]) ++ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' ++ fi ++ ;; ++ pw32*) ++ _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" ++ ;; ++ cygwin* | mingw*) ++ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' ++ ;; ++ linux* | k*bsd*-gnu) ++ _LT_AC_TAGVAR(link_all_deplibs, $1)=no ++ ;; ++ *) ++ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ++ ;; ++ esac ++],[ ++ runpath_var= ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)= ++ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no ++ _LT_AC_TAGVAR(archive_cmds, $1)= ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)= ++ _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)= ++ _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)= ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= ++ _LT_AC_TAGVAR(thread_safe_flag_spec, $1)= ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= ++ _LT_AC_TAGVAR(hardcode_direct, $1)=no ++ _LT_AC_TAGVAR(hardcode_minus_L, $1)=no ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported ++ _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown ++ _LT_AC_TAGVAR(hardcode_automatic, $1)=no ++ _LT_AC_TAGVAR(module_cmds, $1)= ++ _LT_AC_TAGVAR(module_expsym_cmds, $1)= ++ _LT_AC_TAGVAR(always_export_symbols, $1)=no ++ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ++ # include_expsyms should be a list of space-separated symbols to be *always* ++ # included in the symbol list ++ _LT_AC_TAGVAR(include_expsyms, $1)= ++ # exclude_expsyms can be an extended regexp of symbols to exclude ++ # it will be wrapped by ` (' and `)$', so one must not match beginning or ++ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', ++ # as well as any symbol that contains `d'. ++ _LT_AC_TAGVAR(exclude_expsyms, $1)="_GLOBAL_OFFSET_TABLE_" ++ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out ++ # platforms (ab)use it in PIC code, but their linkers get confused if ++ # the symbol is explicitly referenced. Since portable code cannot ++ # rely on this symbol name, it's probably fine to never include it in ++ # preloaded symbol tables. ++ extract_expsyms_cmds= ++ # Just being paranoid about ensuring that cc_basename is set. ++ _LT_CC_BASENAME([$compiler]) ++ case $host_os in ++ cygwin* | mingw* | pw32*) ++ # FIXME: the MSVC++ port hasn't been tested in a loooong time ++ # When not using gcc, we currently assume that we are using ++ # Microsoft Visual C++. ++ if test "$GCC" != yes; then ++ with_gnu_ld=no ++ fi ++ ;; ++ interix*) ++ # we just hope/assume this is gcc and not c89 (= MSVC++) ++ with_gnu_ld=yes ++ ;; ++ openbsd*) ++ with_gnu_ld=no + ;; + esac +-fi +-need_lc=${lt_cv_archive_cmds_need_lc-yes} + +-# The second clause should only fire when bootstrapping the +-# libtool distribution, otherwise you forgot to ship ltmain.sh +-# with your package, and you will get complaints that there are +-# no rules to generate ltmain.sh. +-if test -f "$ltmain"; then +- : +-else +- # If there is no Makefile yet, we rely on a make rule to execute +- # `config.status --recheck' to rerun these tests and create the +- # libtool script then. +- test -f Makefile && make "$ltmain" +-fi ++ _LT_AC_TAGVAR(ld_shlibs, $1)=yes ++ if test "$with_gnu_ld" = yes; then ++ # If archive_cmds runs LD, not CC, wlarc should be empty ++ wlarc='${wl}' + +-if test -f "$ltmain"; then +- trap "$rm \"${ofile}T\"; exit 1" 1 2 15 +- $rm -f "${ofile}T" ++ # Set some defaults for GNU ld with shared library support. These ++ # are reset later if shared libraries are not supported. Putting them ++ # here allows them to be overridden if necessary. ++ runpath_var=LD_RUN_PATH ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' ++ # ancient GNU ld didn't support --whole-archive et. al. ++ if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' ++ else ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= ++ fi ++ supports_anon_versioning=no ++ case `$LD -v 2>/dev/null` in ++ *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 ++ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... ++ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... ++ *\ 2.11.*) ;; # other 2.11 versions ++ *) supports_anon_versioning=yes ;; ++ esac + +- echo creating $ofile ++ # See if GNU ld supports shared libraries. ++ case $host_os in ++ aix3* | aix4* | aix5*) ++ # On AIX/PPC, the GNU linker is very broken ++ if test "$host_cpu" != ia64; then ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ cat <&2 + +- # Now quote all the things that may contain metacharacters while being +- # careful not to overquote the AC_SUBSTed values. We take copies of the +- # variables and quote the copies for generation of the libtool script. +- for var in echo old_CC old_CFLAGS \ +- AR AR_FLAGS CC LD LN_S NM SHELL \ +- reload_flag reload_cmds wl \ +- pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \ +- thread_safe_flag_spec whole_archive_flag_spec libname_spec \ +- library_names_spec soname_spec \ +- RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \ +- old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds \ +- postuninstall_cmds extract_expsyms_cmds old_archive_from_expsyms_cmds \ +- old_striplib striplib file_magic_cmd export_symbols_cmds \ +- deplibs_check_method allow_undefined_flag no_undefined_flag \ +- finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \ +- global_symbol_to_c_name_address \ +- hardcode_libdir_flag_spec hardcode_libdir_separator \ +- sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ +- compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do ++*** Warning: the GNU linker, at least up to release 2.9.1, is reported ++*** to be unable to reliably create shared libraries on AIX. ++*** Therefore, libtool is disabling shared libraries support. If you ++*** really care for shared libraries, you may want to modify your PATH ++*** so that a non-GNU linker is found, and then restart. + +- case $var in +- reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \ +- old_postinstall_cmds | old_postuninstall_cmds | \ +- export_symbols_cmds | archive_cmds | archive_expsym_cmds | \ +- extract_expsyms_cmds | old_archive_from_expsyms_cmds | \ +- postinstall_cmds | postuninstall_cmds | \ +- finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) +- # Double-quote double-evaled strings. +- eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" +- ;; +- *) +- eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ++EOF ++ fi + ;; +- esac +- done + +- cat <<__EOF__ > "${ofile}T" +-#! $SHELL ++ amigaos*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$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)' ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ++ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes ++ ++ # Samuel A. Falvo II reports ++ # that the semantics of dynamic libraries on AmigaOS, at least up ++ # to version 4, is to share data among multiple programs linked ++ # with the same dynamic library. Since this doesn't match the ++ # behavior of shared libraries on other platforms, we can't use ++ # them. ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; + +-# `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +-# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +-# NOTE: Changes made to this file will be lost: look at ltmain.sh. +-# +-# Copyright (C) 1996-2000 Free Software Foundation, Inc. +-# Originally by Gordon Matzigkeit , 1996 +-# +-# This program is free software; you can redistribute it and/or modify +-# it under the terms of the GNU General Public License as published by +-# the Free Software Foundation; either version 2 of the License, or +-# (at your option) any later version. +-# +-# This program is distributed in the hope that it will be useful, but +-# WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +-# General Public License for more details. +-# +-# You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +-# +-# As a special exception to the GNU General Public License, if you +-# distribute this file as part of a program that contains a +-# configuration script generated by Autoconf, you may include it under +-# the same distribution terms that you use for the rest of that program. ++ beos*) ++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported ++ # Joseph Beckenbach says some releases of gcc ++ # support --undefined. This deserves some investigation. FIXME ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ else ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ fi ++ ;; + +-# Sed that helps us avoid accidentally triggering echo(1) options like -n. +-Xsed="sed -e s/^X//" ++ cygwin* | mingw* | pw32*) ++ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, ++ # as there is no search path for DLLs. ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported ++ _LT_AC_TAGVAR(always_export_symbols, $1)=no ++ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ++ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' ++ ++ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' ++ # If the export-symbols file already is a .def file (1st line ++ # is EXPORTS), use it as is; otherwise, prepend... ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then ++ cp $export_symbols $output_objdir/$soname.def; ++ else ++ echo EXPORTS > $output_objdir/$soname.def; ++ cat $export_symbols >> $output_objdir/$soname.def; ++ fi~ ++ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' ++ else ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ fi ++ ;; + +-# The HP-UX ksh and POSIX shell print the target directory to stdout +-# if CDPATH is set. +-if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi ++ interix[[3-9]]*) ++ _LT_AC_TAGVAR(hardcode_direct, $1)=no ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ++ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. ++ # Instead, shared libraries are loaded at an image base (0x10000000 by ++ # default) and relocated if they conflict, which is a slow very memory ++ # consuming and fragmenting process. To avoid this, we pick a random, ++ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link ++ # time. Moving up from 0x10000000 also allows more sbrk(2) space. ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='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' ++ ;; + +-# ### BEGIN LIBTOOL CONFIG ++ gnu* | linux* | k*bsd*-gnu) ++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ tmp_addflag= ++ case $cc_basename,$host_cpu in ++ pgcc*) # Portland Group C compiler ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ++ tmp_addflag=' $pic_flag' ++ ;; ++ pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ++ tmp_addflag=' $pic_flag -Mnomain' ;; ++ ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 ++ tmp_addflag=' -i_dynamic' ;; ++ efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 ++ tmp_addflag=' -i_dynamic -nofor_main' ;; ++ ifc* | ifort*) # Intel Fortran compiler ++ tmp_addflag=' -nofor_main' ;; ++ esac ++ case `$CC -V 2>&1 | sed 5q` in ++ *Sun\ C*) # Sun C 5.9 ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ++ tmp_sharedflag='-G' ;; ++ *Sun\ F*) # Sun Fortran 8.3 ++ tmp_sharedflag='-G' ;; ++ *) ++ tmp_sharedflag='-shared' ;; ++ esac ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + +-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: ++ if test $supports_anon_versioning = yes; then ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~ ++ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ ++ $echo "local: *; };" >> $output_objdir/$libname.ver~ ++ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' ++ fi ++ _LT_AC_TAGVAR(link_all_deplibs, $1)=no ++ else ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ fi ++ ;; + +-# Shell to use when invoking shell scripts. +-SHELL=$lt_SHELL ++ netbsd* | netbsdelf*-gnu) ++ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' ++ wlarc= ++ else ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ fi ++ ;; + +-# Whether or not to build shared libraries. +-build_libtool_libs=$enable_shared ++ solaris*) ++ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ cat <&2 + +-# Whether or not to build static libraries. +-build_old_libs=$enable_static ++*** Warning: The releases 2.8.* of the GNU linker cannot reliably ++*** create shared libraries on Solaris systems. Therefore, libtool ++*** is disabling shared libraries support. We urge you to upgrade GNU ++*** binutils to release 2.9.1 or newer. Another option is to modify ++*** your PATH or compiler configuration so that the native linker is ++*** used, and then restart. + +-# Whether or not to add -lc for building shared libraries. +-build_libtool_need_lc=$need_lc ++EOF ++ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ else ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ fi ++ ;; + +-# Whether or not to optimize for fast installation. +-fast_install=$enable_fast_install ++ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) ++ case `$LD -v 2>&1` in ++ *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ cat <<_LT_EOF 1>&2 + +-# The host system. +-host_alias=$host_alias +-host=$host ++*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not ++*** reliably create shared libraries on SCO systems. Therefore, libtool ++*** is disabling shared libraries support. We urge you to upgrade GNU ++*** binutils to release 2.16.91.0.3 or newer. Another option is to modify ++*** your PATH or compiler configuration so that the native linker is ++*** used, and then restart. + +-# An echo program that does not interpret backslashes. +-echo=$lt_echo ++_LT_EOF ++ ;; ++ *) ++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' ++ else ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ fi ++ ;; ++ esac ++ ;; + +-# The archiver. +-AR=$lt_AR +-AR_FLAGS=$lt_AR_FLAGS ++ sunos4*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' ++ wlarc= ++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ ;; + +-# The default C compiler. +-CC=$lt_CC ++ *) ++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ else ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ fi ++ ;; ++ esac + +-# Is the compiler the GNU C compiler? +-with_gcc=$GCC ++ if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no; then ++ runpath_var= ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= ++ fi ++ else ++ # PORTME fill in a description of your system's linker (not GNU ld) ++ case $host_os in ++ aix3*) ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported ++ _LT_AC_TAGVAR(always_export_symbols, $1)=yes ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' ++ # Note: this linker hardcodes the directories in LIBPATH if there ++ # are no directories specified by -L. ++ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes ++ if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then ++ # Neither direct hardcoding nor static linking is supported with a ++ # broken collect2. ++ _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported ++ fi ++ ;; + +-# The linker used to build libraries. +-LD=$lt_LD ++ aix4* | aix5*) ++ if test "$host_cpu" = ia64; then ++ # On IA64, the linker does run time linking by default, so we don't ++ # have to do anything special. ++ aix_use_runtimelinking=no ++ exp_sym_flag='-Bexport' ++ no_entry_flag="" ++ else ++ # If we're using GNU nm, then we don't want the "-C" option. ++ # -C means demangle to AIX nm, but means don't demangle with GNU nm ++ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then ++ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' ++ else ++ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' ++ fi ++ aix_use_runtimelinking=no + +-# Whether we need hard or soft links. +-LN_S=$lt_LN_S ++ # Test if we are trying to use run time linking or normal ++ # AIX style linking. If -brtl is somewhere in LDFLAGS, we ++ # need to do runtime linking. ++ case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) ++ for ld_flag in $LDFLAGS; do ++ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then ++ aix_use_runtimelinking=yes ++ break ++ fi ++ done ++ ;; ++ esac + +-# A BSD-compatible nm program. +-NM=$lt_NM ++ exp_sym_flag='-bexport' ++ no_entry_flag='-bnoentry' ++ fi + +-# A symbol stripping program +-STRIP=$STRIP ++ # When large executables or shared objects are built, AIX ld can ++ # have problems creating the table of contents. If linking a library ++ # or program results in "error TOC overflow" add -mminimal-toc to ++ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not ++ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. ++ ++ _LT_AC_TAGVAR(archive_cmds, $1)='' ++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' ++ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ++ ++ if test "$GCC" = yes; then ++ case $host_os in aix4.[[012]]|aix4.[[012]].*) ++ # We only want to do this on AIX 4.2 and lower, the check ++ # below for broken collect2 doesn't work under 4.3+ ++ collect2name=`${CC} -print-prog-name=collect2` ++ if test -f "$collect2name" && \ ++ strings "$collect2name" | grep resolve_lib_name >/dev/null ++ then ++ # We have reworked collect2 ++ : ++ else ++ # We have old collect2 ++ _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported ++ # It fails to find uninstalled libraries when the uninstalled ++ # path is not listed in the libpath. Setting hardcode_minus_L ++ # to unsupported forces relinking ++ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= ++ fi ++ ;; ++ esac ++ shared_flag='-shared' ++ if test "$aix_use_runtimelinking" = yes; then ++ shared_flag="$shared_flag "'${wl}-G' ++ fi ++ else ++ # not using gcc ++ if test "$host_cpu" = ia64; then ++ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release ++ # chokes on -Wl,-G. The following line is correct: ++ shared_flag='-G' ++ else ++ if test "$aix_use_runtimelinking" = yes; then ++ shared_flag='${wl}-G' ++ else ++ shared_flag='${wl}-bM:SRE' ++ fi ++ fi ++ fi + +-# Used to examine libraries when file_magic_cmd begins "file" +-MAGIC_CMD=$MAGIC_CMD ++ # It seems that -bexpall does not export symbols beginning with ++ # underscore (_), so it is better to generate a list of symbols to export. ++ _LT_AC_TAGVAR(always_export_symbols, $1)=yes ++ if test "$aix_use_runtimelinking" = yes; then ++ # Warning - without using the other runtime loading flags (-brtl), ++ # -berok will link without error, but may produce a broken library. ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' ++ # Determine the default libpath from the value encoded in an empty executable. ++ _LT_AC_SYS_LIBPATH_AIX ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" ++ else ++ if test "$host_cpu" = ia64; then ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$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" ++ else ++ # Determine the default libpath from the value encoded in an empty executable. ++ _LT_AC_SYS_LIBPATH_AIX ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" ++ # Warning - without using the other run time loading flags, ++ # -berok will link without error, but may produce a broken library. ++ _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' ++ # Exported symbols can be pulled into shared objects from archives ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience' ++ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes ++ # This is similar to how AIX traditionally builds its shared libraries. ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' ++ fi ++ fi ++ ;; + +-# Used on cygwin: DLL creation program. +-DLLTOOL="$DLLTOOL" ++ amigaos*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$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)' ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ++ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes ++ # see comment about different semantics on the GNU ld section ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; + +-# Used on cygwin: object dumper. +-OBJDUMP="$OBJDUMP" ++ bsdi[[45]]*) ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ++ ;; + +-# Used on cygwin: assembler. +-AS="$AS" ++ cygwin* | mingw* | pw32*) ++ # When not using gcc, we currently assume that we are using ++ # Microsoft Visual C++. ++ # hardcode_libdir_flag_spec is actually meaningless, as there is ++ # no search path for DLLs. ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported ++ # Tell ltmain to make .lib files, not .a files. ++ libext=lib ++ # Tell ltmain to make .dll files, not .so files. ++ shrext_cmds=".dll" ++ # FIXME: Setting linknames here is a bad hack. ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' ++ # The linker will automatically build a .lib file if we build a DLL. ++ _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true' ++ # FIXME: Should let the user specify the lib program. ++ _LT_AC_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' ++ _LT_AC_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`' ++ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ++ ;; + +-# The name of the directory that contains temporary libtool files. +-objdir=$objdir ++ darwin* | rhapsody*) ++ case $host_os in ++ rhapsody* | darwin1.[[012]]) ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' ++ ;; ++ *) # Darwin 1.3 on ++ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ++ else ++ case ${MACOSX_DEPLOYMENT_TARGET} in ++ 10.[[012]]) ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ++ ;; ++ 10.*) ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' ++ ;; ++ esac ++ fi ++ ;; ++ esac ++ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ++ _LT_AC_TAGVAR(hardcode_direct, $1)=no ++ _LT_AC_TAGVAR(hardcode_automatic, $1)=yes ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' ++ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ++ if test "$GCC" = yes ; then ++ output_verbose_link_cmd='echo' ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' ++ _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' ++ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ else ++ case $cc_basename in ++ xlc*) ++ output_verbose_link_cmd='echo' ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' ++ _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' ++ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ ;; ++ *) ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ esac ++ fi ++ ;; + +-# How to create reloadable object files. +-reload_flag=$lt_reload_flag +-reload_cmds=$lt_reload_cmds ++ dgux*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ ;; + +-# How to pass a linker flag through the compiler. +-wl=$lt_wl ++ freebsd1*) ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; + +-# Object file suffix (normally "o"). +-objext="$ac_objext" ++ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor ++ # support. Future versions do this automatically, but an explicit c++rt0.o ++ # does not break anything, and helps significantly (at the cost of a little ++ # extra space). ++ freebsd2.2*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ ;; + +-# Old archive suffix (normally "a"). +-libext="$libext" ++ # Unfortunately, older versions of FreeBSD 2 do not have this feature. ++ freebsd2*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' ++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes ++ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ ;; + +-# Executable file suffix (normally ""). +-exeext="$exeext" ++ # FreeBSD 3 and greater uses gcc -shared to do shared libraries. ++ freebsd* | dragonfly*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ ;; + +-# Additional compiler flags for building library objects. +-pic_flag=$lt_pic_flag +-pic_mode=$pic_mode ++ hpux9*) ++ if test "$GCC" = yes; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ++ else ++ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ++ fi ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes ++ ++ # hardcode_minus_L: Not really in the search PATH, ++ # but as the default location of the library. ++ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ++ ;; + +-# Does compiler simultaneously support -c and -o options? +-compiler_c_o=$lt_compiler_c_o ++ hpux10*) ++ if test "$GCC" = yes -a "$with_gnu_ld" = no; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ++ fi ++ if test "$with_gnu_ld" = no; then ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ++ ++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ++ ++ # hardcode_minus_L: Not really in the search PATH, ++ # but as the default location of the library. ++ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes ++ fi ++ ;; + +-# Can we write directly to a .lo ? +-compiler_o_lo=$lt_compiler_o_lo ++ hpux11*) ++ if test "$GCC" = yes -a "$with_gnu_ld" = no; then ++ case $host_cpu in ++ hppa*64*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ ia64*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ *) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ esac ++ else ++ case $host_cpu in ++ hppa*64*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ ia64*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ *) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ esac ++ fi ++ if test "$with_gnu_ld" = no; then ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ++ ++ case $host_cpu in ++ hppa*64*|ia64*) ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' ++ _LT_AC_TAGVAR(hardcode_direct, $1)=no ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ ;; ++ *) ++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + +-# Must we lock files when doing compilation ? +-need_locks=$lt_need_locks ++ # hardcode_minus_L: Not really in the search PATH, ++ # but as the default location of the library. ++ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes ++ ;; ++ esac ++ fi ++ ;; + +-# Do we need the lib prefix for modules? +-need_lib_prefix=$need_lib_prefix ++ irix5* | irix6* | nonstopux*) ++ if test "$GCC" = yes; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ else ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' ++ fi ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ++ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ++ ;; + +-# Do we need a version for libraries? +-need_version=$need_version ++ netbsd* | netbsdelf*-gnu) ++ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out ++ else ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF ++ fi ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ ;; + +-# Whether dlopen is supported. +-dlopen_support=$enable_dlopen ++ newsos6) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ ;; + +-# Whether dlopen of programs is supported. +-dlopen_self=$enable_dlopen_self ++ openbsd*) ++ if test -f /usr/libexec/ld.so; then ++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ++ else ++ case $host_os in ++ openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ++ ;; ++ *) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ++ ;; ++ esac ++ fi ++ else ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ fi ++ ;; + +-# Whether dlopen of statically linked programs is supported. +-dlopen_self_static=$enable_dlopen_self_static ++ os2*) ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ++ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported ++ _LT_AC_TAGVAR(archive_cmds, $1)='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' ++ _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ++ ;; + +-# Compiler flag to prevent dynamic linking. +-link_static_flag=$lt_link_static_flag ++ osf3*) ++ if test "$GCC" = yes; then ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ else ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' ++ fi ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ++ ;; + +-# Compiler flag to turn off builtin functions. +-no_builtin_flag=$lt_no_builtin_flag ++ osf4* | osf5*) # as osf3* with the addition of -msym flag ++ if test "$GCC" = yes; then ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ++ else ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ ++ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' + +-# Compiler flag to allow reflexive dlopens. +-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec ++ # Both c and cxx compiler support -rpath directly ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' ++ fi ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ++ ;; + +-# Compiler flag to generate shared objects directly from archives. +-whole_archive_flag_spec=$lt_whole_archive_flag_spec ++ solaris*) ++ _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' ++ if test "$GCC" = yes; then ++ wlarc='${wl}' ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ ++ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' ++ else ++ wlarc='' ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ ++ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' ++ fi ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ case $host_os in ++ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; ++ *) ++ # The compiler driver will combine and reorder linker options, ++ # but understands `-z linker_flag'. GCC discards it without `$wl', ++ # but is careful enough not to reorder. ++ # Supported since Solaris 2.6 (maybe 2.5.1?) ++ if test "$GCC" = yes; then ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ++ else ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ++ fi ++ ;; ++ esac ++ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ++ ;; + +-# Compiler flag to generate thread-safe objects. +-thread_safe_flag_spec=$lt_thread_safe_flag_spec ++ sunos4*) ++ if test "x$host_vendor" = xsequent; then ++ # Use $CC to link under sequent, because it throws in some extra .o ++ # files that make .init and .fini sections work. ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' ++ fi ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes ++ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ ;; + +-# Library versioning type. +-version_type=$version_type ++ sysv4) ++ case $host_vendor in ++ sni) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true??? ++ ;; ++ siemens) ++ ## LD is ld it makes a PLAMLIB ++ ## CC just makes a GrossModule. ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' ++ _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' ++ _LT_AC_TAGVAR(hardcode_direct, $1)=no ++ ;; ++ motorola) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie ++ ;; ++ esac ++ runpath_var='LD_RUN_PATH' ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ ;; + +-# Format of library name prefix. +-libname_spec=$lt_libname_spec ++ sysv4.3*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' ++ ;; + +-# List of archive names. First name is the real one, the rest are links. +-# The last name is the one that the linker finds with -lNAME. +-library_names_spec=$lt_library_names_spec ++ sysv4*MP*) ++ if test -d /usr/nec; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ runpath_var=LD_RUN_PATH ++ hardcode_runpath_var=yes ++ _LT_AC_TAGVAR(ld_shlibs, $1)=yes ++ fi ++ ;; + +-# The coded name of the library, if different from the real name. +-soname_spec=$lt_soname_spec ++ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) ++ _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' ++ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ runpath_var='LD_RUN_PATH' ++ ++ if test "$GCC" = yes; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ fi ++ ;; + +-# Commands used to build and install an old-style archive. +-RANLIB=$lt_RANLIB +-old_archive_cmds=$lt_old_archive_cmds +-old_postinstall_cmds=$lt_old_postinstall_cmds +-old_postuninstall_cmds=$lt_old_postuninstall_cmds ++ sysv5* | sco3.2v5* | sco5v6*) ++ # Note: We can NOT use -z defs as we might desire, because we do not ++ # link with -lc, and that would cause any symbols used from libc to ++ # always be unresolved, which means just about no library would ++ # ever link correctly. If we're not using GNU ld we use -z text ++ # though, which does catch some bad symbols but isn't as heavy-handed ++ # as -z defs. ++ _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' ++ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' ++ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' ++ runpath_var='LD_RUN_PATH' ++ ++ if test "$GCC" = yes; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ fi ++ ;; + +-# Create an old-style archive from a shared archive. +-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds ++ uts4*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ ;; + +-# Create a temporary old-style archive to link instead of a shared archive. +-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds ++ *) ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ esac ++ fi ++]) ++AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) ++test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + +-# Commands used to build and install a shared archive. +-archive_cmds=$lt_archive_cmds +-archive_expsym_cmds=$lt_archive_expsym_cmds +-postinstall_cmds=$lt_postinstall_cmds +-postuninstall_cmds=$lt_postuninstall_cmds ++# ++# Do we need to explicitly link libc? ++# ++case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in ++x|xyes) ++ # Assume -lc should be added ++ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + +-# Commands to strip libraries. +-old_striplib=$lt_old_striplib +-striplib=$lt_striplib ++ if test "$enable_shared" = yes && test "$GCC" = yes; then ++ case $_LT_AC_TAGVAR(archive_cmds, $1) in ++ *'~'*) ++ # FIXME: we may have to deal with multi-command sequences. ++ ;; ++ '$CC '*) ++ # Test whether the compiler implicitly links with -lc since on some ++ # systems, -lgcc has to come before -lc. If gcc already passes -lc ++ # to ld, don't add -lc before -lgcc. ++ AC_MSG_CHECKING([whether -lc should be explicitly linked in]) ++ $rm conftest* ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ ++ if AC_TRY_EVAL(ac_compile) 2>conftest.err; then ++ soname=conftest ++ lib=conftest ++ libobjs=conftest.$ac_objext ++ deplibs= ++ wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) ++ pic_flag=$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) ++ compiler_flags=-v ++ linker_flags=-v ++ verstring= ++ output_objdir=. ++ libname=conftest ++ lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1) ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)= ++ if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) ++ then ++ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ++ else ++ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes ++ fi ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag ++ else ++ cat conftest.err 1>&5 ++ fi ++ $rm conftest* ++ AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)]) ++ ;; ++ esac ++ fi ++ ;; ++esac ++])# AC_LIBTOOL_PROG_LD_SHLIBS + +-# Method to check whether dependent libraries are shared objects. +-deplibs_check_method=$lt_deplibs_check_method + +-# Command to use when deplibs_check_method == file_magic. +-file_magic_cmd=$lt_file_magic_cmd ++# _LT_AC_FILE_LTDLL_C ++# ------------------- ++# Be careful that the start marker always follows a newline. ++AC_DEFUN([_LT_AC_FILE_LTDLL_C], [ ++# /* ltdll.c starts here */ ++# #define WIN32_LEAN_AND_MEAN ++# #include ++# #undef WIN32_LEAN_AND_MEAN ++# #include ++# ++# #ifndef __CYGWIN__ ++# # ifdef __CYGWIN32__ ++# # define __CYGWIN__ __CYGWIN32__ ++# # endif ++# #endif ++# ++# #ifdef __cplusplus ++# extern "C" { ++# #endif ++# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); ++# #ifdef __cplusplus ++# } ++# #endif ++# ++# #ifdef __CYGWIN__ ++# #include ++# DECLARE_CYGWIN_DLL( DllMain ); ++# #endif ++# HINSTANCE __hDllInstance_base; ++# ++# BOOL APIENTRY ++# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) ++# { ++# __hDllInstance_base = hInst; ++# return TRUE; ++# } ++# /* ltdll.c ends here */ ++])# _LT_AC_FILE_LTDLL_C + +-# Flag that allows shared libraries with undefined symbols to be built. +-allow_undefined_flag=$lt_allow_undefined_flag + +-# Flag that forces no undefined symbols. +-no_undefined_flag=$lt_no_undefined_flag ++# _LT_AC_TAGVAR(VARNAME, [TAGNAME]) ++# --------------------------------- ++AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])]) + +-# Commands used to finish a libtool library installation in a directory. +-finish_cmds=$lt_finish_cmds + +-# Same as above, but a single script fragment to be evaled but not shown. +-finish_eval=$lt_finish_eval ++# old names ++AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL]) ++AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) ++AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) ++AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) ++AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) ++AC_DEFUN([AM_PROG_LD], [AC_PROG_LD]) ++AC_DEFUN([AM_PROG_NM], [AC_PROG_NM]) + +-# Take the output of nm and produce a listing of raw symbols and C names. +-global_symbol_pipe=$lt_global_symbol_pipe ++# This is just to silence aclocal about the macro not being used ++ifelse([AC_DISABLE_FAST_INSTALL]) + +-# Transform the output of nm in a proper C declaration +-global_symbol_to_cdecl=$lt_global_symbol_to_cdecl ++AC_DEFUN([LT_AC_PROG_GCJ], ++[AC_CHECK_TOOL(GCJ, gcj, no) ++ test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" ++ AC_SUBST(GCJFLAGS) ++]) + +-# Transform the output of nm in a C name address pair +-global_symbol_to_c_name_address=$lt_global_symbol_to_c_name_address ++AC_DEFUN([LT_AC_PROG_RC], ++[AC_CHECK_TOOL(RC, windres, no) ++]) + +-# This is the shared library runtime path variable. +-runpath_var=$runpath_var + +-# This is the shared library path variable. +-shlibpath_var=$shlibpath_var ++# Cheap backport of AS_EXECUTABLE_P and required macros ++# from Autoconf 2.59; we should not use $as_executable_p directly. + +-# Is shlibpath searched before the hard-coded library search path? +-shlibpath_overrides_runpath=$shlibpath_overrides_runpath ++# _AS_TEST_PREPARE ++# ---------------- ++m4_ifndef([_AS_TEST_PREPARE], ++[m4_defun([_AS_TEST_PREPARE], ++[if test -x / >/dev/null 2>&1; then ++ as_executable_p='test -x' ++else ++ as_executable_p='test -f' ++fi ++])])# _AS_TEST_PREPARE + +-# How to hardcode a shared library path into an executable. +-hardcode_action=$hardcode_action ++# AS_EXECUTABLE_P ++# --------------- ++# Check whether a file is executable. ++m4_ifndef([AS_EXECUTABLE_P], ++[m4_defun([AS_EXECUTABLE_P], ++[AS_REQUIRE([_AS_TEST_PREPARE])dnl ++$as_executable_p $1[]dnl ++])])# AS_EXECUTABLE_P ++ ++# NOTE: This macro has been submitted for inclusion into # ++# GNU Autoconf as AC_PROG_SED. When it is available in # ++# a released version of Autoconf we should remove this # ++# macro and use it instead. # ++# LT_AC_PROG_SED ++# -------------- ++# Check for a fully-functional sed program, that truncates ++# as few characters as possible. Prefer GNU sed if found. ++AC_DEFUN([LT_AC_PROG_SED], ++[AC_MSG_CHECKING([for a sed that does not truncate output]) ++AC_CACHE_VAL(lt_cv_path_SED, ++[# Loop through the user's path and test for sed and gsed. ++# Then use that list of sed's as ones to test for truncation. ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for lt_ac_prog in sed gsed; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if AS_EXECUTABLE_P(["$as_dir/$lt_ac_prog$ac_exec_ext"]); then ++ lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" ++ fi ++ done ++ done ++done ++IFS=$as_save_IFS ++lt_ac_max=0 ++lt_ac_count=0 ++# Add /usr/xpg4/bin/sed as it is typically found on Solaris ++# along with /bin/sed that truncates output. ++for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do ++ test ! -f $lt_ac_sed && continue ++ cat /dev/null > conftest.in ++ lt_ac_count=0 ++ echo $ECHO_N "0123456789$ECHO_C" >conftest.in ++ # Check for GNU sed and select it if it is found. ++ if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then ++ lt_cv_path_SED=$lt_ac_sed ++ break ++ fi ++ while true; do ++ cat conftest.in conftest.in >conftest.tmp ++ mv conftest.tmp conftest.in ++ cp conftest.in conftest.nl ++ echo >>conftest.nl ++ $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break ++ cmp -s conftest.out conftest.nl || break ++ # 10000 chars as input seems more than enough ++ test $lt_ac_count -gt 10 && break ++ lt_ac_count=`expr $lt_ac_count + 1` ++ if test $lt_ac_count -gt $lt_ac_max; then ++ lt_ac_max=$lt_ac_count ++ lt_cv_path_SED=$lt_ac_sed ++ fi ++ done ++done ++]) ++SED=$lt_cv_path_SED ++AC_SUBST([SED]) ++AC_MSG_RESULT([$SED]) ++]) + +-# Whether we should hardcode library paths into libraries. +-hardcode_into_libs=$hardcode_into_libs ++# Copyright (C) 2002, 2003, 2005, 2006 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. + +-# Flag to hardcode \$libdir into a binary during linking. +-# This must work even if \$libdir does not exist. +-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec ++# AM_AUTOMAKE_VERSION(VERSION) ++# ---------------------------- ++# Automake X.Y traces this macro to ensure aclocal.m4 has been ++# generated from the m4 files accompanying Automake X.Y. ++# (This private macro should not be called outside this file.) ++AC_DEFUN([AM_AUTOMAKE_VERSION], ++[am__api_version='1.10' ++dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to ++dnl require some minimum version. Point them to the right macro. ++m4_if([$1], [1.10], [], ++ [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ++]) + +-# Whether we need a single -rpath flag with a separated argument. +-hardcode_libdir_separator=$lt_hardcode_libdir_separator ++# _AM_AUTOCONF_VERSION(VERSION) ++# ----------------------------- ++# aclocal traces this macro to find the Autoconf version. ++# This is a private macro too. Using m4_define simplifies ++# the logic in aclocal, which can simply ignore this definition. ++m4_define([_AM_AUTOCONF_VERSION], []) ++ ++# AM_SET_CURRENT_AUTOMAKE_VERSION ++# ------------------------------- ++# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. ++# This function is AC_REQUIREd by AC_INIT_AUTOMAKE. ++AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], ++[AM_AUTOMAKE_VERSION([1.10])dnl ++_AM_AUTOCONF_VERSION(m4_PACKAGE_VERSION)]) + +-# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the +-# resulting binary. +-hardcode_direct=$hardcode_direct ++# AM_AUX_DIR_EXPAND -*- Autoconf -*- + +-# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +-# resulting binary. +-hardcode_minus_L=$hardcode_minus_L ++# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets ++# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to ++# `$srcdir', `$srcdir/..', or `$srcdir/../..'. ++# ++# Of course, Automake must honor this variable whenever it calls a ++# tool from the auxiliary directory. The problem is that $srcdir (and ++# therefore $ac_aux_dir as well) can be either absolute or relative, ++# depending on how configure is run. This is pretty annoying, since ++# it makes $ac_aux_dir quite unusable in subdirectories: in the top ++# source directory, any form will work fine, but in subdirectories a ++# relative path needs to be adjusted first. ++# ++# $ac_aux_dir/missing ++# fails when called from a subdirectory if $ac_aux_dir is relative ++# $top_srcdir/$ac_aux_dir/missing ++# fails if $ac_aux_dir is absolute, ++# fails when called from a subdirectory in a VPATH build with ++# a relative $ac_aux_dir ++# ++# The reason of the latter failure is that $top_srcdir and $ac_aux_dir ++# are both prefixed by $srcdir. In an in-source build this is usually ++# harmless because $srcdir is `.', but things will broke when you ++# start a VPATH build or use an absolute $srcdir. ++# ++# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, ++# iff we strip the leading $srcdir from $ac_aux_dir. That would be: ++# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` ++# and then we would define $MISSING as ++# MISSING="\${SHELL} $am_aux_dir/missing" ++# This will work as long as MISSING is not called from configure, because ++# unfortunately $(top_srcdir) has no meaning in configure. ++# However there are other variables, like CC, which are often used in ++# configure, and could therefore not use this "fixed" $ac_aux_dir. ++# ++# Another solution, used here, is to always expand $ac_aux_dir to an ++# absolute PATH. The drawback is that using absolute paths prevent a ++# configured tree to be moved without reconfiguration. + +-# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +-# the resulting binary. +-hardcode_shlibpath_var=$hardcode_shlibpath_var ++AC_DEFUN([AM_AUX_DIR_EXPAND], ++[dnl Rely on autoconf to set up CDPATH properly. ++AC_PREREQ([2.50])dnl ++# expand $ac_aux_dir to an absolute path ++am_aux_dir=`cd $ac_aux_dir && pwd` ++]) + +-# Variables whose values should be saved in libtool wrapper scripts and +-# restored at relink time. +-variables_saved_for_relink="$variables_saved_for_relink" ++# AM_CONDITIONAL -*- Autoconf -*- + +-# Whether libtool must link a program against all its dependency libraries. +-link_all_deplibs=$link_all_deplibs ++# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006 ++# Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. + +-# Compile-time system search path for libraries +-sys_lib_search_path_spec=$lt_sys_lib_search_path_spec ++# serial 8 + +-# Run-time system search path for libraries +-sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec ++# AM_CONDITIONAL(NAME, SHELL-CONDITION) ++# ------------------------------------- ++# Define a conditional. ++AC_DEFUN([AM_CONDITIONAL], ++[AC_PREREQ(2.52)dnl ++ ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], ++ [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl ++AC_SUBST([$1_TRUE])dnl ++AC_SUBST([$1_FALSE])dnl ++_AM_SUBST_NOTMAKE([$1_TRUE])dnl ++_AM_SUBST_NOTMAKE([$1_FALSE])dnl ++if $2; then ++ $1_TRUE= ++ $1_FALSE='#' ++else ++ $1_TRUE='#' ++ $1_FALSE= ++fi ++AC_CONFIG_COMMANDS_PRE( ++[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then ++ AC_MSG_ERROR([[conditional "$1" was never defined. ++Usually this means the macro was only invoked conditionally.]]) ++fi])]) + +-# Fix the shell variable \$srcfile for the compiler. +-fix_srcfile_path="$fix_srcfile_path" ++# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 ++# Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. + +-# Set to yes if exported symbols are required. +-always_export_symbols=$always_export_symbols ++# serial 9 + +-# The commands to list exported symbols. +-export_symbols_cmds=$lt_export_symbols_cmds ++# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be ++# written in clear, in which case automake, when reading aclocal.m4, ++# will think it sees a *use*, and therefore will trigger all it's ++# C support machinery. Also note that it means that autoscan, seeing ++# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + +-# The commands to extract the exported symbol list from a shared archive. +-extract_expsyms_cmds=$lt_extract_expsyms_cmds + +-# Symbols that should not be listed in the preloaded symbols. +-exclude_expsyms=$lt_exclude_expsyms ++# _AM_DEPENDENCIES(NAME) ++# ---------------------- ++# See how the compiler implements dependency checking. ++# NAME is "CC", "CXX", "GCJ", or "OBJC". ++# We try a few techniques and use that to set a single cache variable. ++# ++# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was ++# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular ++# dependency, and given that the user is not expected to run this macro, ++# just rely on AC_PROG_CC. ++AC_DEFUN([_AM_DEPENDENCIES], ++[AC_REQUIRE([AM_SET_DEPDIR])dnl ++AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl ++AC_REQUIRE([AM_MAKE_INCLUDE])dnl ++AC_REQUIRE([AM_DEP_TRACK])dnl + +-# Symbols that must always be exported. +-include_expsyms=$lt_include_expsyms ++ifelse([$1], CC, [depcc="$CC" am_compiler_list=], ++ [$1], CXX, [depcc="$CXX" am_compiler_list=], ++ [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], ++ [$1], UPC, [depcc="$UPC" am_compiler_list=], ++ [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], ++ [depcc="$$1" am_compiler_list=]) + +-# ### END LIBTOOL CONFIG ++AC_CACHE_CHECK([dependency style of $depcc], ++ [am_cv_$1_dependencies_compiler_type], ++[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then ++ # We make a subdir and do the tests there. Otherwise we can end up ++ # making bogus files that we don't know about and never remove. For ++ # instance it was reported that on HP-UX the gcc test will end up ++ # making a dummy file named `D' -- because `-MD' means `put the output ++ # in D'. ++ mkdir conftest.dir ++ # Copy depcomp to subdir because otherwise we won't find it if we're ++ # using a relative directory. ++ cp "$am_depcomp" conftest.dir ++ cd conftest.dir ++ # We will build objects and dependencies in a subdirectory because ++ # it helps to detect inapplicable dependency modes. For instance ++ # both Tru64's cc and ICC support -MD to output dependencies as a ++ # side effect of compilation, but ICC will put the dependencies in ++ # the current directory while Tru64 will put them in the object ++ # directory. ++ mkdir sub + +-__EOF__ ++ am_cv_$1_dependencies_compiler_type=none ++ if test "$am_compiler_list" = ""; then ++ am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` ++ fi ++ for depmode in $am_compiler_list; do ++ # Setup a source with many dependencies, because some compilers ++ # like to wrap large dependency lists on column 80 (with \), and ++ # we should not choose a depcomp mode which is confused by this. ++ # ++ # We need to recreate these files for each test, as the compiler may ++ # overwrite some of them when testing with obscure command lines. ++ # This happens at least with the AIX C compiler. ++ : > sub/conftest.c ++ for i in 1 2 3 4 5 6; do ++ echo '#include "conftst'$i'.h"' >> sub/conftest.c ++ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with ++ # Solaris 8's {/usr,}/bin/sh. ++ touch sub/conftst$i.h ++ done ++ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + +- case $host_os in +- aix3*) +- cat <<\EOF >> "${ofile}T" ++ case $depmode in ++ nosideeffect) ++ # after this tag, mechanisms are not by side-effect, so they'll ++ # only be used when explicitly requested ++ if test "x$enable_dependency_tracking" = xyes; then ++ continue ++ else ++ break ++ fi ++ ;; ++ none) break ;; ++ esac ++ # We check with `-c' and `-o' for the sake of the "dashmstdout" ++ # mode. It turns out that the SunPro C++ compiler does not properly ++ # handle `-M -o', and we need to detect this. ++ if depmode=$depmode \ ++ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ ++ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ ++ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ ++ >/dev/null 2>conftest.err && ++ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && ++ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && ++ grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ++ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then ++ # icc doesn't choke on unknown options, it will just issue warnings ++ # or remarks (even with -Werror). So we grep stderr for any message ++ # that says an option was ignored or not supported. ++ # When given -MP, icc 7.0 and 7.1 complain thusly: ++ # icc: Command line warning: ignoring option '-M'; no argument required ++ # The diagnosis changed in icc 8.0: ++ # icc: Command line remark: option '-MP' not supported ++ if (grep 'ignoring option' conftest.err || ++ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else ++ am_cv_$1_dependencies_compiler_type=$depmode ++ break ++ fi ++ fi ++ done + +-# AIX sometimes has problems with the GCC collect2 program. For some +-# reason, if we set the COLLECT_NAMES environment variable, the problems +-# vanish in a puff of smoke. +-if test "X${COLLECT_NAMES+set}" != Xset; then +- COLLECT_NAMES= +- export COLLECT_NAMES ++ cd .. ++ rm -rf conftest.dir ++else ++ am_cv_$1_dependencies_compiler_type=none + fi +-EOF +- ;; +- esac ++]) ++AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) ++AM_CONDITIONAL([am__fastdep$1], [ ++ test "x$enable_dependency_tracking" != xno \ ++ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ++]) + +- case $host_os in +- cygwin* | mingw* | pw32* | os2*) +- cat <<'EOF' >> "${ofile}T" +- # This is a source program that is used to create dlls on Windows +- # Don't remove nor modify the starting and closing comments +-# /* ltdll.c starts here */ +-# #define WIN32_LEAN_AND_MEAN +-# #include +-# #undef WIN32_LEAN_AND_MEAN +-# #include +-# +-# #ifndef __CYGWIN__ +-# # ifdef __CYGWIN32__ +-# # define __CYGWIN__ __CYGWIN32__ +-# # endif +-# #endif +-# +-# #ifdef __cplusplus +-# extern "C" { +-# #endif +-# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); +-# #ifdef __cplusplus +-# } +-# #endif +-# +-# #ifdef __CYGWIN__ +-# #include +-# DECLARE_CYGWIN_DLL( DllMain ); +-# #endif +-# HINSTANCE __hDllInstance_base; +-# +-# BOOL APIENTRY +-# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) +-# { +-# __hDllInstance_base = hInst; +-# return TRUE; +-# } +-# /* ltdll.c ends here */ +- # This is a source program that is used to create import libraries +- # on Windows for dlls which lack them. Don't remove nor modify the +- # starting and closing comments +-# /* impgen.c starts here */ +-# /* Copyright (C) 1999-2000 Free Software Foundation, Inc. +-# +-# This file is part of GNU libtool. +-# +-# This program is free software; you can redistribute it and/or modify +-# it under the terms of the GNU General Public License as published by +-# the Free Software Foundation; either version 2 of the License, or +-# (at your option) any later version. +-# +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-# GNU General Public License for more details. +-# +-# You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +-# */ +-# +-# #include /* for printf() */ +-# #include /* for open(), lseek(), read() */ +-# #include /* for O_RDONLY, O_BINARY */ +-# #include /* for strdup() */ +-# +-# /* O_BINARY isn't required (or even defined sometimes) under Unix */ +-# #ifndef O_BINARY +-# #define O_BINARY 0 +-# #endif +-# +-# static unsigned int +-# pe_get16 (fd, offset) +-# int fd; +-# int offset; +-# { +-# unsigned char b[2]; +-# lseek (fd, offset, SEEK_SET); +-# read (fd, b, 2); +-# return b[0] + (b[1]<<8); +-# } +-# +-# static unsigned int +-# pe_get32 (fd, offset) +-# int fd; +-# int offset; +-# { +-# unsigned char b[4]; +-# lseek (fd, offset, SEEK_SET); +-# read (fd, b, 4); +-# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); +-# } +-# +-# static unsigned int +-# pe_as32 (ptr) +-# void *ptr; +-# { +-# unsigned char *b = ptr; +-# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); +-# } +-# +-# int +-# main (argc, argv) +-# int argc; +-# char *argv[]; +-# { +-# int dll; +-# unsigned long pe_header_offset, opthdr_ofs, num_entries, i; +-# unsigned long export_rva, export_size, nsections, secptr, expptr; +-# unsigned long name_rvas, nexp; +-# unsigned char *expdata, *erva; +-# char *filename, *dll_name; +-# +-# filename = argv[1]; +-# +-# dll = open(filename, O_RDONLY|O_BINARY); +-# if (dll < 1) +-# return 1; +-# +-# dll_name = filename; +-# +-# for (i=0; filename[i]; i++) +-# if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':') +-# dll_name = filename + i +1; +-# +-# pe_header_offset = pe_get32 (dll, 0x3c); +-# opthdr_ofs = pe_header_offset + 4 + 20; +-# num_entries = pe_get32 (dll, opthdr_ofs + 92); +-# +-# if (num_entries < 1) /* no exports */ +-# return 1; +-# +-# export_rva = pe_get32 (dll, opthdr_ofs + 96); +-# export_size = pe_get32 (dll, opthdr_ofs + 100); +-# nsections = pe_get16 (dll, pe_header_offset + 4 +2); +-# secptr = (pe_header_offset + 4 + 20 + +-# pe_get16 (dll, pe_header_offset + 4 + 16)); +-# +-# expptr = 0; +-# for (i = 0; i < nsections; i++) +-# { +-# char sname[8]; +-# unsigned long secptr1 = secptr + 40 * i; +-# unsigned long vaddr = pe_get32 (dll, secptr1 + 12); +-# unsigned long vsize = pe_get32 (dll, secptr1 + 16); +-# unsigned long fptr = pe_get32 (dll, secptr1 + 20); +-# lseek(dll, secptr1, SEEK_SET); +-# read(dll, sname, 8); +-# if (vaddr <= export_rva && vaddr+vsize > export_rva) +-# { +-# expptr = fptr + (export_rva - vaddr); +-# if (export_rva + export_size > vaddr + vsize) +-# export_size = vsize - (export_rva - vaddr); +-# break; +-# } +-# } +-# +-# expdata = (unsigned char*)malloc(export_size); +-# lseek (dll, expptr, SEEK_SET); +-# read (dll, expdata, export_size); +-# erva = expdata - export_rva; +-# +-# nexp = pe_as32 (expdata+24); +-# name_rvas = pe_as32 (expdata+32); +-# +-# printf ("EXPORTS\n"); +-# for (i = 0; i> "${ofile}T" || (rm -f "${ofile}T"; exit 1) + +- mv -f "${ofile}T" "$ofile" || \ +- (rm -f "$ofile" && cp "${ofile}T" "$ofile" && rm -f "${ofile}T") +- chmod +x "$ofile" ++# AM_DEP_TRACK ++# ------------ ++AC_DEFUN([AM_DEP_TRACK], ++[AC_ARG_ENABLE(dependency-tracking, ++[ --disable-dependency-tracking speeds up one-time build ++ --enable-dependency-tracking do not reject slow dependency extractors]) ++if test "x$enable_dependency_tracking" != xno; then ++ am_depcomp="$ac_aux_dir/depcomp" ++ AMDEPBACKSLASH='\' + fi ++AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) ++AC_SUBST([AMDEPBACKSLASH])dnl ++_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl ++]) + +-])# _LT_AC_LTCONFIG_HACK ++# Generate code to set up dependency tracking. -*- Autoconf -*- + +-# AC_LIBTOOL_DLOPEN - enable checks for dlopen support +-AC_DEFUN([AC_LIBTOOL_DLOPEN], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])]) ++# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 ++# Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. + +-# AC_LIBTOOL_WIN32_DLL - declare package support for building win32 dll's +-AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_BEFORE([$0], [AC_LIBTOOL_SETUP])]) ++#serial 3 + +-# AC_ENABLE_SHARED - implement the --enable-shared flag +-# Usage: AC_ENABLE_SHARED[(DEFAULT)] +-# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to +-# `yes'. +-AC_DEFUN([AC_ENABLE_SHARED], +-[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl +-AC_ARG_ENABLE(shared, +-changequote(<<, >>)dnl +-<< --enable-shared[=PKGS] build shared libraries [default=>>AC_ENABLE_SHARED_DEFAULT], +-changequote([, ])dnl +-[p=${PACKAGE-default} +-case $enableval in +-yes) enable_shared=yes ;; +-no) enable_shared=no ;; +-*) +- enable_shared=no +- # Look at the argument we got. We use all the common list separators. +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," +- for pkg in $enableval; do +- if test "X$pkg" = "X$p"; then +- enable_shared=yes +- fi ++# _AM_OUTPUT_DEPENDENCY_COMMANDS ++# ------------------------------ ++AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], ++[for mf in $CONFIG_FILES; do ++ # Strip MF so we end up with the name of the file. ++ mf=`echo "$mf" | sed -e 's/:.*$//'` ++ # Check whether this is an Automake generated Makefile or not. ++ # We used to match only the files named `Makefile.in', but ++ # some people rename them; so instead we look at the file content. ++ # Grep'ing the first line is not enough: some people post-process ++ # each Makefile.in and add a new line on top of each file to say so. ++ # Grep'ing the whole file is not good either: AIX grep has a line ++ # limit of 2048, but all sed's we know have understand at least 4000. ++ if sed 10q "$mf" | grep '^#.*generated by automake' > /dev/null 2>&1; then ++ dirpart=`AS_DIRNAME("$mf")` ++ else ++ continue ++ fi ++ # Extract the definition of DEPDIR, am__include, and am__quote ++ # from the Makefile without running `make'. ++ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` ++ test -z "$DEPDIR" && continue ++ am__include=`sed -n 's/^am__include = //p' < "$mf"` ++ test -z "am__include" && continue ++ am__quote=`sed -n 's/^am__quote = //p' < "$mf"` ++ # When using ansi2knr, U may be empty or an underscore; expand it ++ U=`sed -n 's/^U = //p' < "$mf"` ++ # Find all dependency output files, they are included files with ++ # $(DEPDIR) in their names. We invoke sed twice because it is the ++ # simplest approach to changing $(DEPDIR) to its actual value in the ++ # expansion. ++ for file in `sed -n " ++ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ ++ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do ++ # Make sure the directory exists. ++ test -f "$dirpart/$file" && continue ++ fdir=`AS_DIRNAME(["$file"])` ++ AS_MKDIR_P([$dirpart/$fdir]) ++ # echo "creating $dirpart/$file" ++ echo '# dummy' > "$dirpart/$file" + done +- IFS="$ac_save_ifs" +- ;; +-esac], +-enable_shared=AC_ENABLE_SHARED_DEFAULT)dnl +-]) ++done ++])# _AM_OUTPUT_DEPENDENCY_COMMANDS + +-# AC_DISABLE_SHARED - set the default shared flag to --disable-shared +-AC_DEFUN([AC_DISABLE_SHARED], +-[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +-AC_ENABLE_SHARED(no)]) + +-# AC_ENABLE_STATIC - implement the --enable-static flag +-# Usage: AC_ENABLE_STATIC[(DEFAULT)] +-# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to +-# `yes'. +-AC_DEFUN([AC_ENABLE_STATIC], +-[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl +-AC_ARG_ENABLE(static, +-changequote(<<, >>)dnl +-<< --enable-static[=PKGS] build static libraries [default=>>AC_ENABLE_STATIC_DEFAULT], +-changequote([, ])dnl +-[p=${PACKAGE-default} +-case $enableval in +-yes) enable_static=yes ;; +-no) enable_static=no ;; +-*) +- enable_static=no +- # Look at the argument we got. We use all the common list separators. +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," +- for pkg in $enableval; do +- if test "X$pkg" = "X$p"; then +- enable_static=yes +- fi +- done +- IFS="$ac_save_ifs" +- ;; +-esac], +-enable_static=AC_ENABLE_STATIC_DEFAULT)dnl ++# AM_OUTPUT_DEPENDENCY_COMMANDS ++# ----------------------------- ++# This macro should only be invoked once -- use via AC_REQUIRE. ++# ++# This code is only required when automatic dependency tracking ++# is enabled. FIXME. This creates each `.P' file that we will ++# need in order to bootstrap the dependency handling code. ++AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], ++[AC_CONFIG_COMMANDS([depfiles], ++ [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], ++ [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) + ]) + +-# AC_DISABLE_STATIC - set the default static flag to --disable-static +-AC_DEFUN([AC_DISABLE_STATIC], +-[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +-AC_ENABLE_STATIC(no)]) +- +- +-# AC_ENABLE_FAST_INSTALL - implement the --enable-fast-install flag +-# Usage: AC_ENABLE_FAST_INSTALL[(DEFAULT)] +-# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to +-# `yes'. +-AC_DEFUN([AC_ENABLE_FAST_INSTALL], +-[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl +-AC_ARG_ENABLE(fast-install, +-changequote(<<, >>)dnl +-<< --enable-fast-install[=PKGS] optimize for fast installation [default=>>AC_ENABLE_FAST_INSTALL_DEFAULT], +-changequote([, ])dnl +-[p=${PACKAGE-default} +-case $enableval in +-yes) enable_fast_install=yes ;; +-no) enable_fast_install=no ;; +-*) +- enable_fast_install=no +- # Look at the argument we got. We use all the common list separators. +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," +- for pkg in $enableval; do +- if test "X$pkg" = "X$p"; then +- enable_fast_install=yes +- fi +- done +- IFS="$ac_save_ifs" +- ;; +-esac], +-enable_fast_install=AC_ENABLE_FAST_INSTALL_DEFAULT)dnl +-]) ++# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 ++# Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. + +-# AC_DISABLE_FAST_INSTALL - set the default to --disable-fast-install +-AC_DEFUN([AC_DISABLE_FAST_INSTALL], +-[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +-AC_ENABLE_FAST_INSTALL(no)]) ++# serial 8 + +-# AC_LIBTOOL_PICMODE - implement the --with-pic flag +-# Usage: AC_LIBTOOL_PICMODE[(MODE)] +-# Where MODE is either `yes' or `no'. If omitted, it defaults to +-# `both'. +-AC_DEFUN([AC_LIBTOOL_PICMODE], +-[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +-pic_mode=ifelse($#,1,$1,default)]) ++# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. ++AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) + ++# Do all the work for Automake. -*- Autoconf -*- + +-# AC_PATH_TOOL_PREFIX - find a file program which can recognise shared library +-AC_DEFUN([AC_PATH_TOOL_PREFIX], +-[AC_MSG_CHECKING([for $1]) +-AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +-[case $MAGIC_CMD in +- /*) +- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. +- ;; +- ?:/*) +- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. +- ;; +- *) +- ac_save_MAGIC_CMD="$MAGIC_CMD" +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" +-dnl $ac_dummy forces splitting on constant user-supplied paths. +-dnl POSIX.2 word splitting is done only on the output of word expansions, +-dnl not every word. This closes a longstanding sh security hole. +- ac_dummy="ifelse([$2], , $PATH, [$2])" +- for ac_dir in $ac_dummy; do +- test -z "$ac_dir" && ac_dir=. +- if test -f $ac_dir/$1; then +- lt_cv_path_MAGIC_CMD="$ac_dir/$1" +- if test -n "$file_magic_test_file"; then +- case $deplibs_check_method in +- "file_magic "*) +- file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" +- MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +- if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | +- egrep "$file_magic_regex" > /dev/null; then +- : +- else +- cat <&2 ++# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, ++# 2005, 2006 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. + +-*** Warning: the command libtool uses to detect shared libraries, +-*** $file_magic_cmd, produces output that libtool cannot recognize. +-*** The result is that libtool may fail to recognize shared libraries +-*** as such. This will affect the creation of libtool libraries that +-*** depend on shared libraries, but programs linked with such libtool +-*** libraries will work regardless of this problem. Nevertheless, you +-*** may want to report the problem to your system manager and/or to +-*** bug-libtool@gnu.org ++# serial 12 + +-EOF +- fi ;; +- esac +- fi +- break +- fi +- done +- IFS="$ac_save_ifs" +- MAGIC_CMD="$ac_save_MAGIC_CMD" +- ;; +-esac]) +-MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +-if test -n "$MAGIC_CMD"; then +- AC_MSG_RESULT($MAGIC_CMD) +-else +- AC_MSG_RESULT(no) +-fi +-]) ++# This macro actually does too much. Some checks are only needed if ++# your package does certain things. But this isn't really a big deal. + ++# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) ++# AM_INIT_AUTOMAKE([OPTIONS]) ++# ----------------------------------------------- ++# The call with PACKAGE and VERSION arguments is the old style ++# call (pre autoconf-2.50), which is being phased out. PACKAGE ++# and VERSION should now be passed to AC_INIT and removed from ++# the call to AM_INIT_AUTOMAKE. ++# We support both call styles for the transition. After ++# the next Automake release, Autoconf can make the AC_INIT ++# arguments mandatory, and then we can depend on a new Autoconf ++# release and drop the old call support. ++AC_DEFUN([AM_INIT_AUTOMAKE], ++[AC_PREREQ([2.60])dnl ++dnl Autoconf wants to disallow AM_ names. We explicitly allow ++dnl the ones we care about. ++m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl ++AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl ++AC_REQUIRE([AC_PROG_INSTALL])dnl ++if test "`cd $srcdir && pwd`" != "`pwd`"; then ++ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output ++ # is not polluted with repeated "-I." ++ AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl ++ # test to see if srcdir already configured ++ if test -f $srcdir/config.status; then ++ AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) ++ fi ++fi + +-# AC_PATH_MAGIC - find a file program which can recognise a shared library +-AC_DEFUN([AC_PATH_MAGIC], +-[AC_REQUIRE([AC_CHECK_TOOL_PREFIX])dnl +-AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin:$PATH) +-if test -z "$lt_cv_path_MAGIC_CMD"; then +- if test -n "$ac_tool_prefix"; then +- AC_PATH_TOOL_PREFIX(file, /usr/bin:$PATH) ++# test whether we have cygpath ++if test -z "$CYGPATH_W"; then ++ if (cygpath --version) >/dev/null 2>/dev/null; then ++ CYGPATH_W='cygpath -w' + else +- MAGIC_CMD=: ++ CYGPATH_W=echo + fi + fi ++AC_SUBST([CYGPATH_W]) ++ ++# Define the identity of the package. ++dnl Distinguish between old-style and new-style calls. ++m4_ifval([$2], ++[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl ++ AC_SUBST([PACKAGE], [$1])dnl ++ AC_SUBST([VERSION], [$2])], ++[_AM_SET_OPTIONS([$1])dnl ++dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. ++m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, ++ [m4_fatal([AC_INIT should be called with package and version arguments])])dnl ++ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl ++ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl ++ ++_AM_IF_OPTION([no-define],, ++[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) ++ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl ++ ++# Some tools Automake needs. ++AC_REQUIRE([AM_SANITY_CHECK])dnl ++AC_REQUIRE([AC_ARG_PROGRAM])dnl ++AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) ++AM_MISSING_PROG(AUTOCONF, autoconf) ++AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) ++AM_MISSING_PROG(AUTOHEADER, autoheader) ++AM_MISSING_PROG(MAKEINFO, makeinfo) ++AM_PROG_INSTALL_SH ++AM_PROG_INSTALL_STRIP ++AC_REQUIRE([AM_PROG_MKDIR_P])dnl ++# We need awk for the "check" target. The system "awk" is bad on ++# some platforms. ++AC_REQUIRE([AC_PROG_AWK])dnl ++AC_REQUIRE([AC_PROG_MAKE_SET])dnl ++AC_REQUIRE([AM_SET_LEADING_DOT])dnl ++_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], ++ [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], ++ [_AM_PROG_TAR([v7])])]) ++_AM_IF_OPTION([no-dependencies],, ++[AC_PROVIDE_IFELSE([AC_PROG_CC], ++ [_AM_DEPENDENCIES(CC)], ++ [define([AC_PROG_CC], ++ defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl ++AC_PROVIDE_IFELSE([AC_PROG_CXX], ++ [_AM_DEPENDENCIES(CXX)], ++ [define([AC_PROG_CXX], ++ defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl ++AC_PROVIDE_IFELSE([AC_PROG_OBJC], ++ [_AM_DEPENDENCIES(OBJC)], ++ [define([AC_PROG_OBJC], ++ defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl ++]) + ]) + + +-# AC_PROG_LD - find the path to the GNU or non-GNU linker +-AC_DEFUN([AC_PROG_LD], +-[AC_ARG_WITH(gnu-ld, +-[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]], +-test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no) +-AC_REQUIRE([AC_PROG_CC])dnl +-AC_REQUIRE([AC_CANONICAL_HOST])dnl +-AC_REQUIRE([AC_CANONICAL_BUILD])dnl +-AC_REQUIRE([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR])dnl +-ac_prog=ld +-if test "$GCC" = yes; then +- # Check if gcc -print-prog-name=ld gives a path. +- AC_MSG_CHECKING([for ld used by GCC]) +- case $host in +- *-*-mingw*) +- # gcc leaves a trailing carriage return which upsets mingw +- ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; +- *) +- ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; +- esac +- case $ac_prog in +- # Accept absolute paths. +- [[\\/]]* | [[A-Za-z]]:[[\\/]]*) +- re_direlt='/[[^/]][[^/]]*/\.\./' +- # Canonicalize the path of ld +- ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` +- while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do +- ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` +- done +- test -z "$LD" && LD="$ac_prog" +- ;; +- "") +- # If it fails, then pretend we aren't using GCC. +- ac_prog=ld +- ;; +- *) +- # If it is relative, then search for the first ld in PATH. +- with_gnu_ld=unknown +- ;; ++# When config.status generates a header, we must update the stamp-h file. ++# This file resides in the same directory as the config header ++# that is generated. The stamp files are numbered to have different names. ++ ++# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the ++# loop where config.status creates the headers, so we can generate ++# our stamp files there. ++AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], ++[# Compute $1's index in $config_headers. ++_am_stamp_count=1 ++for _am_header in $config_headers :; do ++ case $_am_header in ++ $1 | $1:* ) ++ break ;; ++ * ) ++ _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +-elif test "$with_gnu_ld" = yes; then +- AC_MSG_CHECKING([for GNU ld]) ++done ++echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) ++ ++# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# AM_PROG_INSTALL_SH ++# ------------------ ++# Define $install_sh. ++AC_DEFUN([AM_PROG_INSTALL_SH], ++[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl ++install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"} ++AC_SUBST(install_sh)]) ++ ++# Copyright (C) 2003, 2005 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# serial 2 ++ ++# Check whether the underlying file-system supports filenames ++# with a leading dot. For instance MS-DOS doesn't. ++AC_DEFUN([AM_SET_LEADING_DOT], ++[rm -rf .tst 2>/dev/null ++mkdir .tst 2>/dev/null ++if test -d .tst; then ++ am__leading_dot=. + else +- AC_MSG_CHECKING([for non-GNU ld]) ++ am__leading_dot=_ + fi +-AC_CACHE_VAL(lt_cv_path_LD, +-[if test -z "$LD"; then +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +- for ac_dir in $PATH; do +- test -z "$ac_dir" && ac_dir=. +- if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then +- lt_cv_path_LD="$ac_dir/$ac_prog" +- # Check to see if the program is GNU ld. I'd rather use --version, +- # but apparently some GNU ld's only accept -v. +- # Break only if it was the GNU/non-GNU ld that we prefer. +- if "$lt_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then +- test "$with_gnu_ld" != no && break +- else +- test "$with_gnu_ld" != yes && break +- fi +- fi +- done +- IFS="$ac_save_ifs" +-else +- lt_cv_path_LD="$LD" # Let the user override the test with a path. +-fi]) +-LD="$lt_cv_path_LD" +-if test -n "$LD"; then +- AC_MSG_RESULT($LD) +-else +- AC_MSG_RESULT(no) ++rmdir .tst 2>/dev/null ++AC_SUBST([am__leading_dot])]) ++ ++# Check to see how 'make' treats includes. -*- Autoconf -*- ++ ++# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# serial 3 ++ ++# AM_MAKE_INCLUDE() ++# ----------------- ++# Check to see how make treats includes. ++AC_DEFUN([AM_MAKE_INCLUDE], ++[am_make=${MAKE-make} ++cat > confinc << 'END' ++am__doit: ++ @echo done ++.PHONY: am__doit ++END ++# If we don't find an include directive, just comment out the code. ++AC_MSG_CHECKING([for style of include used by $am_make]) ++am__include="#" ++am__quote= ++_am_result=none ++# First try GNU make style include. ++echo "include confinc" > confmf ++# We grep out `Entering directory' and `Leaving directory' ++# messages which can occur if `w' ends up in MAKEFLAGS. ++# In particular we don't look at `^make:' because GNU make might ++# be invoked under some other name (usually "gmake"), in which ++# case it prints its new name instead of `make'. ++if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then ++ am__include=include ++ am__quote= ++ _am_result=GNU + fi +-test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) +-AC_PROG_LD_GNU ++# Now try BSD make style include. ++if test "$am__include" = "#"; then ++ echo '.include "confinc"' > confmf ++ if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then ++ am__include=.include ++ am__quote="\"" ++ _am_result=BSD ++ fi ++fi ++AC_SUBST([am__include]) ++AC_SUBST([am__quote]) ++AC_MSG_RESULT([$_am_result]) ++rm -f confinc confmf + ]) + +-# AC_PROG_LD_GNU - +-AC_DEFUN([AC_PROG_LD_GNU], +-[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld, +-[# I'd rather use --version here, but apparently some GNU ld's only accept -v. +-if $LD -v 2>&1 &5; then +- lt_cv_prog_gnu_ld=yes +-else +- lt_cv_prog_gnu_ld=no +-fi]) +-with_gnu_ld=$lt_cv_prog_gnu_ld +-]) ++# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +-# AC_PROG_LD_RELOAD_FLAG - find reload flag for linker +-# -- PORTME Some linkers may need a different reload flag. +-AC_DEFUN([AC_PROG_LD_RELOAD_FLAG], +-[AC_CACHE_CHECK([for $LD option to reload object files], lt_cv_ld_reload_flag, +-[lt_cv_ld_reload_flag='-r']) +-reload_flag=$lt_cv_ld_reload_flag +-test -n "$reload_flag" && reload_flag=" $reload_flag" +-]) ++# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005 ++# Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. + +-# AC_DEPLIBS_CHECK_METHOD - how to check for library dependencies +-# -- PORTME fill in with the dynamic library characteristics +-AC_DEFUN([AC_DEPLIBS_CHECK_METHOD], +-[AC_CACHE_CHECK([how to recognise dependant libraries], +-lt_cv_deplibs_check_method, +-[lt_cv_file_magic_cmd='$MAGIC_CMD' +-lt_cv_file_magic_test_file= +-lt_cv_deplibs_check_method='unknown' +-# Need to set the preceding variable on all platforms that support +-# interlibrary dependencies. +-# 'none' -- dependencies not supported. +-# `unknown' -- same as none, but documents that we really don't know. +-# 'pass_all' -- all dependencies passed with no checks. +-# 'test_compile' -- check by making test program. +-# 'file_magic [[regex]]' -- check by looking for files in library path +-# which responds to the $file_magic_cmd with a given egrep regex. +-# If you have `file' or equivalent on your system and you're not sure +-# whether `pass_all' will *always* work, you probably want this one. ++# serial 5 + +-case $host_os in +-aix4* | aix5*) +- lt_cv_deplibs_check_method=pass_all +- ;; ++# AM_MISSING_PROG(NAME, PROGRAM) ++# ------------------------------ ++AC_DEFUN([AM_MISSING_PROG], ++[AC_REQUIRE([AM_MISSING_HAS_RUN]) ++$1=${$1-"${am_missing_run}$2"} ++AC_SUBST($1)]) ++ ++ ++# AM_MISSING_HAS_RUN ++# ------------------ ++# Define MISSING if not defined so far and test if it supports --run. ++# If it does, set am_missing_run to use it, otherwise, to nothing. ++AC_DEFUN([AM_MISSING_HAS_RUN], ++[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl ++AC_REQUIRE_AUX_FILE([missing])dnl ++test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" ++# Use eval to expand $SHELL ++if eval "$MISSING --run true"; then ++ am_missing_run="$MISSING --run " ++else ++ am_missing_run= ++ AC_MSG_WARN([`missing' script is too old or missing]) ++fi ++]) + +-beos*) +- lt_cv_deplibs_check_method=pass_all +- ;; ++# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. + +-bsdi4*) +- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' +- lt_cv_file_magic_cmd='/usr/bin/file -L' +- lt_cv_file_magic_test_file=/shlib/libc.so +- ;; ++# AM_PROG_MKDIR_P ++# --------------- ++# Check for `mkdir -p'. ++AC_DEFUN([AM_PROG_MKDIR_P], ++[AC_PREREQ([2.60])dnl ++AC_REQUIRE([AC_PROG_MKDIR_P])dnl ++dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, ++dnl while keeping a definition of mkdir_p for backward compatibility. ++dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. ++dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of ++dnl Makefile.ins that do not define MKDIR_P, so we do our own ++dnl adjustment using top_builddir (which is defined more often than ++dnl MKDIR_P). ++AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl ++case $mkdir_p in ++ [[\\/$]]* | ?:[[\\/]]*) ;; ++ */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; ++esac ++]) + +-cygwin* | mingw* | pw32*) +- lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' +- lt_cv_file_magic_cmd='$OBJDUMP -f' +- ;; ++# Helper functions for option handling. -*- Autoconf -*- + +-darwin* | rhapsody*) +- lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library' +- lt_cv_file_magic_cmd='/usr/bin/file -L' +- case "$host_os" in +- rhapsody* | darwin1.[[012]]) +- lt_cv_file_magic_test_file=`echo /System/Library/Frameworks/System.framework/Versions/*/System | head -1` +- ;; +- *) # Darwin 1.3 on +- lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib' +- ;; +- esac +- ;; ++# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. + +-freebsd*) +- if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then +- case $host_cpu in +- i*86 ) +- # Not sure whether the presence of OpenBSD here was a mistake. +- # Let's accept both of them until this is cleared up. +- lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[[3-9]]86 (compact )?demand paged shared library' +- lt_cv_file_magic_cmd=/usr/bin/file +- lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` +- ;; +- esac +- else +- lt_cv_deplibs_check_method=pass_all +- fi +- ;; ++# serial 3 + +-gnu*) +- lt_cv_deplibs_check_method=pass_all +- ;; ++# _AM_MANGLE_OPTION(NAME) ++# ----------------------- ++AC_DEFUN([_AM_MANGLE_OPTION], ++[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +-hpux10.20*|hpux11*) +- lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' +- lt_cv_file_magic_cmd=/usr/bin/file +- lt_cv_file_magic_test_file=/usr/lib/libc.sl +- ;; ++# _AM_SET_OPTION(NAME) ++# ------------------------------ ++# Set option NAME. Presently that only means defining a flag for this option. ++AC_DEFUN([_AM_SET_OPTION], ++[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) ++ ++# _AM_SET_OPTIONS(OPTIONS) ++# ---------------------------------- ++# OPTIONS is a space-separated list of Automake options. ++AC_DEFUN([_AM_SET_OPTIONS], ++[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) ++ ++# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) ++# ------------------------------------------- ++# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. ++AC_DEFUN([_AM_IF_OPTION], ++[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +-irix5* | irix6*) +- case $host_os in +- irix5*) +- # this will be overridden with pass_all, but let us keep it just in case +- lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" +- ;; +- *) +- case $LD in +- *-32|*"-32 ") libmagic=32-bit;; +- *-n32|*"-n32 ") libmagic=N32;; +- *-64|*"-64 ") libmagic=64-bit;; +- *) libmagic=never-match;; +- esac +- # this will be overridden with pass_all, but let us keep it just in case +- lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[[1234]] dynamic lib MIPS - version 1" +- ;; +- esac +- lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*` +- lt_cv_deplibs_check_method=pass_all +- ;; ++# Check to make sure that the build environment is sane. -*- Autoconf -*- + +-# This must be Linux ELF. +-linux-gnu*) +- case $host_cpu in +- alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* ) +- lt_cv_deplibs_check_method=pass_all ;; +- *) +- # glibc up to 2.1.1 does not perform some relocations on ARM +- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; +- esac +- lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` +- ;; ++# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 ++# Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. + +-netbsd*) +- if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then +- lt_cv_deplibs_check_method='match_pattern /lib[[^/\.]]+\.so\.[[0-9]]+\.[[0-9]]+$' +- else +- lt_cv_deplibs_check_method='match_pattern /lib[[^/\.]]+\.so$' +- fi +- ;; ++# serial 4 + +-newos6*) +- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' +- lt_cv_file_magic_cmd=/usr/bin/file +- lt_cv_file_magic_test_file=/usr/lib/libnls.so +- ;; ++# AM_SANITY_CHECK ++# --------------- ++AC_DEFUN([AM_SANITY_CHECK], ++[AC_MSG_CHECKING([whether build environment is sane]) ++# Just in case ++sleep 1 ++echo timestamp > conftest.file ++# Do `set' in a subshell so we don't clobber the current shell's ++# arguments. Must try -L first in case configure is actually a ++# symlink; some systems play weird games with the mod time of symlinks ++# (eg FreeBSD returns the mod time of the symlink's containing ++# directory). ++if ( ++ set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` ++ if test "$[*]" = "X"; then ++ # -L didn't work. ++ set X `ls -t $srcdir/configure conftest.file` ++ fi ++ rm -f conftest.file ++ if test "$[*]" != "X $srcdir/configure conftest.file" \ ++ && test "$[*]" != "X conftest.file $srcdir/configure"; then + +-openbsd*) +- lt_cv_file_magic_cmd=/usr/bin/file +- lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` +- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB shared object' +- else +- lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library' +- fi +- ;; ++ # If neither matched, then we have a broken ls. This can happen ++ # if, for instance, CONFIG_SHELL is bash and it inherits a ++ # broken ls alias from the environment. This has actually ++ # happened. Such a system could not be considered "sane". ++ AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken ++alias in your environment]) ++ fi + +-osf3* | osf4* | osf5*) +- # this will be overridden with pass_all, but let us keep it just in case +- lt_cv_deplibs_check_method='file_magic COFF format alpha shared library' +- lt_cv_file_magic_test_file=/shlib/libc.so +- lt_cv_deplibs_check_method=pass_all +- ;; ++ test "$[2]" = conftest.file ++ ) ++then ++ # Ok. ++ : ++else ++ AC_MSG_ERROR([newly created file is older than distributed files! ++Check your system clock]) ++fi ++AC_MSG_RESULT(yes)]) + +-sco3.2v5*) +- lt_cv_deplibs_check_method=pass_all +- ;; ++# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. + +-solaris*) +- lt_cv_deplibs_check_method=pass_all +- lt_cv_file_magic_test_file=/lib/libc.so +- ;; ++# AM_PROG_INSTALL_STRIP ++# --------------------- ++# One issue with vendor `install' (even GNU) is that you can't ++# specify the program used to strip binaries. This is especially ++# annoying in cross-compiling environments, where the build's strip ++# is unlikely to handle the host's binaries. ++# Fortunately install-sh will honor a STRIPPROG variable, so we ++# always use install-sh in `make install-strip', and initialize ++# STRIPPROG with the value of the STRIP variable (set by the user). ++AC_DEFUN([AM_PROG_INSTALL_STRIP], ++[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl ++# Installed binaries are usually stripped using `strip' when the user ++# run `make install-strip'. However `strip' might not be the right ++# tool to use in cross-compilation environments, therefore Automake ++# will honor the `STRIP' environment variable to overrule this program. ++dnl Don't test for $cross_compiling = yes, because it might be `maybe'. ++if test "$cross_compiling" != no; then ++ AC_CHECK_TOOL([STRIP], [strip], :) ++fi ++INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" ++AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +-sysv5uw[[78]]* | sysv4*uw2*) +- lt_cv_deplibs_check_method=pass_all +- ;; ++# Copyright (C) 2006 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. + +-sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) +- case $host_vendor in +- motorola) +- 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]]' +- lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` +- ;; +- ncr) +- lt_cv_deplibs_check_method=pass_all +- ;; +- sequent) +- lt_cv_file_magic_cmd='/bin/file' +- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' +- ;; +- sni) +- lt_cv_file_magic_cmd='/bin/file' +- lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" +- lt_cv_file_magic_test_file=/lib/libc.so +- ;; +- esac +- ;; +-esac +-]) +-file_magic_cmd=$lt_cv_file_magic_cmd +-deplibs_check_method=$lt_cv_deplibs_check_method +-]) ++# _AM_SUBST_NOTMAKE(VARIABLE) ++# --------------------------- ++# Prevent Automake from outputing VARIABLE = @VARIABLE@ in Makefile.in. ++# This macro is traced by Automake. ++AC_DEFUN([_AM_SUBST_NOTMAKE]) + ++# Check how to create a tarball. -*- Autoconf -*- + +-# AC_PROG_NM - find the path to a BSD-compatible name lister +-AC_DEFUN([AC_PROG_NM], +-[AC_REQUIRE([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR])dnl +-AC_MSG_CHECKING([for BSD-compatible nm]) +-AC_CACHE_VAL(lt_cv_path_NM, +-[if test -n "$NM"; then +- # Let the user override the test. +- lt_cv_path_NM="$NM" +-else +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +- for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do +- test -z "$ac_dir" && ac_dir=. +- tmp_nm=$ac_dir/${ac_tool_prefix}nm +- if test -f $tmp_nm || test -f $tmp_nm$ac_exeext ; then +- # Check to see if the nm accepts a BSD-compat flag. +- # Adding the `sed 1q' prevents false positives on HP-UX, which says: +- # nm: unknown option "B" ignored +- # Tru64's nm complains that /dev/null is an invalid object file +- if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then +- lt_cv_path_NM="$tmp_nm -B" +- break +- elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then +- lt_cv_path_NM="$tmp_nm -p" +- break +- else +- lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but +- continue # so that we can try to find one that supports BSD flags +- fi +- fi +- done +- IFS="$ac_save_ifs" +- test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm +-fi]) +-NM="$lt_cv_path_NM" +-AC_MSG_RESULT([$NM]) +-]) ++# Copyright (C) 2004, 2005 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. + +-# AC_CHECK_LIBM - check for math library +-AC_DEFUN([AC_CHECK_LIBM], +-[AC_REQUIRE([AC_CANONICAL_HOST])dnl +-LIBM= +-case $host in +-*-*-beos* | *-*-cygwin* | *-*-pw32*) +- # These system don't have libm +- ;; +-*-ncr-sysv4.3*) +- AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") +- AC_CHECK_LIB(m, main, LIBM="$LIBM -lm") +- ;; +-*) +- AC_CHECK_LIB(m, main, LIBM="-lm") +- ;; +-esac +-]) ++# serial 2 + +-# AC_LIBLTDL_CONVENIENCE[(dir)] - sets LIBLTDL to the link flags for +-# the libltdl convenience library and INCLTDL to the include flags for +-# the libltdl header and adds --enable-ltdl-convenience to the +-# configure arguments. Note that LIBLTDL and INCLTDL are not +-# AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If DIR is not +-# provided, it is assumed to be `libltdl'. LIBLTDL will be prefixed +-# with '${top_builddir}/' and INCLTDL will be prefixed with +-# '${top_srcdir}/' (note the single quotes!). If your package is not +-# flat and you're not using automake, define top_builddir and +-# top_srcdir appropriately in the Makefiles. +-AC_DEFUN([AC_LIBLTDL_CONVENIENCE], +-[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +- case $enable_ltdl_convenience in +- no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; +- "") enable_ltdl_convenience=yes +- ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; ++# _AM_PROG_TAR(FORMAT) ++# -------------------- ++# Check how to create a tarball in format FORMAT. ++# FORMAT should be one of `v7', `ustar', or `pax'. ++# ++# Substitute a variable $(am__tar) that is a command ++# writing to stdout a FORMAT-tarball containing the directory ++# $tardir. ++# tardir=directory && $(am__tar) > result.tar ++# ++# Substitute a variable $(am__untar) that extract such ++# a tarball read from stdin. ++# $(am__untar) < result.tar ++AC_DEFUN([_AM_PROG_TAR], ++[# Always define AMTAR for backward compatibility. ++AM_MISSING_PROG([AMTAR], [tar]) ++m4_if([$1], [v7], ++ [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], ++ [m4_case([$1], [ustar],, [pax],, ++ [m4_fatal([Unknown tar format])]) ++AC_MSG_CHECKING([how to create a $1 tar archive]) ++# Loop over all known methods to create a tar archive until one works. ++_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' ++_am_tools=${am_cv_prog_tar_$1-$_am_tools} ++# Do not fold the above two line into one, because Tru64 sh and ++# Solaris sh will not grok spaces in the rhs of `-'. ++for _am_tool in $_am_tools ++do ++ case $_am_tool in ++ gnutar) ++ for _am_tar in tar gnutar gtar; ++ do ++ AM_RUN_LOG([$_am_tar --version]) && break ++ done ++ am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' ++ am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' ++ am__untar="$_am_tar -xf -" ++ ;; ++ plaintar) ++ # Must skip GNU tar: if it does not support --format= it doesn't create ++ # ustar tarball either. ++ (tar --version) >/dev/null 2>&1 && continue ++ am__tar='tar chf - "$$tardir"' ++ am__tar_='tar chf - "$tardir"' ++ am__untar='tar xf -' ++ ;; ++ pax) ++ am__tar='pax -L -x $1 -w "$$tardir"' ++ am__tar_='pax -L -x $1 -w "$tardir"' ++ am__untar='pax -r' ++ ;; ++ cpio) ++ am__tar='find "$$tardir" -print | cpio -o -H $1 -L' ++ am__tar_='find "$tardir" -print | cpio -o -H $1 -L' ++ am__untar='cpio -i -H $1 -d' ++ ;; ++ none) ++ am__tar=false ++ am__tar_=false ++ am__untar=false ++ ;; + esac +- LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la +- INCLTDL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) +-]) + +-# AC_LIBLTDL_INSTALLABLE[(dir)] - sets LIBLTDL to the link flags for +-# the libltdl installable library and INCLTDL to the include flags for +-# the libltdl header and adds --enable-ltdl-install to the configure +-# arguments. Note that LIBLTDL and INCLTDL are not AC_SUBSTed, nor is +-# AC_CONFIG_SUBDIRS called. If DIR is not provided and an installed +-# libltdl is not found, it is assumed to be `libltdl'. LIBLTDL will +-# be prefixed with '${top_builddir}/' and INCLTDL will be prefixed +-# with '${top_srcdir}/' (note the single quotes!). If your package is +-# not flat and you're not using automake, define top_builddir and +-# top_srcdir appropriately in the Makefiles. +-# In the future, this macro may have to be called after AC_PROG_LIBTOOL. +-AC_DEFUN([AC_LIBLTDL_INSTALLABLE], +-[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +- AC_CHECK_LIB(ltdl, main, +- [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], +- [if test x"$enable_ltdl_install" = xno; then +- AC_MSG_WARN([libltdl not installed, but installation disabled]) +- else +- enable_ltdl_install=yes +- fi +- ]) +- if test x"$enable_ltdl_install" = x"yes"; then +- ac_configure_args="$ac_configure_args --enable-ltdl-install" +- LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la +- INCLTDL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) +- else +- ac_configure_args="$ac_configure_args --enable-ltdl-install=no" +- LIBLTDL="-lltdl" +- INCLTDL= +- fi +-]) ++ # If the value was cached, stop now. We just wanted to have am__tar ++ # and am__untar set. ++ test -n "${am_cv_prog_tar_$1}" && break + +-# old names +-AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL]) +-AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +-AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +-AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) +-AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) +-AC_DEFUN([AM_PROG_LD], [AC_PROG_LD]) +-AC_DEFUN([AM_PROG_NM], [AC_PROG_NM]) ++ # tar/untar a dummy directory, and stop if the command works ++ rm -rf conftest.dir ++ mkdir conftest.dir ++ echo GrepMe > conftest.dir/file ++ AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) ++ rm -rf conftest.dir ++ if test -s conftest.tar; then ++ AM_RUN_LOG([$am__untar /dev/null 2>&1 && break ++ fi ++done ++rm -rf conftest.dir + +-# This is just to silence aclocal about the macro not being used +-ifelse([AC_DISABLE_FAST_INSTALL]) ++AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) ++AC_MSG_RESULT([$am_cv_prog_tar_$1])]) ++AC_SUBST([am__tar]) ++AC_SUBST([am__untar]) ++]) # _AM_PROG_TAR + ++m4_include([acinclude.m4]) +--- libfcgi-2.4.0.orig/cgi-fcgi/Makefile.in ++++ libfcgi-2.4.0/cgi-fcgi/Makefile.in +@@ -1,7 +1,8 @@ +-# Makefile.in generated automatically by automake 1.5 from Makefile.am. ++# Makefile.in generated by automake 1.10 from Makefile.am. ++# @configure_input@ + +-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +-# Free Software Foundation, Inc. ++# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ++# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, + # with or without modifications, as long as this notice is preserved. +@@ -13,254 +14,350 @@ + + @SET_MAKE@ + +-# $Id: Makefile.am,v 1.4 2001/12/22 03:16:22 robs Exp $ +- +-SHELL = @SHELL@ +- +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ + VPATH = @srcdir@ +-prefix = @prefix@ +-exec_prefix = @exec_prefix@ +- +-bindir = @bindir@ +-sbindir = @sbindir@ +-libexecdir = @libexecdir@ +-datadir = @datadir@ +-sysconfdir = @sysconfdir@ +-sharedstatedir = @sharedstatedir@ +-localstatedir = @localstatedir@ +-libdir = @libdir@ +-infodir = @infodir@ +-mandir = @mandir@ +-includedir = @includedir@ +-oldincludedir = /usr/include + pkgdatadir = $(datadir)/@PACKAGE@ + pkglibdir = $(libdir)/@PACKAGE@ + pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = .. +- +-ACLOCAL = @ACLOCAL@ +-AUTOCONF = @AUTOCONF@ +-AUTOMAKE = @AUTOMAKE@ +-AUTOHEADER = @AUTOHEADER@ +- +-INSTALL = @INSTALL@ +-INSTALL_PROGRAM = @INSTALL_PROGRAM@ +-INSTALL_DATA = @INSTALL_DATA@ +-INSTALL_SCRIPT = @INSTALL_SCRIPT@ ++am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd ++install_sh_DATA = $(install_sh) -c -m 644 ++install_sh_PROGRAM = $(install_sh) -c ++install_sh_SCRIPT = $(install_sh) -c + INSTALL_HEADER = $(INSTALL_DATA) +-transform = @program_transform_name@ ++transform = $(program_transform_name) + NORMAL_INSTALL = : + PRE_INSTALL = : + POST_INSTALL = : + NORMAL_UNINSTALL = : + PRE_UNINSTALL = : + POST_UNINSTALL = : +-host_alias = @host_alias@ ++build_triplet = @build@ + host_triplet = @host@ ++bin_PROGRAMS = cgi-fcgi$(EXEEXT) ++subdir = cgi-fcgi ++DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ++am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ ++ $(top_srcdir)/configure.in ++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ ++ $(ACLOCAL_M4) ++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ++CONFIG_HEADER = $(top_builddir)/fcgi_config.h ++CONFIG_CLEAN_FILES = ++am__installdirs = "$(DESTDIR)$(bindir)" ++binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) ++PROGRAMS = $(bin_PROGRAMS) ++am__objects_1 = ++am_cgi_fcgi_OBJECTS = $(am__objects_1) cgi-fcgi.$(OBJEXT) ++cgi_fcgi_OBJECTS = $(am_cgi_fcgi_OBJECTS) ++cgi_fcgi_LDADD = $(LDADD) ++cgi_fcgi_DEPENDENCIES = $(LIBFCGI) ++DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@ ++depcomp = $(SHELL) $(top_srcdir)/depcomp ++am__depfiles_maybe = depfiles ++COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ++ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++CCLD = $(CC) ++LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ ++ $(LDFLAGS) -o $@ ++SOURCES = $(cgi_fcgi_SOURCES) ++DIST_SOURCES = $(cgi_fcgi_SOURCES) ++ETAGS = etags ++CTAGS = ctags ++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ++ACLOCAL = @ACLOCAL@ + AMTAR = @AMTAR@ +-AS = @AS@ ++AR = @AR@ ++AUTOCONF = @AUTOCONF@ ++AUTOHEADER = @AUTOHEADER@ ++AUTOMAKE = @AUTOMAKE@ + AWK = @AWK@ + CC = @CC@ ++CCDEPMODE = @CCDEPMODE@ ++CFLAGS = @CFLAGS@ + CPP = @CPP@ ++CPPFLAGS = @CPPFLAGS@ -I$(top_srcdir)/include + CXX = @CXX@ ++CXXCPP = @CXXCPP@ ++CXXDEPMODE = @CXXDEPMODE@ ++CXXFLAGS = @CXXFLAGS@ ++CYGPATH_W = @CYGPATH_W@ ++DEFS = @DEFS@ + DEPDIR = @DEPDIR@ +-DLLTOOL = @DLLTOOL@ + ECHO = @ECHO@ ++ECHO_C = @ECHO_C@ + ECHO_CPP = @ECHO_CPP@ ++ECHO_N = @ECHO_N@ ++ECHO_T = @ECHO_T@ ++EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++F77 = @F77@ ++FFLAGS = @FFLAGS@ ++GREP = @GREP@ ++INSTALL = @INSTALL@ ++INSTALL_DATA = @INSTALL_DATA@ ++INSTALL_PROGRAM = @INSTALL_PROGRAM@ ++INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ ++LDFLAGS = @LDFLAGS@ + LIBFCGIXX = @LIBFCGIXX@ ++LIBOBJS = @LIBOBJS@ ++LIBS = @LIBS@ + LIBTOOL = @LIBTOOL@ + LN_S = @LN_S@ +-OBJDUMP = @OBJDUMP@ ++LTLIBOBJS = @LTLIBOBJS@ ++MAKEINFO = @MAKEINFO@ ++MKDIR_P = @MKDIR_P@ + OBJEXT = @OBJEXT@ + PACKAGE = @PACKAGE@ ++PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ ++PACKAGE_NAME = @PACKAGE_NAME@ ++PACKAGE_STRING = @PACKAGE_STRING@ ++PACKAGE_TARNAME = @PACKAGE_TARNAME@ ++PACKAGE_VERSION = @PACKAGE_VERSION@ ++PATH_SEPARATOR = @PATH_SEPARATOR@ + PTHREAD_CC = @PTHREAD_CC@ + PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ + PTHREAD_LIBS = @PTHREAD_LIBS@ + RANLIB = @RANLIB@ ++SED = @SED@ ++SET_MAKE = @SET_MAKE@ ++SHELL = @SHELL@ + STRIP = @STRIP@ + SYSTEM = @SYSTEM@ + THREADED = @THREADED@ + VERSION = @VERSION@ ++abs_builddir = @abs_builddir@ ++abs_srcdir = @abs_srcdir@ ++abs_top_builddir = @abs_top_builddir@ ++abs_top_srcdir = @abs_top_srcdir@ ++ac_ct_CC = @ac_ct_CC@ ++ac_ct_CXX = @ac_ct_CXX@ ++ac_ct_F77 = @ac_ct_F77@ + am__include = @am__include@ ++am__leading_dot = @am__leading_dot@ + am__quote = @am__quote@ ++am__tar = @am__tar@ ++am__untar = @am__untar@ ++bindir = @bindir@ ++build = @build@ ++build_alias = @build_alias@ ++build_cpu = @build_cpu@ ++build_os = @build_os@ ++build_vendor = @build_vendor@ ++builddir = @builddir@ ++datadir = @datadir@ ++datarootdir = @datarootdir@ ++docdir = @docdir@ ++dvidir = @dvidir@ ++exec_prefix = @exec_prefix@ ++host = @host@ ++host_alias = @host_alias@ ++host_cpu = @host_cpu@ ++host_os = @host_os@ ++host_vendor = @host_vendor@ ++htmldir = @htmldir@ ++includedir = @includedir@ ++infodir = @infodir@ + install_sh = @install_sh@ +- +-bin_PROGRAMS = cgi-fcgi +- ++libdir = @libdir@ ++libexecdir = @libexecdir@ ++localedir = @localedir@ ++localstatedir = @localstatedir@ ++mandir = @mandir@ ++mkdir_p = @mkdir_p@ ++oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ ++prefix = @prefix@ ++program_transform_name = @program_transform_name@ ++psdir = @psdir@ ++sbindir = @sbindir@ ++sharedstatedir = @sharedstatedir@ ++srcdir = @srcdir@ ++sysconfdir = @sysconfdir@ ++target_alias = @target_alias@ ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ + INCLUDEDIR = ../include +-CPPFLAGS = @CPPFLAGS@ -I$(top_srcdir)/include +- + INCLUDE_FILES = $(INCLUDEDIR)/fastcgi.h \ + $(INCLUDEDIR)/fcgiapp.h \ + $(INCLUDEDIR)/fcgimisc.h + +- + LIBDIR = ../libfcgi + LIBFCGI = $(LIBDIR)/libfcgi.la +- + LDADD = $(LIBFCGI) + cgi_fcgi_SOURCES = $(INCLUDE_FILES) cgi-fcgi.c +-subdir = cgi-fcgi +-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +-CONFIG_HEADER = $(top_builddir)/fcgi_config.h +-CONFIG_CLEAN_FILES = +-bin_PROGRAMS = cgi-fcgi$(EXEEXT) +-PROGRAMS = $(bin_PROGRAMS) +- +-am_cgi_fcgi_OBJECTS = cgi-fcgi.$(OBJEXT) +-cgi_fcgi_OBJECTS = $(am_cgi_fcgi_OBJECTS) +-cgi_fcgi_LDADD = $(LDADD) +-cgi_fcgi_DEPENDENCIES = $(LIBDIR)/libfcgi.la +-cgi_fcgi_LDFLAGS = +- +-DEFS = @DEFS@ +-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +-LDFLAGS = @LDFLAGS@ +-LIBS = @LIBS@ +-depcomp = $(SHELL) $(top_srcdir)/depcomp +-@AMDEP_TRUE@DEP_FILES = $(DEPDIR)/cgi-fcgi.Po +-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ +- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ +- $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-CCLD = $(CC) +-LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ +- $(AM_LDFLAGS) $(LDFLAGS) -o $@ +-CFLAGS = @CFLAGS@ +-DIST_SOURCES = $(cgi_fcgi_SOURCES) +-DIST_COMMON = Makefile.am Makefile.in +-SOURCES = $(cgi_fcgi_SOURCES) +- + all: all-am + + .SUFFIXES: + .SUFFIXES: .c .lo .o .obj +- +-mostlyclean-libtool: +- -rm -f *.lo +- +-clean-libtool: +- -rm -rf .libs _libs +- +-distclean-libtool: +- -rm -f libtool +-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) ++$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) ++ @for dep in $?; do \ ++ case '$(am__configure_deps)' in \ ++ *$$dep*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ ++ && exit 0; \ ++ exit 1;; \ ++ esac; \ ++ done; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu cgi-fcgi/Makefile'; \ + cd $(top_srcdir) && \ +- $(AUTOMAKE) --foreign cgi-fcgi/Makefile +-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +- cd $(top_builddir) && \ +- CONFIG_HEADERS= CONFIG_LINKS= \ +- CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status ++ $(AUTOMAKE) --gnu cgi-fcgi/Makefile ++.PRECIOUS: Makefile ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ @case '$?' in \ ++ *config.status*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ ++ *) \ ++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ ++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ ++ esac; ++ ++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++ ++$(top_srcdir)/configure: $(am__configure_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(ACLOCAL_M4): $(am__aclocal_m4_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) +- $(mkinstalldirs) $(DESTDIR)$(bindir) ++ test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + if test -f $$p \ + || test -f $$p1 \ + ; then \ +- f=`echo $$p1|sed '$(transform);s/$$/$(EXEEXT)/'`; \ +- echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/$$f"; \ +- $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/$$f; \ ++ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ ++ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \ ++ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \ + else :; fi; \ + done + + uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ +- f=`echo $$p|sed 's/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ +- echo " rm -f $(DESTDIR)$(bindir)/$$f"; \ +- rm -f $(DESTDIR)$(bindir)/$$f; \ ++ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ ++ echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ ++ rm -f "$(DESTDIR)$(bindir)/$$f"; \ + done + + clean-binPROGRAMS: +- -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) ++ @list='$(bin_PROGRAMS)'; for p in $$list; do \ ++ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ ++ echo " rm -f $$p $$f"; \ ++ rm -f $$p $$f ; \ ++ done + cgi-fcgi$(EXEEXT): $(cgi_fcgi_OBJECTS) $(cgi_fcgi_DEPENDENCIES) + @rm -f cgi-fcgi$(EXEEXT) +- $(LINK) $(cgi_fcgi_LDFLAGS) $(cgi_fcgi_OBJECTS) $(cgi_fcgi_LDADD) $(LIBS) ++ $(LINK) $(cgi_fcgi_OBJECTS) $(cgi_fcgi_LDADD) $(LIBS) + + mostlyclean-compile: +- -rm -f *.$(OBJEXT) core *.core ++ -rm -f *.$(OBJEXT) + + distclean-compile: + -rm -f *.tab.c + +-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/cgi-fcgi.Po@am__quote@ +- +-distclean-depend: +- -rm -rf $(DEPDIR) ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cgi-fcgi.Po@am__quote@ + + .c.o: +-@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +- $(COMPILE) -c `test -f $< || echo '$(srcdir)/'`$< ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c $< + + .c.obj: +-@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +- $(COMPILE) -c `cygpath -w $<` ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + + .c.lo: +-@AMDEP_TRUE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +- $(LTCOMPILE) -c -o $@ `test -f $< || echo '$(srcdir)/'`$< +-CCDEPMODE = @CCDEPMODE@ +-uninstall-info-am: ++@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +-tags: TAGS ++mostlyclean-libtool: ++ -rm -f *.lo ++ ++clean-libtool: ++ -rm -rf .libs _libs + + ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) +- list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ +- mkid -fID $$unique $(LISP) ++ mkid -fID $$unique ++tags: TAGS + + TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ +- list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ++ unique=`for i in $$list; do \ ++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ++ done | \ ++ $(AWK) ' { files[$$0] = 1; } \ ++ END { for (i in files) print i; }'`; \ ++ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ ++ test -n "$$unique" || unique=$$empty_fix; \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ $$tags $$unique; \ ++ fi ++ctags: CTAGS ++CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ++ $(TAGS_FILES) $(LISP) ++ tags=; \ ++ here=`pwd`; \ ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ +- test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ +- || etags $(ETAGS_ARGS) $$tags $$unique $(LISP) ++ test -z "$(CTAGS_ARGS)$$tags$$unique" \ ++ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ++ $$tags $$unique + + GTAGS: +- here=`CDPATH=: && cd $(top_builddir) && pwd` \ ++ here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + + distclean-tags: +- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH +- +-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +- +-top_distdir = .. +-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) ++ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + + distdir: $(DISTFILES) +- @for file in $(DISTFILES); do \ +- if test -f $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- $(mkinstalldirs) "$(distdir)/$$dir"; \ +- fi; \ ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ ++ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ +- cp -pR $$d/$$file $(distdir) \ +- || exit 1; \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ ++ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ++ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ ++ fi; \ ++ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ +@@ -270,10 +367,10 @@ + check-am: all-am + check: check-am + all-am: Makefile $(PROGRAMS) +- + installdirs: +- $(mkinstalldirs) $(DESTDIR)$(bindir) +- ++ for dir in "$(DESTDIR)$(bindir)"; do \ ++ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ ++ done + install: install-am + install-exec: install-exec-am + install-data: install-data-am +@@ -285,6 +382,7 @@ + installcheck: installcheck-am + install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ ++ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install + mostlyclean-generic: +@@ -292,7 +390,7 @@ + clean-generic: + + distclean-generic: +- -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* ++ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + + maintainer-clean-generic: + @echo "This command is intended for maintainers to use" +@@ -302,30 +400,42 @@ + clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am + + distclean: distclean-am +- +-distclean-am: clean-am distclean-compile distclean-depend \ +- distclean-generic distclean-libtool distclean-tags ++ -rm -rf ./$(DEPDIR) ++ -rm -f Makefile ++distclean-am: clean-am distclean-compile distclean-generic \ ++ distclean-tags + + dvi: dvi-am + + dvi-am: + ++html: html-am ++ + info: info-am + + info-am: + + install-data-am: + ++install-dvi: install-dvi-am ++ + install-exec-am: install-binPROGRAMS + ++install-html: install-html-am ++ + install-info: install-info-am + + install-man: + ++install-pdf: install-pdf-am ++ ++install-ps: install-ps-am ++ + installcheck-am: + + maintainer-clean: maintainer-clean-am +- ++ -rm -rf ./$(DEPDIR) ++ -rm -f Makefile + maintainer-clean-am: distclean-am maintainer-clean-generic + + mostlyclean: mostlyclean-am +@@ -333,19 +443,31 @@ + mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +-uninstall-am: uninstall-binPROGRAMS uninstall-info-am ++pdf: pdf-am ++ ++pdf-am: ++ ++ps: ps-am ++ ++ps-am: + +-.PHONY: GTAGS all all-am check check-am clean clean-binPROGRAMS \ +- clean-generic clean-libtool distclean distclean-compile \ +- distclean-depend distclean-generic distclean-libtool \ +- distclean-tags distdir dvi dvi-am info info-am install \ +- install-am install-binPROGRAMS install-data install-data-am \ +- install-exec install-exec-am install-info install-info-am \ +- install-man install-strip installcheck installcheck-am \ +- installdirs maintainer-clean maintainer-clean-generic \ +- mostlyclean mostlyclean-compile mostlyclean-generic \ +- mostlyclean-libtool tags uninstall uninstall-am \ +- uninstall-binPROGRAMS uninstall-info-am ++uninstall-am: uninstall-binPROGRAMS ++ ++.MAKE: install-am install-strip ++ ++.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ ++ clean-generic clean-libtool ctags distclean distclean-compile \ ++ distclean-generic distclean-libtool distclean-tags distdir dvi \ ++ dvi-am html html-am info info-am install install-am \ ++ install-binPROGRAMS install-data install-data-am install-dvi \ ++ install-dvi-am install-exec install-exec-am install-html \ ++ install-html-am install-info install-info-am install-man \ ++ install-pdf install-pdf-am install-ps install-ps-am \ ++ install-strip installcheck installcheck-am installdirs \ ++ maintainer-clean maintainer-clean-generic mostlyclean \ ++ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ ++ pdf pdf-am ps ps-am tags uninstall uninstall-am \ ++ uninstall-binPROGRAMS + + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. +--- libfcgi-2.4.0.orig/ltmain.sh ++++ libfcgi-2.4.0/ltmain.sh +@@ -1,8 +1,8 @@ + # ltmain.sh - Provide generalized library-building support services. + # NOTE: Changing this file will not affect anything until you rerun configure. + # +-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 +-# Free Software Foundation, Inc. ++# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, ++# 2007 Free Software Foundation, Inc. + # Originally by Gordon Matzigkeit , 1996 + # + # This program is free software; you can redistribute it and/or modify +@@ -17,13 +17,49 @@ + # + # You should have received a copy of the GNU General Public License + # along with this program; if not, write to the Free Software +-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + # + # As a special exception to the GNU General Public License, if you + # distribute this file as part of a program that contains a + # configuration script generated by Autoconf, you may include it under + # the same distribution terms that you use for the rest of that program. + ++basename="s,^.*/,,g" ++ ++# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh ++# is ksh but when the shell is invoked as "sh" and the current value of ++# the _XPG environment variable is not equal to 1 (one), the special ++# positional parameter $0, within a function call, is the name of the ++# function. ++progpath="$0" ++ ++# The name of this program: ++progname=`echo "$progpath" | $SED $basename` ++modename="$progname" ++ ++# Global variables: ++EXIT_SUCCESS=0 ++EXIT_FAILURE=1 ++ ++PROGRAM=ltmain.sh ++PACKAGE=libtool ++VERSION="1.5.24 Debian 1.5.24-1" ++TIMESTAMP=" (1.1220.2.456 2007/06/24 02:25:32)" ++ ++# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE). ++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then ++ emulate sh ++ NULLCMD=: ++ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which ++ # is contrary to our usage. Disable this feature. ++ alias -g '${1+"$@"}'='"$@"' ++ setopt NO_GLOB_SUBST ++else ++ case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac ++fi ++BIN_SH=xpg4; export BIN_SH # for Tru64 ++DUALCASE=1; export DUALCASE # for MKS sh ++ + # Check that we have a working $echo. + if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. +@@ -36,7 +72,7 @@ + : + else + # Restart under the correct shell, and then maybe $echo will work. +- exec $SHELL "$0" --no-reexec ${1+"$@"} ++ exec $SHELL "$progpath" --no-reexec ${1+"$@"} + fi + + if test "X$1" = X--fallback-echo; then +@@ -45,19 +81,9 @@ + cat <&2 +- echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 +- exit 1 ++ $echo "$modename: not configured to build any kind of library" 1>&2 ++ $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 ++ exit $EXIT_FAILURE + fi + + # Global variables. +@@ -99,11 +142,286 @@ + show="$echo" + show_help= + execute_dlfiles= ++duplicate_deps=no ++preserve_args= + lo2o="s/\\.lo\$/.${objext}/" + o2lo="s/\\.${objext}\$/.lo/" ++extracted_archives= ++extracted_serial=0 ++ ++##################################### ++# Shell function definitions: ++# This seems to be the best place for them ++ ++# func_mktempdir [string] ++# Make a temporary directory that won't clash with other running ++# libtool processes, and avoids race conditions if possible. If ++# given, STRING is the basename for that directory. ++func_mktempdir () ++{ ++ my_template="${TMPDIR-/tmp}/${1-$progname}" ++ ++ if test "$run" = ":"; then ++ # Return a directory name, but don't create it in dry-run mode ++ my_tmpdir="${my_template}-$$" ++ else ++ ++ # If mktemp works, use that first and foremost ++ my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` ++ ++ if test ! -d "$my_tmpdir"; then ++ # Failing that, at least try and use $RANDOM to avoid a race ++ my_tmpdir="${my_template}-${RANDOM-0}$$" ++ ++ save_mktempdir_umask=`umask` ++ umask 0077 ++ $mkdir "$my_tmpdir" ++ umask $save_mktempdir_umask ++ fi ++ ++ # If we're not in dry-run mode, bomb out on failure ++ test -d "$my_tmpdir" || { ++ $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2 ++ exit $EXIT_FAILURE ++ } ++ fi ++ ++ $echo "X$my_tmpdir" | $Xsed ++} ++ ++ ++# func_win32_libid arg ++# return the library type of file 'arg' ++# ++# Need a lot of goo to handle *both* DLLs and import libs ++# Has to be a shell function in order to 'eat' the argument ++# that is supplied when $file_magic_command is called. ++func_win32_libid () ++{ ++ win32_libid_type="unknown" ++ win32_fileres=`file -L $1 2>/dev/null` ++ case $win32_fileres in ++ *ar\ archive\ import\ library*) # definitely import ++ win32_libid_type="x86 archive import" ++ ;; ++ *ar\ archive*) # could be an import, or static ++ if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \ ++ $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then ++ win32_nmres=`eval $NM -f posix -A $1 | \ ++ $SED -n -e '1,100{ ++ / I /{ ++ s,.*,import, ++ p ++ q ++ } ++ }'` ++ case $win32_nmres in ++ import*) win32_libid_type="x86 archive import";; ++ *) win32_libid_type="x86 archive static";; ++ esac ++ fi ++ ;; ++ *DLL*) ++ win32_libid_type="x86 DLL" ++ ;; ++ *executable*) # but shell scripts are "executable" too... ++ case $win32_fileres in ++ *MS\ Windows\ PE\ Intel*) ++ win32_libid_type="x86 DLL" ++ ;; ++ esac ++ ;; ++ esac ++ $echo $win32_libid_type ++} ++ ++ ++# func_infer_tag arg ++# Infer tagged configuration to use if any are available and ++# if one wasn't chosen via the "--tag" command line option. ++# Only attempt this if the compiler in the base compile ++# command doesn't match the default compiler. ++# arg is usually of the form 'gcc ...' ++func_infer_tag () ++{ ++ if test -n "$available_tags" && test -z "$tagname"; then ++ CC_quoted= ++ for arg in $CC; do ++ case $arg in ++ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") ++ arg="\"$arg\"" ++ ;; ++ esac ++ CC_quoted="$CC_quoted $arg" ++ done ++ case $@ in ++ # Blanks in the command may have been stripped by the calling shell, ++ # but not from the CC environment variable when configure was run. ++ " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;; ++ # Blanks at the start of $base_compile will cause this to fail ++ # if we don't check for them as well. ++ *) ++ for z in $available_tags; do ++ if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then ++ # Evaluate the configuration. ++ eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" ++ CC_quoted= ++ for arg in $CC; do ++ # Double-quote args containing other shell metacharacters. ++ case $arg in ++ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") ++ arg="\"$arg\"" ++ ;; ++ esac ++ CC_quoted="$CC_quoted $arg" ++ done ++ case "$@ " in ++ " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ++ # The compiler in the base compile command matches ++ # the one in the tagged configuration. ++ # Assume this is the tagged configuration we want. ++ tagname=$z ++ break ++ ;; ++ esac ++ fi ++ done ++ # If $tagname still isn't set, then no tagged configuration ++ # was found and let the user know that the "--tag" command ++ # line option must be used. ++ if test -z "$tagname"; then ++ $echo "$modename: unable to infer tagged configuration" ++ $echo "$modename: specify a tag with \`--tag'" 1>&2 ++ exit $EXIT_FAILURE ++# else ++# $echo "$modename: using $tagname tagged configuration" ++ fi ++ ;; ++ esac ++ fi ++} ++ ++ ++# func_extract_an_archive dir oldlib ++func_extract_an_archive () ++{ ++ f_ex_an_ar_dir="$1"; shift ++ f_ex_an_ar_oldlib="$1" ++ ++ $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)" ++ $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $? ++ if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then ++ : ++ else ++ $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2 ++ exit $EXIT_FAILURE ++ fi ++} ++ ++# func_extract_archives gentop oldlib ... ++func_extract_archives () ++{ ++ my_gentop="$1"; shift ++ my_oldlibs=${1+"$@"} ++ my_oldobjs="" ++ my_xlib="" ++ my_xabs="" ++ my_xdir="" ++ my_status="" ++ ++ $show "${rm}r $my_gentop" ++ $run ${rm}r "$my_gentop" ++ $show "$mkdir $my_gentop" ++ $run $mkdir "$my_gentop" ++ my_status=$? ++ if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then ++ exit $my_status ++ fi ++ ++ for my_xlib in $my_oldlibs; do ++ # Extract the objects. ++ case $my_xlib in ++ [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; ++ *) my_xabs=`pwd`"/$my_xlib" ;; ++ esac ++ my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'` ++ my_xlib_u=$my_xlib ++ while :; do ++ case " $extracted_archives " in ++ *" $my_xlib_u "*) ++ extracted_serial=`expr $extracted_serial + 1` ++ my_xlib_u=lt$extracted_serial-$my_xlib ;; ++ *) break ;; ++ esac ++ done ++ extracted_archives="$extracted_archives $my_xlib_u" ++ my_xdir="$my_gentop/$my_xlib_u" ++ ++ $show "${rm}r $my_xdir" ++ $run ${rm}r "$my_xdir" ++ $show "$mkdir $my_xdir" ++ $run $mkdir "$my_xdir" ++ exit_status=$? ++ if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then ++ exit $exit_status ++ fi ++ case $host in ++ *-darwin*) ++ $show "Extracting $my_xabs" ++ # Do not bother doing anything if just a dry run ++ if test -z "$run"; then ++ darwin_orig_dir=`pwd` ++ cd $my_xdir || exit $? ++ darwin_archive=$my_xabs ++ darwin_curdir=`pwd` ++ darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'` ++ darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null` ++ if test -n "$darwin_arches"; then ++ darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'` ++ darwin_arch= ++ $show "$darwin_base_archive has multiple architectures $darwin_arches" ++ for darwin_arch in $darwin_arches ; do ++ mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}" ++ lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" ++ cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" ++ func_extract_an_archive "`pwd`" "${darwin_base_archive}" ++ cd "$darwin_curdir" ++ $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" ++ done # $darwin_arches ++ ## Okay now we have a bunch of thin objects, gotta fatten them up :) ++ darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP` ++ darwin_file= ++ darwin_files= ++ for darwin_file in $darwin_filelist; do ++ darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` ++ lipo -create -output "$darwin_file" $darwin_files ++ done # $darwin_filelist ++ ${rm}r unfat-$$ ++ cd "$darwin_orig_dir" ++ else ++ cd "$darwin_orig_dir" ++ func_extract_an_archive "$my_xdir" "$my_xabs" ++ fi # $darwin_arches ++ fi # $run ++ ;; ++ *) ++ func_extract_an_archive "$my_xdir" "$my_xabs" ++ ;; ++ esac ++ my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` ++ done ++ func_extract_archives_result="$my_oldobjs" ++} ++# End of Shell function definitions ++##################################### ++ ++# Darwin sucks ++eval std_shrext=\"$shrext_cmds\" ++ ++disable_libs=no + + # Parse our command line options once, thoroughly. +-while test $# -gt 0 ++while test "$#" -gt 0 + do + arg="$1" + shift +@@ -119,6 +437,34 @@ + execute_dlfiles) + execute_dlfiles="$execute_dlfiles $arg" + ;; ++ tag) ++ tagname="$arg" ++ preserve_args="${preserve_args}=$arg" ++ ++ # Check whether tagname contains only valid characters ++ case $tagname in ++ *[!-_A-Za-z0-9,/]*) ++ $echo "$progname: invalid tag name: $tagname" 1>&2 ++ exit $EXIT_FAILURE ++ ;; ++ esac ++ ++ case $tagname in ++ CC) ++ # Don't test for the "default" C tag, as we know, it's there, but ++ # not specially marked. ++ ;; ++ *) ++ if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then ++ taglist="$taglist $tagname" ++ # Evaluate the configuration. ++ eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`" ++ else ++ $echo "$progname: ignoring unknown tag $tagname" 1>&2 ++ fi ++ ;; ++ esac ++ ;; + *) + eval "$prev=\$arg" + ;; +@@ -136,18 +482,28 @@ + ;; + + --version) +- echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP" +- exit 0 ++ echo "\ ++$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP ++ ++Copyright (C) 2007 Free Software Foundation, Inc. ++This is free software; see the source for copying conditions. There is NO ++warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." ++ exit $? + ;; + + --config) +- sed -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $0 +- exit 0 ++ ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath ++ # Now print the configurations for the tags. ++ for tagname in $taglist; do ++ ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath" ++ done ++ exit $? + ;; + + --debug) +- echo "$progname: enabling shell trace mode" ++ $echo "$progname: enabling shell trace mode" + set -x ++ preserve_args="$preserve_args $arg" + ;; + + --dry-run | -n) +@@ -155,18 +511,18 @@ + ;; + + --features) +- echo "host: $host" ++ $echo "host: $host" + if test "$build_libtool_libs" = yes; then +- echo "enable shared libraries" ++ $echo "enable shared libraries" + else +- echo "disable shared libraries" ++ $echo "disable shared libraries" + fi + if test "$build_old_libs" = yes; then +- echo "enable static libraries" ++ $echo "enable static libraries" + else +- echo "disable static libraries" ++ $echo "disable static libraries" + fi +- exit 0 ++ exit $? + ;; + + --finish) mode="finish" ;; +@@ -174,8 +530,23 @@ + --mode) prevopt="--mode" prev=mode ;; + --mode=*) mode="$optarg" ;; + ++ --preserve-dup-deps) duplicate_deps="yes" ;; ++ + --quiet | --silent) + show=: ++ preserve_args="$preserve_args $arg" ++ ;; ++ ++ --tag) ++ prevopt="--tag" ++ prev=tag ++ preserve_args="$preserve_args --tag" ++ ;; ++ --tag=*) ++ set tag "$optarg" ${1+"$@"} ++ shift ++ prev=tag ++ preserve_args="$preserve_args --tag" + ;; + + -dlopen) +@@ -186,7 +557,7 @@ + -*) + $echo "$modename: unrecognized option \`$arg'" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + ;; + + *) +@@ -199,15 +570,34 @@ + if test -n "$prevopt"; then + $echo "$modename: option \`$prevopt' requires an argument" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + ++case $disable_libs in ++no) ++ ;; ++shared) ++ build_libtool_libs=no ++ build_old_libs=yes ++ ;; ++static) ++ build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` ++ ;; ++esac ++ ++# If this variable is set in any of the actions, the command in it ++# will be execed at the end. This prevents here-documents from being ++# left over by shells. ++exec_cmd= ++ + if test -z "$show_help"; then + + # Infer the operation mode. + if test -z "$mode"; then ++ $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2 ++ $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2 + case $nonopt in +- *cc | *++ | gcc* | *-gcc*) ++ *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*) + mode=link + for arg + do +@@ -248,7 +638,7 @@ + if test -n "$execute_dlfiles" && test "$mode" != execute; then + $echo "$modename: unrecognized option \`-dlopen'" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + + # Change the help message to a mode-specific one. +@@ -262,158 +652,127 @@ + modename="$modename: compile" + # Get the compilation command and the source file. + base_compile= +- prev= +- lastarg= +- srcfile="$nonopt" ++ srcfile="$nonopt" # always keep a non-empty value in "srcfile" ++ suppress_opt=yes + suppress_output= ++ arg_mode=normal ++ libobj= ++ later= + +- user_target=no + for arg + do +- case $prev in +- "") ;; +- xcompiler) +- # Aesthetically quote the previous argument. +- prev= +- lastarg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` +- +- case $arg in +- # Double-quote args containing other shell metacharacters. +- # Many Bourne shells cannot handle close brackets correctly +- # in scan sets, so we specify it separately. +- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") +- arg="\"$arg\"" +- ;; +- esac +- +- # Add the previous argument to base_compile. +- if test -z "$base_compile"; then +- base_compile="$lastarg" +- else +- base_compile="$base_compile $lastarg" +- fi +- continue +- ;; +- esac +- +- # Accept any command-line options. +- case $arg in +- -o) +- if test "$user_target" != "no"; then +- $echo "$modename: you cannot specify \`-o' more than once" 1>&2 +- exit 1 +- fi +- user_target=next ++ case $arg_mode in ++ arg ) ++ # do not "continue". Instead, add this to base_compile ++ lastarg="$arg" ++ arg_mode=normal + ;; + +- -static) +- build_old_libs=yes ++ target ) ++ libobj="$arg" ++ arg_mode=normal + continue + ;; + +- -prefer-pic) +- pic_mode=yes +- continue +- ;; ++ normal ) ++ # Accept any command-line options. ++ case $arg in ++ -o) ++ if test -n "$libobj" ; then ++ $echo "$modename: you cannot specify \`-o' more than once" 1>&2 ++ exit $EXIT_FAILURE ++ fi ++ arg_mode=target ++ continue ++ ;; + +- -prefer-non-pic) +- pic_mode=no +- continue +- ;; ++ -static | -prefer-pic | -prefer-non-pic) ++ later="$later $arg" ++ continue ++ ;; + +- -Xcompiler) +- prev=xcompiler +- continue +- ;; ++ -no-suppress) ++ suppress_opt=no ++ continue ++ ;; + +- -Wc,*) +- args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` +- lastarg= +- IFS="${IFS= }"; save_ifs="$IFS"; IFS=',' +- for arg in $args; do +- IFS="$save_ifs" ++ -Xcompiler) ++ arg_mode=arg # the next one goes into the "base_compile" arg list ++ continue # The current "srcfile" will either be retained or ++ ;; # replaced later. I would guess that would be a bug. ++ ++ -Wc,*) ++ args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` ++ lastarg= ++ save_ifs="$IFS"; IFS=',' ++ for arg in $args; do ++ IFS="$save_ifs" + +- # Double-quote args containing other shell metacharacters. +- # Many Bourne shells cannot handle close brackets correctly +- # in scan sets, so we specify it separately. +- case $arg in +- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") +- arg="\"$arg\"" +- ;; +- esac +- lastarg="$lastarg $arg" +- done +- IFS="$save_ifs" +- lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` ++ # Double-quote args containing other shell metacharacters. ++ # Many Bourne shells cannot handle close brackets correctly ++ # in scan sets, so we specify it separately. ++ case $arg in ++ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") ++ arg="\"$arg\"" ++ ;; ++ esac ++ lastarg="$lastarg $arg" ++ done ++ IFS="$save_ifs" ++ lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` + +- # Add the arguments to base_compile. +- if test -z "$base_compile"; then +- base_compile="$lastarg" +- else ++ # Add the arguments to base_compile. + base_compile="$base_compile $lastarg" +- fi +- continue +- ;; +- esac ++ continue ++ ;; + +- case $user_target in +- next) +- # The next one is the -o target name +- user_target=yes +- continue +- ;; +- yes) +- # We got the output file +- user_target=set +- libobj="$arg" +- continue ++ * ) ++ # Accept the current argument as the source file. ++ # The previous "srcfile" becomes the current argument. ++ # ++ lastarg="$srcfile" ++ srcfile="$arg" ++ ;; ++ esac # case $arg + ;; +- esac +- +- # Accept the current argument as the source file. +- lastarg="$srcfile" +- srcfile="$arg" ++ esac # case $arg_mode + + # Aesthetically quote the previous argument. +- +- # Backslashify any backslashes, double quotes, and dollar signs. +- # These are the only characters that are still specially +- # interpreted inside of double-quoted scrings. + lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` + ++ case $lastarg in + # Double-quote args containing other shell metacharacters. + # Many Bourne shells cannot handle close brackets correctly +- # in scan sets, so we specify it separately. +- case $lastarg in ++ # in scan sets, and some SunOS ksh mistreat backslash-escaping ++ # in scan sets (worked around with variable expansion), ++ # and furthermore cannot handle '|' '&' '(' ')' in scan sets ++ # at all, so we specify them separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + lastarg="\"$lastarg\"" + ;; + esac + +- # Add the previous argument to base_compile. +- if test -z "$base_compile"; then +- base_compile="$lastarg" +- else +- base_compile="$base_compile $lastarg" +- fi +- done ++ base_compile="$base_compile $lastarg" ++ done # for arg + +- case $user_target in +- set) ++ case $arg_mode in ++ arg) ++ $echo "$modename: you must specify an argument for -Xcompile" ++ exit $EXIT_FAILURE + ;; +- no) +- # Get the name of the library object. +- libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` ++ target) ++ $echo "$modename: you must specify a target with \`-o'" 1>&2 ++ exit $EXIT_FAILURE + ;; + *) +- $echo "$modename: you must specify a target with \`-o'" 1>&2 +- exit 1 ++ # Get the name of the library object. ++ [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` + ;; + esac + + # Recognize several different file suffixes. + # If the user specifies -o file.o, it is replaced with file.lo +- xform='[cCFSfmso]' ++ xform='[cCFSifmso]' + case $libobj in + *.ada) xform=ada ;; + *.adb) xform=adb ;; +@@ -421,10 +780,14 @@ + *.asm) xform=asm ;; + *.c++) xform=c++ ;; + *.cc) xform=cc ;; ++ *.ii) xform=ii ;; ++ *.class) xform=class ;; + *.cpp) xform=cpp ;; + *.cxx) xform=cxx ;; +- *.f90) xform=f90 ;; ++ *.[fF][09]?) xform=[fF][09]. ;; + *.for) xform=for ;; ++ *.java) xform=java ;; ++ *.obj) xform=obj ;; + esac + + libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` +@@ -433,25 +796,63 @@ + *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; + *) + $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + ;; + esac + ++ func_infer_tag $base_compile ++ ++ for arg in $later; do ++ case $arg in ++ -static) ++ build_old_libs=yes ++ continue ++ ;; ++ ++ -prefer-pic) ++ pic_mode=yes ++ continue ++ ;; ++ ++ -prefer-non-pic) ++ pic_mode=no ++ continue ++ ;; ++ esac ++ done ++ ++ qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"` ++ case $qlibobj in ++ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") ++ qlibobj="\"$qlibobj\"" ;; ++ esac ++ test "X$libobj" != "X$qlibobj" \ ++ && $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' &()|`$[]' \ ++ && $echo "$modename: libobj name \`$libobj' may not contain shell special characters." ++ objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` ++ xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` ++ if test "X$xdir" = "X$obj"; then ++ xdir= ++ else ++ xdir=$xdir/ ++ fi ++ lobj=${xdir}$objdir/$objname ++ + if test -z "$base_compile"; then + $echo "$modename: you must specify a compilation command" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + + # Delete any leftover library objects. + if test "$build_old_libs" = yes; then +- removelist="$obj $libobj" ++ removelist="$obj $lobj $libobj ${libobj}T" + else +- removelist="$libobj" ++ removelist="$lobj $libobj ${libobj}T" + fi + + $run $rm $removelist +- trap "$run $rm $removelist; exit 1" 1 2 15 ++ trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 + + # On Cygwin there's no "real" PIC flag so we must build both object types + case $host_os in +@@ -459,7 +860,7 @@ + pic_mode=default + ;; + esac +- if test $pic_mode = no && test "$deplibs_check_method" != pass_all; then ++ if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then + # non-PIC code in shared libraries is not supported + pic_mode=default + fi +@@ -470,8 +871,9 @@ + output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} + lockfile="$output_obj.lock" + removelist="$removelist $output_obj $lockfile" +- trap "$run $rm $removelist; exit 1" 1 2 15 ++ trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 + else ++ output_obj= + need_locks=no + lockfile= + fi +@@ -479,13 +881,13 @@ + # Lock this critical section if it is needed + # We use this script file to make the link, it avoids creating a new file + if test "$need_locks" = yes; then +- until $run ln "$0" "$lockfile" 2>/dev/null; do ++ until $run ln "$progpath" "$lockfile" 2>/dev/null; do + $show "Waiting for $lockfile to be removed" + sleep 2 + done + elif test "$need_locks" = warn; then + if test -f "$lockfile"; then +- echo "\ ++ $echo "\ + *** ERROR, $lockfile exists and contains: + `cat $lockfile 2>/dev/null` + +@@ -497,14 +899,33 @@ + compiler." + + $run $rm $removelist +- exit 1 ++ exit $EXIT_FAILURE + fi +- echo $srcfile > "$lockfile" ++ $echo "$srcfile" > "$lockfile" + fi + + if test -n "$fix_srcfile_path"; then + eval srcfile=\"$fix_srcfile_path\" + fi ++ qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"` ++ case $qsrcfile in ++ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") ++ qsrcfile="\"$qsrcfile\"" ;; ++ esac ++ ++ $run $rm "$libobj" "${libobj}T" ++ ++ # Create a libtool object file (analogous to a ".la" file), ++ # but don't create it if we're doing a dry run. ++ test -z "$run" && cat > ${libobj}T </dev/null`" != x"$srcfile"; then +- echo "\ ++ test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then ++ $echo "\ + *** ERROR, $lockfile contains: + `cat $lockfile 2>/dev/null` + +@@ -573,13 +979,13 @@ + compiler." + + $run $rm $removelist +- exit 1 ++ exit $EXIT_FAILURE + fi + + # Just move the object if needed, then go on to compile the next one +- if test x"$output_obj" != x"$libobj"; then +- $show "$mv $output_obj $libobj" +- if $run $mv $output_obj $libobj; then : ++ if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then ++ $show "$mv $output_obj $lobj" ++ if $run $mv $output_obj $lobj; then : + else + error=$? + $run $rm $removelist +@@ -587,73 +993,50 @@ + fi + fi + +- # If we have no pic_flag, then copy the object into place and finish. +- if (test -z "$pic_flag" || test "$pic_mode" != default) && +- test "$build_old_libs" = yes; then +- # Rename the .lo from within objdir to obj +- if test -f $obj; then +- $show $rm $obj +- $run $rm $obj +- fi ++ # Append the name of the PIC object to the libtool object file. ++ test -z "$run" && cat >> ${libobj}T <> ${libobj}T </dev/null`" != x"$srcfile"; then +- echo "\ ++ test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then ++ $echo "\ + *** ERROR, $lockfile contains: + `cat $lockfile 2>/dev/null` + +@@ -668,11 +1051,11 @@ + compiler." + + $run $rm $removelist +- exit 1 ++ exit $EXIT_FAILURE + fi + + # Just move the object if needed +- if test x"$output_obj" != x"$obj"; then ++ if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then + $show "$mv $output_obj $obj" + if $run $mv $output_obj $obj; then : + else +@@ -682,29 +1065,31 @@ + fi + fi + +- # Create an invalid libtool object if no PIC, so that we do not +- # accidentally link it into a program. +- if test "$build_libtool_libs" != yes; then +- $show "echo timestamp > $libobj" +- $run eval "echo timestamp > \$libobj" || exit $? +- else +- # Move the .lo from within objdir +- $show "$mv $libobj $lo_libobj" +- if $run $mv $libobj $lo_libobj; then : +- else +- error=$? +- $run $rm $removelist +- exit $error +- fi +- fi ++ # Append the name of the non-PIC object the libtool object file. ++ # Only append if the libtool object file exists. ++ test -z "$run" && cat >> ${libobj}T <> ${libobj}T <&2 + fi + if test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi +- else ++ prefer_static_libs=yes ++ ;; ++ -static) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi +- fi ++ prefer_static_libs=built ++ ;; ++ -static-libtool-libs) ++ if test -z "$pic_flag" && test -n "$link_static_flag"; then ++ dlopen_self=$dlopen_self_static ++ fi ++ prefer_static_libs=yes ++ ;; ++ esac + build_libtool_libs=no + build_old_libs=yes +- prefer_static_libs=yes + break + ;; + esac +@@ -800,7 +1203,7 @@ + test -n "$old_archive_from_new_cmds" && build_old_libs=yes + + # Go through the arguments, transforming them on the way. +- while test $# -gt 0; do ++ while test "$#" -gt 0; do + arg="$1" + shift + case $arg in +@@ -865,7 +1268,7 @@ + export_symbols="$arg" + if test ! -f "$arg"; then + $echo "$modename: symbol file \`$arg' does not exist" +- exit 1 ++ exit $EXIT_FAILURE + fi + prev= + continue +@@ -875,18 +1278,140 @@ + prev= + continue + ;; ++ inst_prefix) ++ inst_prefix_dir="$arg" ++ prev= ++ continue ++ ;; ++ precious_regex) ++ precious_files_regex="$arg" ++ prev= ++ continue ++ ;; + release) + release="-$arg" + prev= + continue + ;; ++ objectlist) ++ if test -f "$arg"; then ++ save_arg=$arg ++ moreargs= ++ for fil in `cat $save_arg` ++ do ++# moreargs="$moreargs $fil" ++ arg=$fil ++ # A libtool-controlled object. ++ ++ # Check to see that this really is a libtool object. ++ if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then ++ pic_object= ++ non_pic_object= ++ ++ # Read the .lo file ++ # If there is no directory component, then add one. ++ case $arg in ++ */* | *\\*) . $arg ;; ++ *) . ./$arg ;; ++ esac ++ ++ if test -z "$pic_object" || \ ++ test -z "$non_pic_object" || ++ test "$pic_object" = none && \ ++ test "$non_pic_object" = none; then ++ $echo "$modename: cannot find name of object for \`$arg'" 1>&2 ++ exit $EXIT_FAILURE ++ fi ++ ++ # Extract subdirectory from the argument. ++ xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` ++ if test "X$xdir" = "X$arg"; then ++ xdir= ++ else ++ xdir="$xdir/" ++ fi ++ ++ if test "$pic_object" != none; then ++ # Prepend the subdirectory the object is found in. ++ pic_object="$xdir$pic_object" ++ ++ if test "$prev" = dlfiles; then ++ if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then ++ dlfiles="$dlfiles $pic_object" ++ prev= ++ continue ++ else ++ # If libtool objects are unsupported, then we need to preload. ++ prev=dlprefiles ++ fi ++ fi ++ ++ # CHECK ME: I think I busted this. -Ossama ++ if test "$prev" = dlprefiles; then ++ # Preload the old-style object. ++ dlprefiles="$dlprefiles $pic_object" ++ prev= ++ fi ++ ++ # A PIC object. ++ libobjs="$libobjs $pic_object" ++ arg="$pic_object" ++ fi ++ ++ # Non-PIC object. ++ if test "$non_pic_object" != none; then ++ # Prepend the subdirectory the object is found in. ++ non_pic_object="$xdir$non_pic_object" ++ ++ # A standard non-PIC object ++ non_pic_objects="$non_pic_objects $non_pic_object" ++ if test -z "$pic_object" || test "$pic_object" = none ; then ++ arg="$non_pic_object" ++ fi ++ else ++ # If the PIC object exists, use it instead. ++ # $xdir was prepended to $pic_object above. ++ non_pic_object="$pic_object" ++ non_pic_objects="$non_pic_objects $non_pic_object" ++ fi ++ else ++ # Only an error if not doing a dry-run. ++ if test -z "$run"; then ++ $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 ++ exit $EXIT_FAILURE ++ else ++ # Dry-run case. ++ ++ # Extract subdirectory from the argument. ++ xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` ++ if test "X$xdir" = "X$arg"; then ++ xdir= ++ else ++ xdir="$xdir/" ++ fi ++ ++ pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` ++ non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` ++ libobjs="$libobjs $pic_object" ++ non_pic_objects="$non_pic_objects $non_pic_object" ++ fi ++ fi ++ done ++ else ++ $echo "$modename: link input file \`$save_arg' does not exist" ++ exit $EXIT_FAILURE ++ fi ++ arg=$save_arg ++ prev= ++ continue ++ ;; + rpath | xrpath) + # We need an absolute path. + case $arg in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + $echo "$modename: only absolute run-paths are allowed" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + ;; + esac + if test "$prev" = rpath; then +@@ -918,13 +1443,33 @@ + finalize_command="$finalize_command $wl$qarg" + continue + ;; ++ xcclinker) ++ linker_flags="$linker_flags $qarg" ++ compiler_flags="$compiler_flags $qarg" ++ prev= ++ compile_command="$compile_command $qarg" ++ finalize_command="$finalize_command $qarg" ++ continue ++ ;; ++ shrext) ++ shrext_cmds="$arg" ++ prev= ++ continue ++ ;; ++ darwin_framework|darwin_framework_skip) ++ test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg" ++ compile_command="$compile_command $arg" ++ finalize_command="$finalize_command $arg" ++ prev= ++ continue ++ ;; + *) + eval "$prev=\"\$arg\"" + prev= + continue + ;; + esac +- fi # test -n $prev ++ fi # test -n "$prev" + + prevarg="$arg" + +@@ -966,7 +1511,7 @@ + -export-symbols | -export-symbols-regex) + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + $echo "$modename: more than one -exported-symbols argument is not allowed" +- exit 1 ++ exit $EXIT_FAILURE + fi + if test "X$arg" = "X-export-symbols"; then + prev=expsyms +@@ -976,11 +1521,28 @@ + continue + ;; + ++ -framework|-arch|-isysroot) ++ case " $CC " in ++ *" ${arg} ${1} "* | *" ${arg} ${1} "*) ++ prev=darwin_framework_skip ;; ++ *) compiler_flags="$compiler_flags $arg" ++ prev=darwin_framework ;; ++ esac ++ compile_command="$compile_command $arg" ++ finalize_command="$finalize_command $arg" ++ continue ++ ;; ++ ++ -inst-prefix-dir) ++ prev=inst_prefix ++ continue ++ ;; ++ + # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* + # so, if we see these flags be careful not to treat them like -L + -L[A-Z][A-Z]*:*) + case $with_gcc/$host in +- no/*-*-irix*) ++ no/*-*-irix* | /*-*-irix*) + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + ;; +@@ -997,7 +1559,8 @@ + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 +- exit 1 ++ absdir="$dir" ++ notinst_path="$notinst_path $dir" + fi + dir="$absdir" + ;; +@@ -1011,10 +1574,15 @@ + esac + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) ++ testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$dir:"*) ;; + *) dllsearchpath="$dllsearchpath:$dir";; + esac ++ case :$dllsearchpath: in ++ *":$testbindir:"*) ;; ++ *) dllsearchpath="$dllsearchpath:$testbindir";; ++ esac + ;; + esac + continue +@@ -1023,25 +1591,99 @@ + -l*) + if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then + case $host in +- *-*-cygwin* | *-*-pw32* | *-*-beos*) ++ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*) + # These systems don't actually have a C or math library (as such) + continue + ;; +- *-*-mingw* | *-*-os2*) ++ *-*-os2*) + # These systems don't actually have a C library (as such) + test "X$arg" = "X-lc" && continue + ;; ++ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) ++ # Do not include libc due to us having libc/libc_r. ++ test "X$arg" = "X-lc" && continue ++ ;; ++ *-*-rhapsody* | *-*-darwin1.[012]) ++ # Rhapsody C and math libraries are in the System framework ++ deplibs="$deplibs -framework System" ++ continue ++ ;; ++ *-*-sco3.2v5* | *-*-sco5v6*) ++ # Causes problems with __ctype ++ test "X$arg" = "X-lc" && continue ++ ;; ++ *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) ++ # Compiler inserts libc in the correct place for threads to work ++ test "X$arg" = "X-lc" && continue ++ ;; + esac ++ elif test "X$arg" = "X-lc_r"; then ++ case $host in ++ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) ++ # Do not include libc_r directly, use -pthread flag. ++ continue ++ ;; ++ esac + fi + deplibs="$deplibs $arg" + continue + ;; + ++ # Tru64 UNIX uses -model [arg] to determine the layout of C++ ++ # classes, name mangling, and exception handling. ++ -model) ++ compile_command="$compile_command $arg" ++ compiler_flags="$compiler_flags $arg" ++ finalize_command="$finalize_command $arg" ++ prev=xcompiler ++ continue ++ ;; ++ ++ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) ++ compiler_flags="$compiler_flags $arg" ++ compile_command="$compile_command $arg" ++ finalize_command="$finalize_command $arg" ++ continue ++ ;; ++ + -module) + module=yes + continue + ;; + ++ # -64, -mips[0-9] enable 64-bit mode on the SGI compiler ++ # -r[0-9][0-9]* specifies the processor on the SGI compiler ++ # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler ++ # +DA*, +DD* enable 64-bit mode on the HP compiler ++ # -q* pass through compiler args for the IBM compiler ++ # -m* pass through architecture-specific compiler args for GCC ++ # -m*, -t[45]*, -txscale* pass through architecture-specific ++ # compiler args for GCC ++ # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC ++ # -F/path gives path to uninstalled frameworks, gcc on darwin ++ # @file GCC response files ++ -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ ++ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) ++ ++ # Unknown arguments in both finalize_command and compile_command need ++ # to be aesthetically quoted because they are evaled later. ++ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` ++ case $arg in ++ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") ++ arg="\"$arg\"" ++ ;; ++ esac ++ compile_command="$compile_command $arg" ++ finalize_command="$finalize_command $arg" ++ compiler_flags="$compiler_flags $arg" ++ continue ++ ;; ++ ++ -shrext) ++ prev=shrext ++ continue ++ ;; ++ + -no-fast-install) + fast_install=no + continue +@@ -1049,9 +1691,9 @@ + + -no-install) + case $host in +- *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) ++ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin*) + # The PATH hackery in wrapper scripts is required on Windows +- # in order for the loader to find any dlls it needs. ++ # and Darwin in order for the loader to find any dlls it needs. + $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 + $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 + fast_install=no +@@ -1066,8 +1708,18 @@ + continue + ;; + ++ -objectlist) ++ prev=objectlist ++ continue ++ ;; ++ + -o) prev=output ;; + ++ -precious-files-regex) ++ prev=precious_regex ++ continue ++ ;; ++ + -release) + prev=release + continue +@@ -1090,7 +1742,7 @@ + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + $echo "$modename: only absolute run-paths are allowed" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + ;; + esac + case "$xrpath " in +@@ -1100,7 +1752,7 @@ + continue + ;; + +- -static) ++ -static | -static-libtool-libs) + # The effects of -static are defined in a previous loop. + # We used to do the same as -all-static on platforms that + # didn't have a PIC flag, but the assumption that the effects +@@ -1118,11 +1770,16 @@ + prev=vinfo + continue + ;; ++ -version-number) ++ prev=vinfo ++ vinfo_number=yes ++ continue ++ ;; + + -Wc,*) + args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` + arg= +- IFS="${IFS= }"; save_ifs="$IFS"; IFS=',' ++ save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + case $flag in +@@ -1140,7 +1797,7 @@ + -Wl,*) + args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` + arg= +- IFS="${IFS= }"; save_ifs="$IFS"; IFS=',' ++ save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + case $flag in +@@ -1166,6 +1823,11 @@ + continue + ;; + ++ -XCClinker) ++ prev=xcclinker ++ continue ++ ;; ++ + # Some other compiler flag. + -* | +*) + # Unknown arguments in both finalize_command and compile_command need +@@ -1178,29 +1840,106 @@ + esac + ;; + +- *.lo | *.$objext) +- # A library or standard object. +- if test "$prev" = dlfiles; then +- # This file was specified with -dlopen. +- if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then +- dlfiles="$dlfiles $arg" +- prev= +- continue +- else +- # If libtool objects are unsupported, then we need to preload. +- prev=dlprefiles +- fi +- fi ++ *.$objext) ++ # A standard object. ++ objs="$objs $arg" ++ ;; + +- if test "$prev" = dlprefiles; then +- # Preload the old-style object. +- dlprefiles="$dlprefiles "`$echo "X$arg" | $Xsed -e "$lo2o"` +- prev= +- else ++ *.lo) ++ # A libtool-controlled object. ++ ++ # Check to see that this really is a libtool object. ++ if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then ++ pic_object= ++ non_pic_object= ++ ++ # Read the .lo file ++ # If there is no directory component, then add one. + case $arg in +- *.lo) libobjs="$libobjs $arg" ;; +- *) objs="$objs $arg" ;; ++ */* | *\\*) . $arg ;; ++ *) . ./$arg ;; + esac ++ ++ if test -z "$pic_object" || \ ++ test -z "$non_pic_object" || ++ test "$pic_object" = none && \ ++ test "$non_pic_object" = none; then ++ $echo "$modename: cannot find name of object for \`$arg'" 1>&2 ++ exit $EXIT_FAILURE ++ fi ++ ++ # Extract subdirectory from the argument. ++ xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` ++ if test "X$xdir" = "X$arg"; then ++ xdir= ++ else ++ xdir="$xdir/" ++ fi ++ ++ if test "$pic_object" != none; then ++ # Prepend the subdirectory the object is found in. ++ pic_object="$xdir$pic_object" ++ ++ if test "$prev" = dlfiles; then ++ if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then ++ dlfiles="$dlfiles $pic_object" ++ prev= ++ continue ++ else ++ # If libtool objects are unsupported, then we need to preload. ++ prev=dlprefiles ++ fi ++ fi ++ ++ # CHECK ME: I think I busted this. -Ossama ++ if test "$prev" = dlprefiles; then ++ # Preload the old-style object. ++ dlprefiles="$dlprefiles $pic_object" ++ prev= ++ fi ++ ++ # A PIC object. ++ libobjs="$libobjs $pic_object" ++ arg="$pic_object" ++ fi ++ ++ # Non-PIC object. ++ if test "$non_pic_object" != none; then ++ # Prepend the subdirectory the object is found in. ++ non_pic_object="$xdir$non_pic_object" ++ ++ # A standard non-PIC object ++ non_pic_objects="$non_pic_objects $non_pic_object" ++ if test -z "$pic_object" || test "$pic_object" = none ; then ++ arg="$non_pic_object" ++ fi ++ else ++ # If the PIC object exists, use it instead. ++ # $xdir was prepended to $pic_object above. ++ non_pic_object="$pic_object" ++ non_pic_objects="$non_pic_objects $non_pic_object" ++ fi ++ else ++ # Only an error if not doing a dry-run. ++ if test -z "$run"; then ++ $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 ++ exit $EXIT_FAILURE ++ else ++ # Dry-run case. ++ ++ # Extract subdirectory from the argument. ++ xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` ++ if test "X$xdir" = "X$arg"; then ++ xdir= ++ else ++ xdir="$xdir/" ++ fi ++ ++ pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` ++ non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` ++ libobjs="$libobjs $pic_object" ++ non_pic_objects="$non_pic_objects $non_pic_object" ++ fi + fi + ;; + +@@ -1251,7 +1990,7 @@ + if test -n "$prev"; then + $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + + if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then +@@ -1260,6 +1999,7 @@ + finalize_command="$finalize_command $arg" + fi + ++ oldlibs= + # calculate the name of the file, without its directory + outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` + libobjs_save="$libobjs" +@@ -1280,12 +2020,12 @@ + output_objdir="$output_objdir/$objdir" + fi + # Create the object directory. +- if test ! -d $output_objdir; then ++ if test ! -d "$output_objdir"; then + $show "$mkdir $output_objdir" + $run $mkdir $output_objdir +- status=$? +- if test $status -ne 0 && test ! -d $output_objdir; then +- exit $status ++ exit_status=$? ++ if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then ++ exit $exit_status + fi + fi + +@@ -1294,7 +2034,7 @@ + "") + $echo "$modename: you must specify an output file" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + ;; + *.$libext) linkmode=oldlib ;; + *.lo | *.$objext) linkmode=obj ;; +@@ -1302,22 +2042,52 @@ + *) linkmode=prog ;; # Anything else should be a program. + esac + ++ case $host in ++ *cygwin* | *mingw* | *pw32*) ++ # don't eliminate duplications in $postdeps and $predeps ++ duplicate_compiler_generated_deps=yes ++ ;; ++ *) ++ duplicate_compiler_generated_deps=$duplicate_deps ++ ;; ++ esac + specialdeplibs= ++ + libs= + # Find all interdependent deplibs by searching for libraries + # that are linked more than once (e.g. -la -lb -la) + for deplib in $deplibs; do +- case "$libs " in +- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; +- esac ++ if test "X$duplicate_deps" = "Xyes" ; then ++ case "$libs " in ++ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; ++ esac ++ fi + libs="$libs $deplib" + done ++ ++ if test "$linkmode" = lib; then ++ libs="$predeps $libs $compiler_lib_search_path $postdeps" ++ ++ # Compute libraries that are listed more than once in $predeps ++ # $postdeps and mark them as special (i.e., whose duplicates are ++ # not to be eliminated). ++ pre_post_deps= ++ if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then ++ for pre_post_dep in $predeps $postdeps; do ++ case "$pre_post_deps " in ++ *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; ++ esac ++ pre_post_deps="$pre_post_deps $pre_post_dep" ++ done ++ fi ++ pre_post_deps= ++ fi ++ + deplibs= + newdependency_libs= + newlib_search_path= + need_relink=no # whether we're linking any uninstalled libtool libraries + notinst_deplibs= # not-installed libtool libraries +- notinst_path= # paths that contain not-installed libtool libraries + case $linkmode in + lib) + passes="conv link" +@@ -1326,7 +2096,7 @@ + *.la) ;; + *) + $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + ;; + esac + done +@@ -1343,39 +2113,58 @@ + ;; + esac + for pass in $passes; do +- if test $linkmode = prog; then +- # Determine which files to process ++ if test "$linkmode,$pass" = "lib,link" || ++ test "$linkmode,$pass" = "prog,scan"; then ++ libs="$deplibs" ++ deplibs= ++ fi ++ if test "$linkmode" = prog; then + case $pass in +- dlopen) +- libs="$dlfiles" +- save_deplibs="$deplibs" # Collect dlpreopened libraries +- deplibs= +- ;; ++ dlopen) libs="$dlfiles" ;; + dlpreopen) libs="$dlprefiles" ;; +- link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; ++ link) ++ libs="$deplibs %DEPLIBS%" ++ test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" ++ ;; + esac + fi ++ if test "$pass" = dlopen; then ++ # Collect dlpreopened libraries ++ save_deplibs="$deplibs" ++ deplibs= ++ fi + for deplib in $libs; do + lib= + found=no + case $deplib in +- -l*) +- if test $linkmode = oldlib && test $linkmode = obj; then +- $echo "$modename: warning: \`-l' is ignored for archives/objects: $deplib" 1>&2 +- continue ++ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) ++ if test "$linkmode,$pass" = "prog,link"; then ++ compile_deplibs="$deplib $compile_deplibs" ++ finalize_deplibs="$deplib $finalize_deplibs" ++ else ++ compiler_flags="$compiler_flags $deplib" + fi +- if test $pass = conv; then +- deplibs="$deplib $deplibs" ++ continue ++ ;; ++ -l*) ++ if test "$linkmode" != lib && test "$linkmode" != prog; then ++ $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2 + continue + fi + name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` + for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do +- # Search the libtool library +- lib="$searchdir/lib${name}.la" +- if test -f "$lib"; then +- found=yes +- break +- fi ++ for search_ext in .la $std_shrext .so .a; do ++ # Search the libtool library ++ lib="$searchdir/lib${name}${search_ext}" ++ if test -f "$lib"; then ++ if test "$search_ext" = ".la"; then ++ found=yes ++ else ++ found=no ++ fi ++ break 2 ++ fi ++ done + done + if test "$found" != yes; then + # deplib doesn't seem to be a libtool library +@@ -1384,40 +2173,76 @@ + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" +- test $linkmode = lib && newdependency_libs="$deplib $newdependency_libs" ++ test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue ++ else # deplib is a libtool library ++ # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, ++ # We need to do some special things here, and not later. ++ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then ++ case " $predeps $postdeps " in ++ *" $deplib "*) ++ if (${SED} -e '2q' $lib | ++ grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then ++ library_names= ++ old_library= ++ case $lib in ++ */* | *\\*) . $lib ;; ++ *) . ./$lib ;; ++ esac ++ for l in $old_library $library_names; do ++ ll="$l" ++ done ++ if test "X$ll" = "X$old_library" ; then # only static version available ++ found=no ++ ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` ++ test "X$ladir" = "X$lib" && ladir="." ++ lib=$ladir/$old_library ++ if test "$linkmode,$pass" = "prog,link"; then ++ compile_deplibs="$deplib $compile_deplibs" ++ finalize_deplibs="$deplib $finalize_deplibs" ++ else ++ deplibs="$deplib $deplibs" ++ test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" ++ fi ++ continue ++ fi ++ fi ++ ;; ++ *) ;; ++ esac ++ fi + fi + ;; # -l + -L*) + case $linkmode in + lib) + deplibs="$deplib $deplibs" +- test $pass = conv && continue ++ test "$pass" = conv && continue + newdependency_libs="$deplib $newdependency_libs" + newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` + ;; + prog) +- if test $pass = conv; then ++ if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi +- if test $pass = scan; then ++ if test "$pass" = scan; then + deplibs="$deplib $deplibs" +- newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi ++ newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` + ;; + *) +- $echo "$modename: warning: \`-L' is ignored for archives/objects: $deplib" 1>&2 ++ $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2 + ;; + esac # linkmode + continue + ;; # -L + -R*) +- if test $pass = link; then ++ if test "$pass" = link; then + dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` + # Make sure the xrpath contains only unique directories. + case "$xrpath " in +@@ -1430,28 +2255,45 @@ + ;; + *.la) lib="$deplib" ;; + *.$libext) +- if test $pass = conv; then ++ if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + case $linkmode in + lib) +- if test "$deplibs_check_method" != pass_all; then +- echo +- echo "*** Warning: This library needs some functionality provided by $deplib." +- echo "*** I have the capability to make that library automatically link in when" +- echo "*** you link to this library. But I can only do this if you have a" +- echo "*** shared version of the library, which you do not appear to have." ++ valid_a_lib=no ++ case $deplibs_check_method in ++ match_pattern*) ++ set dummy $deplibs_check_method ++ match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` ++ if eval $echo \"$deplib\" 2>/dev/null \ ++ | $SED 10q \ ++ | $EGREP "$match_pattern_regex" > /dev/null; then ++ valid_a_lib=yes ++ fi ++ ;; ++ pass_all) ++ valid_a_lib=yes ++ ;; ++ esac ++ if test "$valid_a_lib" != yes; then ++ $echo ++ $echo "*** Warning: Trying to link with static lib archive $deplib." ++ $echo "*** I have the capability to make that library automatically link in when" ++ $echo "*** you link to this library. But I can only do this if you have a" ++ $echo "*** shared version of the library, which you do not appear to have" ++ $echo "*** because the file extensions .$libext of this argument makes me believe" ++ $echo "*** that it is just a static archive that I should not used here." + else +- echo +- echo "*** Warning: Linking the shared library $output against the" +- echo "*** static library $deplib is not portable!" ++ $echo ++ $echo "*** Warning: Linking the shared library $output against the" ++ $echo "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" + fi + continue + ;; + prog) +- if test $pass != link; then ++ if test "$pass" != link; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" +@@ -1462,14 +2304,18 @@ + esac # linkmode + ;; # *.$libext + *.lo | *.$objext) +- if test $pass = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then +- # If there is no dlopen support or we're linking statically, +- # we need to preload. +- newdlprefiles="$newdlprefiles $deplib" +- compile_deplibs="$deplib $compile_deplibs" +- finalize_deplibs="$deplib $finalize_deplibs" +- else +- newdlfiles="$newdlfiles $deplib" ++ if test "$pass" = conv; then ++ deplibs="$deplib $deplibs" ++ elif test "$linkmode" = prog; then ++ if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then ++ # If there is no dlopen support or we're linking statically, ++ # we need to preload. ++ newdlprefiles="$newdlprefiles $deplib" ++ compile_deplibs="$deplib $compile_deplibs" ++ finalize_deplibs="$deplib $finalize_deplibs" ++ else ++ newdlfiles="$newdlfiles $deplib" ++ fi + fi + continue + ;; +@@ -1478,17 +2324,17 @@ + continue + ;; + esac # case $deplib +- if test $found = yes || test -f "$lib"; then : ++ if test "$found" = yes || test -f "$lib"; then : + else +- $echo "$modename: cannot find the library \`$lib'" 1>&2 +- exit 1 ++ $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2 ++ exit $EXIT_FAILURE + fi + + # Check to see that this really is a libtool archive. +- if (sed -e '2q' $lib | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : ++ if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + + ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` +@@ -1501,8 +2347,11 @@ + library_names= + old_library= + # If the library was installed with an old release of libtool, +- # it will not redefine variable installed. ++ # it will not redefine variables installed, or shouldnotlink + installed=yes ++ shouldnotlink=no ++ avoidtemprpath= ++ + + # Read the .la file + case $lib in +@@ -1512,19 +2361,18 @@ + + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan" || +- { test $linkmode = oldlib && test $linkmode = obj; }; then +- # Add dl[pre]opened files of deplib ++ { test "$linkmode" != prog && test "$linkmode" != lib; }; then + test -n "$dlopen" && dlfiles="$dlfiles $dlopen" + test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" + fi + +- if test $pass = conv; then ++ if test "$pass" = conv; then + # Only check for convenience libraries + deplibs="$lib $deplibs" + if test -z "$libdir"; then + if test -z "$old_library"; then + $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + # It is a libtool convenience library, so add in its objects. + convenience="$convenience $ladir/$objdir/$old_library" +@@ -1532,18 +2380,21 @@ + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" +- case "$tmp_libs " in +- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; +- esac ++ if test "X$duplicate_deps" = "Xyes" ; then ++ case "$tmp_libs " in ++ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; ++ esac ++ fi + tmp_libs="$tmp_libs $deplib" + done +- elif test $linkmode != prog && test $linkmode != lib; then ++ elif test "$linkmode" != prog && test "$linkmode" != lib; then + $echo "$modename: \`$lib' is not a convenience library" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + continue + fi # $pass = conv + ++ + # Get the name of the library we link against. + linklib= + for l in $old_library $library_names; do +@@ -1551,19 +2402,23 @@ + done + if test -z "$linklib"; then + $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + + # This library was specified with -dlopen. +- if test $pass = dlopen; then ++ if test "$pass" = dlopen; then + if test -z "$libdir"; then + $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi +- if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then ++ if test -z "$dlname" || ++ test "$dlopen_support" != yes || ++ test "$build_libtool_libs" = no; then + # If there is no dlname, no dlopen support or we're linking +- # statically, we need to preload. +- dlprefiles="$dlprefiles $lib" ++ # statically, we need to preload. We also need to preload any ++ # dependent libraries so libltdl's deplib preloader doesn't ++ # bomb out in the load deplibs phase. ++ dlprefiles="$dlprefiles $lib $dependency_libs" + else + newdlfiles="$newdlfiles $lib" + fi +@@ -1595,19 +2450,27 @@ + dir="$libdir" + absdir="$libdir" + fi ++ test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes + else +- dir="$ladir/$objdir" +- absdir="$abs_ladir/$objdir" +- # Remove this search path later +- notinst_path="$notinst_path $abs_ladir" ++ if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then ++ dir="$ladir" ++ absdir="$abs_ladir" ++ # Remove this search path later ++ notinst_path="$notinst_path $abs_ladir" ++ else ++ dir="$ladir/$objdir" ++ absdir="$abs_ladir/$objdir" ++ # Remove this search path later ++ notinst_path="$notinst_path $abs_ladir" ++ fi + fi # $installed = yes + name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` + + # This library was specified with -dlpreopen. +- if test $pass = dlpreopen; then ++ if test "$pass" = dlpreopen; then + if test -z "$libdir"; then + $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). +@@ -1623,18 +2486,19 @@ + + if test -z "$libdir"; then + # Link the convenience library +- if test $linkmode = lib; then ++ if test "$linkmode" = lib; then + deplibs="$dir/$old_library $deplibs" + elif test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$dir/$old_library $compile_deplibs" + finalize_deplibs="$dir/$old_library $finalize_deplibs" + else +- deplibs="$lib $deplibs" ++ deplibs="$lib $deplibs" # used for prog,scan pass + fi + continue + fi + +- if test $linkmode = prog && test $pass != link; then ++ ++ if test "$linkmode" = prog && test "$pass" != link; then + newlib_search_path="$newlib_search_path $ladir" + deplibs="$lib $deplibs" + +@@ -1650,28 +2514,38 @@ + -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test + esac + # Need to link against all dependency_libs? +- if test $linkalldeplibs = yes; then ++ if test "$linkalldeplibs" = yes; then + deplibs="$deplib $deplibs" + else + # Need to hardcode shared library paths + # or/and link against static libraries + newdependency_libs="$deplib $newdependency_libs" + fi +- case "$tmp_libs " in +- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; +- esac ++ if test "X$duplicate_deps" = "Xyes" ; then ++ case "$tmp_libs " in ++ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; ++ esac ++ fi + tmp_libs="$tmp_libs $deplib" + done # for deplib + continue + fi # $linkmode = prog... + +- link_static=no # Whether the deplib will be linked statically +- if test -n "$library_names" && +- { test "$prefer_static_libs" = no || test -z "$old_library"; }; then +- # Link against this shared library ++ if test "$linkmode,$pass" = "prog,link"; then ++ if test -n "$library_names" && ++ { { test "$prefer_static_libs" = no || ++ test "$prefer_static_libs,$installed" = "built,yes"; } || ++ test -z "$old_library"; }; then ++ # We need to hardcode the library path ++ if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then ++ # Make sure the rpath contains only unique directories. ++ case "$temp_rpath " in ++ *" $dir "*) ;; ++ *" $absdir "*) ;; ++ *) temp_rpath="$temp_rpath $absdir" ;; ++ esac ++ fi + +- if test "$linkmode,$pass" = "prog,link" || +- { test $linkmode = lib && test $hardcode_into_libs = yes; }; then + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. +@@ -1693,17 +2567,6 @@ + esac + ;; + esac +- if test $linkmode = prog; then +- # We need to hardcode the library path +- if test -n "$shlibpath_var"; then +- # Make sure the rpath contains only unique directories. +- case "$temp_rpath " in +- *" $dir "*) ;; +- *" $absdir "*) ;; +- *) temp_rpath="$temp_rpath $dir" ;; +- esac +- fi +- fi + fi # $linkmode,$pass = prog,link... + + if test "$alldeplibs" = yes && +@@ -1713,11 +2576,56 @@ + # We only need to search for static libraries + continue + fi ++ fi + ++ link_static=no # Whether the deplib will be linked statically ++ use_static_libs=$prefer_static_libs ++ if test "$use_static_libs" = built && test "$installed" = yes ; then ++ use_static_libs=no ++ fi ++ if test -n "$library_names" && ++ { test "$use_static_libs" = no || test -z "$old_library"; }; then + if test "$installed" = no; then + notinst_deplibs="$notinst_deplibs $lib" + need_relink=yes + fi ++ # This is a shared library ++ ++ # Warn about portability, can't link against -module's on ++ # some systems (darwin) ++ if test "$shouldnotlink" = yes && test "$pass" = link ; then ++ $echo ++ if test "$linkmode" = prog; then ++ $echo "*** Warning: Linking the executable $output against the loadable module" ++ else ++ $echo "*** Warning: Linking the shared library $output against the loadable module" ++ fi ++ $echo "*** $linklib is not portable!" ++ fi ++ if test "$linkmode" = lib && ++ test "$hardcode_into_libs" = yes; then ++ # Hardcode the library path. ++ # Skip directories that are in the system default run-time ++ # search path. ++ case " $sys_lib_dlsearch_path " in ++ *" $absdir "*) ;; ++ *) ++ case "$compile_rpath " in ++ *" $absdir "*) ;; ++ *) compile_rpath="$compile_rpath $absdir" ++ esac ++ ;; ++ esac ++ case " $sys_lib_dlsearch_path " in ++ *" $libdir "*) ;; ++ *) ++ case "$finalize_rpath " in ++ *" $libdir "*) ;; ++ *) finalize_rpath="$finalize_rpath $libdir" ++ esac ++ ;; ++ esac ++ fi + + if test -n "$old_archive_from_expsyms_cmds"; then + # figure out the soname +@@ -1731,7 +2639,7 @@ + elif test -n "$soname_spec"; then + # bleh windows + case $host in +- *cygwin*) ++ *cygwin* | mingw*) + major=`expr $current - $age` + versuffix="-$major" + ;; +@@ -1743,17 +2651,18 @@ + + # Make a new name for the extract_expsyms_cmds to use + soroot="$soname" +- soname=`echo $soroot | sed -e 's/^.*\///'` +- newlib="libimp-`echo $soname | sed 's/^lib//;s/\.dll$//'`.a" ++ soname=`$echo $soroot | ${SED} -e 's/^.*\///'` ++ newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a" + + # If the library has no export list, then create one now + if test -f "$output_objdir/$soname-def"; then : + else + $show "extracting exported symbol list from \`$soname'" +- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' +- eval cmds=\"$extract_expsyms_cmds\" ++ save_ifs="$IFS"; IFS='~' ++ cmds=$extract_expsyms_cmds + for cmd in $cmds; do + IFS="$save_ifs" ++ eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done +@@ -1763,10 +2672,11 @@ + # Create $newlib + if test -f "$output_objdir/$newlib"; then :; else + $show "generating import library for \`$soname'" +- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' +- eval cmds=\"$old_archive_from_expsyms_cmds\" ++ save_ifs="$IFS"; IFS='~' ++ cmds=$old_archive_from_expsyms_cmds + for cmd in $cmds; do + IFS="$save_ifs" ++ eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done +@@ -1775,9 +2685,9 @@ + # make sure the library variables are pointing to the new library + dir=$output_objdir + linklib=$newlib +- fi # test -n $old_archive_from_expsyms_cmds ++ fi # test -n "$old_archive_from_expsyms_cmds" + +- if test $linkmode = prog || test "$mode" != relink; then ++ if test "$linkmode" = prog || test "$mode" != relink; then + add_shlibpath= + add_dir= + add= +@@ -1786,6 +2696,26 @@ + immediate | unsupported) + if test "$hardcode_direct" = no; then + add="$dir/$linklib" ++ case $host in ++ *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; ++ *-*-sysv4*uw2*) add_dir="-L$dir" ;; ++ *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ ++ *-*-unixware7*) add_dir="-L$dir" ;; ++ *-*-darwin* ) ++ # if the lib is a module then we can not link against ++ # it, someone is ignoring the new warnings I added ++ if /usr/bin/file -L $add 2> /dev/null | ++ $EGREP ": [^:]* bundle" >/dev/null ; then ++ $echo "** Warning, lib $linklib is a module, not a shared library" ++ if test -z "$old_library" ; then ++ $echo ++ $echo "** And there doesn't seem to be a static archive available" ++ $echo "** The link will probably fail, sorry" ++ else ++ add="$dir/$old_library" ++ fi ++ fi ++ esac + elif test "$hardcode_minus_L" = no; then + case $host in + *-*-sunos*) add_shlibpath="$dir" ;; +@@ -1804,6 +2734,14 @@ + add="$dir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$dir" ++ # Try looking first in the location we're being installed to. ++ if test -n "$inst_prefix_dir"; then ++ case $libdir in ++ [\\/]*) ++ add_dir="$add_dir -L$inst_prefix_dir$libdir" ++ ;; ++ esac ++ fi + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + add_shlibpath="$dir" +@@ -1817,7 +2755,7 @@ + + if test "$lib_linked" != yes; then + $echo "$modename: configuration error: unsupported hardcode properties" +- exit 1 ++ exit $EXIT_FAILURE + fi + + if test -n "$add_shlibpath"; then +@@ -1826,7 +2764,7 @@ + *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; + esac + fi +- if test $linkmode = prog; then ++ if test "$linkmode" = prog; then + test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" + test -n "$add" && compile_deplibs="$add $compile_deplibs" + else +@@ -1843,7 +2781,7 @@ + fi + fi + +- if test $linkmode = prog || test "$mode" = relink; then ++ if test "$linkmode" = prog || test "$mode" = relink; then + add_shlibpath= + add_dir= + add= +@@ -1859,13 +2797,28 @@ + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + esac + add="-l$name" ++ elif test "$hardcode_automatic" = yes; then ++ if test -n "$inst_prefix_dir" && ++ test -f "$inst_prefix_dir$libdir/$linklib" ; then ++ add="$inst_prefix_dir$libdir/$linklib" ++ else ++ add="$libdir/$linklib" ++ fi + else + # We cannot seem to hardcode it, guess we'll fake it. + add_dir="-L$libdir" ++ # Try looking first in the location we're being installed to. ++ if test -n "$inst_prefix_dir"; then ++ case $libdir in ++ [\\/]*) ++ add_dir="$add_dir -L$inst_prefix_dir$libdir" ++ ;; ++ esac ++ fi + add="-l$name" + fi + +- if test $linkmode = prog; then ++ if test "$linkmode" = prog; then + test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" + test -n "$add" && finalize_deplibs="$add $finalize_deplibs" + else +@@ -1873,16 +2826,7 @@ + test -n "$add" && deplibs="$add $deplibs" + fi + fi +- elif test $linkmode = prog; then +- if test "$alldeplibs" = yes && +- { test "$deplibs_check_method" = pass_all || +- { test "$build_libtool_libs" = yes && +- test -n "$library_names"; }; }; then +- # We only need to search for static libraries +- continue +- fi +- +- # Try to link the static library ++ elif test "$linkmode" = prog; then + # Here we assume that one of hardcode_direct or hardcode_minus_L + # is not unsupported. This is valid on all known static and + # shared platforms. +@@ -1902,40 +2846,40 @@ + + # Just print a warning and add the library to dependency_libs so + # that the program can be linked against the static library. +- echo +- echo "*** Warning: This library needs some functionality provided by $lib." +- echo "*** I have the capability to make that library automatically link in when" +- echo "*** you link to this library. But I can only do this if you have a" +- echo "*** shared version of the library, which you do not appear to have." ++ $echo ++ $echo "*** Warning: This system can not link to static lib archive $lib." ++ $echo "*** I have the capability to make that library automatically link in when" ++ $echo "*** you link to this library. But I can only do this if you have a" ++ $echo "*** shared version of the library, which you do not appear to have." + if test "$module" = yes; then +- echo "*** Therefore, libtool will create a static module, that should work " +- echo "*** as long as the dlopening application is linked with the -dlopen flag." ++ $echo "*** But as you try to build a module library, libtool will still create " ++ $echo "*** a static module, that should work as long as the dlopening application" ++ $echo "*** is linked with the -dlopen flag to resolve symbols at runtime." + if test -z "$global_symbol_pipe"; then +- echo +- echo "*** However, this would only work if libtool was able to extract symbol" +- echo "*** lists from a program, using \`nm' or equivalent, but libtool could" +- echo "*** not find such a program. So, this module is probably useless." +- echo "*** \`nm' from GNU binutils and a full rebuild may help." ++ $echo ++ $echo "*** However, this would only work if libtool was able to extract symbol" ++ $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" ++ $echo "*** not find such a program. So, this module is probably useless." ++ $echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then +- build_libtool_libs=module +- build_old_libs=yes ++ build_libtool_libs=module ++ build_old_libs=yes + else +- build_libtool_libs=no ++ build_libtool_libs=no + fi + fi + else +- convenience="$convenience $dir/$old_library" +- old_convenience="$old_convenience $dir/$old_library" + deplibs="$dir/$old_library $deplibs" + link_static=yes + fi + fi # link shared/static library? + +- if test $linkmode = lib; then ++ if test "$linkmode" = lib; then + if test -n "$dependency_libs" && +- { test $hardcode_into_libs != yes || test $build_old_libs = yes || +- test $link_static = yes; }; then ++ { test "$hardcode_into_libs" != yes || ++ test "$build_old_libs" = yes || ++ test "$link_static" = yes; }; then + # Extract -R from dependency_libs + temp_deplibs= + for libdir in $dependency_libs; do +@@ -1958,13 +2902,15 @@ + tmp_libs= + for deplib in $dependency_libs; do + newdependency_libs="$deplib $newdependency_libs" +- case "$tmp_libs " in +- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; +- esac ++ if test "X$duplicate_deps" = "Xyes" ; then ++ case "$tmp_libs " in ++ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; ++ esac ++ fi + tmp_libs="$tmp_libs $deplib" + done + +- if test $link_all_deplibs != no; then ++ if test "$link_all_deplibs" != no; then + # Add the search paths of all dependency libraries + for deplib in $dependency_libs; do + case $deplib in +@@ -1984,38 +2930,83 @@ + ;; + esac + if grep "^installed=no" $deplib > /dev/null; then +- path="-L$absdir/$objdir" ++ path="$absdir/$objdir" + else +- eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` ++ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + if test -z "$libdir"; then + $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + if test "$absdir" != "$libdir"; then + $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 + fi +- path="-L$absdir" ++ path="$absdir" + fi ++ depdepl= ++ case $host in ++ *-*-darwin*) ++ # we do not want to link against static libs, ++ # but need to link against shared ++ eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` ++ if test -n "$deplibrary_names" ; then ++ for tmp in $deplibrary_names ; do ++ depdepl=$tmp ++ done ++ if test -f "$path/$depdepl" ; then ++ depdepl="$path/$depdepl" ++ fi ++ # do not add paths which are already there ++ case " $newlib_search_path " in ++ *" $path "*) ;; ++ *) newlib_search_path="$newlib_search_path $path";; ++ esac ++ fi ++ path="" ++ ;; ++ *) ++ path="-L$path" ++ ;; ++ esac ++ ;; ++ -l*) ++ case $host in ++ *-*-darwin*) ++ # Again, we only want to link against shared libraries ++ eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"` ++ for tmp in $newlib_search_path ; do ++ if test -f "$tmp/lib$tmp_libs.dylib" ; then ++ eval depdepl="$tmp/lib$tmp_libs.dylib" ++ break ++ fi ++ done ++ path="" ++ ;; ++ *) continue ;; ++ esac + ;; + *) continue ;; + esac + case " $deplibs " in + *" $path "*) ;; +- *) deplibs="$deplibs $path" ;; ++ *) deplibs="$path $deplibs" ;; ++ esac ++ case " $deplibs " in ++ *" $depdepl "*) ;; ++ *) deplibs="$depdepl $deplibs" ;; + esac + done + fi # link_all_deplibs != no + fi # linkmode = lib + done # for deplib in $libs +- if test $pass = dlpreopen; then ++ dependency_libs="$newdependency_libs" ++ if test "$pass" = dlpreopen; then + # Link the dlpreopened libraries before other libraries + for deplib in $save_deplibs; do + deplibs="$deplib $deplibs" + done + fi +- if test $pass != dlopen; then +- test $pass != scan && dependency_libs="$newdependency_libs" +- if test $pass != conv; then ++ if test "$pass" != dlopen; then ++ if test "$pass" != conv; then + # Make sure lib_search_path contains only unique directories. + lib_search_path= + for dir in $newlib_search_path; do +@@ -2037,9 +3028,30 @@ + eval tmp_libs=\"\$$var\" + new_libs= + for deplib in $tmp_libs; do ++ # FIXME: Pedantically, this is the right thing to do, so ++ # that some nasty dependency loop isn't accidentally ++ # broken: ++ #new_libs="$deplib $new_libs" ++ # Pragmatically, this seems to cause very few problems in ++ # practice: + case $deplib in + -L*) new_libs="$deplib $new_libs" ;; ++ -R*) ;; + *) ++ # And here is the reason: when a library appears more ++ # than once as an explicit dependence of a library, or ++ # is implicitly linked in more than once by the ++ # compiler, it is considered special, and multiple ++ # occurrences thereof are not removed. Compare this ++ # with having the same library being listed as a ++ # dependency of multiple other libraries: in this case, ++ # we know (pedantically, we assume) the library does not ++ # need to be listed more than once, so we keep only the ++ # last copy. This is not always right, but it is rare ++ # enough that we require users that really mean to play ++ # such unportable linking tricks to link the library ++ # using -Wl,-lname, so that libtool does not consider it ++ # for duplicate removal. + case " $specialdeplibs " in + *" $deplib "*) new_libs="$deplib $new_libs" ;; + *) +@@ -2067,19 +3079,32 @@ + eval $var=\"$tmp_libs\" + done # for var + fi +- if test "$pass" = "conv" && +- { test "$linkmode" = "lib" || test "$linkmode" = "prog"; }; then +- libs="$deplibs" # reset libs +- deplibs= +- fi ++ # Last step: remove runtime libs from dependency_libs ++ # (they stay in deplibs) ++ tmp_libs= ++ for i in $dependency_libs ; do ++ case " $predeps $postdeps $compiler_lib_search_path " in ++ *" $i "*) ++ i="" ++ ;; ++ esac ++ if test -n "$i" ; then ++ tmp_libs="$tmp_libs $i" ++ fi ++ done ++ dependency_libs=$tmp_libs + done # for pass +- if test $linkmode = prog; then ++ if test "$linkmode" = prog; then + dlfiles="$newdlfiles" + dlprefiles="$newdlprefiles" + fi + + case $linkmode in + oldlib) ++ if test -n "$deplibs"; then ++ $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 ++ fi ++ + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 + fi +@@ -2093,7 +3118,7 @@ + fi + + if test -n "$vinfo"; then +- $echo "$modename: warning: \`-version-info' is ignored for archives" 1>&2 ++ $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2 + fi + + if test -n "$release"; then +@@ -2115,17 +3140,19 @@ + case $outputname in + lib*) + name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` ++ eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + ;; + *) + if test "$module" = no; then + $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + if test "$need_lib_prefix" != no; then + # Add the "lib" prefix for modules if required + name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` ++ eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + else + libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` +@@ -2136,11 +3163,11 @@ + if test -n "$objs"; then + if test "$deplibs_check_method" != pass_all; then + $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 +- exit 1 ++ exit $EXIT_FAILURE + else +- echo +- echo "*** Warning: Linking the shared library $output against the non-libtool" +- echo "*** objects $objs is not portable!" ++ $echo ++ $echo "*** Warning: Linking the shared library $output against the non-libtool" ++ $echo "*** objects $objs is not portable!" + libobjs="$libobjs $objs" + fi + fi +@@ -2150,7 +3177,7 @@ + fi + + set dummy $rpath +- if test $# -gt 2; then ++ if test "$#" -gt 2; then + $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 + fi + install_libdir="$2" +@@ -2159,14 +3186,16 @@ + if test -z "$rpath"; then + if test "$build_libtool_libs" = yes; then + # Building a libtool convenience library. +- libext=al ++ # Some compilers have problems with a `.al' extension so ++ # convenience libraries should have the same extension an ++ # archive normally would. + oldlibs="$output_objdir/$libname.$libext $oldlibs" + build_libtool_libs=convenience + build_old_libs=yes + fi + + if test -n "$vinfo"; then +- $echo "$modename: warning: \`-version-info' is ignored for convenience libraries" 1>&2 ++ $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2 + fi + + if test -n "$release"; then +@@ -2175,52 +3204,95 @@ + else + + # Parse the version information argument. +- IFS="${IFS= }"; save_ifs="$IFS"; IFS=':' ++ save_ifs="$IFS"; IFS=':' + set dummy $vinfo 0 0 0 + IFS="$save_ifs" + + if test -n "$8"; then + $echo "$modename: too many parameters to \`-version-info'" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + +- current="$2" +- revision="$3" +- age="$4" ++ # convert absolute version numbers to libtool ages ++ # this retains compatibility with .la files and attempts ++ # to make the code below a bit more comprehensible ++ ++ case $vinfo_number in ++ yes) ++ number_major="$2" ++ number_minor="$3" ++ number_revision="$4" ++ # ++ # There are really only two kinds -- those that ++ # use the current revision as the major version ++ # and those that subtract age and use age as ++ # a minor version. But, then there is irix ++ # which has an extra 1 added just for fun ++ # ++ case $version_type in ++ darwin|linux|osf|windows|none) ++ current=`expr $number_major + $number_minor` ++ age="$number_minor" ++ revision="$number_revision" ++ ;; ++ freebsd-aout|freebsd-elf|sunos) ++ current="$number_major" ++ revision="$number_minor" ++ age="0" ++ ;; ++ irix|nonstopux) ++ current=`expr $number_major + $number_minor` ++ age="$number_minor" ++ revision="$number_minor" ++ lt_irix_increment=no ++ ;; ++ *) ++ $echo "$modename: unknown library version type \`$version_type'" 1>&2 ++ $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 ++ exit $EXIT_FAILURE ++ ;; ++ esac ++ ;; ++ no) ++ current="$2" ++ revision="$3" ++ age="$4" ++ ;; ++ esac + + # Check that each of the things are valid numbers. + case $current in +- 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; ++ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) +- $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2 ++ $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + ;; + esac + + case $revision in +- 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; ++ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) +- $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2 ++ $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + ;; + esac + + case $age in +- 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; ++ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) +- $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2 ++ $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + ;; + esac + +- if test $age -gt $current; then ++ if test "$age" -gt "$current"; then + $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + + # Calculate the version variables. +@@ -2237,6 +3309,7 @@ + versuffix="$major.$age.$revision" + # Darwin ld doesn't like 0 for these options... + minor_current=`expr $current + 1` ++ xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + ;; + +@@ -2250,16 +3323,24 @@ + versuffix=".$current"; + ;; + +- irix) +- major=`expr $current - $age + 1` +- verstring="sgi$major.$revision" ++ irix | nonstopux) ++ if test "X$lt_irix_increment" = "Xno"; then ++ major=`expr $current - $age` ++ else ++ major=`expr $current - $age + 1` ++ fi ++ case $version_type in ++ nonstopux) verstring_prefix=nonstopux ;; ++ *) verstring_prefix=sgi ;; ++ esac ++ verstring="$verstring_prefix$major.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$revision +- while test $loop != 0; do ++ while test "$loop" -ne 0; do + iface=`expr $revision - $loop` + loop=`expr $loop - 1` +- verstring="sgi$major.$iface:$verstring" ++ verstring="$verstring_prefix$major.$iface:$verstring" + done + + # Before this point, $major must not contain `.'. +@@ -2273,13 +3354,13 @@ + ;; + + osf) +- major=`expr $current - $age` ++ major=.`expr $current - $age` + versuffix=".$current.$age.$revision" + verstring="$current.$age.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$age +- while test $loop != 0; do ++ while test "$loop" -ne 0; do + iface=`expr $current - $loop` + loop=`expr $loop - 1` + verstring="$verstring:${iface}.0" +@@ -2303,15 +3384,24 @@ + + *) + $echo "$modename: unknown library version type \`$version_type'" 1>&2 +- echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 +- exit 1 ++ $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 ++ exit $EXIT_FAILURE + ;; + esac + + # Clear the version info if we defaulted, and they specified a release. + if test -z "$vinfo" && test -n "$release"; then + major= +- verstring="0.0" ++ case $version_type in ++ darwin) ++ # we can't check for "0.0" in archive_cmds due to quoting ++ # problems, so we reset it completely ++ verstring= ++ ;; ++ *) ++ verstring="0.0" ++ ;; ++ esac + if test "$need_version" = no; then + versuffix= + else +@@ -2340,9 +3430,30 @@ + fi + + if test "$mode" != relink; then +- # Remove our outputs. +- $show "${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*" +- $run ${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.* ++ # Remove our outputs, but don't remove object files since they ++ # may have been created when compiling PIC objects. ++ removelist= ++ tempremovelist=`$echo "$output_objdir/*"` ++ for p in $tempremovelist; do ++ case $p in ++ *.$objext) ++ ;; ++ $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) ++ if test "X$precious_files_regex" != "X"; then ++ if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 ++ then ++ continue ++ fi ++ fi ++ removelist="$removelist $p" ++ ;; ++ *) ;; ++ esac ++ done ++ if test -n "$removelist"; then ++ $show "${rm}r $removelist" ++ $run ${rm}r $removelist ++ fi + fi + + # Now set the variables for building old libraries. +@@ -2354,11 +3465,11 @@ + fi + + # Eliminate all temporary directories. +- for path in $notinst_path; do +- lib_search_path=`echo "$lib_search_path " | sed -e 's% $path % %g'` +- deplibs=`echo "$deplibs " | sed -e 's% -L$path % %g'` +- dependency_libs=`echo "$dependency_libs " | sed -e 's% -L$path % %g'` +- done ++ #for path in $notinst_path; do ++ # lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"` ++ # deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"` ++ # dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"` ++ #done + + if test -n "$xrpath"; then + # If the user specified any rpath flags, then add them. +@@ -2370,7 +3481,7 @@ + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done +- if test $hardcode_into_libs != yes || test $build_old_libs = yes; then ++ if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then + dependency_libs="$temp_xrpath $dependency_libs" + fi + fi +@@ -2408,9 +3519,18 @@ + *-*-netbsd*) + # Don't link with libc until the a.out ld.so is fixed. + ;; +- *) ++ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) ++ # Do not include libc due to us having libc/libc_r. ++ ;; ++ *-*-sco3.2v5* | *-*-sco5v6*) ++ # Causes problems with __ctype ++ ;; ++ *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) ++ # Compiler inserts libc in the correct place for threads to work ++ ;; ++ *) + # Add libc to deplibs on all other systems if necessary. +- if test $build_libtool_need_lc = "yes"; then ++ if test "$build_libtool_need_lc" = "yes"; then + deplibs="$deplibs -lc" + fi + ;; +@@ -2437,7 +3557,7 @@ + # This might be a little naive. We might want to check + # whether the library exists or not. But this is on + # osf3 & osf4 and I'm not really sure... Just +- # implementing what was already the behaviour. ++ # implementing what was already the behavior. + newdeplibs=$deplibs + ;; + test_compile) +@@ -2450,64 +3570,85 @@ + int main() { return 0; } + EOF + $rm conftest +- $CC -o conftest conftest.c $deplibs +- if test $? -eq 0 ; then ++ if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then + ldd_output=`ldd conftest` + for i in $deplibs; do +- name="`expr $i : '-l\(.*\)'`" ++ name=`expr $i : '-l\(.*\)'` + # If $name is empty we are operating on a -L argument. +- if test -n "$name" && test "$name" != "0"; then +- libname=`eval \\$echo \"$libname_spec\"` +- deplib_matches=`eval \\$echo \"$library_names_spec\"` +- set dummy $deplib_matches +- deplib_match=$2 +- if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then +- newdeplibs="$newdeplibs $i" +- else +- droppeddeps=yes +- echo +- echo "*** Warning: This library needs some functionality provided by $i." +- echo "*** I have the capability to make that library automatically link in when" +- echo "*** you link to this library. But I can only do this if you have a" +- echo "*** shared version of the library, which you do not appear to have." ++ if test "$name" != "" && test "$name" != "0"; then ++ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then ++ case " $predeps $postdeps " in ++ *" $i "*) ++ newdeplibs="$newdeplibs $i" ++ i="" ++ ;; ++ esac ++ fi ++ if test -n "$i" ; then ++ libname=`eval \\$echo \"$libname_spec\"` ++ deplib_matches=`eval \\$echo \"$library_names_spec\"` ++ set dummy $deplib_matches ++ deplib_match=$2 ++ if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then ++ newdeplibs="$newdeplibs $i" ++ else ++ droppeddeps=yes ++ $echo ++ $echo "*** Warning: dynamic linker does not accept needed library $i." ++ $echo "*** I have the capability to make that library automatically link in when" ++ $echo "*** you link to this library. But I can only do this if you have a" ++ $echo "*** shared version of the library, which I believe you do not have" ++ $echo "*** because a test_compile did reveal that the linker did not use it for" ++ $echo "*** its dynamic dependency list that programs get resolved with at runtime." ++ fi + fi + else + newdeplibs="$newdeplibs $i" + fi + done + else +- # Error occured in the first compile. Let's try to salvage the situation: +- # Compile a seperate program for each library. ++ # Error occurred in the first compile. Let's try to salvage ++ # the situation: Compile a separate program for each library. + for i in $deplibs; do +- name="`expr $i : '-l\(.*\)'`" +- # If $name is empty we are operating on a -L argument. +- if test -n "$name" && test "$name" != "0"; then ++ name=`expr $i : '-l\(.*\)'` ++ # If $name is empty we are operating on a -L argument. ++ if test "$name" != "" && test "$name" != "0"; then + $rm conftest +- $CC -o conftest conftest.c $i +- # Did it work? +- if test $? -eq 0 ; then ++ if $LTCC $LTCFLAGS -o conftest conftest.c $i; then + ldd_output=`ldd conftest` +- libname=`eval \\$echo \"$libname_spec\"` +- deplib_matches=`eval \\$echo \"$library_names_spec\"` +- set dummy $deplib_matches +- deplib_match=$2 +- if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then +- newdeplibs="$newdeplibs $i" +- else +- droppeddeps=yes +- echo +- echo "*** Warning: This library needs some functionality provided by $i." +- echo "*** I have the capability to make that library automatically link in when" +- echo "*** you link to this library. But I can only do this if you have a" +- echo "*** shared version of the library, which you do not appear to have." ++ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then ++ case " $predeps $postdeps " in ++ *" $i "*) ++ newdeplibs="$newdeplibs $i" ++ i="" ++ ;; ++ esac ++ fi ++ if test -n "$i" ; then ++ libname=`eval \\$echo \"$libname_spec\"` ++ deplib_matches=`eval \\$echo \"$library_names_spec\"` ++ set dummy $deplib_matches ++ deplib_match=$2 ++ if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then ++ newdeplibs="$newdeplibs $i" ++ else ++ droppeddeps=yes ++ $echo ++ $echo "*** Warning: dynamic linker does not accept needed library $i." ++ $echo "*** I have the capability to make that library automatically link in when" ++ $echo "*** you link to this library. But I can only do this if you have a" ++ $echo "*** shared version of the library, which you do not appear to have" ++ $echo "*** because a test_compile did reveal that the linker did not use this one" ++ $echo "*** as a dynamic dependency that programs can get resolved with at runtime." ++ fi + fi + else + droppeddeps=yes +- echo +- echo "*** Warning! Library $i is needed by this library but I was not able to" +- echo "*** make it link in! You will probably need to install it or some" +- echo "*** library that it depends on before this library will be fully" +- echo "*** functional. Installing it before continuing would be even better." ++ $echo ++ $echo "*** Warning! Library $i is needed by this library but I was not able to" ++ $echo "*** make it link in! You will probably need to install it or some" ++ $echo "*** library that it depends on before this library will be fully" ++ $echo "*** functional. Installing it before continuing would be even better." + fi + else + newdeplibs="$newdeplibs $i" +@@ -2519,13 +3660,22 @@ + set dummy $deplibs_check_method + file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` + for a_deplib in $deplibs; do +- name="`expr $a_deplib : '-l\(.*\)'`" ++ name=`expr $a_deplib : '-l\(.*\)'` + # If $name is empty we are operating on a -L argument. +- if test -n "$name" && test "$name" != "0"; then +- libname=`eval \\$echo \"$libname_spec\"` +- for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do +- potential_libs=`ls $i/$libname[.-]* 2>/dev/null` +- for potent_lib in $potential_libs; do ++ if test "$name" != "" && test "$name" != "0"; then ++ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then ++ case " $predeps $postdeps " in ++ *" $a_deplib "*) ++ newdeplibs="$newdeplibs $a_deplib" ++ a_deplib="" ++ ;; ++ esac ++ fi ++ if test -n "$a_deplib" ; then ++ libname=`eval \\$echo \"$libname_spec\"` ++ for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do ++ potential_libs=`ls $i/$libname[.-]* 2>/dev/null` ++ for potent_lib in $potential_libs; do + # Follow soft links. + if ls -lLd "$potent_lib" 2>/dev/null \ + | grep " -> " >/dev/null; then +@@ -2538,28 +3688,36 @@ + # but so what? + potlib="$potent_lib" + while test -h "$potlib" 2>/dev/null; do +- potliblink=`ls -ld $potlib | sed 's/.* -> //'` ++ potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` + case $potliblink in + [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; + *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; + esac + done + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ +- | sed 10q \ +- | egrep "$file_magic_regex" > /dev/null; then ++ | ${SED} 10q \ ++ | $EGREP "$file_magic_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi +- done +- done ++ done ++ done ++ fi + if test -n "$a_deplib" ; then + droppeddeps=yes +- echo +- echo "*** Warning: This library needs some functionality provided by $a_deplib." +- echo "*** I have the capability to make that library automatically link in when" +- echo "*** you link to this library. But I can only do this if you have a" +- echo "*** shared version of the library, which you do not appear to have." ++ $echo ++ $echo "*** Warning: linker path does not have real file for library $a_deplib." ++ $echo "*** I have the capability to make that library automatically link in when" ++ $echo "*** you link to this library. But I can only do this if you have a" ++ $echo "*** shared version of the library, which you do not appear to have" ++ $echo "*** because I did check the linker path looking for a file starting" ++ if test -z "$potlib" ; then ++ $echo "*** with $libname but no candidates were found. (...for file magic test)" ++ else ++ $echo "*** with $libname and none of the candidates passed a file format test" ++ $echo "*** using a file magic. Last file checked: $potlib" ++ fi + fi + else + # Add a -L argument. +@@ -2571,29 +3729,47 @@ + set dummy $deplibs_check_method + match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` + for a_deplib in $deplibs; do +- name="`expr $a_deplib : '-l\(.*\)'`" ++ name=`expr $a_deplib : '-l\(.*\)'` + # If $name is empty we are operating on a -L argument. + if test -n "$name" && test "$name" != "0"; then +- libname=`eval \\$echo \"$libname_spec\"` +- for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do +- potential_libs=`ls $i/$libname[.-]* 2>/dev/null` +- for potent_lib in $potential_libs; do +- if eval echo \"$potent_lib\" 2>/dev/null \ +- | sed 10q \ +- | egrep "$match_pattern_regex" > /dev/null; then +- newdeplibs="$newdeplibs $a_deplib" +- a_deplib="" +- break 2 +- fi ++ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then ++ case " $predeps $postdeps " in ++ *" $a_deplib "*) ++ newdeplibs="$newdeplibs $a_deplib" ++ a_deplib="" ++ ;; ++ esac ++ fi ++ if test -n "$a_deplib" ; then ++ libname=`eval \\$echo \"$libname_spec\"` ++ for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do ++ potential_libs=`ls $i/$libname[.-]* 2>/dev/null` ++ for potent_lib in $potential_libs; do ++ potlib="$potent_lib" # see symlink-check above in file_magic test ++ if eval $echo \"$potent_lib\" 2>/dev/null \ ++ | ${SED} 10q \ ++ | $EGREP "$match_pattern_regex" > /dev/null; then ++ newdeplibs="$newdeplibs $a_deplib" ++ a_deplib="" ++ break 2 ++ fi ++ done + done +- done ++ fi + if test -n "$a_deplib" ; then + droppeddeps=yes +- echo +- echo "*** Warning: This library needs some functionality provided by $a_deplib." +- echo "*** I have the capability to make that library automatically link in when" +- echo "*** you link to this library. But I can only do this if you have a" +- echo "*** shared version of the library, which you do not appear to have." ++ $echo ++ $echo "*** Warning: linker path does not have real file for library $a_deplib." ++ $echo "*** I have the capability to make that library automatically link in when" ++ $echo "*** you link to this library. But I can only do this if you have a" ++ $echo "*** shared version of the library, which you do not appear to have" ++ $echo "*** because I did check the linker path looking for a file starting" ++ if test -z "$potlib" ; then ++ $echo "*** with $libname but no candidates were found. (...for regex pattern test)" ++ else ++ $echo "*** with $libname and none of the candidates passed a file format test" ++ $echo "*** using a regex pattern. Last file checked: $potlib" ++ fi + fi + else + # Add a -L argument. +@@ -2603,16 +3779,23 @@ + ;; + none | unknown | *) + newdeplibs="" +- if $echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ +- -e 's/ -[LR][^ ]*//g' -e 's/[ ]//g' | +- grep . >/dev/null; then +- echo ++ tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ ++ -e 's/ -[LR][^ ]*//g'` ++ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then ++ for i in $predeps $postdeps ; do ++ # can't use Xsed below, because $i might contain '/' ++ tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"` ++ done ++ fi ++ if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \ ++ | grep . >/dev/null; then ++ $echo + if test "X$deplibs_check_method" = "Xnone"; then +- echo "*** Warning: inter-library dependencies are not supported in this platform." ++ $echo "*** Warning: inter-library dependencies are not supported in this platform." + else +- echo "*** Warning: inter-library dependencies are not known to be supported." ++ $echo "*** Warning: inter-library dependencies are not known to be supported." + fi +- echo "*** All declared inter-library dependencies are being dropped." ++ $echo "*** All declared inter-library dependencies are being dropped." + droppeddeps=yes + fi + ;; +@@ -2632,17 +3815,17 @@ + + if test "$droppeddeps" = yes; then + if test "$module" = yes; then +- echo +- echo "*** Warning: libtool could not satisfy all declared inter-library" +- echo "*** dependencies of module $libname. Therefore, libtool will create" +- echo "*** a static module, that should work as long as the dlopening" +- echo "*** application is linked with the -dlopen flag." ++ $echo ++ $echo "*** Warning: libtool could not satisfy all declared inter-library" ++ $echo "*** dependencies of module $libname. Therefore, libtool will create" ++ $echo "*** a static module, that should work as long as the dlopening" ++ $echo "*** application is linked with the -dlopen flag." + if test -z "$global_symbol_pipe"; then +- echo +- echo "*** However, this would only work if libtool was able to extract symbol" +- echo "*** lists from a program, using \`nm' or equivalent, but libtool could" +- echo "*** not find such a program. So, this module is probably useless." +- echo "*** \`nm' from GNU binutils and a full rebuild may help." ++ $echo ++ $echo "*** However, this would only work if libtool was able to extract symbol" ++ $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" ++ $echo "*** not find such a program. So, this module is probably useless." ++ $echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" +@@ -2652,16 +3835,16 @@ + build_libtool_libs=no + fi + else +- echo "*** The inter-library dependencies that have been dropped here will be" +- echo "*** automatically added whenever a program is linked with this library" +- echo "*** or is declared to -dlopen it." +- +- if test $allow_undefined = no; then +- echo +- echo "*** Since this library must not contain undefined symbols," +- echo "*** because either the platform does not support them or" +- echo "*** it was explicitly requested with -no-undefined," +- echo "*** libtool will only create a static version of it." ++ $echo "*** The inter-library dependencies that have been dropped here will be" ++ $echo "*** automatically added whenever a program is linked with this library" ++ $echo "*** or is declared to -dlopen it." ++ ++ if test "$allow_undefined" = no; then ++ $echo ++ $echo "*** Since this library must not contain undefined symbols," ++ $echo "*** because either the platform does not support them or" ++ $echo "*** it was explicitly requested with -no-undefined," ++ $echo "*** libtool will only create a static version of it." + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module +@@ -2676,6 +3859,35 @@ + deplibs=$newdeplibs + fi + ++ ++ # move library search paths that coincide with paths to not yet ++ # installed libraries to the beginning of the library search list ++ new_libs= ++ for path in $notinst_path; do ++ case " $new_libs " in ++ *" -L$path/$objdir "*) ;; ++ *) ++ case " $deplibs " in ++ *" -L$path/$objdir "*) ++ new_libs="$new_libs -L$path/$objdir" ;; ++ esac ++ ;; ++ esac ++ done ++ for deplib in $deplibs; do ++ case $deplib in ++ -L*) ++ case " $new_libs " in ++ *" $deplib "*) ;; ++ *) new_libs="$new_libs $deplib" ;; ++ esac ++ ;; ++ *) new_libs="$new_libs $deplib" ;; ++ esac ++ done ++ deplibs="$new_libs" ++ ++ + # All the library-specific variables (install_libdir is set above). + library_names= + old_library= +@@ -2683,7 +3895,7 @@ + + # Test again, we may have decided not to build it any more + if test "$build_libtool_libs" = yes; then +- if test $hardcode_into_libs = yes; then ++ if test "$hardcode_into_libs" = yes; then + # Hardcode the library paths + hardcode_libdirs= + dep_rpath= +@@ -2719,7 +3931,14 @@ + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" +- eval dep_rpath=\"$hardcode_libdir_flag_spec\" ++ if test -n "$hardcode_libdir_flag_spec_ld"; then ++ case $archive_cmds in ++ *\$LD*) eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" ;; ++ *) eval dep_rpath=\"$hardcode_libdir_flag_spec\" ;; ++ esac ++ else ++ eval dep_rpath=\"$hardcode_libdir_flag_spec\" ++ fi + fi + if test -n "$runpath_var" && test -n "$perm_rpath"; then + # We should set the runpath_var. +@@ -2739,6 +3958,7 @@ + fi + + # Get the real and link names of the library. ++ eval shared_ext=\"$shrext_cmds\" + eval library_names=\"$library_names_spec\" + set dummy $library_names + realname="$2" +@@ -2749,31 +3969,17 @@ + else + soname="$realname" + fi +- test -z "$dlname" && dlname=$soname ++ if test -z "$dlname"; then ++ dlname=$soname ++ fi + + lib="$output_objdir/$realname" ++ linknames= + for link + do + linknames="$linknames $link" + done + +- # Ensure that we have .o objects for linkers which dislike .lo +- # (e.g. aix) in case we are running --disable-static +- for obj in $libobjs; do +- xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` +- if test "X$xdir" = "X$obj"; then +- xdir="." +- else +- xdir="$xdir" +- fi +- baseobj=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` +- oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"` +- if test ! -f $xdir/$oldobj; then +- $show "(cd $xdir && ${LN_S} $baseobj $oldobj)" +- $run eval '(cd $xdir && ${LN_S} $baseobj $oldobj)' || exit $? +- fi +- done +- + # Use standard objects if they are pic + test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + +@@ -2783,17 +3989,29 @@ + $show "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $run $rm $export_symbols +- eval cmds=\"$export_symbols_cmds\" +- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' ++ cmds=$export_symbols_cmds ++ save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" +- $show "$cmd" +- $run eval "$cmd" || exit $? ++ eval cmd=\"$cmd\" ++ if len=`expr "X$cmd" : ".*"` && ++ test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then ++ $show "$cmd" ++ $run eval "$cmd" || exit $? ++ skipped_export=false ++ else ++ # The command line is too long to execute in one step. ++ $show "using reloadable object file for export list..." ++ skipped_export=: ++ # Break out early, otherwise skipped_export may be ++ # set to false by a later but shorter cmd. ++ break ++ fi + done + IFS="$save_ifs" + if test -n "$export_symbols_regex"; then +- $show "egrep -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" +- $run eval 'egrep -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' ++ $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" ++ $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + $show "$mv \"${export_symbols}T\" \"$export_symbols\"" + $run eval '$mv "${export_symbols}T" "$export_symbols"' + fi +@@ -2804,74 +4022,210 @@ + $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' + fi + ++ tmp_deplibs= ++ for test_deplib in $deplibs; do ++ case " $convenience " in ++ *" $test_deplib "*) ;; ++ *) ++ tmp_deplibs="$tmp_deplibs $test_deplib" ++ ;; ++ esac ++ done ++ deplibs="$tmp_deplibs" ++ + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then ++ save_libobjs=$libobjs + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + else + gentop="$output_objdir/${outputname}x" +- $show "${rm}r $gentop" +- $run ${rm}r "$gentop" +- $show "mkdir $gentop" +- $run mkdir "$gentop" +- status=$? +- if test $status -ne 0 && test ! -d "$gentop"; then +- exit $status +- fi + generated="$generated $gentop" + +- for xlib in $convenience; do +- # Extract the objects. +- case $xlib in +- [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; +- *) xabs=`pwd`"/$xlib" ;; +- esac +- xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` +- xdir="$gentop/$xlib" ++ func_extract_archives $gentop $convenience ++ libobjs="$libobjs $func_extract_archives_result" ++ fi ++ fi ++ ++ if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then ++ eval flag=\"$thread_safe_flag_spec\" ++ linker_flags="$linker_flags $flag" ++ fi ++ ++ # Make a backup of the uninstalled library when relinking ++ if test "$mode" = relink; then ++ $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? ++ fi ++ ++ # Do each of the archive commands. ++ if test "$module" = yes && test -n "$module_cmds" ; then ++ if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then ++ eval test_cmds=\"$module_expsym_cmds\" ++ cmds=$module_expsym_cmds ++ else ++ eval test_cmds=\"$module_cmds\" ++ cmds=$module_cmds ++ fi ++ else ++ if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then ++ eval test_cmds=\"$archive_expsym_cmds\" ++ cmds=$archive_expsym_cmds ++ else ++ eval test_cmds=\"$archive_cmds\" ++ cmds=$archive_cmds ++ fi ++ fi ++ ++ if test "X$skipped_export" != "X:" && ++ len=`expr "X$test_cmds" : ".*" 2>/dev/null` && ++ test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then ++ : ++ else ++ # The command line is too long to link in one step, link piecewise. ++ $echo "creating reloadable object files..." + +- $show "${rm}r $xdir" +- $run ${rm}r "$xdir" +- $show "mkdir $xdir" +- $run mkdir "$xdir" +- status=$? +- if test $status -ne 0 && test ! -d "$xdir"; then +- exit $status ++ # Save the value of $output and $libobjs because we want to ++ # use them later. If we have whole_archive_flag_spec, we ++ # want to use save_libobjs as it was before ++ # whole_archive_flag_spec was expanded, because we can't ++ # assume the linker understands whole_archive_flag_spec. ++ # This may have to be revisited, in case too many ++ # convenience libraries get linked in and end up exceeding ++ # the spec. ++ if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then ++ save_libobjs=$libobjs ++ fi ++ save_output=$output ++ output_la=`$echo "X$output" | $Xsed -e "$basename"` ++ ++ # Clear the reloadable object creation command queue and ++ # initialize k to one. ++ test_cmds= ++ concat_cmds= ++ objlist= ++ delfiles= ++ last_robj= ++ k=1 ++ output=$output_objdir/$output_la-${k}.$objext ++ # Loop over the list of objects to be linked. ++ for obj in $save_libobjs ++ do ++ eval test_cmds=\"$reload_cmds $objlist $last_robj\" ++ if test "X$objlist" = X || ++ { len=`expr "X$test_cmds" : ".*" 2>/dev/null` && ++ test "$len" -le "$max_cmd_len"; }; then ++ objlist="$objlist $obj" ++ else ++ # The command $test_cmds is almost too long, add a ++ # command to the queue. ++ if test "$k" -eq 1 ; then ++ # The first file doesn't have a previous command to add. ++ eval concat_cmds=\"$reload_cmds $objlist $last_robj\" ++ else ++ # All subsequent reloadable object files will link in ++ # the last one created. ++ eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\" + fi +- $show "(cd $xdir && $AR x $xabs)" +- $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? ++ last_robj=$output_objdir/$output_la-${k}.$objext ++ k=`expr $k + 1` ++ output=$output_objdir/$output_la-${k}.$objext ++ objlist=$obj ++ len=1 ++ fi ++ done ++ # Handle the remaining objects by creating one last ++ # reloadable object file. All subsequent reloadable object ++ # files will link in the last one created. ++ test -z "$concat_cmds" || concat_cmds=$concat_cmds~ ++ eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" ++ ++ if ${skipped_export-false}; then ++ $show "generating symbol list for \`$libname.la'" ++ export_symbols="$output_objdir/$libname.exp" ++ $run $rm $export_symbols ++ libobjs=$output ++ # Append the command to create the export file. ++ eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\" ++ fi ++ ++ # Set up a command to remove the reloadable object files ++ # after they are used. ++ i=0 ++ while test "$i" -lt "$k" ++ do ++ i=`expr $i + 1` ++ delfiles="$delfiles $output_objdir/$output_la-${i}.$objext" ++ done ++ ++ $echo "creating a temporary reloadable object file: $output" ++ ++ # Loop through the commands generated above and execute them. ++ save_ifs="$IFS"; IFS='~' ++ for cmd in $concat_cmds; do ++ IFS="$save_ifs" ++ $show "$cmd" ++ $run eval "$cmd" || exit $? ++ done ++ IFS="$save_ifs" ++ ++ libobjs=$output ++ # Restore the value of output. ++ output=$save_output + +- libobjs="$libobjs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP` +- done ++ if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then ++ eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + fi +- fi +- +- if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then +- eval flag=\"$thread_safe_flag_spec\" +- linker_flags="$linker_flags $flag" +- fi ++ # Expand the library linking commands again to reset the ++ # value of $libobjs for piecewise linking. + +- # Make a backup of the uninstalled library when relinking +- if test "$mode" = relink; then +- $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? +- fi ++ # Do each of the archive commands. ++ if test "$module" = yes && test -n "$module_cmds" ; then ++ if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then ++ cmds=$module_expsym_cmds ++ else ++ cmds=$module_cmds ++ fi ++ else ++ if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then ++ cmds=$archive_expsym_cmds ++ else ++ cmds=$archive_cmds ++ fi ++ fi + +- # Do each of the archive commands. +- if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then +- eval cmds=\"$archive_expsym_cmds\" +- else +- eval cmds=\"$archive_cmds\" ++ # Append the command to remove the reloadable object files ++ # to the just-reset $cmds. ++ eval cmds=\"\$cmds~\$rm $delfiles\" + fi +- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' ++ save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" ++ eval cmd=\"$cmd\" + $show "$cmd" +- $run eval "$cmd" || exit $? ++ $run eval "$cmd" || { ++ lt_exit=$? ++ ++ # Restore the uninstalled library and exit ++ if test "$mode" = relink; then ++ $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' ++ fi ++ ++ exit $lt_exit ++ } + done + IFS="$save_ifs" + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? +- exit 0 ++ ++ if test -n "$convenience"; then ++ if test -z "$whole_archive_flag_spec"; then ++ $show "${rm}r $gentop" ++ $run ${rm}r "$gentop" ++ fi ++ fi ++ ++ exit $EXIT_SUCCESS + fi + + # Create links to the real library. +@@ -2919,7 +4273,7 @@ + *.lo) + if test -n "$objs$old_deplibs"; then + $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + libobj="$output" + obj=`$echo "X$output" | $Xsed -e "$lo2o"` +@@ -2940,46 +4294,20 @@ + reload_conv_objs= + gentop= + # reload_cmds runs $LD directly, so let us get rid of +- # -Wl from whole_archive_flag_spec ++ # -Wl from whole_archive_flag_spec and hope we can get by with ++ # turning comma into space.. + wl= + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then +- eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\" ++ eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" ++ reload_conv_objs=$reload_objs\ `$echo "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` + else + gentop="$output_objdir/${obj}x" +- $show "${rm}r $gentop" +- $run ${rm}r "$gentop" +- $show "mkdir $gentop" +- $run mkdir "$gentop" +- status=$? +- if test $status -ne 0 && test ! -d "$gentop"; then +- exit $status +- fi + generated="$generated $gentop" + +- for xlib in $convenience; do +- # Extract the objects. +- case $xlib in +- [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; +- *) xabs=`pwd`"/$xlib" ;; +- esac +- xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` +- xdir="$gentop/$xlib" +- +- $show "${rm}r $xdir" +- $run ${rm}r "$xdir" +- $show "mkdir $xdir" +- $run mkdir "$xdir" +- status=$? +- if test $status -ne 0 && test ! -d "$xdir"; then +- exit $status +- fi +- $show "(cd $xdir && $AR x $xabs)" +- $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? +- +- reload_conv_objs="$reload_objs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP` +- done ++ func_extract_archives $gentop $convenience ++ reload_conv_objs="$reload_objs $func_extract_archives_result" + fi + fi + +@@ -2987,10 +4315,11 @@ + reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test + + output="$obj" +- eval cmds=\"$reload_cmds\" +- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' ++ cmds=$reload_cmds ++ save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" ++ eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done +@@ -3003,7 +4332,7 @@ + $run ${rm}r $gentop + fi + +- exit 0 ++ exit $EXIT_SUCCESS + fi + + if test "$build_libtool_libs" != yes; then +@@ -3014,37 +4343,24 @@ + + # Create an invalid libtool object if no PIC, so that we don't + # accidentally link it into a program. +- $show "echo timestamp > $libobj" +- $run eval "echo timestamp > $libobj" || exit $? +- exit 0 ++ # $show "echo timestamp > $libobj" ++ # $run eval "echo timestamp > $libobj" || exit $? ++ exit $EXIT_SUCCESS + fi + + if test -n "$pic_flag" || test "$pic_mode" != default; then + # Only do commands if we really have different PIC objects. + reload_objs="$libobjs $reload_conv_objs" + output="$libobj" +- eval cmds=\"$reload_cmds\" +- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' ++ cmds=$reload_cmds ++ save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" ++ eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" +- else +- # Just create a symlink. +- $show $rm $libobj +- $run $rm $libobj +- xdir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'` +- if test "X$xdir" = "X$libobj"; then +- xdir="." +- else +- xdir="$xdir" +- fi +- baseobj=`$echo "X$libobj" | $Xsed -e 's%^.*/%%'` +- oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"` +- $show "(cd $xdir && $LN_S $oldobj $baseobj)" +- $run eval '(cd $xdir && $LN_S $oldobj $baseobj)' || exit $? + fi + + if test -n "$gentop"; then +@@ -3052,12 +4368,12 @@ + $run ${rm}r $gentop + fi + +- exit 0 ++ exit $EXIT_SUCCESS + ;; + + prog) + case $host in +- *cygwin*) output=`echo $output | sed -e 's,.exe$,,;s,$,.exe,'` ;; ++ *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;; + esac + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 +@@ -3082,6 +4398,45 @@ + ;; + esac + ++ case $host in ++ *darwin*) ++ # Don't allow lazy linking, it breaks C++ global constructors ++ if test "$tagname" = CXX ; then ++ compile_command="$compile_command ${wl}-bind_at_load" ++ finalize_command="$finalize_command ${wl}-bind_at_load" ++ fi ++ ;; ++ esac ++ ++ ++ # move library search paths that coincide with paths to not yet ++ # installed libraries to the beginning of the library search list ++ new_libs= ++ for path in $notinst_path; do ++ case " $new_libs " in ++ *" -L$path/$objdir "*) ;; ++ *) ++ case " $compile_deplibs " in ++ *" -L$path/$objdir "*) ++ new_libs="$new_libs -L$path/$objdir" ;; ++ esac ++ ;; ++ esac ++ done ++ for deplib in $compile_deplibs; do ++ case $deplib in ++ -L*) ++ case " $new_libs " in ++ *" $deplib "*) ;; ++ *) new_libs="$new_libs $deplib" ;; ++ esac ++ ;; ++ *) new_libs="$new_libs $deplib" ;; ++ esac ++ done ++ compile_deplibs="$new_libs" ++ ++ + compile_command="$compile_command $compile_deplibs" + finalize_command="$finalize_command $finalize_deplibs" + +@@ -3126,10 +4481,15 @@ + fi + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) ++ testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$libdir:"*) ;; + *) dllsearchpath="$dllsearchpath:$libdir";; + esac ++ case :$dllsearchpath: in ++ *":$testbindir:"*) ;; ++ *) dllsearchpath="$dllsearchpath:$testbindir";; ++ esac + ;; + esac + done +@@ -3232,31 +4592,43 @@ + done + + if test -n "$exclude_expsyms"; then +- $run eval 'egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' ++ $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' + $run eval '$mv "$nlist"T "$nlist"' + fi + + if test -n "$export_symbols_regex"; then +- $run eval 'egrep -e "$export_symbols_regex" "$nlist" > "$nlist"T' ++ $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' + $run eval '$mv "$nlist"T "$nlist"' + fi + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then +- export_symbols="$output_objdir/$output.exp" ++ export_symbols="$output_objdir/$outputname.exp" + $run $rm $export_symbols +- $run eval "sed -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' ++ $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' ++ case $host in ++ *cygwin* | *mingw* ) ++ $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' ++ $run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' ++ ;; ++ esac + else +- $run eval "sed -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"' +- $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T' ++ $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' ++ $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' + $run eval 'mv "$nlist"T "$nlist"' ++ case $host in ++ *cygwin* | *mingw* ) ++ $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' ++ $run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' ++ ;; ++ esac + fi + fi + + for arg in $dlprefiles; do + $show "extracting global C symbols from \`$arg'" +- name=`echo "$arg" | sed -e 's%^.*/%%'` +- $run eval 'echo ": $name " >> "$nlist"' ++ name=`$echo "$arg" | ${SED} -e 's%^.*/%%'` ++ $run eval '$echo ": $name " >> "$nlist"' + $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" + done + +@@ -3265,12 +4637,18 @@ + test -f "$nlist" || : > "$nlist" + + if test -n "$exclude_expsyms"; then +- egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T ++ $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T + $mv "$nlist"T "$nlist" + fi + + # Try sorting and uniquifying the output. +- if grep -v "^: " < "$nlist" | sort +2 | uniq > "$nlist"S; then ++ if grep -v "^: " < "$nlist" | ++ if sort -k 3 /dev/null 2>&1; then ++ sort -k 3 ++ else ++ sort +2 ++ fi | ++ uniq > "$nlist"S; then + : + else + grep -v "^: " < "$nlist" > "$nlist"S +@@ -3279,7 +4657,7 @@ + if test -f "$nlist"S; then + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' + else +- echo '/* NONE */' >> "$output_objdir/$dlsyms" ++ $echo '/* NONE */' >> "$output_objdir/$dlsyms" + fi + + $echo >> "$output_objdir/$dlsyms" "\ +@@ -3287,27 +4665,44 @@ + #undef lt_preloaded_symbols + + #if defined (__STDC__) && __STDC__ +-# define lt_ptr_t void * ++# define lt_ptr void * + #else +-# define lt_ptr_t char * ++# define lt_ptr char * + # define const + #endif + + /* The mapping between symbol names and symbols. */ ++" ++ ++ case $host in ++ *cygwin* | *mingw* ) ++ $echo >> "$output_objdir/$dlsyms" "\ ++/* DATA imports from DLLs on WIN32 can't be const, because ++ runtime relocations are performed -- see ld's documentation ++ on pseudo-relocs */ ++struct { ++" ++ ;; ++ * ) ++ $echo >> "$output_objdir/$dlsyms" "\ + const struct { ++" ++ ;; ++ esac ++ ++ ++ $echo >> "$output_objdir/$dlsyms" "\ + const char *name; +- lt_ptr_t address; ++ lt_ptr address; + } + lt_preloaded_symbols[] = + {\ + " + +- sed -n -e 's/^: \([^ ]*\) $/ {\"\1\", (lt_ptr_t) 0},/p' \ +- -e 's/^. \([^ ]*\) \([^ ]*\)$/ {"\2", (lt_ptr_t) \&\2},/p' \ +- < "$nlist" >> "$output_objdir/$dlsyms" ++ eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms" + + $echo >> "$output_objdir/$dlsyms" "\ +- {0, (lt_ptr_t) 0} ++ {0, (lt_ptr) 0} + }; + + /* This works around a problem in FreeBSD linker */ +@@ -3333,30 +4728,43 @@ + *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + case "$compile_command " in + *" -static "*) ;; +- *) pic_flag_for_symtable=" $pic_flag -DPIC -DFREEBSD_WORKAROUND";; ++ *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";; + esac;; + *-*-hpux*) + case "$compile_command " in + *" -static "*) ;; +- *) pic_flag_for_symtable=" $pic_flag -DPIC";; ++ *) pic_flag_for_symtable=" $pic_flag";; + esac + esac + + # Now compile the dynamic symbol file. +- $show "(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" +- $run eval '(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? ++ $show "(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" ++ $run eval '(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? + + # Clean up the generated files. + $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" + $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" + + # Transform the symbol file into the correct name. +- compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` +- finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` ++ case $host in ++ *cygwin* | *mingw* ) ++ if test -f "$output_objdir/${outputname}.def" ; then ++ compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP` ++ finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP` ++ else ++ compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` ++ finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` ++ fi ++ ;; ++ * ) ++ compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` ++ finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` ++ ;; ++ esac + ;; + *) + $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + ;; + esac + else +@@ -3365,19 +4773,19 @@ + # really was required. + + # Nullify the symbol file. +- compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` +- finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` ++ compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP` ++ finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP` + fi + +- if test $need_relink = no || test "$build_libtool_libs" != yes; then ++ if test "$need_relink" = no || test "$build_libtool_libs" != yes; then + # Replace the output file specification. +- compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` ++ compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$output"'%g' | $NL2SP` + link_command="$compile_command$compile_rpath" + + # We have no uninstalled library dependencies, so finalize right now. + $show "$link_command" + $run eval "$link_command" +- status=$? ++ exit_status=$? + + # Delete the generated files. + if test -n "$dlsyms"; then +@@ -3385,7 +4793,7 @@ + $run $rm "$output_objdir/${outputname}S.${objext}" + fi + +- exit $status ++ exit $exit_status + fi + + if test -n "$shlibpath_var"; then +@@ -3444,7 +4852,7 @@ + # Link the executable and exit + $show "$link_command" + $run eval "$link_command" || exit $? +- exit 0 ++ exit $EXIT_SUCCESS + fi + + if test "$hardcode_action" = relink; then +@@ -3458,7 +4866,7 @@ + if test "$fast_install" != no; then + link_command="$finalize_var$compile_command$finalize_rpath" + if test "$fast_install" = yes; then +- relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` ++ relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $SP2NL | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g' | $NL2SP` + else + # fast_install is set to needless + relink_command= +@@ -3494,15 +4902,15 @@ + relink_command="$var=\"$var_value\"; export $var; $relink_command" + fi + done +- relink_command="cd `pwd`; $relink_command" +- relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` ++ relink_command="(cd `pwd`; $relink_command)" ++ relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP` + fi + + # Quote $echo for shipping. +- if test "X$echo" = "X$SHELL $0 --fallback-echo"; then +- case $0 in +- [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $0 --fallback-echo";; +- *) qecho="$SHELL `pwd`/$0 --fallback-echo";; ++ if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then ++ case $progpath in ++ [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; ++ *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; + esac + qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` + else +@@ -3514,15 +4922,376 @@ + # win32 will think the script is a binary if it has + # a .exe suffix, so we strip it off here. + case $output in +- *.exe) output=`echo $output|sed 's,.exe$,,'` ;; ++ *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;; + esac + # test for cygwin because mv fails w/o .exe extensions + case $host in +- *cygwin*) exeext=.exe ;; ++ *cygwin*) ++ exeext=.exe ++ outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;; + *) exeext= ;; + esac +- $rm $output +- trap "$rm $output; exit 1" 1 2 15 ++ case $host in ++ *cygwin* | *mingw* ) ++ output_name=`basename $output` ++ output_path=`dirname $output` ++ cwrappersource="$output_path/$objdir/lt-$output_name.c" ++ cwrapper="$output_path/$output_name.exe" ++ $rm $cwrappersource $cwrapper ++ trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 ++ ++ cat > $cwrappersource <> $cwrappersource<<"EOF" ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#if defined(PATH_MAX) ++# define LT_PATHMAX PATH_MAX ++#elif defined(MAXPATHLEN) ++# define LT_PATHMAX MAXPATHLEN ++#else ++# define LT_PATHMAX 1024 ++#endif ++ ++#ifndef DIR_SEPARATOR ++# define DIR_SEPARATOR '/' ++# define PATH_SEPARATOR ':' ++#endif ++ ++#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ ++ defined (__OS2__) ++# define HAVE_DOS_BASED_FILE_SYSTEM ++# ifndef DIR_SEPARATOR_2 ++# define DIR_SEPARATOR_2 '\\' ++# endif ++# ifndef PATH_SEPARATOR_2 ++# define PATH_SEPARATOR_2 ';' ++# endif ++#endif ++ ++#ifndef DIR_SEPARATOR_2 ++# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) ++#else /* DIR_SEPARATOR_2 */ ++# define IS_DIR_SEPARATOR(ch) \ ++ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) ++#endif /* DIR_SEPARATOR_2 */ ++ ++#ifndef PATH_SEPARATOR_2 ++# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) ++#else /* PATH_SEPARATOR_2 */ ++# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) ++#endif /* PATH_SEPARATOR_2 */ ++ ++#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) ++#define XFREE(stale) do { \ ++ if (stale) { free ((void *) stale); stale = 0; } \ ++} while (0) ++ ++/* -DDEBUG is fairly common in CFLAGS. */ ++#undef DEBUG ++#if defined DEBUGWRAPPER ++# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__) ++#else ++# define DEBUG(format, ...) ++#endif ++ ++const char *program_name = NULL; ++ ++void * xmalloc (size_t num); ++char * xstrdup (const char *string); ++const char * base_name (const char *name); ++char * find_executable(const char *wrapper); ++int check_executable(const char *path); ++char * strendzap(char *str, const char *pat); ++void lt_fatal (const char *message, ...); ++ ++int ++main (int argc, char *argv[]) ++{ ++ char **newargz; ++ int i; ++ ++ program_name = (char *) xstrdup (base_name (argv[0])); ++ DEBUG("(main) argv[0] : %s\n",argv[0]); ++ DEBUG("(main) program_name : %s\n",program_name); ++ newargz = XMALLOC(char *, argc+2); ++EOF ++ ++ cat >> $cwrappersource <> $cwrappersource <<"EOF" ++ newargz[1] = find_executable(argv[0]); ++ if (newargz[1] == NULL) ++ lt_fatal("Couldn't find %s", argv[0]); ++ DEBUG("(main) found exe at : %s\n",newargz[1]); ++ /* we know the script has the same name, without the .exe */ ++ /* so make sure newargz[1] doesn't end in .exe */ ++ strendzap(newargz[1],".exe"); ++ for (i = 1; i < argc; i++) ++ newargz[i+1] = xstrdup(argv[i]); ++ newargz[argc+1] = NULL; ++ ++ for (i=0; i> $cwrappersource <> $cwrappersource <> $cwrappersource <<"EOF" ++ return 127; ++} ++ ++void * ++xmalloc (size_t num) ++{ ++ void * p = (void *) malloc (num); ++ if (!p) ++ lt_fatal ("Memory exhausted"); ++ ++ return p; ++} ++ ++char * ++xstrdup (const char *string) ++{ ++ return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL ++; ++} ++ ++const char * ++base_name (const char *name) ++{ ++ const char *base; ++ ++#if defined (HAVE_DOS_BASED_FILE_SYSTEM) ++ /* Skip over the disk name in MSDOS pathnames. */ ++ if (isalpha ((unsigned char)name[0]) && name[1] == ':') ++ name += 2; ++#endif ++ ++ for (base = name; *name; name++) ++ if (IS_DIR_SEPARATOR (*name)) ++ base = name + 1; ++ return base; ++} ++ ++int ++check_executable(const char * path) ++{ ++ struct stat st; ++ ++ DEBUG("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!"); ++ if ((!path) || (!*path)) ++ return 0; ++ ++ if ((stat (path, &st) >= 0) && ++ ( ++ /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */ ++#if defined (S_IXOTH) ++ ((st.st_mode & S_IXOTH) == S_IXOTH) || ++#endif ++#if defined (S_IXGRP) ++ ((st.st_mode & S_IXGRP) == S_IXGRP) || ++#endif ++ ((st.st_mode & S_IXUSR) == S_IXUSR)) ++ ) ++ return 1; ++ else ++ return 0; ++} ++ ++/* Searches for the full path of the wrapper. Returns ++ newly allocated full path name if found, NULL otherwise */ ++char * ++find_executable (const char* wrapper) ++{ ++ int has_slash = 0; ++ const char* p; ++ const char* p_next; ++ /* static buffer for getcwd */ ++ char tmp[LT_PATHMAX + 1]; ++ int tmp_len; ++ char* concat_name; ++ ++ DEBUG("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"); ++ ++ if ((wrapper == NULL) || (*wrapper == '\0')) ++ return NULL; ++ ++ /* Absolute path? */ ++#if defined (HAVE_DOS_BASED_FILE_SYSTEM) ++ if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':') ++ { ++ concat_name = xstrdup (wrapper); ++ if (check_executable(concat_name)) ++ return concat_name; ++ XFREE(concat_name); ++ } ++ else ++ { ++#endif ++ if (IS_DIR_SEPARATOR (wrapper[0])) ++ { ++ concat_name = xstrdup (wrapper); ++ if (check_executable(concat_name)) ++ return concat_name; ++ XFREE(concat_name); ++ } ++#if defined (HAVE_DOS_BASED_FILE_SYSTEM) ++ } ++#endif ++ ++ for (p = wrapper; *p; p++) ++ if (*p == '/') ++ { ++ has_slash = 1; ++ break; ++ } ++ if (!has_slash) ++ { ++ /* no slashes; search PATH */ ++ const char* path = getenv ("PATH"); ++ if (path != NULL) ++ { ++ for (p = path; *p; p = p_next) ++ { ++ const char* q; ++ size_t p_len; ++ for (q = p; *q; q++) ++ if (IS_PATH_SEPARATOR(*q)) ++ break; ++ p_len = q - p; ++ p_next = (*q == '\0' ? q : q + 1); ++ if (p_len == 0) ++ { ++ /* empty path: current directory */ ++ if (getcwd (tmp, LT_PATHMAX) == NULL) ++ lt_fatal ("getcwd failed"); ++ tmp_len = strlen(tmp); ++ concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); ++ memcpy (concat_name, tmp, tmp_len); ++ concat_name[tmp_len] = '/'; ++ strcpy (concat_name + tmp_len + 1, wrapper); ++ } ++ else ++ { ++ concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1); ++ memcpy (concat_name, p, p_len); ++ concat_name[p_len] = '/'; ++ strcpy (concat_name + p_len + 1, wrapper); ++ } ++ if (check_executable(concat_name)) ++ return concat_name; ++ XFREE(concat_name); ++ } ++ } ++ /* not found in PATH; assume curdir */ ++ } ++ /* Relative path | not found in path: prepend cwd */ ++ if (getcwd (tmp, LT_PATHMAX) == NULL) ++ lt_fatal ("getcwd failed"); ++ tmp_len = strlen(tmp); ++ concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); ++ memcpy (concat_name, tmp, tmp_len); ++ concat_name[tmp_len] = '/'; ++ strcpy (concat_name + tmp_len + 1, wrapper); ++ ++ if (check_executable(concat_name)) ++ return concat_name; ++ XFREE(concat_name); ++ return NULL; ++} ++ ++char * ++strendzap(char *str, const char *pat) ++{ ++ size_t len, patlen; ++ ++ assert(str != NULL); ++ assert(pat != NULL); ++ ++ len = strlen(str); ++ patlen = strlen(pat); ++ ++ if (patlen <= len) ++ { ++ str += len - patlen; ++ if (strcmp(str, pat) == 0) ++ *str = '\0'; ++ } ++ return str; ++} ++ ++static void ++lt_error_core (int exit_status, const char * mode, ++ const char * message, va_list ap) ++{ ++ fprintf (stderr, "%s: %s: ", program_name, mode); ++ vfprintf (stderr, message, ap); ++ fprintf (stderr, ".\n"); ++ ++ if (exit_status >= 0) ++ exit (exit_status); ++} ++ ++void ++lt_fatal (const char *message, ...) ++{ ++ va_list ap; ++ va_start (ap, message); ++ lt_error_core (EXIT_FAILURE, "FATAL", message, ap); ++ va_end (ap); ++} ++EOF ++ # we should really use a build-platform specific compiler ++ # here, but OTOH, the wrappers (shell script and this C one) ++ # are only useful if you want to execute the "real" binary. ++ # Since the "real" binary is built for $host, then this ++ # wrapper might as well be built for $host, too. ++ $run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource ++ ;; ++ esac ++ $rm $output ++ trap "$rm $output; exit $EXIT_FAILURE" 1 2 15 + + $echo > $output "\ + #! $SHELL +@@ -3538,12 +5307,26 @@ + + # Sed substitution that helps us do robust quoting. It backslashifies + # metacharacters that are still active within double-quoted strings. +-Xsed='sed -e 1s/^X//' ++Xsed='${SED} -e 1s/^X//' + sed_quote_subst='$sed_quote_subst' + ++# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE). ++if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then ++ emulate sh ++ NULLCMD=: ++ # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which ++ # is contrary to our usage. Disable this feature. ++ alias -g '\${1+\"\$@\"}'='\"\$@\"' ++ setopt NO_GLOB_SUBST ++else ++ case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac ++fi ++BIN_SH=xpg4; export BIN_SH # for Tru64 ++DUALCASE=1; export DUALCASE # for MKS sh ++ + # The HP-UX ksh and POSIX shell print the target directory to stdout + # if CDPATH is set. +-if test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi ++(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + relink_command=\"$relink_command\" + +@@ -3576,7 +5359,7 @@ + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. +- file=\`ls -ld \"\$file\" | sed -n 's/.*-> //p'\` ++ file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` + +@@ -3589,7 +5372,7 @@ + fi + + file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` +- file=\`ls -ld \"\$thisdir/\$file\" | sed -n 's/.*-> //p'\` ++ file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` + done + + # Try to get the absolute directory name. +@@ -3598,12 +5381,12 @@ + " + + if test "$fast_install" = yes; then +- echo >> $output "\ ++ $echo >> $output "\ + program=lt-'$outputname'$exeext + progdir=\"\$thisdir/$objdir\" + + if test ! -f \"\$progdir/\$program\" || \\ +- { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | sed 1q\`; \\ ++ { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ + test \"X\$file\" != \"X\$progdir/\$program\"; }; then + + file=\"\$\$-\$program\" +@@ -3614,14 +5397,15 @@ + $rm \"\$progdir/\$file\" + fi" + +- echo >> $output "\ ++ $echo >> $output "\ + + # relink executable if necessary + if test -n \"\$relink_command\"; then +- if (eval \$relink_command); then : ++ if relink_command_output=\`eval \$relink_command 2>&1\`; then : + else ++ $echo \"\$relink_command_output\" >&2 + $rm \"\$progdir/\$file\" +- exit 1 ++ exit $EXIT_FAILURE + fi + fi + +@@ -3631,13 +5415,13 @@ + $rm \"\$progdir/\$file\" + fi" + else +- echo >> $output "\ ++ $echo >> $output "\ + program='$outputname' + progdir=\"\$thisdir/$objdir\" + " + fi + +- echo >> $output "\ ++ $echo >> $output "\ + + if test -f \"\$progdir/\$program\"; then" + +@@ -3668,47 +5452,35 @@ + # Run the actual program with our arguments. + " + case $host in +- # win32 systems need to use the prog path for dll +- # lookup to work +- *-*-cygwin* | *-*-pw32*) +- $echo >> $output "\ +- exec \$progdir/\$program \${1+\"\$@\"} +-" +- ;; +- + # Backslashes separate directories on plain windows + *-*-mingw | *-*-os2*) + $echo >> $output "\ +- exec \$progdir\\\\\$program \${1+\"\$@\"} ++ exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} + " + ;; + + *) + $echo >> $output "\ +- # Export the path to the program. +- PATH=\"\$progdir:\$PATH\" +- export PATH +- +- exec \$program \${1+\"\$@\"} ++ exec \"\$progdir/\$program\" \${1+\"\$@\"} + " + ;; + esac + $echo >> $output "\ +- \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" +- exit 1 ++ \$echo \"\$0: cannot exec \$program \$*\" ++ exit $EXIT_FAILURE + fi + else + # The program doesn't exist. +- \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2 ++ \$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 + \$echo \"This script is just a wrapper for \$program.\" 1>&2 +- echo \"See the $PACKAGE documentation for more information.\" 1>&2 +- exit 1 ++ $echo \"See the $PACKAGE documentation for more information.\" 1>&2 ++ exit $EXIT_FAILURE + fi + fi\ + " + chmod +x $output + fi +- exit 0 ++ exit $EXIT_SUCCESS + ;; + esac + +@@ -3724,74 +5496,130 @@ + oldobjs="$libobjs_save" + build_libtool_libs=no + else +- oldobjs="$objs$old_deplibs "`$echo "X$libobjs_save" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP` ++ oldobjs="$old_deplibs $non_pic_objects" + fi + addlibs="$old_convenience" + fi + + if test -n "$addlibs"; then + gentop="$output_objdir/${outputname}x" +- $show "${rm}r $gentop" +- $run ${rm}r "$gentop" +- $show "mkdir $gentop" +- $run mkdir "$gentop" +- status=$? +- if test $status -ne 0 && test ! -d "$gentop"; then +- exit $status +- fi + generated="$generated $gentop" + +- # Add in members from convenience archives. +- for xlib in $addlibs; do +- # Extract the objects. +- case $xlib in +- [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; +- *) xabs=`pwd`"/$xlib" ;; +- esac +- xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` +- xdir="$gentop/$xlib" +- +- $show "${rm}r $xdir" +- $run ${rm}r "$xdir" +- $show "mkdir $xdir" +- $run mkdir "$xdir" +- status=$? +- if test $status -ne 0 && test ! -d "$xdir"; then +- exit $status +- fi +- $show "(cd $xdir && $AR x $xabs)" +- $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? +- +- oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP` +- done ++ func_extract_archives $gentop $addlibs ++ oldobjs="$oldobjs $func_extract_archives_result" + fi + + # Do each command in the archive commands. + if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then +- eval cmds=\"$old_archive_from_new_cmds\" ++ cmds=$old_archive_from_new_cmds + else +- # Ensure that we have .o objects in place in case we decided +- # not to build a shared library, and have fallen back to building +- # static libs even though --disable-static was passed! +- for oldobj in $oldobjs; do +- if test ! -f $oldobj; then +- xdir=`$echo "X$oldobj" | $Xsed -e 's%/[^/]*$%%'` +- if test "X$xdir" = "X$oldobj"; then +- xdir="." +- else +- xdir="$xdir" ++ # POSIX demands no paths to be encoded in archives. We have ++ # to avoid creating archives with duplicate basenames if we ++ # might have to extract them afterwards, e.g., when creating a ++ # static archive out of a convenience library, or when linking ++ # the entirety of a libtool archive into another (currently ++ # not supported by libtool). ++ if (for obj in $oldobjs ++ do ++ $echo "X$obj" | $Xsed -e 's%^.*/%%' ++ done | sort | sort -uc >/dev/null 2>&1); then ++ : ++ else ++ $echo "copying selected object files to avoid basename conflicts..." ++ ++ if test -z "$gentop"; then ++ gentop="$output_objdir/${outputname}x" ++ generated="$generated $gentop" ++ ++ $show "${rm}r $gentop" ++ $run ${rm}r "$gentop" ++ $show "$mkdir $gentop" ++ $run $mkdir "$gentop" ++ exit_status=$? ++ if test "$exit_status" -ne 0 && test ! -d "$gentop"; then ++ exit $exit_status + fi +- baseobj=`$echo "X$oldobj" | $Xsed -e 's%^.*/%%'` +- obj=`$echo "X$baseobj" | $Xsed -e "$o2lo"` +- $show "(cd $xdir && ${LN_S} $obj $baseobj)" +- $run eval '(cd $xdir && ${LN_S} $obj $baseobj)' || exit $? + fi +- done ++ ++ save_oldobjs=$oldobjs ++ oldobjs= ++ counter=1 ++ for obj in $save_oldobjs ++ do ++ objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` ++ case " $oldobjs " in ++ " ") oldobjs=$obj ;; ++ *[\ /]"$objbase "*) ++ while :; do ++ # Make sure we don't pick an alternate name that also ++ # overlaps. ++ newobj=lt$counter-$objbase ++ counter=`expr $counter + 1` ++ case " $oldobjs " in ++ *[\ /]"$newobj "*) ;; ++ *) if test ! -f "$gentop/$newobj"; then break; fi ;; ++ esac ++ done ++ $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" ++ $run ln "$obj" "$gentop/$newobj" || ++ $run cp "$obj" "$gentop/$newobj" ++ oldobjs="$oldobjs $gentop/$newobj" ++ ;; ++ *) oldobjs="$oldobjs $obj" ;; ++ esac ++ done ++ fi + + eval cmds=\"$old_archive_cmds\" ++ ++ if len=`expr "X$cmds" : ".*"` && ++ test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then ++ cmds=$old_archive_cmds ++ else ++ # the command line is too long to link in one step, link in parts ++ $echo "using piecewise archive linking..." ++ save_RANLIB=$RANLIB ++ RANLIB=: ++ objlist= ++ concat_cmds= ++ save_oldobjs=$oldobjs ++ ++ # Is there a better way of finding the last object in the list? ++ for obj in $save_oldobjs ++ do ++ last_oldobj=$obj ++ done ++ for obj in $save_oldobjs ++ do ++ oldobjs="$objlist $obj" ++ objlist="$objlist $obj" ++ eval test_cmds=\"$old_archive_cmds\" ++ if len=`expr "X$test_cmds" : ".*" 2>/dev/null` && ++ test "$len" -le "$max_cmd_len"; then ++ : ++ else ++ # the above command should be used before it gets too long ++ oldobjs=$objlist ++ if test "$obj" = "$last_oldobj" ; then ++ RANLIB=$save_RANLIB ++ fi ++ test -z "$concat_cmds" || concat_cmds=$concat_cmds~ ++ eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" ++ objlist= ++ fi ++ done ++ RANLIB=$save_RANLIB ++ oldobjs=$objlist ++ if test "X$oldobjs" = "X" ; then ++ eval cmds=\"\$concat_cmds\" ++ else ++ eval cmds=\"\$concat_cmds~\$old_archive_cmds\" ++ fi ++ fi + fi +- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' ++ save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do ++ eval cmd=\"$cmd\" + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? +@@ -3823,8 +5651,12 @@ + fi + done + # Quote the link command for shipping. +- relink_command="cd `pwd`; $SHELL $0 --mode=relink $libtool_args" +- relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` ++ relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" ++ relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP` ++ if test "$hardcode_automatic" = yes ; then ++ relink_command= ++ fi ++ + + # Only create the output if not a dry run. + if test -z "$run"; then +@@ -3840,10 +5672,10 @@ + case $deplib in + *.la) + name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` +- eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` ++ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + if test -z "$libdir"; then + $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + newdependency_libs="$newdependency_libs $libdir/$name" + ;; +@@ -3854,10 +5686,10 @@ + newdlfiles= + for lib in $dlfiles; do + name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` +- eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $lib` ++ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + if test -z "$libdir"; then + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + newdlfiles="$newdlfiles $libdir/$name" + done +@@ -3865,20 +5697,39 @@ + newdlprefiles= + for lib in $dlprefiles; do + name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` +- eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $lib` ++ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + if test -z "$libdir"; then + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + newdlprefiles="$newdlprefiles $libdir/$name" + done + dlprefiles="$newdlprefiles" ++ else ++ newdlfiles= ++ for lib in $dlfiles; do ++ case $lib in ++ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; ++ *) abs=`pwd`"/$lib" ;; ++ esac ++ newdlfiles="$newdlfiles $abs" ++ done ++ dlfiles="$newdlfiles" ++ newdlprefiles= ++ for lib in $dlprefiles; do ++ case $lib in ++ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; ++ *) abs=`pwd`"/$lib" ;; ++ esac ++ newdlprefiles="$newdlprefiles $abs" ++ done ++ dlprefiles="$newdlprefiles" + fi + $rm $output + # place dlname in correct position for cygwin + tdlname=$dlname + case $host,$output,$installed,$module,$dlname in +- *cygwin*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; ++ *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; + esac + $echo > $output "\ + # $outputname - a libtool library file +@@ -3907,13 +5758,16 @@ + # Is this an already installed library? + installed=$installed + ++# Should we warn about portability when linking against -modules? ++shouldnotlink=$module ++ + # Files to dlopen/dlpreopen + dlopen='$dlfiles' + dlpreopen='$dlprefiles' + + # Directory that this library needs to be installed in: + libdir='$install_libdir'" +- if test "$installed" = no && test $need_relink = yes; then ++ if test "$installed" = no && test "$need_relink" = yes; then + $echo >> $output "\ + relink_command=\"$relink_command\"" + fi +@@ -3926,7 +5780,7 @@ + $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? + ;; + esac +- exit 0 ++ exit $EXIT_SUCCESS + ;; + + # libtool install mode +@@ -3937,11 +5791,11 @@ + # install_prog (especially on Windows NT). + if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || + # Allow the use of GNU shtool's install command. +- $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then ++ $echo "X$nonopt" | grep shtool > /dev/null; then + # Aesthetically quote it. + arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` + case $arg in +- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) ++ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac +@@ -3950,14 +5804,14 @@ + shift + else + install_prog= +- arg="$nonopt" ++ arg=$nonopt + fi + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in +- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) ++ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac +@@ -3975,28 +5829,31 @@ + do + if test -n "$dest"; then + files="$files $dest" +- dest="$arg" ++ dest=$arg + continue + fi + + case $arg in + -d) isdir=yes ;; +- -f) prev="-f" ;; +- -g) prev="-g" ;; +- -m) prev="-m" ;; +- -o) prev="-o" ;; ++ -f) ++ case " $install_prog " in ++ *[\\\ /]cp\ *) ;; ++ *) prev=$arg ;; ++ esac ++ ;; ++ -g | -m | -o) prev=$arg ;; + -s) + stripme=" -s" + continue + ;; +- -*) ;; +- ++ -*) ++ ;; + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then + prev= + else +- dest="$arg" ++ dest=$arg + continue + fi + ;; +@@ -4005,7 +5862,7 @@ + # Aesthetically quote the argument. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in +- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) ++ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac +@@ -4015,13 +5872,13 @@ + if test -z "$install_prog"; then + $echo "$modename: you must specify an install program" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + + if test -n "$prev"; then + $echo "$modename: the \`$prev' option requires an argument" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + + if test -z "$files"; then +@@ -4031,7 +5888,7 @@ + $echo "$modename: you must specify a destination" 1>&2 + fi + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + + # Strip any trailing slash from the destination. +@@ -4049,10 +5906,10 @@ + + # Not a directory, so check to see that there is only one file specified. + set dummy $files +- if test $# -gt 2; then ++ if test "$#" -gt 2; then + $echo "$modename: \`$dest' is not a directory" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + fi + case $destdir in +@@ -4064,7 +5921,7 @@ + *) + $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + ;; + esac + done +@@ -4089,11 +5946,11 @@ + + *.la) + # Check to see that this really is a libtool archive. +- if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : ++ if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + + library_names= +@@ -4124,12 +5981,33 @@ + dir="$dir$objdir" + + if test -n "$relink_command"; then ++ # Determine the prefix the user has applied to our future dir. ++ inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"` ++ ++ # Don't allow the user to place us outside of our expected ++ # location b/c this prevents finding dependent libraries that ++ # are installed to the same prefix. ++ # At present, this check doesn't affect windows .dll's that ++ # are installed into $libdir/../bin (currently, that works fine) ++ # but it's something to keep an eye on. ++ if test "$inst_prefix_dir" = "$destdir"; then ++ $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 ++ exit $EXIT_FAILURE ++ fi ++ ++ if test -n "$inst_prefix_dir"; then ++ # Stick the inst_prefix_dir data into the link command. ++ relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%" | $NL2SP` ++ else ++ relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%%" | $NL2SP` ++ fi ++ + $echo "$modename: warning: relinking \`$file'" 1>&2 + $show "$relink_command" + if $run eval "$relink_command"; then : + else + $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 +- continue ++ exit $EXIT_FAILURE + fi + fi + +@@ -4151,25 +6029,38 @@ + $run eval "$striplib $destdir/$realname" || exit $? + fi + +- if test $# -gt 0; then ++ if test "$#" -gt 0; then + # Delete the old symlinks, and create new ones. ++ # Try `ln -sf' first, because the `ln' binary might depend on ++ # the symlink we replace! Solaris /bin/ln does not understand -f, ++ # so we also need to try rm && ln -s. + for linkname + do + if test "$linkname" != "$realname"; then +- $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" +- $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" ++ $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" ++ $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" + fi + done + fi + + # Do each command in the postinstall commands. + lib="$destdir/$realname" +- eval cmds=\"$postinstall_cmds\" +- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' ++ cmds=$postinstall_cmds ++ save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" ++ eval cmd=\"$cmd\" + $show "$cmd" +- $run eval "$cmd" || exit $? ++ $run eval "$cmd" || { ++ lt_exit=$? ++ ++ # Restore the uninstalled library and exit ++ if test "$mode" = relink; then ++ $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' ++ fi ++ ++ exit $lt_exit ++ } + done + IFS="$save_ifs" + fi +@@ -4207,7 +6098,7 @@ + *) + $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + ;; + esac + +@@ -4225,7 +6116,7 @@ + $show "$install_prog $staticobj $staticdest" + $run eval "$install_prog \$staticobj \$staticdest" || exit $? + fi +- exit 0 ++ exit $EXIT_SUCCESS + ;; + + *) +@@ -4237,21 +6128,47 @@ + destfile="$destdir/$destfile" + fi + ++ # If the file is missing, and there is a .exe on the end, strip it ++ # because it is most likely a libtool script we actually want to ++ # install ++ stripped_ext="" ++ case $file in ++ *.exe) ++ if test ! -f "$file"; then ++ file=`$echo $file|${SED} 's,.exe$,,'` ++ stripped_ext=".exe" ++ fi ++ ;; ++ esac ++ + # Do a test to see if this is really a libtool program. +- if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then ++ case $host in ++ *cygwin*|*mingw*) ++ wrapper=`$echo $file | ${SED} -e 's,.exe$,,'` ++ ;; ++ *) ++ wrapper=$file ++ ;; ++ esac ++ if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then + notinst_deplibs= + relink_command= + ++ # Note that it is not necessary on cygwin/mingw to append a dot to ++ # foo even if both foo and FILE.exe exist: automatic-append-.exe ++ # behavior happens only for exec(3), not for open(2)! Also, sourcing ++ # `FILE.' does not work on cygwin managed mounts. ++ # + # If there is no directory component, then add one. +- case $file in +- */* | *\\*) . $file ;; +- *) . ./$file ;; ++ case $wrapper in ++ */* | *\\*) . ${wrapper} ;; ++ *) . ./${wrapper} ;; + esac + + # Check the variables that should have been set. + if test -z "$notinst_deplibs"; then +- $echo "$modename: invalid libtool wrapper script \`$file'" 1>&2 +- exit 1 ++ $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 ++ exit $EXIT_FAILURE + fi + + finalize=yes +@@ -4273,27 +6190,25 @@ + done + + relink_command= ++ # Note that it is not necessary on cygwin/mingw to append a dot to ++ # foo even if both foo and FILE.exe exist: automatic-append-.exe ++ # behavior happens only for exec(3), not for open(2)! Also, sourcing ++ # `FILE.' does not work on cygwin managed mounts. ++ # + # If there is no directory component, then add one. +- case $file in +- */* | *\\*) . $file ;; +- *) . ./$file ;; ++ case $wrapper in ++ */* | *\\*) . ${wrapper} ;; ++ *) . ./${wrapper} ;; + esac + + outputname= + if test "$fast_install" = no && test -n "$relink_command"; then + if test "$finalize" = yes && test -z "$run"; then +- tmpdir="/tmp" +- test -n "$TMPDIR" && tmpdir="$TMPDIR" +- tmpdir="$tmpdir/libtool-$$" +- if $mkdir -p "$tmpdir" && chmod 700 "$tmpdir"; then : +- else +- $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2 +- continue +- fi +- file=`$echo "X$file" | $Xsed -e 's%^.*/%%'` ++ tmpdir=`func_mktempdir` ++ file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` + outputname="$tmpdir/$file" + # Replace the output file specification. +- relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` ++ relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g' | $NL2SP` + + $show "$relink_command" + if $run eval "$relink_command"; then : +@@ -4308,14 +6223,14 @@ + fi + else + # Install the binary that we compiled earlier. +- file=`$echo "X$file" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` ++ file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + # remove .exe since cygwin /usr/bin/install will append another +- # one anyways ++ # one anyway + case $install_prog,$host in +- /usr/bin/install*,*cygwin*) ++ */usr/bin/install*,*cygwin*) + case $file:$destfile in + *.exe:*.exe) + # this is ok +@@ -4324,7 +6239,7 @@ + destfile=$destfile.exe + ;; + *:*.exe) +- destfile=`echo $destfile | sed -e 's,.exe$,,'` ++ destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'` + ;; + esac + ;; +@@ -4345,16 +6260,17 @@ + $show "$install_prog $file $oldlib" + $run eval "$install_prog \$file \$oldlib" || exit $? + +- if test -n "$stripme" && test -n "$striplib"; then ++ if test -n "$stripme" && test -n "$old_striplib"; then + $show "$old_striplib $oldlib" + $run eval "$old_striplib $oldlib" || exit $? + fi + + # Do each command in the postinstall commands. +- eval cmds=\"$old_postinstall_cmds\" +- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' ++ cmds=$old_postinstall_cmds ++ save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" ++ eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done +@@ -4368,11 +6284,10 @@ + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + test -n "$run" && current_libdirs=" -n$current_libdirs" +- exec $SHELL $0 --finish$current_libdirs +- exit 1 ++ exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' ++ else ++ exit $EXIT_SUCCESS + fi +- +- exit 0 + ;; + + # libtool finish mode +@@ -4390,10 +6305,11 @@ + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. +- eval cmds=\"$finish_cmds\" +- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' ++ cmds=$finish_cmds ++ save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" ++ eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || admincmds="$admincmds + $cmd" +@@ -4410,43 +6326,43 @@ + fi + + # Exit here if they wanted silent mode. +- test "$show" = ":" && exit 0 ++ test "$show" = : && exit $EXIT_SUCCESS + +- echo "----------------------------------------------------------------------" +- echo "Libraries have been installed in:" ++ $echo "X----------------------------------------------------------------------" | $Xsed ++ $echo "Libraries have been installed in:" + for libdir in $libdirs; do +- echo " $libdir" ++ $echo " $libdir" + done +- echo +- echo "If you ever happen to want to link against installed libraries" +- echo "in a given directory, LIBDIR, you must either use libtool, and" +- echo "specify the full pathname of the library, or use the \`-LLIBDIR'" +- echo "flag during linking and do at least one of the following:" ++ $echo ++ $echo "If you ever happen to want to link against installed libraries" ++ $echo "in a given directory, LIBDIR, you must either use libtool, and" ++ $echo "specify the full pathname of the library, or use the \`-LLIBDIR'" ++ $echo "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then +- echo " - add LIBDIR to the \`$shlibpath_var' environment variable" +- echo " during execution" ++ $echo " - add LIBDIR to the \`$shlibpath_var' environment variable" ++ $echo " during execution" + fi + if test -n "$runpath_var"; then +- echo " - add LIBDIR to the \`$runpath_var' environment variable" +- echo " during linking" ++ $echo " - add LIBDIR to the \`$runpath_var' environment variable" ++ $echo " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" + +- echo " - use the \`$flag' linker flag" ++ $echo " - use the \`$flag' linker flag" + fi + if test -n "$admincmds"; then +- echo " - have your system administrator run these commands:$admincmds" ++ $echo " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then +- echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" ++ $echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" + fi +- echo +- echo "See any operating system documentation about shared libraries for" +- echo "more information, such as the ld(1) and ld.so(8) manual pages." +- echo "----------------------------------------------------------------------" +- exit 0 ++ $echo ++ $echo "See any operating system documentation about shared libraries for" ++ $echo "more information, such as the ld(1) and ld.so(8) manual pages." ++ $echo "X----------------------------------------------------------------------" | $Xsed ++ exit $EXIT_SUCCESS + ;; + + # libtool execute mode +@@ -4458,7 +6374,7 @@ + if test -z "$cmd"; then + $echo "$modename: you must specify a COMMAND" 1>&2 + $echo "$help" +- exit 1 ++ exit $EXIT_FAILURE + fi + + # Handle -dlopen flags immediately. +@@ -4466,18 +6382,18 @@ + if test ! -f "$file"; then + $echo "$modename: \`$file' is not a file" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + + dir= + case $file in + *.la) + # Check to see that this really is a libtool archive. +- if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : ++ if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + + # Read the libtool library. +@@ -4503,8 +6419,10 @@ + if test -f "$dir/$objdir/$dlname"; then + dir="$dir/$objdir" + else +- $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 +- exit 1 ++ if test ! -f "$dir/$dlname"; then ++ $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 ++ exit $EXIT_FAILURE ++ fi + fi + ;; + +@@ -4544,7 +6462,7 @@ + -*) ;; + *) + # Do a test to see if this is really a libtool program. +- if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then ++ if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; +@@ -4567,19 +6485,16 @@ + eval "export $shlibpath_var" + fi + +- # Restore saved enviroment variables +- if test "${save_LC_ALL+set}" = set; then +- LC_ALL="$save_LC_ALL"; export LC_ALL +- fi +- if test "${save_LANG+set}" = set; then +- LANG="$save_LANG"; export LANG +- fi +- +- # Now actually exec the command. +- eval "exec \$cmd$args" ++ # Restore saved environment variables ++ for lt_var in LANG LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES ++ do ++ eval "if test \"\${save_$lt_var+set}\" = set; then ++ $lt_var=\$save_$lt_var; export $lt_var ++ fi" ++ done + +- $echo "$modename: cannot exec \$cmd$args" +- exit 1 ++ # Now prepare to actually exec the command. ++ exec_cmd="\$cmd$args" + else + # Display what would be done. + if test -n "$shlibpath_var"; then +@@ -4587,7 +6502,7 @@ + $echo "export $shlibpath_var" + fi + $echo "$cmd$args" +- exit 0 ++ exit $EXIT_SUCCESS + fi + ;; + +@@ -4615,24 +6530,25 @@ + if test -z "$rm"; then + $echo "$modename: you must specify an RM program" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + + rmdirs= + ++ origobjdir="$objdir" + for file in $files; do + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + if test "X$dir" = "X$file"; then + dir=. +- objdir="$objdir" ++ objdir="$origobjdir" + else +- objdir="$dir/$objdir" ++ objdir="$dir/$origobjdir" + fi + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` +- test $mode = uninstall && objdir="$dir" ++ test "$mode" = uninstall && objdir="$dir" + + # Remember objdir for removal later, being careful to avoid duplicates +- if test $mode = clean; then ++ if test "$mode" = clean; then + case " $rmdirs " in + *" $objdir "*) ;; + *) rmdirs="$rmdirs $objdir" ;; +@@ -4641,14 +6557,14 @@ + + # Don't error if the file doesn't exist and rm -f was used. + if (test -L "$file") >/dev/null 2>&1 \ +- || (test -h "$file") >/dev/null 2>&1 \ ++ || (test -h "$file") >/dev/null 2>&1 \ + || test -f "$file"; then +- : ++ : + elif test -d "$file"; then +- exit_status=1 ++ exit_status=1 + continue + elif test "$rmforce" = yes; then +- continue ++ continue + fi + + rmfiles="$file" +@@ -4656,7 +6572,7 @@ + case $name in + *.la) + # Possibly a libtool archive, so verify it. +- if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then ++ if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + . $dir/$name + + # Delete the libtool libraries and symlinks. +@@ -4664,18 +6580,27 @@ + rmfiles="$rmfiles $objdir/$n" + done + test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" +- test $mode = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" + +- if test $mode = uninstall; then ++ case "$mode" in ++ clean) ++ case " $library_names " in ++ # " " in the beginning catches empty $dlname ++ *" $dlname "*) ;; ++ *) rmfiles="$rmfiles $objdir/$dlname" ;; ++ esac ++ test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" ++ ;; ++ uninstall) + if test -n "$library_names"; then + # Do each command in the postuninstall commands. +- eval cmds=\"$postuninstall_cmds\" +- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' ++ cmds=$postuninstall_cmds ++ save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" ++ eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" +- if test $? != 0 && test "$rmforce" != yes; then ++ if test "$?" -ne 0 && test "$rmforce" != yes; then + exit_status=1 + fi + done +@@ -4684,40 +6609,72 @@ + + if test -n "$old_library"; then + # Do each command in the old_postuninstall commands. +- eval cmds=\"$old_postuninstall_cmds\" +- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' ++ cmds=$old_postuninstall_cmds ++ save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" ++ eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" +- if test $? != 0 && test "$rmforce" != yes; then ++ if test "$?" -ne 0 && test "$rmforce" != yes; then + exit_status=1 + fi + done + IFS="$save_ifs" + fi + # FIXME: should reinstall the best remaining shared library. +- fi ++ ;; ++ esac + fi + ;; + + *.lo) +- if test "$build_old_libs" = yes; then +- oldobj=`$echo "X$name" | $Xsed -e "$lo2o"` +- rmfiles="$rmfiles $dir/$oldobj" ++ # Possibly a libtool object, so verify it. ++ if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then ++ ++ # Read the .lo file ++ . $dir/$name ++ ++ # Add PIC object to the list of files to remove. ++ if test -n "$pic_object" \ ++ && test "$pic_object" != none; then ++ rmfiles="$rmfiles $dir/$pic_object" ++ fi ++ ++ # Add non-PIC object to the list of files to remove. ++ if test -n "$non_pic_object" \ ++ && test "$non_pic_object" != none; then ++ rmfiles="$rmfiles $dir/$non_pic_object" ++ fi + fi + ;; + + *) +- # Do a test to see if this is a libtool program. +- if test $mode = clean && +- (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then +- relink_command= +- . $dir/$file ++ if test "$mode" = clean ; then ++ noexename=$name ++ case $file in ++ *.exe) ++ file=`$echo $file|${SED} 's,.exe$,,'` ++ noexename=`$echo $name|${SED} 's,.exe$,,'` ++ # $file with .exe has already been added to rmfiles, ++ # add $file without .exe ++ rmfiles="$rmfiles $file" ++ ;; ++ esac ++ # Do a test to see if this is a libtool program. ++ if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then ++ relink_command= ++ . $dir/$noexename + +- rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" +- if test "$fast_install" = yes && test -n "$relink_command"; then +- rmfiles="$rmfiles $objdir/lt-$name" ++ # note $name still contains .exe if it was in $file originally ++ # as does the version of $file that was added into $rmfiles ++ rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" ++ if test "$fast_install" = yes && test -n "$relink_command"; then ++ rmfiles="$rmfiles $objdir/lt-$name" ++ fi ++ if test "X$noexename" != "X$name" ; then ++ rmfiles="$rmfiles $objdir/lt-${noexename}.c" ++ fi + fi + fi + ;; +@@ -4725,6 +6682,7 @@ + $show "$rm $rmfiles" + $run $rm $rmfiles || exit_status=1 + done ++ objdir="$origobjdir" + + # Try to remove the ${objdir}s in the directories where we deleted files + for dir in $rmdirs; do +@@ -4740,15 +6698,22 @@ + "") + $echo "$modename: you must specify a MODE" 1>&2 + $echo "$generic_help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + ;; + esac + +- $echo "$modename: invalid operation mode \`$mode'" 1>&2 +- $echo "$generic_help" 1>&2 +- exit 1 ++ if test -z "$exec_cmd"; then ++ $echo "$modename: invalid operation mode \`$mode'" 1>&2 ++ $echo "$generic_help" 1>&2 ++ exit $EXIT_FAILURE ++ fi + fi # test -z "$show_help" + ++if test -n "$exec_cmd"; then ++ eval exec $exec_cmd ++ exit $EXIT_FAILURE ++fi ++ + # We need to display help for each of the modes. + case $mode in + "") $echo \ +@@ -4765,6 +6730,7 @@ + --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] + --quiet same as \`--silent' + --silent don't print informational messages ++ --tag=TAG use configuration variables from tag TAG + --version print version information + + MODE must be one of the following: +@@ -4778,8 +6744,10 @@ + uninstall remove libraries from an installed directory + + MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for +-a more detailed description of MODE." +- exit 0 ++a more detailed description of MODE. ++ ++Report bugs to ." ++ exit $EXIT_SUCCESS + ;; + + clean) +@@ -4880,9 +6848,9 @@ + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) + -export-symbols SYMFILE +- try to export only the symbols listed in SYMFILE ++ try to export only the symbols listed in SYMFILE + -export-symbols-regex REGEX +- try to export only the symbols matching REGEX ++ try to export only the symbols matching REGEX + -LLIBDIR search LIBDIR for required installed libraries + -lNAME OUTPUT-FILE requires the installed library libNAME + -module build a library that can dlopened +@@ -4890,12 +6858,17 @@ + -no-install link a not-installable executable + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects ++ -objectlist FILE Use a list of object files found in FILE to specify objects ++ -precious-files-regex REGEX ++ don't remove output files matching REGEX + -release RELEASE specify package release information + -rpath LIBDIR the created library will eventually be installed in LIBDIR + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries +- -static do not do any dynamic linking of libtool libraries ++ -static do not do any dynamic linking of uninstalled libtool libraries ++ -static-libtool-libs ++ do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] +- specify library version info [each variable defaults to 0] ++ specify library version info [each variable defaults to 0] + + All other options (arguments beginning with \`-') are ignored. + +@@ -4931,14 +6904,33 @@ + *) + $echo "$modename: invalid operation mode \`$mode'" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + ;; + esac + +-echo ++$echo + $echo "Try \`$modename --help' for more information about other modes." + +-exit 0 ++exit $? ++ ++# The TAGs below are defined such that we never get into a situation ++# in which we disable both kinds of libraries. Given conflicting ++# choices, we go for a static library, that is the most portable, ++# since we can't tell whether shared libraries were disabled because ++# the user asked for that or because the platform doesn't support ++# them. This is particularly important on AIX, because we don't ++# support having both static and shared libraries enabled at the same ++# time on that platform, so we default to a shared-only configuration. ++# If a disable-shared tag is given, we'll fallback to a static-only ++# configuration. But we'll never go from static-only to shared-only. ++ ++# ### BEGIN LIBTOOL TAG CONFIG: disable-shared ++disable_libs=shared ++# ### END LIBTOOL TAG CONFIG: disable-shared ++ ++# ### BEGIN LIBTOOL TAG CONFIG: disable-static ++disable_libs=static ++# ### END LIBTOOL TAG CONFIG: disable-static + + # Local Variables: + # mode:shell-script +--- libfcgi-2.4.0.orig/configure ++++ libfcgi-2.4.0/configure +@@ -1,22 +1,554 @@ + #! /bin/sh + # Guess values for system-dependent variables and create Makefiles. +-# Generated by Autoconf 2.52. ++# Generated by GNU Autoconf 2.61. + # +-# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 +-# Free Software Foundation, Inc. ++# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, ++# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. + # This configure script is free software; the Free Software Foundation + # gives unlimited permission to copy, distribute and modify it. ++## --------------------- ## ++## M4sh Initialization. ## ++## --------------------- ## + +-# Find the correct PATH separator. Usually this is `:', but +-# DJGPP uses `;' like DOS. +-if test "X${PATH_SEPARATOR+set}" != Xset; then +- UNAME=${UNAME-`uname 2>/dev/null`} +- case X$UNAME in +- *-DOS) lt_cv_sys_path_separator=';' ;; +- *) lt_cv_sys_path_separator=':' ;; +- esac +- PATH_SEPARATOR=$lt_cv_sys_path_separator ++# Be more Bourne compatible ++DUALCASE=1; export DUALCASE # for MKS sh ++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then ++ emulate sh ++ NULLCMD=: ++ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which ++ # is contrary to our usage. Disable this feature. ++ alias -g '${1+"$@"}'='"$@"' ++ setopt NO_GLOB_SUBST ++else ++ case `(set -o) 2>/dev/null` in ++ *posix*) set -o posix ;; ++esac ++ ++fi ++ ++ ++ ++ ++# PATH needs CR ++# Avoid depending upon Character Ranges. ++as_cr_letters='abcdefghijklmnopqrstuvwxyz' ++as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' ++as_cr_Letters=$as_cr_letters$as_cr_LETTERS ++as_cr_digits='0123456789' ++as_cr_alnum=$as_cr_Letters$as_cr_digits ++ ++# The user is always right. ++if test "${PATH_SEPARATOR+set}" != set; then ++ echo "#! /bin/sh" >conf$$.sh ++ echo "exit 0" >>conf$$.sh ++ chmod +x conf$$.sh ++ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then ++ PATH_SEPARATOR=';' ++ else ++ PATH_SEPARATOR=: ++ fi ++ rm -f conf$$.sh ++fi ++ ++# Support unset when possible. ++if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then ++ as_unset=unset ++else ++ as_unset=false ++fi ++ ++ ++# IFS ++# We need space, tab and new line, in precisely that order. Quoting is ++# there to prevent editors from complaining about space-tab. ++# (If _AS_PATH_WALK were called with IFS unset, it would disable word ++# splitting by setting IFS to empty value.) ++as_nl=' ++' ++IFS=" "" $as_nl" ++ ++# Find who we are. Look in the path if we contain no directory separator. ++case $0 in ++ *[\\/]* ) as_myself=$0 ;; ++ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break ++done ++IFS=$as_save_IFS ++ ++ ;; ++esac ++# We did not find ourselves, most probably we were run as `sh COMMAND' ++# in which case we are not to be found in the path. ++if test "x$as_myself" = x; then ++ as_myself=$0 ++fi ++if test ! -f "$as_myself"; then ++ echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 ++ { (exit 1); exit 1; } ++fi ++ ++# Work around bugs in pre-3.0 UWIN ksh. ++for as_var in ENV MAIL MAILPATH ++do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var ++done ++PS1='$ ' ++PS2='> ' ++PS4='+ ' ++ ++# NLS nuisances. ++for as_var in \ ++ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ ++ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ ++ LC_TELEPHONE LC_TIME ++do ++ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then ++ eval $as_var=C; export $as_var ++ else ++ ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var ++ fi ++done ++ ++# Required to use basename. ++if expr a : '\(a\)' >/dev/null 2>&1 && ++ test "X`expr 00001 : '.*\(...\)'`" = X001; then ++ as_expr=expr ++else ++ as_expr=false ++fi ++ ++if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then ++ as_basename=basename ++else ++ as_basename=false ++fi ++ ++ ++# Name of the executable. ++as_me=`$as_basename -- "$0" || ++$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ ++ X"$0" : 'X\(//\)$' \| \ ++ X"$0" : 'X\(/\)' \| . 2>/dev/null || ++echo X/"$0" | ++ sed '/^.*\/\([^/][^/]*\)\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ ++# CDPATH. ++$as_unset CDPATH ++ ++ ++if test "x$CONFIG_SHELL" = x; then ++ if (eval ":") 2>/dev/null; then ++ as_have_required=yes ++else ++ as_have_required=no ++fi ++ ++ if test $as_have_required = yes && (eval ": ++(as_func_return () { ++ (exit \$1) ++} ++as_func_success () { ++ as_func_return 0 ++} ++as_func_failure () { ++ as_func_return 1 ++} ++as_func_ret_success () { ++ return 0 ++} ++as_func_ret_failure () { ++ return 1 ++} ++ ++exitcode=0 ++if as_func_success; then ++ : ++else ++ exitcode=1 ++ echo as_func_success failed. ++fi ++ ++if as_func_failure; then ++ exitcode=1 ++ echo as_func_failure succeeded. ++fi ++ ++if as_func_ret_success; then ++ : ++else ++ exitcode=1 ++ echo as_func_ret_success failed. ++fi ++ ++if as_func_ret_failure; then ++ exitcode=1 ++ echo as_func_ret_failure succeeded. ++fi ++ ++if ( set x; as_func_ret_success y && test x = \"\$1\" ); then ++ : ++else ++ exitcode=1 ++ echo positional parameters were not saved. ++fi ++ ++test \$exitcode = 0) || { (exit 1); exit 1; } ++ ++( ++ as_lineno_1=\$LINENO ++ as_lineno_2=\$LINENO ++ test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && ++ test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } ++") 2> /dev/null; then ++ : ++else ++ as_candidate_shells= ++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ case $as_dir in ++ /*) ++ for as_base in sh bash ksh sh5; do ++ as_candidate_shells="$as_candidate_shells $as_dir/$as_base" ++ done;; ++ esac ++done ++IFS=$as_save_IFS ++ ++ ++ for as_shell in $as_candidate_shells $SHELL; do ++ # Try only shells that exist, to save several forks. ++ if { test -f "$as_shell" || test -f "$as_shell.exe"; } && ++ { ("$as_shell") 2> /dev/null <<\_ASEOF ++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then ++ emulate sh ++ NULLCMD=: ++ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which ++ # is contrary to our usage. Disable this feature. ++ alias -g '${1+"$@"}'='"$@"' ++ setopt NO_GLOB_SUBST ++else ++ case `(set -o) 2>/dev/null` in ++ *posix*) set -o posix ;; ++esac ++ ++fi ++ ++ ++: ++_ASEOF ++}; then ++ CONFIG_SHELL=$as_shell ++ as_have_required=yes ++ if { "$as_shell" 2> /dev/null <<\_ASEOF ++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then ++ emulate sh ++ NULLCMD=: ++ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which ++ # is contrary to our usage. Disable this feature. ++ alias -g '${1+"$@"}'='"$@"' ++ setopt NO_GLOB_SUBST ++else ++ case `(set -o) 2>/dev/null` in ++ *posix*) set -o posix ;; ++esac ++ ++fi ++ ++ ++: ++(as_func_return () { ++ (exit $1) ++} ++as_func_success () { ++ as_func_return 0 ++} ++as_func_failure () { ++ as_func_return 1 ++} ++as_func_ret_success () { ++ return 0 ++} ++as_func_ret_failure () { ++ return 1 ++} ++ ++exitcode=0 ++if as_func_success; then ++ : ++else ++ exitcode=1 ++ echo as_func_success failed. ++fi ++ ++if as_func_failure; then ++ exitcode=1 ++ echo as_func_failure succeeded. ++fi ++ ++if as_func_ret_success; then ++ : ++else ++ exitcode=1 ++ echo as_func_ret_success failed. ++fi ++ ++if as_func_ret_failure; then ++ exitcode=1 ++ echo as_func_ret_failure succeeded. ++fi ++ ++if ( set x; as_func_ret_success y && test x = "$1" ); then ++ : ++else ++ exitcode=1 ++ echo positional parameters were not saved. ++fi ++ ++test $exitcode = 0) || { (exit 1); exit 1; } ++ ++( ++ as_lineno_1=$LINENO ++ as_lineno_2=$LINENO ++ test "x$as_lineno_1" != "x$as_lineno_2" && ++ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } ++ ++_ASEOF ++}; then ++ break ++fi ++ ++fi ++ ++ done ++ ++ if test "x$CONFIG_SHELL" != x; then ++ for as_var in BASH_ENV ENV ++ do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var ++ done ++ export CONFIG_SHELL ++ exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} ++fi ++ ++ ++ if test $as_have_required = no; then ++ echo This script requires a shell more modern than all the ++ echo shells that I found on your system. Please install a ++ echo modern shell, or manually run the script under such a ++ echo shell if you do have one. ++ { (exit 1); exit 1; } ++fi ++ ++ ++fi ++ ++fi ++ ++ ++ ++(eval "as_func_return () { ++ (exit \$1) ++} ++as_func_success () { ++ as_func_return 0 ++} ++as_func_failure () { ++ as_func_return 1 ++} ++as_func_ret_success () { ++ return 0 ++} ++as_func_ret_failure () { ++ return 1 ++} ++ ++exitcode=0 ++if as_func_success; then ++ : ++else ++ exitcode=1 ++ echo as_func_success failed. ++fi ++ ++if as_func_failure; then ++ exitcode=1 ++ echo as_func_failure succeeded. ++fi ++ ++if as_func_ret_success; then ++ : ++else ++ exitcode=1 ++ echo as_func_ret_success failed. ++fi ++ ++if as_func_ret_failure; then ++ exitcode=1 ++ echo as_func_ret_failure succeeded. ++fi ++ ++if ( set x; as_func_ret_success y && test x = \"\$1\" ); then ++ : ++else ++ exitcode=1 ++ echo positional parameters were not saved. ++fi ++ ++test \$exitcode = 0") || { ++ echo No shell found that supports shell functions. ++ echo Please tell autoconf@gnu.org about your system, ++ echo including any error possibly output before this ++ echo message ++} ++ ++ ++ ++ as_lineno_1=$LINENO ++ as_lineno_2=$LINENO ++ test "x$as_lineno_1" != "x$as_lineno_2" && ++ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { ++ ++ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO ++ # uniformly replaced by the line number. The first 'sed' inserts a ++ # line-number line after each line using $LINENO; the second 'sed' ++ # does the real work. The second script uses 'N' to pair each ++ # line-number line with the line containing $LINENO, and appends ++ # trailing '-' during substitution so that $LINENO is not a special ++ # case at line end. ++ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the ++ # scripts with optimization help from Paolo Bonzini. Blame Lee ++ # E. McMahon (1931-1989) for sed's syntax. :-) ++ sed -n ' ++ p ++ /[$]LINENO/= ++ ' <$as_myself | ++ sed ' ++ s/[$]LINENO.*/&-/ ++ t lineno ++ b ++ :lineno ++ N ++ :loop ++ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ ++ t loop ++ s/-\n.*// ++ ' >$as_me.lineno && ++ chmod +x "$as_me.lineno" || ++ { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 ++ { (exit 1); exit 1; }; } ++ ++ # Don't try to exec as it changes $[0], causing all sort of problems ++ # (the dirname of $[0] is not the place where we might find the ++ # original and so on. Autoconf is especially sensitive to this). ++ . "./$as_me.lineno" ++ # Exit status is that of the last command. ++ exit ++} ++ ++ ++if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then ++ as_dirname=dirname ++else ++ as_dirname=false ++fi ++ ++ECHO_C= ECHO_N= ECHO_T= ++case `echo -n x` in ++-n*) ++ case `echo 'x\c'` in ++ *c*) ECHO_T=' ';; # ECHO_T is single tab character. ++ *) ECHO_C='\c';; ++ esac;; ++*) ++ ECHO_N='-n';; ++esac ++ ++if expr a : '\(a\)' >/dev/null 2>&1 && ++ test "X`expr 00001 : '.*\(...\)'`" = X001; then ++ as_expr=expr ++else ++ as_expr=false ++fi ++ ++rm -f conf$$ conf$$.exe conf$$.file ++if test -d conf$$.dir; then ++ rm -f conf$$.dir/conf$$.file ++else ++ rm -f conf$$.dir ++ mkdir conf$$.dir ++fi ++echo >conf$$.file ++if ln -s conf$$.file conf$$ 2>/dev/null; then ++ as_ln_s='ln -s' ++ # ... but there are two gotchas: ++ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. ++ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. ++ # In both cases, we have to default to `cp -p'. ++ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || ++ as_ln_s='cp -p' ++elif ln conf$$.file conf$$ 2>/dev/null; then ++ as_ln_s=ln ++else ++ as_ln_s='cp -p' ++fi ++rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file ++rmdir conf$$.dir 2>/dev/null ++ ++if mkdir -p . 2>/dev/null; then ++ as_mkdir_p=: ++else ++ test -d ./-p && rmdir ./-p ++ as_mkdir_p=false ++fi ++ ++if test -x / >/dev/null 2>&1; then ++ as_test_x='test -x' ++else ++ if ls -dL / >/dev/null 2>&1; then ++ as_ls_L_option=L ++ else ++ as_ls_L_option= ++ fi ++ as_test_x=' ++ eval sh -c '\'' ++ if test -d "$1"; then ++ test -d "$1/."; ++ else ++ case $1 in ++ -*)set "./$1";; ++ esac; ++ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ++ ???[sx]*):;;*)false;;esac;fi ++ '\'' sh ++ ' + fi ++as_executable_p=$as_test_x ++ ++# Sed expression to map a string onto a valid CPP name. ++as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" ++ ++# Sed expression to map a string onto a valid variable name. ++as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" ++ ++ ++ + + # Check that we are running under the correct shell. + SHELL=${CONFIG_SHELL-/bin/sh} +@@ -35,7 +567,7 @@ + elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +-elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then ++elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then + # Yippee, $echo works! + : + else +@@ -47,22 +579,22 @@ + # used as fallback echo + shift + cat </dev/null 2>&1 && unset CDPATH + + if test -z "$ECHO"; then + if test "X${echo_test_string+set}" != Xset; then + # find a string as large as possible, as long as the shell can cope with it + for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do + # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... +- if (echo_test_string="`eval $cmd`") 2>/dev/null && +- echo_test_string="`eval $cmd`" && ++ if (echo_test_string=`eval $cmd`) 2>/dev/null && ++ echo_test_string=`eval $cmd` && + (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null + then + break +@@ -81,8 +613,9 @@ + # + # So, first we look for a working echo in the user's PATH. + +- IFS="${IFS= }"; save_ifs="$IFS"; IFS=$PATH_SEPARATOR ++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for dir in $PATH /usr/ucb; do ++ IFS="$lt_save_ifs" + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && +@@ -91,7 +624,7 @@ + break + fi + done +- IFS="$save_ifs" ++ IFS="$lt_save_ifs" + + if test "X$echo" = Xecho; then + # We didn't find a better echo, so look for alternatives. +@@ -163,140 +696,205 @@ + ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" + fi + +-# Avoid depending upon Character Ranges. +-as_cr_letters='abcdefghijklmnopqrstuvwxyz' +-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +-as_cr_Letters=$as_cr_letters$as_cr_LETTERS +-as_cr_digits='0123456789' +-as_cr_alnum=$as_cr_Letters$as_cr_digits +- +-# Sed expression to map a string onto a valid variable name. +-as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" + +-# Sed expression to map a string onto a valid CPP name. +-as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" + +-# Be Bourne compatible +-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then +- emulate sh +- NULLCMD=: +-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then +- set -o posix +-fi + +-# Name of the executable. +-as_me=`echo "$0" |sed 's,.*[\\/],,'` ++tagnames=${tagnames+${tagnames},}CXX + +-if expr a : '\(a\)' >/dev/null 2>&1; then +- as_expr=expr +-else +- as_expr=false +-fi ++tagnames=${tagnames+${tagnames},}F77 + +-rm -f conf$$ conf$$.exe conf$$.file +-echo >conf$$.file +-if ln -s conf$$.file conf$$ 2>/dev/null; then +- # We could just check for DJGPP; but this test a) works b) is more generic +- # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). +- if test -f conf$$.exe; then +- # Don't use ln at all; we don't have any links +- as_ln_s='cp -p' +- else +- as_ln_s='ln -s' +- fi +-elif ln conf$$.file conf$$ 2>/dev/null; then +- as_ln_s=ln +-else +- as_ln_s='cp -p' +-fi +-rm -f conf$$ conf$$.exe conf$$.file +- +-as_executable_p="test -f" +- +-# Support unset when possible. +-if (FOO=FOO; unset FOO) >/dev/null 2>&1; then +- as_unset=unset +-else +- as_unset=false +-fi +- +-# NLS nuisances. +-$as_unset LANG || test "${LANG+set}" != set || { LANG=C; export LANG; } +-$as_unset LC_ALL || test "${LC_ALL+set}" != set || { LC_ALL=C; export LC_ALL; } +-$as_unset LC_TIME || test "${LC_TIME+set}" != set || { LC_TIME=C; export LC_TIME; } +-$as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set || { LC_CTYPE=C; export LC_CTYPE; } +-$as_unset LANGUAGE || test "${LANGUAGE+set}" != set || { LANGUAGE=C; export LANGUAGE; } +-$as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set || { LC_COLLATE=C; export LC_COLLATE; } +-$as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set || { LC_NUMERIC=C; export LC_NUMERIC; } +-$as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set || { LC_MESSAGES=C; export LC_MESSAGES; } +- +-# IFS +-# We need space, tab and new line, in precisely that order. +-as_nl=' +-' +-IFS=" $as_nl" +- +-# CDPATH. +-$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=:; export CDPATH; } ++exec 7<&0 &1 + + # Name of the host. + # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, + # so uname gets run too. + ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +-exec 6>&1 +- + # + # Initializations. + # + ac_default_prefix=/usr/local ++ac_clean_files= ++ac_config_libobj_dir=. ++LIBOBJS= + cross_compiling=no + subdirs= +-MFLAGS= MAKEFLAGS= ++MFLAGS= ++MAKEFLAGS= + SHELL=${CONFIG_SHELL-/bin/sh} + +-# Maximum number of lines to put in a shell here document. +-# This variable seems obsolete. It should probably be removed, and +-# only ac_max_sed_lines should be used. +-: ${ac_max_here_lines=38} ++# Identity of this package. ++PACKAGE_NAME= ++PACKAGE_TARNAME= ++PACKAGE_VERSION= ++PACKAGE_STRING= ++PACKAGE_BUGREPORT= + + # Factoring default headers for most tests. + ac_includes_default="\ + #include +-#if HAVE_SYS_TYPES_H ++#ifdef HAVE_SYS_TYPES_H + # include + #endif +-#if HAVE_SYS_STAT_H ++#ifdef HAVE_SYS_STAT_H + # include + #endif +-#if STDC_HEADERS ++#ifdef STDC_HEADERS + # include + # include + #else +-# if HAVE_STDLIB_H ++# ifdef HAVE_STDLIB_H + # include + # endif + #endif +-#if HAVE_STRING_H +-# if !STDC_HEADERS && HAVE_MEMORY_H ++#ifdef HAVE_STRING_H ++# if !defined STDC_HEADERS && defined HAVE_MEMORY_H + # include + # endif + # include + #endif +-#if HAVE_STRINGS_H ++#ifdef HAVE_STRINGS_H + # include + #endif +-#if HAVE_INTTYPES_H ++#ifdef HAVE_INTTYPES_H + # include +-#else +-# if HAVE_STDINT_H +-# include +-# endif + #endif +-#if HAVE_UNISTD_H ++#ifdef HAVE_STDINT_H ++# include ++#endif ++#ifdef HAVE_UNISTD_H + # include + #endif" + ++ac_subst_vars='SHELL ++PATH_SEPARATOR ++PACKAGE_NAME ++PACKAGE_TARNAME ++PACKAGE_VERSION ++PACKAGE_STRING ++PACKAGE_BUGREPORT ++exec_prefix ++prefix ++program_transform_name ++bindir ++sbindir ++libexecdir ++datarootdir ++datadir ++sysconfdir ++sharedstatedir ++localstatedir ++includedir ++oldincludedir ++docdir ++infodir ++htmldir ++dvidir ++pdfdir ++psdir ++libdir ++localedir ++mandir ++DEFS ++ECHO_C ++ECHO_N ++ECHO_T ++LIBS ++build_alias ++host_alias ++target_alias ++INSTALL_PROGRAM ++INSTALL_SCRIPT ++INSTALL_DATA ++am__isrc ++CYGPATH_W ++PACKAGE ++VERSION ++ACLOCAL ++AUTOCONF ++AUTOMAKE ++AUTOHEADER ++MAKEINFO ++install_sh ++STRIP ++INSTALL_STRIP_PROGRAM ++mkdir_p ++AWK ++SET_MAKE ++am__leading_dot ++AMTAR ++am__tar ++am__untar ++CC ++CFLAGS ++LDFLAGS ++CPPFLAGS ++ac_ct_CC ++EXEEXT ++OBJEXT ++DEPDIR ++am__include ++am__quote ++AMDEP_TRUE ++AMDEP_FALSE ++AMDEPBACKSLASH ++CCDEPMODE ++am__fastdepCC_TRUE ++am__fastdepCC_FALSE ++CPP ++build ++build_cpu ++build_vendor ++build_os ++host ++host_cpu ++host_vendor ++host_os ++SED ++GREP ++EGREP ++LN_S ++ECHO ++AR ++RANLIB ++CXX ++CXXFLAGS ++ac_ct_CXX ++CXXDEPMODE ++am__fastdepCXX_TRUE ++am__fastdepCXX_FALSE ++CXXCPP ++F77 ++FFLAGS ++ac_ct_F77 ++LIBTOOL ++LIBFCGIXX ++ECHO_CPP ++PTHREAD_CC ++PTHREAD_LIBS ++PTHREAD_CFLAGS ++THREADED ++LIBOBJS ++SYSTEM ++LTLIBOBJS' ++ac_subst_files='' ++ ac_precious_vars='build_alias ++host_alias ++target_alias ++CC ++CFLAGS ++LDFLAGS ++LIBS ++CPPFLAGS ++CPP ++CXX ++CXXFLAGS ++CCC ++CXXCPP ++F77 ++FFLAGS' ++ ++ + # Initialize some variables set by options. + ac_init_help= + ac_init_version=false +@@ -322,41 +920,48 @@ + # and all the variables that are supposed to be based on exec_prefix + # by default will actually change. + # Use braces instead of parens because sh, perl, etc. also accept them. ++# (The list follows the same order as the GNU Coding Standards.) + bindir='${exec_prefix}/bin' + sbindir='${exec_prefix}/sbin' + libexecdir='${exec_prefix}/libexec' +-datadir='${prefix}/share' ++datarootdir='${prefix}/share' ++datadir='${datarootdir}' + sysconfdir='${prefix}/etc' + sharedstatedir='${prefix}/com' + localstatedir='${prefix}/var' +-libdir='${exec_prefix}/lib' + includedir='${prefix}/include' + oldincludedir='/usr/include' +-infodir='${prefix}/info' +-mandir='${prefix}/man' +- +-# Identity of this package. +-PACKAGE_NAME= +-PACKAGE_TARNAME= +-PACKAGE_VERSION= +-PACKAGE_STRING= +-PACKAGE_BUGREPORT= ++docdir='${datarootdir}/doc/${PACKAGE}' ++infodir='${datarootdir}/info' ++htmldir='${docdir}' ++dvidir='${docdir}' ++pdfdir='${docdir}' ++psdir='${docdir}' ++libdir='${exec_prefix}/lib' ++localedir='${datarootdir}/locale' ++mandir='${datarootdir}/man' + + ac_prev= ++ac_dashdash= + for ac_option + do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then +- eval "$ac_prev=\$ac_option" ++ eval $ac_prev=\$ac_option + ac_prev= + continue + fi + +- ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` ++ case $ac_option in ++ *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; ++ *) ac_optarg=yes ;; ++ esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + +- case $ac_option in ++ case $ac_dashdash$ac_option in ++ --) ++ ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; +@@ -378,33 +983,45 @@ + --config-cache | -C) + cache_file=config.cache ;; + +- -datadir | --datadir | --datadi | --datad | --data | --dat | --da) ++ -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; +- -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ +- | --da=*) ++ -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + ++ -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ ++ | --dataroo | --dataro | --datar) ++ ac_prev=datarootdir ;; ++ -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ ++ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) ++ datarootdir=$ac_optarg ;; ++ + -disable-* | --disable-*) + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. +- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && ++ expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } +- ac_feature=`echo $ac_feature | sed 's/-/_/g'` +- eval "enable_$ac_feature=no" ;; ++ ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` ++ eval enable_$ac_feature=no ;; ++ ++ -docdir | --docdir | --docdi | --doc | --do) ++ ac_prev=docdir ;; ++ -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) ++ docdir=$ac_optarg ;; ++ ++ -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ++ ac_prev=dvidir ;; ++ -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) ++ dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. +- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && ++ expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } +- ac_feature=`echo $ac_feature | sed 's/-/_/g'` +- case $ac_option in +- *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; +- *) ac_optarg=yes ;; +- esac +- eval "enable_$ac_feature='$ac_optarg'" ;; ++ ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` ++ eval enable_$ac_feature=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ +@@ -431,6 +1048,12 @@ + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + ++ -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ++ ac_prev=htmldir ;; ++ -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ ++ | --ht=*) ++ htmldir=$ac_optarg ;; ++ + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; +@@ -455,13 +1078,16 @@ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + ++ -localedir | --localedir | --localedi | --localed | --locale) ++ ac_prev=localedir ;; ++ -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) ++ localedir=$ac_optarg ;; ++ + -localstatedir | --localstatedir | --localstatedi | --localstated \ +- | --localstate | --localstat | --localsta | --localst \ +- | --locals | --local | --loca | --loc | --lo) ++ | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ +- | --localstate=* | --localstat=* | --localsta=* | --localst=* \ +- | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) ++ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) +@@ -474,7 +1100,7 @@ + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ +- | --no-cr | --no-c) ++ | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ +@@ -526,6 +1152,16 @@ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + ++ -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ++ ac_prev=pdfdir ;; ++ -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) ++ pdfdir=$ac_optarg ;; ++ ++ -psdir | --psdir | --psdi | --psd | --ps) ++ ac_prev=psdir ;; ++ -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) ++ psdir=$ac_optarg ;; ++ + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; +@@ -578,24 +1214,20 @@ + -with-* | --with-*) + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. +- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && ++ expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } +- ac_package=`echo $ac_package| sed 's/-/_/g'` +- case $ac_option in +- *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; +- *) ac_optarg=yes ;; +- esac +- eval "with_$ac_package='$ac_optarg'" ;; ++ ac_package=`echo $ac_package | sed 's/[-.]/_/g'` ++ eval with_$ac_package=\$ac_optarg ;; + + -without-* | --without-*) + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. +- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && ++ expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } +- ac_package=`echo $ac_package | sed 's/-/_/g'` +- eval "with_$ac_package=no" ;; ++ ac_package=`echo $ac_package | sed 's/[-.]/_/g'` ++ eval with_$ac_package=no ;; + + --x) + # Obsolete; use --with-x. +@@ -626,8 +1258,7 @@ + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } +- ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` +- eval "$ac_envvar='$ac_optarg'" ++ eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) +@@ -647,36 +1278,29 @@ + { (exit 1); exit 1; }; } + fi + +-# Be sure to have absolute paths. +-for ac_var in exec_prefix prefix +-do +- eval ac_val=$`echo $ac_var` +- case $ac_val in +- [\\/$]* | ?:[\\/]* | NONE | '' ) ;; +- *) { echo "$as_me: error: expected an absolute path for --$ac_var: $ac_val" >&2 +- { (exit 1); exit 1; }; };; +- esac +-done +- +-# Be sure to have absolute paths. +-for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ +- localstatedir libdir includedir oldincludedir infodir mandir ++# Be sure to have absolute directory names. ++for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ ++ datadir sysconfdir sharedstatedir localstatedir includedir \ ++ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ ++ libdir localedir mandir + do +- eval ac_val=$`echo $ac_var` ++ eval ac_val=\$$ac_var + case $ac_val in +- [\\/$]* | ?:[\\/]* ) ;; +- *) { echo "$as_me: error: expected an absolute path for --$ac_var: $ac_val" >&2 +- { (exit 1); exit 1; }; };; ++ [\\/$]* | ?:[\\/]* ) continue;; ++ NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac ++ { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 ++ { (exit 1); exit 1; }; } + done + + # There might be people who depend on the old broken behavior: `$host' + # used to hold the argument of --host etc. ++# FIXME: To remove some day. + build=$build_alias + host=$host_alias + target=$target_alias + +-# FIXME: should be removed in autoconf 3.0. ++# FIXME: To remove some day. + if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe +@@ -692,70 +1316,77 @@ + + test "$silent" = yes && exec 6>/dev/null + ++ ++ac_pwd=`pwd` && test -n "$ac_pwd" && ++ac_ls_di=`ls -di .` && ++ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || ++ { echo "$as_me: error: Working directory cannot be determined" >&2 ++ { (exit 1); exit 1; }; } ++test "X$ac_ls_di" = "X$ac_pwd_ls_di" || ++ { echo "$as_me: error: pwd does not report name of working directory" >&2 ++ { (exit 1); exit 1; }; } ++ ++ + # Find the source files, if location was not specified. + if test -z "$srcdir"; then + ac_srcdir_defaulted=yes +- # Try the directory containing this script, then its parent. +- ac_prog=$0 +- ac_confdir=`echo "$ac_prog" | sed 's%[\\/][^\\/][^\\/]*$%%'` +- test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. ++ # Try the directory containing this script, then the parent directory. ++ ac_confdir=`$as_dirname -- "$0" || ++$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$0" : 'X\(//\)[^/]' \| \ ++ X"$0" : 'X\(//\)$' \| \ ++ X"$0" : 'X\(/\)' \| . 2>/dev/null || ++echo X"$0" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` + srcdir=$ac_confdir +- if test ! -r $srcdir/$ac_unique_file; then ++ if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi + else + ac_srcdir_defaulted=no + fi +-if test ! -r $srcdir/$ac_unique_file; then +- if test "$ac_srcdir_defaulted" = yes; then +- { echo "$as_me: error: cannot find sources in $ac_confdir or .." >&2 +- { (exit 1); exit 1; }; } +- else +- { echo "$as_me: error: cannot find sources in $srcdir" >&2 ++if test ! -r "$srcdir/$ac_unique_file"; then ++ test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." ++ { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { (exit 1); exit 1; }; } +- fi + fi +-srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +-ac_env_build_alias_set=${build_alias+set} +-ac_env_build_alias_value=$build_alias +-ac_cv_env_build_alias_set=${build_alias+set} +-ac_cv_env_build_alias_value=$build_alias +-ac_env_host_alias_set=${host_alias+set} +-ac_env_host_alias_value=$host_alias +-ac_cv_env_host_alias_set=${host_alias+set} +-ac_cv_env_host_alias_value=$host_alias +-ac_env_target_alias_set=${target_alias+set} +-ac_env_target_alias_value=$target_alias +-ac_cv_env_target_alias_set=${target_alias+set} +-ac_cv_env_target_alias_value=$target_alias +-ac_env_CC_set=${CC+set} +-ac_env_CC_value=$CC +-ac_cv_env_CC_set=${CC+set} +-ac_cv_env_CC_value=$CC +-ac_env_CFLAGS_set=${CFLAGS+set} +-ac_env_CFLAGS_value=$CFLAGS +-ac_cv_env_CFLAGS_set=${CFLAGS+set} +-ac_cv_env_CFLAGS_value=$CFLAGS +-ac_env_LDFLAGS_set=${LDFLAGS+set} +-ac_env_LDFLAGS_value=$LDFLAGS +-ac_cv_env_LDFLAGS_set=${LDFLAGS+set} +-ac_cv_env_LDFLAGS_value=$LDFLAGS +-ac_env_CPPFLAGS_set=${CPPFLAGS+set} +-ac_env_CPPFLAGS_value=$CPPFLAGS +-ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +-ac_cv_env_CPPFLAGS_value=$CPPFLAGS +-ac_env_CPP_set=${CPP+set} +-ac_env_CPP_value=$CPP +-ac_cv_env_CPP_set=${CPP+set} +-ac_cv_env_CPP_value=$CPP +-ac_env_CXX_set=${CXX+set} +-ac_env_CXX_value=$CXX +-ac_cv_env_CXX_set=${CXX+set} +-ac_cv_env_CXX_value=$CXX +-ac_env_CXXFLAGS_set=${CXXFLAGS+set} +-ac_env_CXXFLAGS_value=$CXXFLAGS +-ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set} +-ac_cv_env_CXXFLAGS_value=$CXXFLAGS ++ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ++ac_abs_confdir=`( ++ cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2 ++ { (exit 1); exit 1; }; } ++ pwd)` ++# When building in place, set srcdir=. ++if test "$ac_abs_confdir" = "$ac_pwd"; then ++ srcdir=. ++fi ++# Remove unnecessary trailing slashes from srcdir. ++# Double slashes in file names in object file debugging info ++# mess up M-x gdb in Emacs. ++case $srcdir in ++*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; ++esac ++for ac_var in $ac_precious_vars; do ++ eval ac_env_${ac_var}_set=\${${ac_var}+set} ++ eval ac_env_${ac_var}_value=\$${ac_var} ++ eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} ++ eval ac_cv_env_${ac_var}_value=\$${ac_var} ++done + + # + # Report the --help message. +@@ -763,7 +1394,7 @@ + if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. +- cat < if you have libraries in a + nonstandard directory +- CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have +- headers in a nonstandard directory ++ LIBS libraries to pass to the linker, e.g. -l ++ CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if ++ you have headers in a nonstandard directory + CPP C preprocessor + CXX C++ compiler command + CXXFLAGS C++ compiler flags ++ CXXCPP C++ preprocessor ++ F77 Fortran 77 compiler command ++ FFLAGS Fortran 77 compiler flags + + Use these variables to override the choices made by `configure' or to help + it to find libraries and programs with nonstandard names/locations. + +-EOF ++_ACEOF ++ac_status=$? + fi + + if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. +- ac_popdir=`pwd` +- for ac_subdir in : $ac_subdirs_all; do test "x$ac_subdir" = x: && continue +- cd $ac_subdir +- # A "../" for each directory in /$ac_subdir. +- ac_dots=`echo $ac_subdir | +- sed 's,^\./,,;s,[^/]$,&/,;s,[^/]*/,../,g'` +- +- case $srcdir in +- .) # No --srcdir option. We are building in place. +- ac_sub_srcdir=$srcdir ;; +- [\\/]* | ?:[\\/]* ) # Absolute path. +- ac_sub_srcdir=$srcdir/$ac_subdir ;; +- *) # Relative path. +- ac_sub_srcdir=$ac_dots$srcdir/$ac_subdir ;; +- esac ++ for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue ++ test -d "$ac_dir" || continue ++ ac_builddir=. + +- # Check for guested configure; otherwise get Cygnus style configure. +- if test -f $ac_sub_srcdir/configure.gnu; then +- echo +- $SHELL $ac_sub_srcdir/configure.gnu --help=recursive +- elif test -f $ac_sub_srcdir/configure; then +- echo +- $SHELL $ac_sub_srcdir/configure --help=recursive +- elif test -f $ac_sub_srcdir/configure.ac || +- test -f $ac_sub_srcdir/configure.in; then +- echo +- $ac_configure --help ++case "$ac_dir" in ++.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; ++*) ++ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` ++ # A ".." for each directory in $ac_dir_suffix. ++ ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` ++ case $ac_top_builddir_sub in ++ "") ac_top_builddir_sub=. ac_top_build_prefix= ;; ++ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; ++ esac ;; ++esac ++ac_abs_top_builddir=$ac_pwd ++ac_abs_builddir=$ac_pwd$ac_dir_suffix ++# for backward compatibility: ++ac_top_builddir=$ac_top_build_prefix ++ ++case $srcdir in ++ .) # We are building in place. ++ ac_srcdir=. ++ ac_top_srcdir=$ac_top_builddir_sub ++ ac_abs_top_srcdir=$ac_pwd ;; ++ [\\/]* | ?:[\\/]* ) # Absolute name. ++ ac_srcdir=$srcdir$ac_dir_suffix; ++ ac_top_srcdir=$srcdir ++ ac_abs_top_srcdir=$srcdir ;; ++ *) # Relative name. ++ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ++ ac_top_srcdir=$ac_top_build_prefix$srcdir ++ ac_abs_top_srcdir=$ac_pwd/$srcdir ;; ++esac ++ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix ++ ++ cd "$ac_dir" || { ac_status=$?; continue; } ++ # Check for guested configure. ++ if test -f "$ac_srcdir/configure.gnu"; then ++ echo && ++ $SHELL "$ac_srcdir/configure.gnu" --help=recursive ++ elif test -f "$ac_srcdir/configure"; then ++ echo && ++ $SHELL "$ac_srcdir/configure" --help=recursive + else +- echo "$as_me: WARNING: no configuration information is in $ac_subdir" >&2 +- fi +- cd $ac_popdir ++ echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 ++ fi || ac_status=$? ++ cd "$ac_pwd" || { ac_status=$?; break; } + done + fi + +-test -n "$ac_init_help" && exit 0 ++test -n "$ac_init_help" && exit $ac_status + if $ac_init_version; then +- cat <<\EOF ++ cat <<\_ACEOF ++configure ++generated by GNU Autoconf 2.61 + +-Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 +-Free Software Foundation, Inc. ++Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, ++2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. + This configure script is free software; the Free Software Foundation + gives unlimited permission to copy, distribute and modify it. +-EOF +- exit 0 ++_ACEOF ++ exit + fi +-exec 5>config.log +-cat >&5 <config.log <<_ACEOF + This file contains any messages produced by compilers while + running configure, to aid debugging if configure makes a mistake. + + It was created by $as_me, which was +-generated by GNU Autoconf 2.52. Invocation command line was ++generated by GNU Autoconf 2.61. Invocation command line was + + $ $0 $@ + +-EOF ++_ACEOF ++exec 5>>config.log + { + cat <<_ASUNAME +-## ---------- ## +-## Platform. ## +-## ---------- ## ++## --------- ## ++## Platform. ## ++## --------- ## + + hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` + uname -m = `(uname -m) 2>/dev/null || echo unknown` +@@ -941,110 +1603,233 @@ + /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` + /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` + /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +-hostinfo = `(hostinfo) 2>/dev/null || echo unknown` ++/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` + /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` + /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` + /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +-PATH = $PATH +- + _ASUNAME ++ ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ echo "PATH: $as_dir" ++done ++IFS=$as_save_IFS ++ + } >&5 + +-cat >&5 <&5 <<_ACEOF ++ ++ ++## ----------- ## ++## Core tests. ## ++## ----------- ## ++ ++_ACEOF + +-EOF + + # Keep a trace of the command line. + # Strip out --no-create and --no-recursion so they do not pile up. ++# Strip out --silent because we don't want to record it for future runs. + # Also quote any args containing shell meta-characters. ++# Make two passes to allow for proper duplicate-argument suppression. + ac_configure_args= +-ac_sep= +-for ac_arg ++ac_configure_args0= ++ac_configure_args1= ++ac_must_keep_next=false ++for ac_pass in 1 2 + do +- case $ac_arg in +- -no-create | --no-create | --no-creat | --no-crea | --no-cre \ +- | --no-cr | --no-c) ;; +- -no-recursion | --no-recursion | --no-recursio | --no-recursi \ +- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; +- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) +- ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` +- ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" +- ac_sep=" " ;; +- *) ac_configure_args="$ac_configure_args$ac_sep$ac_arg" +- ac_sep=" " ;; +- esac +- # Get rid of the leading space. ++ for ac_arg ++ do ++ case $ac_arg in ++ -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; ++ -q | -quiet | --quiet | --quie | --qui | --qu | --q \ ++ | -silent | --silent | --silen | --sile | --sil) ++ continue ;; ++ *\'*) ++ ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; ++ esac ++ case $ac_pass in ++ 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; ++ 2) ++ ac_configure_args1="$ac_configure_args1 '$ac_arg'" ++ if test $ac_must_keep_next = true; then ++ ac_must_keep_next=false # Got value, back to normal. ++ else ++ case $ac_arg in ++ *=* | --config-cache | -C | -disable-* | --disable-* \ ++ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ ++ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ ++ | -with-* | --with-* | -without-* | --without-* | --x) ++ case "$ac_configure_args0 " in ++ "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; ++ esac ++ ;; ++ -* ) ac_must_keep_next=true ;; ++ esac ++ fi ++ ac_configure_args="$ac_configure_args '$ac_arg'" ++ ;; ++ esac ++ done + done ++$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } ++$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } + + # When interrupted or exit'd, cleanup temporary files, and complete + # config.log. We remove comments because anyway the quotes in there + # would cause problems or look ugly. ++# WARNING: Use '\'' to represent an apostrophe within the trap. ++# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. + trap 'exit_status=$? + # Save into config.log some information that might help in debugging. +- echo >&5 +- echo "## ----------------- ##" >&5 +- echo "## Cache variables. ##" >&5 +- echo "## ----------------- ##" >&5 +- echo >&5 +- # The following way of writing the cache mishandles newlines in values, +-{ ++ { ++ echo ++ ++ cat <<\_ASBOX ++## ---------------- ## ++## Cache variables. ## ++## ---------------- ## ++_ASBOX ++ echo ++ # The following way of writing the cache mishandles newlines in values, ++( ++ for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do ++ eval ac_val=\$$ac_var ++ case $ac_val in #( ++ *${as_nl}*) ++ case $ac_var in #( ++ *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 ++echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; ++ esac ++ case $ac_var in #( ++ _ | IFS | as_nl) ;; #( ++ *) $as_unset $ac_var ;; ++ esac ;; ++ esac ++ done + (set) 2>&1 | +- case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in +- *ac_space=\ *) ++ case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( ++ *${as_nl}ac_space=\ *) + sed -n \ +- "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; +- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" +- ;; ++ "s/'\''/'\''\\\\'\'''\''/g; ++ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ++ ;; #( + *) +- sed -n \ +- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ++ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; +- esac; +-} >&5 +- sed "/^$/d" confdefs.h >conftest.log +- if test -s conftest.log; then +- echo >&5 +- echo "## ------------ ##" >&5 +- echo "## confdefs.h. ##" >&5 +- echo "## ------------ ##" >&5 +- echo >&5 +- cat conftest.log >&5 +- fi +- (echo; echo) >&5 +- test "$ac_signal" != 0 && +- echo "$as_me: caught signal $ac_signal" >&5 +- echo "$as_me: exit $exit_status" >&5 +- rm -rf conftest* confdefs* core core.* *.core conf$$* $ac_clean_files && ++ esac | ++ sort ++) ++ echo ++ ++ cat <<\_ASBOX ++## ----------------- ## ++## Output variables. ## ++## ----------------- ## ++_ASBOX ++ echo ++ for ac_var in $ac_subst_vars ++ do ++ eval ac_val=\$$ac_var ++ case $ac_val in ++ *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; ++ esac ++ echo "$ac_var='\''$ac_val'\''" ++ done | sort ++ echo ++ ++ if test -n "$ac_subst_files"; then ++ cat <<\_ASBOX ++## ------------------- ## ++## File substitutions. ## ++## ------------------- ## ++_ASBOX ++ echo ++ for ac_var in $ac_subst_files ++ do ++ eval ac_val=\$$ac_var ++ case $ac_val in ++ *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; ++ esac ++ echo "$ac_var='\''$ac_val'\''" ++ done | sort ++ echo ++ fi ++ ++ if test -s confdefs.h; then ++ cat <<\_ASBOX ++## ----------- ## ++## confdefs.h. ## ++## ----------- ## ++_ASBOX ++ echo ++ cat confdefs.h ++ echo ++ fi ++ test "$ac_signal" != 0 && ++ echo "$as_me: caught signal $ac_signal" ++ echo "$as_me: exit $exit_status" ++ } >&5 ++ rm -f core *.core core.conftest.* && ++ rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +- ' 0 ++' 0 + for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal + done + ac_signal=0 + + # confdefs.h avoids OS command line length limits that DEFS can exceed. +-rm -rf conftest* confdefs.h +-# AIX cpp loses on an empty file, so make sure it contains at least a newline. +-echo >confdefs.h ++rm -f -r conftest* confdefs.h ++ ++# Predefined preprocessor variables. ++ ++cat >>confdefs.h <<_ACEOF ++#define PACKAGE_NAME "$PACKAGE_NAME" ++_ACEOF ++ ++ ++cat >>confdefs.h <<_ACEOF ++#define PACKAGE_TARNAME "$PACKAGE_TARNAME" ++_ACEOF ++ ++ ++cat >>confdefs.h <<_ACEOF ++#define PACKAGE_VERSION "$PACKAGE_VERSION" ++_ACEOF ++ ++ ++cat >>confdefs.h <<_ACEOF ++#define PACKAGE_STRING "$PACKAGE_STRING" ++_ACEOF ++ ++ ++cat >>confdefs.h <<_ACEOF ++#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" ++_ACEOF ++ + + # Let the site file select an alternate cache file if it wants to. + # Prefer explicitly selected file to automatically selected ones. +-if test -z "$CONFIG_SITE"; then +- if test "x$prefix" != xNONE; then +- CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" +- else +- CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" +- fi ++if test -n "$CONFIG_SITE"; then ++ set x "$CONFIG_SITE" ++elif test "x$prefix" != xNONE; then ++ set x "$prefix/share/config.site" "$prefix/etc/config.site" ++else ++ set x "$ac_default_prefix/share/config.site" \ ++ "$ac_default_prefix/etc/config.site" + fi +-for ac_site_file in $CONFIG_SITE; do ++shift ++for ac_site_file ++do + if test -r "$ac_site_file"; then +- { echo "$as_me:1045: loading site script $ac_site_file" >&5 ++ { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 + echo "$as_me: loading site script $ac_site_file" >&6;} +- cat "$ac_site_file" >&5 ++ sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" + fi + done +@@ -1053,15 +1838,15 @@ + # Some versions of bash will fail to source /dev/null (special + # files actually), so we avoid doing that. + if test -f "$cache_file"; then +- { echo "$as_me:1056: loading cache $cache_file" >&5 ++ { echo "$as_me:$LINENO: loading cache $cache_file" >&5 + echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in +- [\\/]* | ?:[\\/]* ) . $cache_file;; +- *) . ./$cache_file;; ++ [\\/]* | ?:[\\/]* ) . "$cache_file";; ++ *) . "./$cache_file";; + esac + fi + else +- { echo "$as_me:1064: creating cache $cache_file" >&5 ++ { echo "$as_me:$LINENO: creating cache $cache_file" >&5 + echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file + fi +@@ -1069,105 +1854,107 @@ + # Check that the precious variables saved in the cache have kept the same + # value. + ac_cache_corrupted=false +-for ac_var in `(set) 2>&1 | +- sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do ++for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set +- eval ac_old_val="\$ac_cv_env_${ac_var}_value" +- eval ac_new_val="\$ac_env_${ac_var}_value" ++ eval ac_old_val=\$ac_cv_env_${ac_var}_value ++ eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) +- { echo "$as_me:1080: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 ++ { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 + echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) +- { echo "$as_me:1084: error: \`$ac_var' was not set in the previous run" >&5 ++ { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 + echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then +- { echo "$as_me:1090: error: \`$ac_var' has changed since the previous run:" >&5 ++ { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 + echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} +- { echo "$as_me:1092: former value: $ac_old_val" >&5 ++ { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 + echo "$as_me: former value: $ac_old_val" >&2;} +- { echo "$as_me:1094: current value: $ac_new_val" >&5 ++ { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 + echo "$as_me: current value: $ac_new_val" >&2;} +- ac_cache_corrupted=: ++ ac_cache_corrupted=: + fi;; + esac +- # Pass precious variables to config.status. It doesn't matter if +- # we pass some twice (in addition to the command line arguments). ++ # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in +- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) +- ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` +- ac_configure_args="$ac_configure_args '$ac_arg'" +- ;; +- *) ac_configure_args="$ac_configure_args $ac_var=$ac_new_val" +- ;; ++ *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; ++ *) ac_arg=$ac_var=$ac_new_val ;; ++ esac ++ case " $ac_configure_args " in ++ *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. ++ *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; + esac + fi + done + if $ac_cache_corrupted; then +- { echo "$as_me:1113: error: changes in the environment can compromise the build" >&5 ++ { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 + echo "$as_me: error: changes in the environment can compromise the build" >&2;} +- { { echo "$as_me:1115: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 ++ { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 + echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { (exit 1); exit 1; }; } + fi + ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + ac_ext=c + ac_cpp='$CPP $CPPFLAGS' + ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' + ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' + ac_compiler_gnu=$ac_cv_c_compiler_gnu + +-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in +- *c*,-n*) ECHO_N= ECHO_C=' +-' ECHO_T=' ' ;; +- *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; +- *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +-esac +-echo "#! $SHELL" >conftest.sh +-echo "exit 0" >>conftest.sh +-chmod +x conftest.sh +-if { (echo "$as_me:1135: PATH=\".;.\"; conftest.sh") >&5 +- (PATH=".;."; conftest.sh) 2>&5 +- ac_status=$? +- echo "$as_me:1138: \$? = $ac_status" >&5 +- (exit $ac_status); }; then +- ac_path_separator=';' +-else +- ac_path_separator=: +-fi +-PATH_SEPARATOR="$ac_path_separator" +-rm -f conftest.sh ++ ++am__api_version='1.10' + + ac_aux_dir= +-for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do +- if test -f $ac_dir/install-sh; then ++for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do ++ if test -f "$ac_dir/install-sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break +- elif test -f $ac_dir/install.sh; then ++ elif test -f "$ac_dir/install.sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break +- elif test -f $ac_dir/shtool; then ++ elif test -f "$ac_dir/shtool"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi + done + if test -z "$ac_aux_dir"; then +- { { echo "$as_me:1164: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 +-echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} ++ { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5 ++echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;} + { (exit 1); exit 1; }; } + fi +-ac_config_guess="$SHELL $ac_aux_dir/config.guess" +-ac_config_sub="$SHELL $ac_aux_dir/config.sub" +-ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. ++ ++# These three variables are undocumented and unsupported, ++# and are intended to be withdrawn in a future Autoconf release. ++# They can cause serious problems if a builder's source tree is in a directory ++# whose full name contains unusual characters. ++ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ++ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ++ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. ++ + + # Find a good install program. We prefer a C program (faster), + # so one script is as good as another. But avoid the broken or +@@ -1180,58 +1967,66 @@ + # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag + # AFS /usr/afsws/bin/install, which mishandles nonexistent args + # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" ++# OS/2's system install, which has a completely different semantic + # ./install, which can be erroneously created by make from ./install.sh. +-echo "$as_me:1184: checking for a BSD compatible install" >&5 +-echo $ECHO_N "checking for a BSD compatible install... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 ++echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; } + if test -z "$INSTALL"; then + if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- ac_save_IFS=$IFS; IFS=$ac_path_separator +- for ac_dir in $PATH; do +- IFS=$ac_save_IFS +- # Account for people who put trailing slashes in PATH elements. +- case $ac_dir/ in +- / | ./ | .// | /cC/* \ +- | /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* \ +- | /usr/ucb/* ) ;; +- *) +- # OSF1 and SCO ODT 3.0 have their own names for install. +- # Don't use installbsd from OSF since it installs stuff as root +- # by default. +- for ac_prog in ginstall scoinst install; do +- if $as_executable_p "$ac_dir/$ac_prog"; then ++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ # Account for people who put trailing slashes in PATH elements. ++case $as_dir/ in ++ ./ | .// | /cC/* | \ ++ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ++ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ ++ /usr/ucb/* ) ;; ++ *) ++ # OSF1 and SCO ODT 3.0 have their own names for install. ++ # Don't use installbsd from OSF since it installs stuff as root ++ # by default. ++ for ac_prog in ginstall scoinst install; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then + if test $ac_prog = install && +- grep dspmsg "$ac_dir/$ac_prog" >/dev/null 2>&1; then ++ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && +- grep pwplus "$ac_dir/$ac_prog" >/dev/null 2>&1; then ++ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else +- ac_cv_path_install="$ac_dir/$ac_prog -c" +- break 2 ++ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" ++ break 3 + fi + fi + done +- ;; +- esac +- done ++ done ++ ;; ++esac ++done ++IFS=$as_save_IFS ++ + + fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else +- # As a last resort, use the slow shell script. We don't cache a +- # path for INSTALL within a source directory, because that will ++ # As a last resort, use the slow shell script. Don't cache a ++ # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is +- # removed, or if the path is relative. ++ # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi + fi +-echo "$as_me:1233: result: $INSTALL" >&5 +-echo "${ECHO_T}$INSTALL" >&6 ++{ echo "$as_me:$LINENO: result: $INSTALL" >&5 ++echo "${ECHO_T}$INSTALL" >&6; } + + # Use test -z because SunOS4 sh mishandles braces in ${var-val}. + # It thinks the first close brace ends the variable substitution. +@@ -1241,8 +2036,8 @@ + + test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +-echo "$as_me:1244: checking whether build environment is sane" >&5 +-echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether build environment is sane" >&5 ++echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6; } + # Just in case + sleep 1 + echo timestamp > conftest.file +@@ -1265,7 +2060,7 @@ + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". +- { { echo "$as_me:1268: error: ls -t appears to fail. Make sure there is not a broken ++ { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken + alias in your environment" >&5 + echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken + alias in your environment" >&2;} +@@ -1278,29 +2073,29 @@ + # Ok. + : + else +- { { echo "$as_me:1281: error: newly created file is older than distributed files! ++ { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! + Check your system clock" >&5 + echo "$as_me: error: newly created file is older than distributed files! + Check your system clock" >&2;} + { (exit 1); exit 1; }; } + fi +-echo "$as_me:1287: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++{ echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + test "$program_prefix" != NONE && +- program_transform_name="s,^,$program_prefix,;$program_transform_name" ++ program_transform_name="s&^&$program_prefix&;$program_transform_name" + # Use a double $ so make ignores it. + test "$program_suffix" != NONE && +- program_transform_name="s,\$,$program_suffix,;$program_transform_name" ++ program_transform_name="s&\$&$program_suffix&;$program_transform_name" + # Double any \ or $. echo might interpret backslashes. + # By default was `s,x,x', remove it if useless. + cat <<\_ACEOF >conftest.sed + s/[\\$]/&&/g;s/;s,x,x,$// + _ACEOF + program_transform_name=`echo $program_transform_name | sed -f conftest.sed` +-rm conftest.sed ++rm -f conftest.sed + + # expand $ac_aux_dir to an absolute path +-am_aux_dir=`CDPATH=:; cd $ac_aux_dir && pwd` ++am_aux_dir=`cd $ac_aux_dir && pwd` + + test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" + # Use eval to expand $SHELL +@@ -1308,160 +2103,314 @@ + am_missing_run="$MISSING --run " + else + am_missing_run= +- am_backtick='`' +- { echo "$as_me:1312: WARNING: ${am_backtick}missing' script is too old or missing" >&5 +-echo "$as_me: WARNING: ${am_backtick}missing' script is too old or missing" >&2;} ++ { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 ++echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} ++fi ++ ++{ echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5 ++echo $ECHO_N "checking for a thread-safe mkdir -p... $ECHO_C" >&6; } ++if test -z "$MKDIR_P"; then ++ if test "${ac_cv_path_mkdir+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_prog in mkdir gmkdir; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue ++ case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( ++ 'mkdir (GNU coreutils) '* | \ ++ 'mkdir (coreutils) '* | \ ++ 'mkdir (fileutils) '4.1*) ++ ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext ++ break 3;; ++ esac ++ done ++ done ++done ++IFS=$as_save_IFS ++ ++fi ++ ++ if test "${ac_cv_path_mkdir+set}" = set; then ++ MKDIR_P="$ac_cv_path_mkdir -p" ++ else ++ # As a last resort, use the slow shell script. Don't cache a ++ # value for MKDIR_P within a source directory, because that will ++ # break other packages using the cache if that directory is ++ # removed, or if the value is a relative name. ++ test -d ./--version && rmdir ./--version ++ MKDIR_P="$ac_install_sh -d" ++ fi + fi ++{ echo "$as_me:$LINENO: result: $MKDIR_P" >&5 ++echo "${ECHO_T}$MKDIR_P" >&6; } ++ ++mkdir_p="$MKDIR_P" ++case $mkdir_p in ++ [\\/$]* | ?:[\\/]*) ;; ++ */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; ++esac + +-for ac_prog in mawk gawk nawk awk ++for ac_prog in gawk mawk nawk awk + do + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 +-echo "$as_me:1320: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_AWK+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. + else +- ac_save_IFS=$IFS; IFS=$ac_path_separator +-ac_dummy="$PATH" +-for ac_dir in $ac_dummy; do +- IFS=$ac_save_IFS +- test -z "$ac_dir" && ac_dir=. +- $as_executable_p "$ac_dir/$ac_word" || continue +-ac_cv_prog_AWK="$ac_prog" +-echo "$as_me:1335: found $ac_dir/$ac_word" >&5 +-break ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_AWK="$ac_prog" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done + done ++IFS=$as_save_IFS + + fi + fi + AWK=$ac_cv_prog_AWK + if test -n "$AWK"; then +- echo "$as_me:1343: result: $AWK" >&5 +-echo "${ECHO_T}$AWK" >&6 ++ { echo "$as_me:$LINENO: result: $AWK" >&5 ++echo "${ECHO_T}$AWK" >&6; } + else +- echo "$as_me:1346: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + test -n "$AWK" && break + done + +-echo "$as_me:1353: checking whether ${MAKE-make} sets \${MAKE}" >&5 +-echo $ECHO_N "checking whether ${MAKE-make} sets \${MAKE}... $ECHO_C" >&6 +-set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'` +-if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 ++echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; } ++set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` ++if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- cat >conftest.make <<\EOF ++ cat >conftest.make <<\_ACEOF ++SHELL = /bin/sh + all: +- @echo 'ac_maketemp="${MAKE}"' +-EOF ++ @echo '@@@%%%=$(MAKE)=@@@%%%' ++_ACEOF + # GNU make sometimes prints "make[1]: Entering...", which would confuse us. +-eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` +-if test -n "$ac_maketemp"; then +- eval ac_cv_prog_make_${ac_make}_set=yes +-else +- eval ac_cv_prog_make_${ac_make}_set=no +-fi ++case `${MAKE-make} -f conftest.make 2>/dev/null` in ++ *@@@%%%=?*=@@@%%%*) ++ eval ac_cv_prog_make_${ac_make}_set=yes;; ++ *) ++ eval ac_cv_prog_make_${ac_make}_set=no;; ++esac + rm -f conftest.make + fi +-if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then +- echo "$as_me:1373: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + SET_MAKE= + else +- echo "$as_me:1377: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" + fi + +-# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given. +-if test "${enable_dependency_tracking+set}" = set; then +- enableval="$enable_dependency_tracking" +- +-fi; +-if test "x$enable_dependency_tracking" != xno; then +- am_depcomp="$ac_aux_dir/depcomp" +- AMDEPBACKSLASH='\' +-fi +- +-if test "x$enable_dependency_tracking" != xno; then +- AMDEP_TRUE= +- AMDEP_FALSE='#' +-else +- AMDEP_TRUE='#' +- AMDEP_FALSE= ++rm -rf .tst 2>/dev/null ++mkdir .tst 2>/dev/null ++if test -d .tst; then ++ am__leading_dot=. ++else ++ am__leading_dot=_ ++fi ++rmdir .tst 2>/dev/null ++ ++if test "`cd $srcdir && pwd`" != "`pwd`"; then ++ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output ++ # is not polluted with repeated "-I." ++ am__isrc=' -I$(srcdir)' ++ # test to see if srcdir already configured ++ if test -f $srcdir/config.status; then ++ { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 ++echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} ++ { (exit 1); exit 1; }; } ++ fi + fi + +-rm -f .deps 2>/dev/null +-mkdir .deps 2>/dev/null +-if test -d .deps; then +- DEPDIR=.deps +-else +- # MS-DOS does not allow filenames that begin with a dot. +- DEPDIR=_deps ++# test whether we have cygpath ++if test -z "$CYGPATH_W"; then ++ if (cygpath --version) >/dev/null 2>/dev/null; then ++ CYGPATH_W='cygpath -w' ++ else ++ CYGPATH_W=echo ++ fi + fi +-rmdir .deps 2>/dev/null + +-# test to see if srcdir already configured +-if test "`CDPATH=:; cd $srcdir && pwd`" != "`pwd`" && +- test -f $srcdir/config.status; then +- { { echo "$as_me:1413: error: source directory already configured; run \"make distclean\" there first" >&5 +-echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} +- { (exit 1); exit 1; }; } +-fi + + # Define the identity of the package. +-PACKAGE=fcgi +-VERSION=2.4.0 ++ PACKAGE=fcgi ++ VERSION=2.4.0 + +-cat >>confdefs.h <>confdefs.h <>confdefs.h <<_ACEOF ++#define PACKAGE "$PACKAGE" ++_ACEOF + +-# Autoconf 2.50 wants to disallow AM_ names. We explicitly allow +-# the ones we care about. + +-# Autoconf 2.50 always computes EXEEXT. However we need to be +-# compatible with 2.13, for now. So we always define EXEEXT, but we +-# don't compute it. +- +-# Similar for OBJEXT -- only we only use OBJEXT if the user actually +-# requests that it be used. This is a bit dumb. +-: ${OBJEXT=o} ++cat >>confdefs.h <<_ACEOF ++#define VERSION "$VERSION" ++_ACEOF + + # Some tools Automake needs. + +-ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal"} ++ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + +-AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + +-AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake"} ++AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + +-AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + +-MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} ++AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + +-AMTAR=${AMTAR-"${am_missing_run}tar"} + +-install_sh=${install_sh-"$am_aux_dir/install-sh"} ++AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + +-INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" + +-# We need awk for the "check" target. The system "awk" is bad on +-# some platforms. ++MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +- ac_config_headers="$ac_config_headers fcgi_config.h" ++install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"} + +-ac_ext=c ++# Installed binaries are usually stripped using `strip' when the user ++# run `make install-strip'. However `strip' might not be the right ++# tool to use in cross-compilation environments, therefore Automake ++# will honor the `STRIP' environment variable to overrule this program. ++if test "$cross_compiling" != no; then ++ if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. ++set dummy ${ac_tool_prefix}strip; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_STRIP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$STRIP"; then ++ ac_cv_prog_STRIP="$STRIP" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_STRIP="${ac_tool_prefix}strip" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++STRIP=$ac_cv_prog_STRIP ++if test -n "$STRIP"; then ++ { echo "$as_me:$LINENO: result: $STRIP" >&5 ++echo "${ECHO_T}$STRIP" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_STRIP"; then ++ ac_ct_STRIP=$STRIP ++ # Extract the first word of "strip", so it can be a program name with args. ++set dummy strip; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$ac_ct_STRIP"; then ++ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_ac_ct_STRIP="strip" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP ++if test -n "$ac_ct_STRIP"; then ++ { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 ++echo "${ECHO_T}$ac_ct_STRIP" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ if test "x$ac_ct_STRIP" = x; then ++ STRIP=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ STRIP=$ac_ct_STRIP ++ fi ++else ++ STRIP="$ac_cv_prog_STRIP" ++fi ++ ++fi ++INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" ++ ++# We need awk for the "check" target. The system "awk" is bad on ++# some platforms. ++# Always define AMTAR for backward compatibility. ++ ++AMTAR=${AMTAR-"${am_missing_run}tar"} ++ ++am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' ++ ++ ++ ++ ++ ++ ++ac_config_headers="$ac_config_headers fcgi_config.h" ++ ++ ++ac_ext=c + ac_cpp='$CPP $CPPFLAGS' + ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' + ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +@@ -1469,156 +2418,145 @@ + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. + set dummy ${ac_tool_prefix}gcc; ac_word=$2 +-echo "$as_me:1472: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. + else +- ac_save_IFS=$IFS; IFS=$ac_path_separator +-ac_dummy="$PATH" +-for ac_dir in $ac_dummy; do +- IFS=$ac_save_IFS +- test -z "$ac_dir" && ac_dir=. +- $as_executable_p "$ac_dir/$ac_word" || continue +-ac_cv_prog_CC="${ac_tool_prefix}gcc" +-echo "$as_me:1487: found $ac_dir/$ac_word" >&5 +-break ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_CC="${ac_tool_prefix}gcc" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi + done ++done ++IFS=$as_save_IFS + + fi + fi + CC=$ac_cv_prog_CC + if test -n "$CC"; then +- echo "$as_me:1495: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } + else +- echo "$as_me:1498: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + fi + if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. + set dummy gcc; ac_word=$2 +-echo "$as_me:1507: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. + else +- ac_save_IFS=$IFS; IFS=$ac_path_separator +-ac_dummy="$PATH" +-for ac_dir in $ac_dummy; do +- IFS=$ac_save_IFS +- test -z "$ac_dir" && ac_dir=. +- $as_executable_p "$ac_dir/$ac_word" || continue +-ac_cv_prog_ac_ct_CC="gcc" +-echo "$as_me:1522: found $ac_dir/$ac_word" >&5 +-break ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_ac_ct_CC="gcc" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi + done ++done ++IFS=$as_save_IFS + + fi + fi + ac_ct_CC=$ac_cv_prog_ac_ct_CC + if test -n "$ac_ct_CC"; then +- echo "$as_me:1530: result: $ac_ct_CC" >&5 +-echo "${ECHO_T}$ac_ct_CC" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 ++echo "${ECHO_T}$ac_ct_CC" >&6; } + else +- echo "$as_me:1533: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- CC=$ac_ct_CC ++ if test "x$ac_ct_CC" = x; then ++ CC="" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ CC=$ac_ct_CC ++ fi + else + CC="$ac_cv_prog_CC" + fi + + if test -z "$CC"; then +- if test -n "$ac_tool_prefix"; then +- # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. ++ if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. + set dummy ${ac_tool_prefix}cc; ac_word=$2 +-echo "$as_me:1546: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. + else +- ac_save_IFS=$IFS; IFS=$ac_path_separator +-ac_dummy="$PATH" +-for ac_dir in $ac_dummy; do +- IFS=$ac_save_IFS +- test -z "$ac_dir" && ac_dir=. +- $as_executable_p "$ac_dir/$ac_word" || continue +-ac_cv_prog_CC="${ac_tool_prefix}cc" +-echo "$as_me:1561: found $ac_dir/$ac_word" >&5 +-break ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_CC="${ac_tool_prefix}cc" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done + done ++IFS=$as_save_IFS + + fi + fi + CC=$ac_cv_prog_CC + if test -n "$CC"; then +- echo "$as_me:1569: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 +-else +- echo "$as_me:1572: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +-fi +-if test -z "$ac_cv_prog_CC"; then +- ac_ct_CC=$CC +- # Extract the first word of "cc", so it can be a program name with args. +-set dummy cc; ac_word=$2 +-echo "$as_me:1581: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$ac_ct_CC"; then +- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +-else +- ac_save_IFS=$IFS; IFS=$ac_path_separator +-ac_dummy="$PATH" +-for ac_dir in $ac_dummy; do +- IFS=$ac_save_IFS +- test -z "$ac_dir" && ac_dir=. +- $as_executable_p "$ac_dir/$ac_word" || continue +-ac_cv_prog_ac_ct_CC="cc" +-echo "$as_me:1596: found $ac_dir/$ac_word" >&5 +-break +-done +- +-fi +-fi +-ac_ct_CC=$ac_cv_prog_ac_ct_CC +-if test -n "$ac_ct_CC"; then +- echo "$as_me:1604: result: $ac_ct_CC" >&5 +-echo "${ECHO_T}$ac_ct_CC" >&6 ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } + else +- echo "$as_me:1607: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- CC=$ac_ct_CC +-else +- CC="$ac_cv_prog_CC" +-fi + ++ fi + fi + if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. + set dummy cc; ac_word=$2 +-echo "$as_me:1620: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -1626,20 +2564,24 @@ + ac_cv_prog_CC="$CC" # Let the user override the test. + else + ac_prog_rejected=no +- ac_save_IFS=$IFS; IFS=$ac_path_separator +-ac_dummy="$PATH" +-for ac_dir in $ac_dummy; do +- IFS=$ac_save_IFS +- test -z "$ac_dir" && ac_dir=. +- $as_executable_p "$ac_dir/$ac_word" || continue +-if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then +- ac_prog_rejected=yes +- continue +-fi +-ac_cv_prog_CC="cc" +-echo "$as_me:1640: found $ac_dir/$ac_word" >&5 +-break ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ++ ac_prog_rejected=yes ++ continue ++ fi ++ ac_cv_prog_CC="cc" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done + done ++IFS=$as_save_IFS + + if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. +@@ -1650,133 +2592,176 @@ + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift +- set dummy "$ac_dir/$ac_word" ${1+"$@"} +- shift +- ac_cv_prog_CC="$@" ++ ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi + fi + fi + fi + CC=$ac_cv_prog_CC + if test -n "$CC"; then +- echo "$as_me:1662: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } + else +- echo "$as_me:1665: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + fi + if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then +- for ac_prog in cl ++ for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. + set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +-echo "$as_me:1676: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. + else +- ac_save_IFS=$IFS; IFS=$ac_path_separator +-ac_dummy="$PATH" +-for ac_dir in $ac_dummy; do +- IFS=$ac_save_IFS +- test -z "$ac_dir" && ac_dir=. +- $as_executable_p "$ac_dir/$ac_word" || continue +-ac_cv_prog_CC="$ac_tool_prefix$ac_prog" +-echo "$as_me:1691: found $ac_dir/$ac_word" >&5 +-break ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_CC="$ac_tool_prefix$ac_prog" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi + done ++done ++IFS=$as_save_IFS + + fi + fi + CC=$ac_cv_prog_CC + if test -n "$CC"; then +- echo "$as_me:1699: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } + else +- echo "$as_me:1702: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + test -n "$CC" && break + done + fi + if test -z "$CC"; then + ac_ct_CC=$CC +- for ac_prog in cl ++ for ac_prog in cl.exe + do + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 +-echo "$as_me:1715: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. + else +- ac_save_IFS=$IFS; IFS=$ac_path_separator +-ac_dummy="$PATH" +-for ac_dir in $ac_dummy; do +- IFS=$ac_save_IFS +- test -z "$ac_dir" && ac_dir=. +- $as_executable_p "$ac_dir/$ac_word" || continue +-ac_cv_prog_ac_ct_CC="$ac_prog" +-echo "$as_me:1730: found $ac_dir/$ac_word" >&5 +-break ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_ac_ct_CC="$ac_prog" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi + done ++done ++IFS=$as_save_IFS + + fi + fi + ac_ct_CC=$ac_cv_prog_ac_ct_CC + if test -n "$ac_ct_CC"; then +- echo "$as_me:1738: result: $ac_ct_CC" >&5 +-echo "${ECHO_T}$ac_ct_CC" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 ++echo "${ECHO_T}$ac_ct_CC" >&6; } + else +- echo "$as_me:1741: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + test -n "$ac_ct_CC" && break + done + +- CC=$ac_ct_CC ++ if test "x$ac_ct_CC" = x; then ++ CC="" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ CC=$ac_ct_CC ++ fi + fi + + fi + +-test -z "$CC" && { { echo "$as_me:1753: error: no acceptable cc found in \$PATH" >&5 +-echo "$as_me: error: no acceptable cc found in \$PATH" >&2;} ++ ++test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH ++See \`config.log' for more details." >&5 ++echo "$as_me: error: no acceptable C compiler found in \$PATH ++See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + + # Provide some information about the compiler. +-echo "$as_me:1758:" \ +- "checking for C compiler version" >&5 ++echo "$as_me:$LINENO: checking for C compiler version" >&5 + ac_compiler=`set X $ac_compile; echo $2` +-{ (eval echo "$as_me:1761: \"$ac_compiler --version &5\"") >&5 +- (eval $ac_compiler --version &5) 2>&5 ++{ (ac_try="$ac_compiler --version >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler --version >&5") 2>&5 + ac_status=$? +- echo "$as_me:1764: \$? = $ac_status" >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +-{ (eval echo "$as_me:1766: \"$ac_compiler -v &5\"") >&5 +- (eval $ac_compiler -v &5) 2>&5 ++{ (ac_try="$ac_compiler -v >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler -v >&5") 2>&5 + ac_status=$? +- echo "$as_me:1769: \$? = $ac_status" >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +-{ (eval echo "$as_me:1771: \"$ac_compiler -V &5\"") >&5 +- (eval $ac_compiler -V &5) 2>&5 ++{ (ac_try="$ac_compiler -V >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler -V >&5") 2>&5 + ac_status=$? +- echo "$as_me:1774: \$? = $ac_status" >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + + cat >conftest.$ac_ext <<_ACEOF +-#line 1778 "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + + int + main () +@@ -1787,127 +2772,188 @@ + } + _ACEOF + ac_clean_files_save=$ac_clean_files +-ac_clean_files="$ac_clean_files a.out a.exe" ++ac_clean_files="$ac_clean_files a.out a.exe b.out" + # Try to create an executable without -o first, disregard a.out. + # It will help us diagnose broken compilers, and finding out an intuition + # of exeext. +-echo "$as_me:1794: checking for C compiler default output" >&5 +-echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 ++echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; } + ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +-if { (eval echo "$as_me:1797: \"$ac_link_default\"") >&5 +- (eval $ac_link_default) 2>&5 ++# ++# List of possible output files, starting from the most likely. ++# The algorithm is not robust to junk in `.', hence go to wildcards (a.*) ++# only as a last resort. b.out is created by i960 compilers. ++ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out' ++# ++# The IRIX 6 linker writes into existing files which may not be ++# executable, retaining their permissions. Remove them first so a ++# subsequent execution test works. ++ac_rmfiles= ++for ac_file in $ac_files ++do ++ case $ac_file in ++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; ++ * ) ac_rmfiles="$ac_rmfiles $ac_file";; ++ esac ++done ++rm -f $ac_rmfiles ++ ++if { (ac_try="$ac_link_default" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link_default") 2>&5 + ac_status=$? +- echo "$as_me:1800: \$? = $ac_status" >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then +- # Find the output, starting from the most likely. This scheme is +-# not robust to junk in `.', hence go to wildcards (a.*) only as a last +-# resort. +-for ac_file in `ls a.exe conftest.exe 2>/dev/null; +- ls a.out conftest 2>/dev/null; +- ls a.* conftest.* 2>/dev/null`; do ++ # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. ++# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' ++# in a Makefile. We should not override ac_cv_exeext if it was cached, ++# so that the user can short-circuit this test for compilers unknown to ++# Autoconf. ++for ac_file in $ac_files '' ++do ++ test -f "$ac_file" || continue + case $ac_file in +- *.$ac_ext | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb ) ;; +- a.out ) # We found the default executable, but exeext='' is most +- # certainly right. +- break;; +- *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` +- # FIXME: I believe we export ac_cv_exeext for Libtool --akim. +- export ac_cv_exeext +- break;; +- * ) break;; ++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ++ ;; ++ [ab].out ) ++ # We found the default executable, but exeext='' is most ++ # certainly right. ++ break;; ++ *.* ) ++ if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; ++ then :; else ++ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` ++ fi ++ # We set ac_cv_exeext here because the later test for it is not ++ # safe: cross compilers may not add the suffix if given an `-o' ++ # argument, so we may need to know it at that point already. ++ # Even if this section looks crufty: it has the advantage of ++ # actually working. ++ break;; ++ * ) ++ break;; + esac + done ++test "$ac_cv_exeext" = no && ac_cv_exeext= ++ + else ++ ac_file='' ++fi ++ ++{ echo "$as_me:$LINENO: result: $ac_file" >&5 ++echo "${ECHO_T}$ac_file" >&6; } ++if test -z "$ac_file"; then + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-{ { echo "$as_me:1823: error: C compiler cannot create executables" >&5 +-echo "$as_me: error: C compiler cannot create executables" >&2;} ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++{ { echo "$as_me:$LINENO: error: C compiler cannot create executables ++See \`config.log' for more details." >&5 ++echo "$as_me: error: C compiler cannot create executables ++See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; } + fi + + ac_exeext=$ac_cv_exeext +-echo "$as_me:1829: result: $ac_file" >&5 +-echo "${ECHO_T}$ac_file" >&6 + +-# Check the compiler produces executables we can run. If not, either ++# Check that the compiler produces executables we can run. If not, either + # the compiler is broken, or we cross compile. +-echo "$as_me:1834: checking whether the C compiler works" >&5 +-echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5 ++echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; } + # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 + # If not cross compiling, check that we can run a simple program. + if test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' +- { (eval echo "$as_me:1840: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 + ac_status=$? +- echo "$as_me:1843: \$? = $ac_status" >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else +- { { echo "$as_me:1850: error: cannot run C compiled programs. +-If you meant to cross compile, use \`--host'." >&5 ++ { { echo "$as_me:$LINENO: error: cannot run C compiled programs. ++If you meant to cross compile, use \`--host'. ++See \`config.log' for more details." >&5 + echo "$as_me: error: cannot run C compiled programs. +-If you meant to cross compile, use \`--host'." >&2;} ++If you meant to cross compile, use \`--host'. ++See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + fi + fi + fi +-echo "$as_me:1858: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++{ echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + +-rm -f a.out a.exe conftest$ac_cv_exeext ++rm -f a.out a.exe conftest$ac_cv_exeext b.out + ac_clean_files=$ac_clean_files_save +-# Check the compiler produces executables we can run. If not, either ++# Check that the compiler produces executables we can run. If not, either + # the compiler is broken, or we cross compile. +-echo "$as_me:1865: checking whether we are cross compiling" >&5 +-echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 +-echo "$as_me:1867: result: $cross_compiling" >&5 +-echo "${ECHO_T}$cross_compiling" >&6 +- +-echo "$as_me:1870: checking for executable suffix" >&5 +-echo $ECHO_N "checking for executable suffix... $ECHO_C" >&6 +-if { (eval echo "$as_me:1872: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 ++{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 ++echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; } ++{ echo "$as_me:$LINENO: result: $cross_compiling" >&5 ++echo "${ECHO_T}$cross_compiling" >&6; } ++ ++{ echo "$as_me:$LINENO: checking for suffix of executables" >&5 ++echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; } ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 + ac_status=$? +- echo "$as_me:1875: \$? = $ac_status" >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # If both `conftest.exe' and `conftest' are `present' (well, observable) + # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will + # work properly (i.e., refer to `conftest.exe'), while it won't with + # `rm'. +-for ac_file in `(ls conftest.exe; ls conftest; ls conftest.*) 2>/dev/null`; do ++for ac_file in conftest.exe conftest conftest.*; do ++ test -f "$ac_file" || continue + case $ac_file in +- *.$ac_ext | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb ) ;; ++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` +- export ac_cv_exeext +- break;; ++ break;; + * ) break;; + esac + done + else +- { { echo "$as_me:1891: error: cannot compute EXEEXT: cannot compile and link" >&5 +-echo "$as_me: error: cannot compute EXEEXT: cannot compile and link" >&2;} ++ { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link ++See \`config.log' for more details." >&5 ++echo "$as_me: error: cannot compute suffix of executables: cannot compile and link ++See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + fi + + rm -f conftest$ac_cv_exeext +-echo "$as_me:1897: result: $ac_cv_exeext" >&5 +-echo "${ECHO_T}$ac_cv_exeext" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 ++echo "${ECHO_T}$ac_cv_exeext" >&6; } + + rm -f conftest.$ac_ext + EXEEXT=$ac_cv_exeext + ac_exeext=$EXEEXT +-echo "$as_me:1903: checking for object suffix" >&5 +-echo $ECHO_N "checking for object suffix... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for suffix of object files" >&5 ++echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; } + if test "${ac_cv_objext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +-#line 1909 "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + + int + main () +@@ -1918,40 +2964,52 @@ + } + _ACEOF + rm -f conftest.o conftest.obj +-if { (eval echo "$as_me:1921: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>&5 + ac_status=$? +- echo "$as_me:1924: \$? = $ac_status" >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then +- for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do ++ for ac_file in conftest.o conftest.obj conftest.*; do ++ test -f "$ac_file" || continue; + case $ac_file in +- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb ) ;; ++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac + done + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-{ { echo "$as_me:1936: error: cannot compute OBJEXT: cannot compile" >&5 +-echo "$as_me: error: cannot compute OBJEXT: cannot compile" >&2;} ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile ++See \`config.log' for more details." >&5 ++echo "$as_me: error: cannot compute suffix of object files: cannot compile ++See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + fi + + rm -f conftest.$ac_cv_objext conftest.$ac_ext + fi +-echo "$as_me:1943: result: $ac_cv_objext" >&5 +-echo "${ECHO_T}$ac_cv_objext" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 ++echo "${ECHO_T}$ac_cv_objext" >&6; } + OBJEXT=$ac_cv_objext + ac_objext=$OBJEXT +-echo "$as_me:1947: checking whether we are using the GNU C compiler" >&5 +-echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 ++echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; } + if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +-#line 1953 "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + + int + main () +@@ -1965,41 +3023,54 @@ + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:1968: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:1971: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:1974: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? +- echo "$as_me:1977: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_compiler_gnu=yes + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_compiler_gnu=no ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_compiler_gnu=no + fi +-rm -f conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_c_compiler_gnu=$ac_compiler_gnu + + fi +-echo "$as_me:1989: result: $ac_cv_c_compiler_gnu" >&5 +-echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 ++echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; } + GCC=`test $ac_compiler_gnu = yes && echo yes` + ac_test_CFLAGS=${CFLAGS+set} + ac_save_CFLAGS=$CFLAGS +-CFLAGS="-g" +-echo "$as_me:1995: checking whether $CC accepts -g" >&5 +-echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 ++echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } + if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- cat >conftest.$ac_ext <<_ACEOF +-#line 2001 "configure" +-#include "confdefs.h" ++ ac_save_c_werror_flag=$ac_c_werror_flag ++ ac_c_werror_flag=yes ++ ac_cv_prog_cc_g=no ++ CFLAGS="-g" ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + + int + main () +@@ -2010,164 +3081,268 @@ + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:2013: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:2016: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:2019: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? +- echo "$as_me:2022: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_g=yes + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_cv_prog_cc_g=no +-fi +-rm -f conftest.$ac_objext conftest.$ac_ext +-fi +-echo "$as_me:2032: result: $ac_cv_prog_cc_g" >&5 +-echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 +-if test "$ac_test_CFLAGS" = set; then +- CFLAGS=$ac_save_CFLAGS +-elif test $ac_cv_prog_cc_g = yes; then +- if test "$GCC" = yes; then +- CFLAGS="-g -O2" +- else +- CFLAGS="-g" +- fi +-else +- if test "$GCC" = yes; then +- CFLAGS="-O2" +- else +- CFLAGS= +- fi +-fi +-# Some people use a C++ compiler to compile C. Since we use `exit', +-# in C++ we need to declare it. In case someone uses the same compiler +-# for both compiling C and C++ we need to have the C++ compiler decide +-# the declaration of exit, since it's the most demanding environment. +-cat >conftest.$ac_ext <<_ACEOF +-#ifndef __cplusplus +- choke me +-#endif ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ CFLAGS="" ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ + _ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:2059: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:2062: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:2065: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:2068: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- for ac_declaration in \ +- ''\ +- '#include ' \ +- 'extern "C" void std::exit (int) throw (); using std::exit;' \ +- 'extern "C" void std::exit (int); using std::exit;' \ +- 'extern "C" void exit (int) throw ();' \ +- 'extern "C" void exit (int);' \ +- 'void exit (int);' +-do +- cat >conftest.$ac_ext <<_ACEOF +-#line 2080 "configure" +-#include "confdefs.h" +-#include +-$ac_declaration ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ + int + main () + { +-exit (42); ++ + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:2093: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:2096: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:2099: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? +- echo "$as_me:2102: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + : + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-continue +-fi +-rm -f conftest.$ac_objext conftest.$ac_ext +- cat >conftest.$ac_ext <<_ACEOF +-#line 2112 "configure" +-#include "confdefs.h" +-$ac_declaration ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_c_werror_flag=$ac_save_c_werror_flag ++ CFLAGS="-g" ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ + int + main () + { +-exit (42); ++ + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:2124: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:2127: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:2130: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? +- echo "$as_me:2133: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- break ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_prog_cc_g=yes + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-fi +-rm -f conftest.$ac_objext conftest.$ac_ext +-done +-rm -f conftest* +-if test -n "$ac_declaration"; then +- echo '#ifdef __cplusplus' >>confdefs.h +- echo $ac_declaration >>confdefs.h +- echo '#endif' >>confdefs.h ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ + fi + +-else +- echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-rm -f conftest.$ac_objext conftest.$ac_ext +-ac_ext=c +-ac_cpp='$CPP $CPPFLAGS' +-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +-ac_compiler_gnu=$ac_cv_c_compiler_gnu + +-ac_config_commands="$ac_config_commands default-1" ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi + +-am_make=${MAKE-make} +-cat > confinc << 'END' +-doit: ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ ac_c_werror_flag=$ac_save_c_werror_flag ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 ++echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; } ++if test "$ac_test_CFLAGS" = set; then ++ CFLAGS=$ac_save_CFLAGS ++elif test $ac_cv_prog_cc_g = yes; then ++ if test "$GCC" = yes; then ++ CFLAGS="-g -O2" ++ else ++ CFLAGS="-g" ++ fi ++else ++ if test "$GCC" = yes; then ++ CFLAGS="-O2" ++ else ++ CFLAGS= ++ fi ++fi ++{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 ++echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } ++if test "${ac_cv_prog_cc_c89+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_cv_prog_cc_c89=no ++ac_save_CC=$CC ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++#include ++#include ++#include ++/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ ++struct buf { int x; }; ++FILE * (*rcsopen) (struct buf *, struct stat *, int); ++static char *e (p, i) ++ char **p; ++ int i; ++{ ++ return p[i]; ++} ++static char *f (char * (*g) (char **, int), char **p, ...) ++{ ++ char *s; ++ va_list v; ++ va_start (v,p); ++ s = g (p, va_arg (v,int)); ++ va_end (v); ++ return s; ++} ++ ++/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has ++ function prototypes and stuff, but not '\xHH' hex character constants. ++ These don't provoke an error unfortunately, instead are silently treated ++ as 'x'. The following induces an error, until -std is added to get ++ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an ++ array size at least. It's necessary to write '\x00'==0 to get something ++ that's true only with -std. */ ++int osf4_cc_array ['\x00' == 0 ? 1 : -1]; ++ ++/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters ++ inside strings and character constants. */ ++#define FOO(x) 'x' ++int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; ++ ++int test (int i, double x); ++struct s1 {int (*f) (int a);}; ++struct s2 {int (*f) (double a);}; ++int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); ++int argc; ++char **argv; ++int ++main () ++{ ++return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ++ ; ++ return 0; ++} ++_ACEOF ++for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ ++ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" ++do ++ CC="$ac_save_CC $ac_arg" ++ rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_prog_cc_c89=$ac_arg ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ++fi ++ ++rm -f core conftest.err conftest.$ac_objext ++ test "x$ac_cv_prog_cc_c89" != "xno" && break ++done ++rm -f conftest.$ac_ext ++CC=$ac_save_CC ++ ++fi ++# AC_CACHE_VAL ++case "x$ac_cv_prog_cc_c89" in ++ x) ++ { echo "$as_me:$LINENO: result: none needed" >&5 ++echo "${ECHO_T}none needed" >&6; } ;; ++ xno) ++ { echo "$as_me:$LINENO: result: unsupported" >&5 ++echo "${ECHO_T}unsupported" >&6; } ;; ++ *) ++ CC="$CC $ac_cv_prog_cc_c89" ++ { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 ++echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; ++esac ++ ++ ++ac_ext=c ++ac_cpp='$CPP $CPPFLAGS' ++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_c_compiler_gnu ++DEPDIR="${am__leading_dot}deps" ++ ++ac_config_commands="$ac_config_commands depfiles" ++ ++ ++am_make=${MAKE-make} ++cat > confinc << 'END' ++am__doit: + @echo done ++.PHONY: am__doit + END + # If we don't find an include directive, just comment out the code. +-echo "$as_me:2168: checking for style of include used by $am_make" >&5 +-echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6 +-am__include='#' ++{ echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 ++echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6; } ++am__include="#" + am__quote= + _am_result=none + # First try GNU make style include. +@@ -2177,7 +3352,7 @@ + # In particular we don't look at `^make:' because GNU make might + # be invoked under some other name (usually "gmake"), in which + # case it prints its new name instead of `make'. +-if test "`$am_make -s -f confmf 2> /dev/null | fgrep -v 'ing directory'`" = "done"; then ++if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +@@ -2187,19 +3362,39 @@ + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include +- am__quote='"' ++ am__quote="\"" + _am_result=BSD + fi + fi + +-echo "$as_me:2195: result: $_am_result" >&5 +-echo "${ECHO_T}$_am_result" >&6 ++ ++{ echo "$as_me:$LINENO: result: $_am_result" >&5 ++echo "${ECHO_T}$_am_result" >&6; } + rm -f confinc confmf + ++# Check whether --enable-dependency-tracking was given. ++if test "${enable_dependency_tracking+set}" = set; then ++ enableval=$enable_dependency_tracking; ++fi ++ ++if test "x$enable_dependency_tracking" != xno; then ++ am_depcomp="$ac_aux_dir/depcomp" ++ AMDEPBACKSLASH='\' ++fi ++ if test "x$enable_dependency_tracking" != xno; then ++ AMDEP_TRUE= ++ AMDEP_FALSE='#' ++else ++ AMDEP_TRUE='#' ++ AMDEP_FALSE= ++fi ++ ++ ++ + depcc="$CC" am_compiler_list= + +-echo "$as_me:2201: checking dependency style of $depcc" >&5 +-echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 ++echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; } + if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -2214,18 +3409,34 @@ + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir ++ # We will build objects and dependencies in a subdirectory because ++ # it helps to detect inapplicable dependency modes. For instance ++ # both Tru64's cc and ICC support -MD to output dependencies as a ++ # side effect of compilation, but ICC will put the dependencies in ++ # the current directory while Tru64 will put them in the object ++ # directory. ++ mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + for depmode in $am_compiler_list; do ++ # Setup a source with many dependencies, because some compilers ++ # like to wrap large dependency lists on column 80 (with \), and ++ # we should not choose a depcomp mode which is confused by this. ++ # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. +- echo '#include "conftest.h"' > conftest.c +- echo 'int i;' > conftest.h +- echo "${am__include} ${am__quote}conftest.Po${am__quote}" > confmf ++ : > sub/conftest.c ++ for i in 1 2 3 4 5 6; do ++ echo '#include "conftst'$i'.h"' >> sub/conftest.c ++ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with ++ # Solaris 8's {/usr,}/bin/sh. ++ touch sub/conftst$i.h ++ done ++ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) +@@ -2243,13 +3454,26 @@ + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ +- source=conftest.c object=conftest.o \ +- depfile=conftest.Po tmpdepfile=conftest.TPo \ +- $SHELL ./depcomp $depcc -c conftest.c -o conftest.o >/dev/null 2>&1 && +- grep conftest.h conftest.Po > /dev/null 2>&1 && ++ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ ++ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ ++ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ ++ >/dev/null 2>conftest.err && ++ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && ++ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && ++ grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then +- am_cv_CC_dependencies_compiler_type=$depmode +- break ++ # icc doesn't choke on unknown options, it will just issue warnings ++ # or remarks (even with -Werror). So we grep stderr for any message ++ # that says an option was ignored or not supported. ++ # When given -MP, icc 7.0 and 7.1 complain thusly: ++ # icc: Command line warning: ignoring option '-M'; no argument required ++ # The diagnosis changed in icc 8.0: ++ # icc: Command line remark: option '-MP' not supported ++ if (grep 'ignoring option' conftest.err || ++ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else ++ am_cv_CC_dependencies_compiler_type=$depmode ++ break ++ fi + fi + done + +@@ -2260,17 +3484,28 @@ + fi + + fi +-echo "$as_me:2263: result: $am_cv_CC_dependencies_compiler_type" >&5 +-echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 +-CCDEPMODE="depmode=$am_cv_CC_dependencies_compiler_type" ++{ echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 ++echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6; } ++CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type ++ ++ if ++ test "x$enable_dependency_tracking" != xno \ ++ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then ++ am__fastdepCC_TRUE= ++ am__fastdepCC_FALSE='#' ++else ++ am__fastdepCC_TRUE='#' ++ am__fastdepCC_FALSE= ++fi ++ + + ac_ext=c + ac_cpp='$CPP $CPPFLAGS' + ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' + ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' + ac_compiler_gnu=$ac_cv_c_compiler_gnu +-echo "$as_me:2272: checking how to run the C preprocessor" >&5 +-echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 ++echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; } + # On Suns, sometimes $CPP names a directory. + if test -n "$CPP" && test -d "$CPP"; then + CPP= +@@ -2287,73 +3522,87 @@ + do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. ++ # Prefer to if __STDC__ is defined, since ++ # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +-#line 2293 "configure" +-#include "confdefs.h" +-#include +- Syntax error ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ Syntax error + _ACEOF +-if { (eval echo "$as_me:2298: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? +- egrep -v '^ *\+' conftest.er1 >conftest.err ++ grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 +- echo "$as_me:2304: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + : + else + echo "$as_me: failed program was:" >&5 +- cat conftest.$ac_ext >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ + # Broken: fails on valid input. + continue + fi ++ + rm -f conftest.err conftest.$ac_ext + +- # OK, works on sane cases. Now check whether non-existent headers ++ # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +-#line 2327 "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + #include + _ACEOF +-if { (eval echo "$as_me:2331: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? +- egrep -v '^ *\+' conftest.er1 >conftest.err ++ grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 +- echo "$as_me:2337: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + # Broken: success on invalid input. + continue + else + echo "$as_me: failed program was:" >&5 +- cat conftest.$ac_ext >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ + # Passes both tests. + ac_preproc_ok=: + break + fi ++ + rm -f conftest.err conftest.$ac_ext + + done +@@ -2371,80 +3620,94 @@ + else + ac_cv_prog_CPP=$CPP + fi +-echo "$as_me:2374: result: $CPP" >&5 +-echo "${ECHO_T}$CPP" >&6 ++{ echo "$as_me:$LINENO: result: $CPP" >&5 ++echo "${ECHO_T}$CPP" >&6; } + ac_preproc_ok=false + for ac_c_preproc_warn_flag in '' yes + do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. ++ # Prefer to if __STDC__ is defined, since ++ # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +-#line 2384 "configure" +-#include "confdefs.h" +-#include +- Syntax error ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ Syntax error + _ACEOF +-if { (eval echo "$as_me:2389: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? +- egrep -v '^ *\+' conftest.er1 >conftest.err ++ grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 +- echo "$as_me:2395: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + : + else + echo "$as_me: failed program was:" >&5 +- cat conftest.$ac_ext >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ + # Broken: fails on valid input. + continue + fi ++ + rm -f conftest.err conftest.$ac_ext + +- # OK, works on sane cases. Now check whether non-existent headers ++ # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +-#line 2418 "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + #include + _ACEOF +-if { (eval echo "$as_me:2422: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? +- egrep -v '^ *\+' conftest.er1 >conftest.err ++ grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 +- echo "$as_me:2428: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + # Broken: success on invalid input. + continue + else + echo "$as_me: failed program was:" >&5 +- cat conftest.$ac_ext >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ + # Passes both tests. + ac_preproc_ok=: + break + fi ++ + rm -f conftest.err conftest.$ac_ext + + done +@@ -2453,8 +3716,10 @@ + if $ac_preproc_ok; then + : + else +- { { echo "$as_me:2456: error: C preprocessor \"$CPP\" fails sanity check" >&5 +-echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;} ++ { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check ++See \`config.log' for more details." >&5 ++echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check ++See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + fi + +@@ -2475,58 +3740,66 @@ + # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag + # AFS /usr/afsws/bin/install, which mishandles nonexistent args + # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" ++# OS/2's system install, which has a completely different semantic + # ./install, which can be erroneously created by make from ./install.sh. +-echo "$as_me:2479: checking for a BSD compatible install" >&5 +-echo $ECHO_N "checking for a BSD compatible install... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 ++echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; } + if test -z "$INSTALL"; then + if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- ac_save_IFS=$IFS; IFS=$ac_path_separator +- for ac_dir in $PATH; do +- IFS=$ac_save_IFS +- # Account for people who put trailing slashes in PATH elements. +- case $ac_dir/ in +- / | ./ | .// | /cC/* \ +- | /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* \ +- | /usr/ucb/* ) ;; +- *) +- # OSF1 and SCO ODT 3.0 have their own names for install. +- # Don't use installbsd from OSF since it installs stuff as root +- # by default. +- for ac_prog in ginstall scoinst install; do +- if $as_executable_p "$ac_dir/$ac_prog"; then ++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ # Account for people who put trailing slashes in PATH elements. ++case $as_dir/ in ++ ./ | .// | /cC/* | \ ++ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ++ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ ++ /usr/ucb/* ) ;; ++ *) ++ # OSF1 and SCO ODT 3.0 have their own names for install. ++ # Don't use installbsd from OSF since it installs stuff as root ++ # by default. ++ for ac_prog in ginstall scoinst install; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then + if test $ac_prog = install && +- grep dspmsg "$ac_dir/$ac_prog" >/dev/null 2>&1; then ++ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && +- grep pwplus "$ac_dir/$ac_prog" >/dev/null 2>&1; then ++ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else +- ac_cv_path_install="$ac_dir/$ac_prog -c" +- break 2 ++ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" ++ break 3 + fi + fi + done +- ;; +- esac +- done ++ done ++ ;; ++esac ++done ++IFS=$as_save_IFS ++ + + fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else +- # As a last resort, use the slow shell script. We don't cache a +- # path for INSTALL within a source directory, because that will ++ # As a last resort, use the slow shell script. Don't cache a ++ # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is +- # removed, or if the path is relative. ++ # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi + fi +-echo "$as_me:2528: result: $INSTALL" >&5 +-echo "${ECHO_T}$INSTALL" >&6 ++{ echo "$as_me:$LINENO: result: $INSTALL" >&5 ++echo "${ECHO_T}$INSTALL" >&6; } + + # Use test -z because SunOS4 sh mishandles braces in ${var-val}. + # It thinks the first close brace ends the variable substitution. +@@ -2536,201 +3809,453 @@ + + test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +-# Check whether --enable-shared or --disable-shared was given. ++# Check whether --enable-shared was given. + if test "${enable_shared+set}" = set; then +- enableval="$enable_shared" +- p=${PACKAGE-default} +-case $enableval in +-yes) enable_shared=yes ;; +-no) enable_shared=no ;; +-*) +- enable_shared=no +- # Look at the argument we got. We use all the common list separators. +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," +- for pkg in $enableval; do +- if test "X$pkg" = "X$p"; then +- enable_shared=yes +- fi +- done +- IFS="$ac_save_ifs" +- ;; +-esac ++ enableval=$enable_shared; p=${PACKAGE-default} ++ case $enableval in ++ yes) enable_shared=yes ;; ++ no) enable_shared=no ;; ++ *) ++ enable_shared=no ++ # Look at the argument we got. We use all the common list separators. ++ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," ++ for pkg in $enableval; do ++ IFS="$lt_save_ifs" ++ if test "X$pkg" = "X$p"; then ++ enable_shared=yes ++ fi ++ done ++ IFS="$lt_save_ifs" ++ ;; ++ esac + else + enable_shared=yes +-fi; +-# Check whether --enable-static or --disable-static was given. ++fi ++ ++ ++# Check whether --enable-static was given. + if test "${enable_static+set}" = set; then +- enableval="$enable_static" +- p=${PACKAGE-default} +-case $enableval in +-yes) enable_static=yes ;; +-no) enable_static=no ;; +-*) +- enable_static=no +- # Look at the argument we got. We use all the common list separators. +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," +- for pkg in $enableval; do +- if test "X$pkg" = "X$p"; then +- enable_static=yes +- fi +- done +- IFS="$ac_save_ifs" +- ;; +-esac ++ enableval=$enable_static; p=${PACKAGE-default} ++ case $enableval in ++ yes) enable_static=yes ;; ++ no) enable_static=no ;; ++ *) ++ enable_static=no ++ # Look at the argument we got. We use all the common list separators. ++ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," ++ for pkg in $enableval; do ++ IFS="$lt_save_ifs" ++ if test "X$pkg" = "X$p"; then ++ enable_static=yes ++ fi ++ done ++ IFS="$lt_save_ifs" ++ ;; ++ esac + else + enable_static=yes +-fi; +-# Check whether --enable-fast-install or --disable-fast-install was given. ++fi ++ ++ ++# Check whether --enable-fast-install was given. + if test "${enable_fast_install+set}" = set; then +- enableval="$enable_fast_install" +- p=${PACKAGE-default} +-case $enableval in +-yes) enable_fast_install=yes ;; +-no) enable_fast_install=no ;; +-*) +- enable_fast_install=no +- # Look at the argument we got. We use all the common list separators. +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," +- for pkg in $enableval; do +- if test "X$pkg" = "X$p"; then +- enable_fast_install=yes +- fi +- done +- IFS="$ac_save_ifs" +- ;; +-esac ++ enableval=$enable_fast_install; p=${PACKAGE-default} ++ case $enableval in ++ yes) enable_fast_install=yes ;; ++ no) enable_fast_install=no ;; ++ *) ++ enable_fast_install=no ++ # Look at the argument we got. We use all the common list separators. ++ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," ++ for pkg in $enableval; do ++ IFS="$lt_save_ifs" ++ if test "X$pkg" = "X$p"; then ++ enable_fast_install=yes ++ fi ++ done ++ IFS="$lt_save_ifs" ++ ;; ++ esac + else + enable_fast_install=yes +-fi; ++fi ++ ++ + # Make sure we can run config.sub. +-$ac_config_sub sun4 >/dev/null 2>&1 || +- { { echo "$as_me:2607: error: cannot run $ac_config_sub" >&5 +-echo "$as_me: error: cannot run $ac_config_sub" >&2;} ++$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || ++ { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 ++echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} + { (exit 1); exit 1; }; } + +-echo "$as_me:2611: checking build system type" >&5 +-echo $ECHO_N "checking build system type... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking build system type" >&5 ++echo $ECHO_N "checking build system type... $ECHO_C" >&6; } + if test "${ac_cv_build+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- ac_cv_build_alias=$build_alias +-test -z "$ac_cv_build_alias" && +- ac_cv_build_alias=`$ac_config_guess` +-test -z "$ac_cv_build_alias" && +- { { echo "$as_me:2620: error: cannot guess build type; you must specify one" >&5 ++ ac_build_alias=$build_alias ++test "x$ac_build_alias" = x && ++ ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` ++test "x$ac_build_alias" = x && ++ { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 + echo "$as_me: error: cannot guess build type; you must specify one" >&2;} + { (exit 1); exit 1; }; } +-ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || +- { { echo "$as_me:2624: error: $ac_config_sub $ac_cv_build_alias failed." >&5 +-echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed." >&2;} ++ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || ++ { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 ++echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} + { (exit 1); exit 1; }; } + + fi +-echo "$as_me:2629: result: $ac_cv_build" >&5 +-echo "${ECHO_T}$ac_cv_build" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5 ++echo "${ECHO_T}$ac_cv_build" >&6; } ++case $ac_cv_build in ++*-*-*) ;; ++*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 ++echo "$as_me: error: invalid value of canonical build" >&2;} ++ { (exit 1); exit 1; }; };; ++esac + build=$ac_cv_build +-build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +-build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +-build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` ++ac_save_IFS=$IFS; IFS='-' ++set x $ac_cv_build ++shift ++build_cpu=$1 ++build_vendor=$2 ++shift; shift ++# Remember, the first character of IFS is used to create $*, ++# except with old shells: ++build_os=$* ++IFS=$ac_save_IFS ++case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + +-echo "$as_me:2636: checking host system type" >&5 +-echo $ECHO_N "checking host system type... $ECHO_C" >&6 ++ ++{ echo "$as_me:$LINENO: checking host system type" >&5 ++echo $ECHO_N "checking host system type... $ECHO_C" >&6; } + if test "${ac_cv_host+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- ac_cv_host_alias=$host_alias +-test -z "$ac_cv_host_alias" && +- ac_cv_host_alias=$ac_cv_build_alias +-ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || +- { { echo "$as_me:2645: error: $ac_config_sub $ac_cv_host_alias failed" >&5 +-echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} ++ if test "x$host_alias" = x; then ++ ac_cv_host=$ac_cv_build ++else ++ ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || ++ { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 ++echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} + { (exit 1); exit 1; }; } ++fi + + fi +-echo "$as_me:2650: result: $ac_cv_host" >&5 +-echo "${ECHO_T}$ac_cv_host" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5 ++echo "${ECHO_T}$ac_cv_host" >&6; } ++case $ac_cv_host in ++*-*-*) ;; ++*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 ++echo "$as_me: error: invalid value of canonical host" >&2;} ++ { (exit 1); exit 1; }; };; ++esac + host=$ac_cv_host +-host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +-host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +-host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` +- +-# Find the correct PATH separator. Usually this is `:', but +-# DJGPP uses `;' like DOS. +-if test "X${PATH_SEPARATOR+set}" != Xset; then +- UNAME=${UNAME-`uname 2>/dev/null`} +- case X$UNAME in +- *-DOS) lt_cv_sys_path_separator=';' ;; +- *) lt_cv_sys_path_separator=':' ;; +- esac +- PATH_SEPARATOR=$lt_cv_sys_path_separator ++ac_save_IFS=$IFS; IFS='-' ++set x $ac_cv_host ++shift ++host_cpu=$1 ++host_vendor=$2 ++shift; shift ++# Remember, the first character of IFS is used to create $*, ++# except with old shells: ++host_os=$* ++IFS=$ac_save_IFS ++case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac ++ ++ ++{ echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 ++echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6; } ++if test "${lt_cv_path_SED+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ # Loop through the user's path and test for sed and gsed. ++# Then use that list of sed's as ones to test for truncation. ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for lt_ac_prog in sed gsed; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$lt_ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$lt_ac_prog$ac_exec_ext"; }; then ++ lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" ++ fi ++ done ++ done ++done ++IFS=$as_save_IFS ++lt_ac_max=0 ++lt_ac_count=0 ++# Add /usr/xpg4/bin/sed as it is typically found on Solaris ++# along with /bin/sed that truncates output. ++for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do ++ test ! -f $lt_ac_sed && continue ++ cat /dev/null > conftest.in ++ lt_ac_count=0 ++ echo $ECHO_N "0123456789$ECHO_C" >conftest.in ++ # Check for GNU sed and select it if it is found. ++ if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then ++ lt_cv_path_SED=$lt_ac_sed ++ break ++ fi ++ while true; do ++ cat conftest.in conftest.in >conftest.tmp ++ mv conftest.tmp conftest.in ++ cp conftest.in conftest.nl ++ echo >>conftest.nl ++ $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break ++ cmp -s conftest.out conftest.nl || break ++ # 10000 chars as input seems more than enough ++ test $lt_ac_count -gt 10 && break ++ lt_ac_count=`expr $lt_ac_count + 1` ++ if test $lt_ac_count -gt $lt_ac_max; then ++ lt_ac_max=$lt_ac_count ++ lt_cv_path_SED=$lt_ac_sed ++ fi ++ done ++done ++ + fi + +-# Check whether --with-gnu-ld or --without-gnu-ld was given. +-if test "${with_gnu_ld+set}" = set; then +- withval="$with_gnu_ld" +- test "$withval" = no || with_gnu_ld=yes ++SED=$lt_cv_path_SED ++ ++{ echo "$as_me:$LINENO: result: $SED" >&5 ++echo "${ECHO_T}$SED" >&6; } ++ ++{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 ++echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; } ++if test "${ac_cv_path_GREP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- with_gnu_ld=no +-fi; +-ac_prog=ld +-if test "$GCC" = yes; then +- # Check if gcc -print-prog-name=ld gives a path. +- echo "$as_me:2678: checking for ld used by GCC" >&5 +-echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6 +- case $host in +- *-*-mingw*) +- # gcc leaves a trailing carriage return which upsets mingw +- ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; +- *) +- ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; +- esac +- case $ac_prog in +- # Accept absolute paths. +- [\\/]* | [A-Za-z]:[\\/]*) +- re_direlt='/[^/][^/]*/\.\./' +- # Canonicalize the path of ld +- ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` +- while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do +- ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` +- done +- test -z "$LD" && LD="$ac_prog" +- ;; +- "") +- # If it fails, then pretend we aren't using GCC. +- ac_prog=ld +- ;; +- *) +- # If it is relative, then search for the first ld in PATH. +- with_gnu_ld=unknown ++ # Extract the first word of "grep ggrep" to use in msg output ++if test -z "$GREP"; then ++set dummy grep ggrep; ac_prog_name=$2 ++if test "${ac_cv_path_GREP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_path_GREP_found=false ++# Loop through the user's path and test for each of PROGNAME-LIST ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_prog in grep ggrep; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" ++ { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue ++ # Check for GNU ac_path_GREP and select it if it is found. ++ # Check for GNU $ac_path_GREP ++case `"$ac_path_GREP" --version 2>&1` in ++*GNU*) ++ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; ++*) ++ ac_count=0 ++ echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" ++ while : ++ do ++ cat "conftest.in" "conftest.in" >"conftest.tmp" ++ mv "conftest.tmp" "conftest.in" ++ cp "conftest.in" "conftest.nl" ++ echo 'GREP' >> "conftest.nl" ++ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break ++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ++ ac_count=`expr $ac_count + 1` ++ if test $ac_count -gt ${ac_path_GREP_max-0}; then ++ # Best one so far, save it but keep looking for a better one ++ ac_cv_path_GREP="$ac_path_GREP" ++ ac_path_GREP_max=$ac_count ++ fi ++ # 10*(2^10) chars as input seems more than enough ++ test $ac_count -gt 10 && break ++ done ++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;; ++esac ++ ++ ++ $ac_path_GREP_found && break 3 ++ done ++done ++ ++done ++IFS=$as_save_IFS ++ ++ ++fi ++ ++GREP="$ac_cv_path_GREP" ++if test -z "$GREP"; then ++ { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 ++echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} ++ { (exit 1); exit 1; }; } ++fi ++ ++else ++ ac_cv_path_GREP=$GREP ++fi ++ ++ ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 ++echo "${ECHO_T}$ac_cv_path_GREP" >&6; } ++ GREP="$ac_cv_path_GREP" ++ ++ ++{ echo "$as_me:$LINENO: checking for egrep" >&5 ++echo $ECHO_N "checking for egrep... $ECHO_C" >&6; } ++if test "${ac_cv_path_EGREP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 ++ then ac_cv_path_EGREP="$GREP -E" ++ else ++ # Extract the first word of "egrep" to use in msg output ++if test -z "$EGREP"; then ++set dummy egrep; ac_prog_name=$2 ++if test "${ac_cv_path_EGREP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_path_EGREP_found=false ++# Loop through the user's path and test for each of PROGNAME-LIST ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_prog in egrep; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" ++ { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue ++ # Check for GNU ac_path_EGREP and select it if it is found. ++ # Check for GNU $ac_path_EGREP ++case `"$ac_path_EGREP" --version 2>&1` in ++*GNU*) ++ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; ++*) ++ ac_count=0 ++ echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" ++ while : ++ do ++ cat "conftest.in" "conftest.in" >"conftest.tmp" ++ mv "conftest.tmp" "conftest.in" ++ cp "conftest.in" "conftest.nl" ++ echo 'EGREP' >> "conftest.nl" ++ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break ++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ++ ac_count=`expr $ac_count + 1` ++ if test $ac_count -gt ${ac_path_EGREP_max-0}; then ++ # Best one so far, save it but keep looking for a better one ++ ac_cv_path_EGREP="$ac_path_EGREP" ++ ac_path_EGREP_max=$ac_count ++ fi ++ # 10*(2^10) chars as input seems more than enough ++ test $ac_count -gt 10 && break ++ done ++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;; ++esac ++ ++ ++ $ac_path_EGREP_found && break 3 ++ done ++done ++ ++done ++IFS=$as_save_IFS ++ ++ ++fi ++ ++EGREP="$ac_cv_path_EGREP" ++if test -z "$EGREP"; then ++ { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 ++echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} ++ { (exit 1); exit 1; }; } ++fi ++ ++else ++ ac_cv_path_EGREP=$EGREP ++fi ++ ++ ++ fi ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 ++echo "${ECHO_T}$ac_cv_path_EGREP" >&6; } ++ EGREP="$ac_cv_path_EGREP" ++ ++ ++ ++# Check whether --with-gnu-ld was given. ++if test "${with_gnu_ld+set}" = set; then ++ withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes ++else ++ with_gnu_ld=no ++fi ++ ++ac_prog=ld ++if test "$GCC" = yes; then ++ # Check if gcc -print-prog-name=ld gives a path. ++ { echo "$as_me:$LINENO: checking for ld used by $CC" >&5 ++echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6; } ++ case $host in ++ *-*-mingw*) ++ # gcc leaves a trailing carriage return which upsets mingw ++ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; ++ *) ++ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; ++ esac ++ case $ac_prog in ++ # Accept absolute paths. ++ [\\/]* | ?:[\\/]*) ++ re_direlt='/[^/][^/]*/\.\./' ++ # Canonicalize the pathname of ld ++ ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` ++ while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ++ ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` ++ done ++ test -z "$LD" && LD="$ac_prog" ++ ;; ++ "") ++ # If it fails, then pretend we aren't using GCC. ++ ac_prog=ld ++ ;; ++ *) ++ # If it is relative, then search for the first ld in PATH. ++ with_gnu_ld=unknown + ;; + esac + elif test "$with_gnu_ld" = yes; then +- echo "$as_me:2708: checking for GNU ld" >&5 +-echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for GNU ld" >&5 ++echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; } + else +- echo "$as_me:2711: checking for non-GNU ld" >&5 +-echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for non-GNU ld" >&5 ++echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; } + fi + if test "${lt_cv_path_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + if test -z "$LD"; then +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do ++ IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, +- # but apparently some GNU ld's only accept -v. ++ # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. +- if "$lt_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then ++ case `"$lt_cv_path_LD" -v 2>&1 &5 +-echo "${ECHO_T}$LD" >&6 ++ { echo "$as_me:$LINENO: result: $LD" >&5 ++echo "${ECHO_T}$LD" >&6; } + else +- echo "$as_me:2744: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi +-test -z "$LD" && { { echo "$as_me:2747: error: no acceptable ld found in \$PATH" >&5 ++test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 + echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} + { (exit 1); exit 1; }; } +-echo "$as_me:2750: checking if the linker ($LD) is GNU ld" >&5 +-echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 ++echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; } + if test "${lt_cv_prog_gnu_ld+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- # I'd rather use --version here, but apparently some GNU ld's only accept -v. +-if $LD -v 2>&1 &5; then ++ # I'd rather use --version here, but apparently some GNU lds only accept -v. ++case `$LD -v 2>&1 &5 +-echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 ++{ echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5 ++echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; } + with_gnu_ld=$lt_cv_prog_gnu_ld + +-echo "$as_me:2766: checking for $LD option to reload object files" >&5 +-echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6 ++ ++{ echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 ++echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6; } + if test "${lt_cv_ld_reload_flag+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + lt_cv_ld_reload_flag='-r' + fi +-echo "$as_me:2773: result: $lt_cv_ld_reload_flag" >&5 +-echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6 ++{ echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 ++echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6; } + reload_flag=$lt_cv_ld_reload_flag +-test -n "$reload_flag" && reload_flag=" $reload_flag" ++case $reload_flag in ++"" | " "*) ;; ++*) reload_flag=" $reload_flag" ;; ++esac ++reload_cmds='$LD$reload_flag -o $output$reload_objs' ++case $host_os in ++ darwin*) ++ if test "$GCC" = yes; then ++ reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' ++ else ++ reload_cmds='$LD$reload_flag -o $output$reload_objs' ++ fi ++ ;; ++esac + +-echo "$as_me:2778: checking for BSD-compatible nm" >&5 +-echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 ++echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6; } + if test "${lt_cv_path_NM+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -2784,49 +4326,63 @@ + # Let the user override the test. + lt_cv_path_NM="$NM" + else +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +- for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do +- test -z "$ac_dir" && ac_dir=. +- tmp_nm=$ac_dir/${ac_tool_prefix}nm +- if test -f $tmp_nm || test -f $tmp_nm$ac_exeext ; then +- # Check to see if the nm accepts a BSD-compat flag. +- # Adding the `sed 1q' prevents false positives on HP-UX, which says: +- # nm: unknown option "B" ignored +- # Tru64's nm complains that /dev/null is an invalid object file +- if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then +- lt_cv_path_NM="$tmp_nm -B" +- break +- elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then +- lt_cv_path_NM="$tmp_nm -p" +- break +- else +- lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but +- continue # so that we can try to find one that supports BSD flags ++ lt_nm_to_check="${ac_tool_prefix}nm" ++ if test -n "$ac_tool_prefix" && test "$build" = "$host"; then ++ lt_nm_to_check="$lt_nm_to_check nm" ++ fi ++ for lt_tmp_nm in $lt_nm_to_check; do ++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ++ for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do ++ IFS="$lt_save_ifs" ++ test -z "$ac_dir" && ac_dir=. ++ tmp_nm="$ac_dir/$lt_tmp_nm" ++ if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then ++ # Check to see if the nm accepts a BSD-compat flag. ++ # Adding the `sed 1q' prevents false positives on HP-UX, which says: ++ # nm: unknown option "B" ignored ++ # Tru64's nm complains that /dev/null is an invalid object file ++ case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in ++ */dev/null* | *'Invalid file or object type'*) ++ lt_cv_path_NM="$tmp_nm -B" ++ break ++ ;; ++ *) ++ case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in ++ */dev/null*) ++ lt_cv_path_NM="$tmp_nm -p" ++ break ++ ;; ++ *) ++ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but ++ continue # so that we can try to find one that supports BSD flags ++ ;; ++ esac ++ ;; ++ esac + fi +- fi ++ done ++ IFS="$lt_save_ifs" + done +- IFS="$ac_save_ifs" + test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm + fi + fi +- ++{ echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5 ++echo "${ECHO_T}$lt_cv_path_NM" >&6; } + NM="$lt_cv_path_NM" +-echo "$as_me:2814: result: $NM" >&5 +-echo "${ECHO_T}$NM" >&6 + +-echo "$as_me:2817: checking whether ln -s works" >&5 +-echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether ln -s works" >&5 ++echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6; } + LN_S=$as_ln_s + if test "$LN_S" = "ln -s"; then +- echo "$as_me:2821: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + else +- echo "$as_me:2824: result: no, using $LN_S" >&5 +-echo "${ECHO_T}no, using $LN_S" >&6 ++ { echo "$as_me:$LINENO: result: no, using $LN_S" >&5 ++echo "${ECHO_T}no, using $LN_S" >&6; } + fi + +-echo "$as_me:2828: checking how to recognise dependant libraries" >&5 +-echo $ECHO_N "checking how to recognise dependant libraries... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking how to recognize dependent libraries" >&5 ++echo $ECHO_N "checking how to recognize dependent libraries... $ECHO_C" >&6; } + if test "${lt_cv_deplibs_check_method+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -2840,7 +4396,7 @@ + # 'pass_all' -- all dependencies passed with no checks. + # 'test_compile' -- check by making test program. + # 'file_magic [[regex]]' -- check by looking for files in library path +-# which responds to the $file_magic_cmd with a given egrep regex. ++# which responds to the $file_magic_cmd with a given extended regex. + # If you have `file' or equivalent on your system and you're not sure + # whether `pass_all' will *always* work, you probably want this one. + +@@ -2853,37 +4409,42 @@ + lt_cv_deplibs_check_method=pass_all + ;; + +-bsdi4*) ++bsdi[45]*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +-cygwin* | mingw* | pw32*) +- lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' +- lt_cv_file_magic_cmd='$OBJDUMP -f' ++cygwin*) ++ # func_win32_libid is a shell function defined in ltmain.sh ++ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' ++ lt_cv_file_magic_cmd='func_win32_libid' ++ ;; ++ ++mingw* | pw32*) ++ # Base MSYS/MinGW do not provide the 'file' command needed by ++ # func_win32_libid shell function, so use a weaker test based on 'objdump', ++ # unless we find 'file', for example because we are cross-compiling. ++ if ( file / ) >/dev/null 2>&1; then ++ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' ++ lt_cv_file_magic_cmd='func_win32_libid' ++ else ++ lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' ++ lt_cv_file_magic_cmd='$OBJDUMP -f' ++ fi + ;; + + darwin* | rhapsody*) +- lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library' +- lt_cv_file_magic_cmd='/usr/bin/file -L' +- case "$host_os" in +- rhapsody* | darwin1.[012]) +- lt_cv_file_magic_test_file=`echo /System/Library/Frameworks/System.framework/Versions/*/System | head -1` +- ;; +- *) # Darwin 1.3 on +- lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib' +- ;; +- esac ++ lt_cv_deplibs_check_method=pass_all + ;; + +-freebsd*) ++freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. +- lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[3-9]86 (compact )?demand paged shared library' ++ lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; +@@ -2897,50 +4458,49 @@ + lt_cv_deplibs_check_method=pass_all + ;; + +-hpux10.20*|hpux11*) +- lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' ++hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file +- lt_cv_file_magic_test_file=/usr/lib/libc.sl +- ;; +- +-irix5* | irix6*) +- case $host_os in +- irix5*) +- # this will be overridden with pass_all, but let us keep it just in case +- lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" ++ case $host_cpu in ++ ia64*) ++ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' ++ lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ++ ;; ++ hppa*64*) ++ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]' ++ lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) +- case $LD in +- *-32|*"-32 ") libmagic=32-bit;; +- *-n32|*"-n32 ") libmagic=N32;; +- *-64|*"-64 ") libmagic=64-bit;; +- *) libmagic=never-match;; +- esac +- # this will be overridden with pass_all, but let us keep it just in case +- lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[1234] dynamic lib MIPS - version 1" ++ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' ++ lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac +- lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*` ++ ;; ++ ++interix[3-9]*) ++ # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here ++ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' ++ ;; ++ ++irix5* | irix6* | nonstopux*) ++ case $LD in ++ *-32|*"-32 ") libmagic=32-bit;; ++ *-n32|*"-n32 ") libmagic=N32;; ++ *-64|*"-64 ") libmagic=64-bit;; ++ *) libmagic=never-match;; ++ esac + lt_cv_deplibs_check_method=pass_all + ;; + + # This must be Linux ELF. +-linux-gnu*) +- case $host_cpu in +- alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* ) +- lt_cv_deplibs_check_method=pass_all ;; +- *) +- # glibc up to 2.1.1 does not perform some relocations on ARM +- lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; +- esac +- lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` ++linux* | k*bsd*-gnu) ++ lt_cv_deplibs_check_method=pass_all + ;; + +-netbsd*) ++netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then +- lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' ++ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + else +- lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so$' ++ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' + fi + ;; + +@@ -2950,37 +4510,31 @@ + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + ++nto-qnx*) ++ lt_cv_deplibs_check_method=unknown ++ ;; ++ + openbsd*) +- lt_cv_file_magic_cmd=/usr/bin/file +- lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +- lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object' ++ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' + else +- lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library' ++ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + fi + ;; + + osf3* | osf4* | osf5*) +- # this will be overridden with pass_all, but let us keep it just in case +- lt_cv_deplibs_check_method='file_magic COFF format alpha shared library' +- lt_cv_file_magic_test_file=/shlib/libc.so + lt_cv_deplibs_check_method=pass_all + ;; + +-sco3.2v5*) ++rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + + solaris*) + lt_cv_deplibs_check_method=pass_all +- lt_cv_file_magic_test_file=/lib/libc.so +- ;; +- +-sysv5uw[78]* | sysv4*uw2*) +- lt_cv_deplibs_check_method=pass_all + ;; + +-sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) ++sysv4 | sysv4.3*) + case $host_vendor in + motorola) + 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]' +@@ -2998,2003 +4552,13375 @@ + lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; ++ siemens) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ pc) ++ lt_cv_deplibs_check_method=pass_all ++ ;; + esac + ;; ++ ++sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; + esac + + fi +-echo "$as_me:3006: result: $lt_cv_deplibs_check_method" >&5 +-echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6 ++{ echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 ++echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6; } + file_magic_cmd=$lt_cv_file_magic_cmd + deplibs_check_method=$lt_cv_deplibs_check_method ++test -z "$deplibs_check_method" && deplibs_check_method=unknown + +-# Check for command to grab the raw symbol name followed by C symbol from nm. +-echo "$as_me:3012: checking command to parse $NM output" >&5 +-echo $ECHO_N "checking command to parse $NM output... $ECHO_C" >&6 +-if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- +-# These are sane defaults that work on at least a few old systems. +-# [They come from Ultrix. What could be older than Ultrix?!! ;)] +- +-# Character class describing NM global symbol codes. +-symcode='[BCDEGRST]' + +-# Regexp to match symbols that can be accessed directly from C. +-sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +-# Transform the above into a raw symbol and a C symbol. +-symxfrm='\1 \2\3 \3' + +-# Transform an extracted symbol line into a proper C declaration +-lt_cv_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'" ++# If no C compiler was specified, use CC. ++LTCC=${LTCC-"$CC"} + +-# Transform an extracted symbol line into symbol name and symbol address +-lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" ++# If no C compiler flags were specified, use CFLAGS. ++LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +-# Define system-specific variables. +-case $host_os in +-aix*) +- symcode='[BCDT]' +- ;; +-cygwin* | mingw* | pw32*) +- symcode='[ABCDGISTW]' +- ;; +-hpux*) # Its linker distinguishes data from code symbols +- lt_cv_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" +- lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" +- ;; +-irix*) +- symcode='[BCDEGRST]' +- ;; +-solaris* | sysv5*) +- symcode='[BDT]' +- ;; +-sysv4) +- symcode='[DFNSTU]' +- ;; +-esac ++# Allow CC to be a program name with arguments. ++compiler=$CC + +-# Handle CRLF in mingw tool chain +-opt_cr= +-case $host_os in +-mingw*) +- opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp +- ;; +-esac + +-# If we're using GNU nm, then use its standard symbol codes. +-if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then +- symcode='[ABCDGISTW]' ++# Check whether --enable-libtool-lock was given. ++if test "${enable_libtool_lock+set}" = set; then ++ enableval=$enable_libtool_lock; + fi + +-# Try without a prefix undercore, then with it. +-for ac_symprfx in "" "_"; do +- +- # Write the raw and C identifiers. +-lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'" +- +- # Check to see that the pipe works correctly. +- pipe_works=no +- rm -f conftest* +- cat > conftest.$ac_ext <&5 ++# Some flags need to be propagated to the compiler or linker for good ++# libtool support. ++case $host in ++ia64-*-hpux*) ++ # Find out which ABI we are using. ++ echo 'int i;' > conftest.$ac_ext ++ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? +- echo "$as_me:3096: \$? = $ac_status" >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then +- # Now try to grab the symbols. +- nlist=conftest.nm +- if { (eval echo "$as_me:3100: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 +- (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 ++ case `/usr/bin/file conftest.$ac_objext` in ++ *ELF-32*) ++ HPUX_IA64_MODE="32" ++ ;; ++ *ELF-64*) ++ HPUX_IA64_MODE="64" ++ ;; ++ esac ++ fi ++ rm -rf conftest* ++ ;; ++*-*-irix6*) ++ # Find out which ABI we are using. ++ echo '#line 4620 "configure"' > conftest.$ac_ext ++ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ++ (eval $ac_compile) 2>&5 + ac_status=$? +- echo "$as_me:3103: \$? = $ac_status" >&5 +- (exit $ac_status); } && test -s "$nlist"; then +- # Try sorting and uniquifying the output. +- if sort "$nlist" | uniq > "$nlist"T; then +- mv -f "$nlist"T "$nlist" +- else +- rm -f "$nlist"T +- fi +- +- # Make sure that we snagged all the symbols we need. +- if egrep ' nm_test_var$' "$nlist" >/dev/null; then +- if egrep ' nm_test_func$' "$nlist" >/dev/null; then +- cat < conftest.$ac_ext +-#ifdef __cplusplus +-extern "C" { +-#endif ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; then ++ if test "$lt_cv_prog_gnu_ld" = yes; then ++ case `/usr/bin/file conftest.$ac_objext` in ++ *32-bit*) ++ LD="${LD-ld} -melf32bsmip" ++ ;; ++ *N32*) ++ LD="${LD-ld} -melf32bmipn32" ++ ;; ++ *64-bit*) ++ LD="${LD-ld} -melf64bmip" ++ ;; ++ esac ++ else ++ case `/usr/bin/file conftest.$ac_objext` in ++ *32-bit*) ++ LD="${LD-ld} -32" ++ ;; ++ *N32*) ++ LD="${LD-ld} -n32" ++ ;; ++ *64-bit*) ++ LD="${LD-ld} -64" ++ ;; ++ esac ++ fi ++ fi ++ rm -rf conftest* ++ ;; + +-EOF +- # Now generate the symbol file. +- eval "$lt_cv_global_symbol_to_cdecl"' < "$nlist" >> conftest.$ac_ext' ++x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ ++s390*-*linux*|sparc*-*linux*) ++ # Find out which ABI we are using. ++ echo 'int i;' > conftest.$ac_ext ++ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ++ (eval $ac_compile) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; then ++ case `/usr/bin/file conftest.o` in ++ *32-bit*) ++ case $host in ++ x86_64-*kfreebsd*-gnu) ++ LD="${LD-ld} -m elf_i386_fbsd" ++ ;; ++ x86_64-*linux*) ++ LD="${LD-ld} -m elf_i386" ++ ;; ++ ppc64-*linux*|powerpc64-*linux*) ++ LD="${LD-ld} -m elf32ppclinux" ++ ;; ++ s390x-*linux*) ++ LD="${LD-ld} -m elf_s390" ++ ;; ++ sparc64-*linux*) ++ LD="${LD-ld} -m elf32_sparc" ++ ;; ++ esac ++ ;; ++ *64-bit*) ++ case $host in ++ x86_64-*kfreebsd*-gnu) ++ LD="${LD-ld} -m elf_x86_64_fbsd" ++ ;; ++ x86_64-*linux*) ++ LD="${LD-ld} -m elf_x86_64" ++ ;; ++ ppc*-*linux*|powerpc*-*linux*) ++ LD="${LD-ld} -m elf64ppc" ++ ;; ++ s390*-*linux*) ++ LD="${LD-ld} -m elf64_s390" ++ ;; ++ sparc*-*linux*) ++ LD="${LD-ld} -m elf64_sparc" ++ ;; ++ esac ++ ;; ++ esac ++ fi ++ rm -rf conftest* ++ ;; + +- cat <> conftest.$ac_ext +-#if defined (__STDC__) && __STDC__ +-# define lt_ptr void * +-#else +-# define lt_ptr char * +-# define const +-#endif ++*-*-sco3.2v5*) ++ # On SCO OpenServer 5, we need -belf to get full-featured binaries. ++ SAVE_CFLAGS="$CFLAGS" ++ CFLAGS="$CFLAGS -belf" ++ { echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 ++echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6; } ++if test "${lt_cv_cc_needs_belf+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_ext=c ++ac_cpp='$CPP $CPPFLAGS' ++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_c_compiler_gnu + +-/* The mapping between symbol names and symbols. */ +-const struct { +- const char *name; +- lt_ptr address; +-} +-lt_preloaded_symbols[] = ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++int ++main () + { +-EOF +- sed "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr) \&\2},/" < "$nlist" >> conftest.$ac_ext +- cat <<\EOF >> conftest.$ac_ext +- {0, (lt_ptr) 0} +-}; + +-#ifdef __cplusplus ++ ; ++ return 0; + } +-#endif +-EOF +- # Now try linking the two files. +- mv conftest.$ac_objext conftstm.$ac_objext +- save_LIBS="$LIBS" +- save_CFLAGS="$CFLAGS" +- LIBS="conftstm.$ac_objext" +- CFLAGS="$CFLAGS$no_builtin_flag" +- if { (eval echo "$as_me:3155: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? +- echo "$as_me:3158: \$? = $ac_status" >&5 +- (exit $ac_status); } && test -s conftest; then +- pipe_works=yes +- fi +- LIBS="$save_LIBS" +- CFLAGS="$save_CFLAGS" +- else +- echo "cannot find nm_test_func in $nlist" >&5 +- fi +- else +- echo "cannot find nm_test_var in $nlist" >&5 +- fi +- else +- echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 +- fi +- else +- echo "$progname: failed program was:" >&5 +- cat conftest.$ac_ext >&5 +- fi +- rm -f conftest* conftst* +- +- # Do not use the global_symbol_pipe unless it works. +- if test "$pipe_works" = yes; then +- break +- else +- lt_cv_sys_global_symbol_pipe= +- fi +-done ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ lt_cv_cc_needs_belf=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + ++ lt_cv_cc_needs_belf=no + fi + +-global_symbol_pipe="$lt_cv_sys_global_symbol_pipe" +-if test -z "$lt_cv_sys_global_symbol_pipe"; then +- global_symbol_to_cdecl= +- global_symbol_to_c_name_address= +-else +- global_symbol_to_cdecl="$lt_cv_global_symbol_to_cdecl" +- global_symbol_to_c_name_address="$lt_cv_global_symbol_to_c_name_address" +-fi +-if test -z "$global_symbol_pipe$global_symbol_to_cdec$global_symbol_to_c_name_address"; +-then +- echo "$as_me:3199: result: failed" >&5 +-echo "${ECHO_T}failed" >&6 +-else +- echo "$as_me:3202: result: ok" >&5 +-echo "${ECHO_T}ok" >&6 ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++ ac_ext=c ++ac_cpp='$CPP $CPPFLAGS' ++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_c_compiler_gnu ++ + fi ++{ echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 ++echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6; } ++ if test x"$lt_cv_cc_needs_belf" != x"yes"; then ++ # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf ++ CFLAGS="$SAVE_CFLAGS" ++ fi ++ ;; ++sparc*-*solaris*) ++ # Find out which ABI we are using. ++ echo 'int i;' > conftest.$ac_ext ++ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ++ (eval $ac_compile) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; then ++ case `/usr/bin/file conftest.o` in ++ *64-bit*) ++ case $lt_cv_prog_gnu_ld in ++ yes*) LD="${LD-ld} -m elf64_sparc" ;; ++ *) LD="${LD-ld} -64" ;; ++ esac ++ ;; ++ esac ++ fi ++ rm -rf conftest* ++ ;; + +-for ac_header in dlfcn.h +-do +-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +-echo "$as_me:3209: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then ++ ++esac ++ ++need_locks="$enable_libtool_lock" ++ ++ ++ ++{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5 ++echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } ++if test "${ac_cv_header_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +-#line 3215 "configure" +-#include "confdefs.h" +-#include <$ac_header> ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++#include ++#include ++#include ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} + _ACEOF +-if { (eval echo "$as_me:3219: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? +- egrep -v '^ *\+' conftest.er1 >conftest.err ++ grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 +- echo "$as_me:3225: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then +- eval "$as_ac_Header=yes" ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_header_stdc=yes + else + echo "$as_me: failed program was:" >&5 +- cat conftest.$ac_ext >&5 +- eval "$as_ac_Header=no" +-fi +-rm -f conftest.err conftest.$ac_ext +-fi +-echo "$as_me:3244: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +-if test `eval echo '${'$as_ac_Header'}'` = yes; then +- cat >>confdefs.h <&5 + ++ ac_cv_header_stdc=no + fi +-done + +-# Only perform the check for file, if the check method requires it +-case $deplibs_check_method in +-file_magic*) +- if test "$file_magic_cmd" = '$MAGIC_CMD'; then +- echo "$as_me:3258: checking for ${ac_tool_prefix}file" >&5 +-echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6 +-if test "${lt_cv_path_MAGIC_CMD+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- case $MAGIC_CMD in +- /*) +- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. +- ;; +- ?:/*) +- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. +- ;; +- *) +- ac_save_MAGIC_CMD="$MAGIC_CMD" +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" +- ac_dummy="/usr/bin:$PATH" +- for ac_dir in $ac_dummy; do +- test -z "$ac_dir" && ac_dir=. +- if test -f $ac_dir/${ac_tool_prefix}file; then +- lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" +- if test -n "$file_magic_test_file"; then +- case $deplibs_check_method in +- "file_magic "*) +- file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" +- MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +- if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | +- egrep "$file_magic_regex" > /dev/null; then +- : +- else +- cat <&2 ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +-*** Warning: the command libtool uses to detect shared libraries, +-*** $file_magic_cmd, produces output that libtool cannot recognize. +-*** The result is that libtool may fail to recognize shared libraries +-*** as such. This will affect the creation of libtool libraries that +-*** depend on shared libraries, but programs linked with such libtool +-*** libraries will work regardless of this problem. Nevertheless, you +-*** may want to report the problem to your system manager and/or to +-*** bug-libtool@gnu.org ++if test $ac_cv_header_stdc = yes; then ++ # SunOS 4.x string.h does not declare mem*, contrary to ANSI. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include + +-EOF +- fi ;; +- esac +- fi +- break +- fi +- done +- IFS="$ac_save_ifs" +- MAGIC_CMD="$ac_save_MAGIC_CMD" +- ;; +-esac ++_ACEOF ++if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | ++ $EGREP "memchr" >/dev/null 2>&1; then ++ : ++else ++ ac_cv_header_stdc=no + fi ++rm -f conftest* + +-MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +-if test -n "$MAGIC_CMD"; then +- echo "$as_me:3313: result: $MAGIC_CMD" >&5 +-echo "${ECHO_T}$MAGIC_CMD" >&6 ++fi ++ ++if test $ac_cv_header_stdc = yes; then ++ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++ ++_ACEOF ++if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | ++ $EGREP "free" >/dev/null 2>&1; then ++ : + else +- echo "$as_me:3316: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ ac_cv_header_stdc=no + fi ++rm -f conftest* + +-if test -z "$lt_cv_path_MAGIC_CMD"; then +- if test -n "$ac_tool_prefix"; then +- echo "$as_me:3322: checking for file" >&5 +-echo $ECHO_N "checking for file... $ECHO_C" >&6 +-if test "${lt_cv_path_MAGIC_CMD+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 ++fi ++ ++if test $ac_cv_header_stdc = yes; then ++ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. ++ if test "$cross_compiling" = yes; then ++ : + else +- case $MAGIC_CMD in +- /*) +- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. +- ;; +- ?:/*) +- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. +- ;; +- *) +- ac_save_MAGIC_CMD="$MAGIC_CMD" +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" +- ac_dummy="/usr/bin:$PATH" +- for ac_dir in $ac_dummy; do +- test -z "$ac_dir" && ac_dir=. +- if test -f $ac_dir/file; then +- lt_cv_path_MAGIC_CMD="$ac_dir/file" +- if test -n "$file_magic_test_file"; then +- case $deplibs_check_method in +- "file_magic "*) +- file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" +- MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +- if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | +- egrep "$file_magic_regex" > /dev/null; then +- : +- else +- cat <&2 +- +-*** Warning: the command libtool uses to detect shared libraries, +-*** $file_magic_cmd, produces output that libtool cannot recognize. +-*** The result is that libtool may fail to recognize shared libraries +-*** as such. This will affect the creation of libtool libraries that +-*** depend on shared libraries, but programs linked with such libtool +-*** libraries will work regardless of this problem. Nevertheless, you +-*** may want to report the problem to your system manager and/or to +-*** bug-libtool@gnu.org ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++#include ++#if ((' ' & 0x0FF) == 0x020) ++# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') ++# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) ++#else ++# define ISLOWER(c) \ ++ (('a' <= (c) && (c) <= 'i') \ ++ || ('j' <= (c) && (c) <= 'r') \ ++ || ('s' <= (c) && (c) <= 'z')) ++# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) ++#endif + +-EOF +- fi ;; +- esac +- fi +- break +- fi +- done +- IFS="$ac_save_ifs" +- MAGIC_CMD="$ac_save_MAGIC_CMD" +- ;; ++#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) ++int ++main () ++{ ++ int i; ++ for (i = 0; i < 256; i++) ++ if (XOR (islower (i), ISLOWER (i)) ++ || toupper (i) != TOUPPER (i)) ++ return 2; ++ return 0; ++} ++_ACEOF ++rm -f conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ac_try='./conftest$ac_exeext' ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; + esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; }; then ++ : ++else ++ echo "$as_me: program exited with status $ac_status" >&5 ++echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++( exit $ac_status ) ++ac_cv_header_stdc=no ++fi ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + fi + +-MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +-if test -n "$MAGIC_CMD"; then +- echo "$as_me:3377: result: $MAGIC_CMD" >&5 +-echo "${ECHO_T}$MAGIC_CMD" >&6 +-else +- echo "$as_me:3380: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ ++fi + fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 ++echo "${ECHO_T}$ac_cv_header_stdc" >&6; } ++if test $ac_cv_header_stdc = yes; then ++ ++cat >>confdefs.h <<\_ACEOF ++#define STDC_HEADERS 1 ++_ACEOF + +- else +- MAGIC_CMD=: +- fi + fi + +- fi +- ;; +-esac ++# On IRIX 5.3, sys/types and inttypes.h are conflicting. + +-if test -n "$ac_tool_prefix"; then +- # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +-set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +-echo "$as_me:3396: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_RANLIB+set}" = set; then ++ ++ ++ ++ ++ ++ ++ ++ ++for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ ++ inttypes.h stdint.h unistd.h ++do ++as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` ++{ echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- if test -n "$RANLIB"; then +- ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default ++ ++#include <$ac_header> ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ eval "$as_ac_Header=yes" + else +- ac_save_IFS=$IFS; IFS=$ac_path_separator +-ac_dummy="$PATH" +-for ac_dir in $ac_dummy; do +- IFS=$ac_save_IFS +- test -z "$ac_dir" && ac_dir=. +- $as_executable_p "$ac_dir/$ac_word" || continue +-ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" +-echo "$as_me:3411: found $ac_dir/$ac_word" >&5 +-break +-done ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + ++ eval "$as_ac_Header=no" + fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-RANLIB=$ac_cv_prog_RANLIB +-if test -n "$RANLIB"; then +- echo "$as_me:3419: result: $RANLIB" >&5 +-echo "${ECHO_T}$RANLIB" >&6 +-else +- echo "$as_me:3422: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } ++if test `eval echo '${'$as_ac_Header'}'` = yes; then ++ cat >>confdefs.h <<_ACEOF ++#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 ++_ACEOF + + fi +-if test -z "$ac_cv_prog_RANLIB"; then +- ac_ct_RANLIB=$RANLIB +- # Extract the first word of "ranlib", so it can be a program name with args. +-set dummy ranlib; ac_word=$2 +-echo "$as_me:3431: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$ac_ct_RANLIB"; then +- ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +-else +- ac_save_IFS=$IFS; IFS=$ac_path_separator +-ac_dummy="$PATH" +-for ac_dir in $ac_dummy; do +- IFS=$ac_save_IFS +- test -z "$ac_dir" && ac_dir=. +- $as_executable_p "$ac_dir/$ac_word" || continue +-ac_cv_prog_ac_ct_RANLIB="ranlib" +-echo "$as_me:3446: found $ac_dir/$ac_word" >&5 +-break ++ + done + +- test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" ++ ++ ++for ac_header in dlfcn.h ++do ++as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ { echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 + fi ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } ++else ++ # Is the header compilable? ++{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 ++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default ++#include <$ac_header> ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_header_compiler=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_compiler=no + fi +-ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +-if test -n "$ac_ct_RANLIB"; then +- echo "$as_me:3455: result: $ac_ct_RANLIB" >&5 +-echo "${ECHO_T}$ac_ct_RANLIB" >&6 ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } ++ ++# Is the header present? ++{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 ++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include <$ac_header> ++_ACEOF ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ ac_header_preproc=yes + else +- echo "$as_me:3458: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_preproc=no + fi + +- RANLIB=$ac_ct_RANLIB ++rm -f conftest.err conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } ++ ++# So? What about this header? ++case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in ++ yes:no: ) ++ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 ++echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 ++echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ++ ac_header_preproc=yes ++ ;; ++ no:yes:* ) ++ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 ++echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 ++echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 ++echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 ++echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 ++echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 ++echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ++ ++ ;; ++esac ++{ echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- RANLIB="$ac_cv_prog_RANLIB" ++ eval "$as_ac_Header=\$ac_header_preproc" + fi ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + +-if test -n "$ac_tool_prefix"; then +- # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +-set dummy ${ac_tool_prefix}strip; ac_word=$2 +-echo "$as_me:3470: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_STRIP+set}" = set; then ++fi ++if test `eval echo '${'$as_ac_Header'}'` = yes; then ++ cat >>confdefs.h <<_ACEOF ++#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 ++_ACEOF ++ ++fi ++ ++done ++ ++ac_ext=cpp ++ac_cpp='$CXXCPP $CPPFLAGS' ++ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ++if test -z "$CXX"; then ++ if test -n "$CCC"; then ++ CXX=$CCC ++ else ++ if test -n "$ac_tool_prefix"; then ++ for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC ++ do ++ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. ++set dummy $ac_tool_prefix$ac_prog; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- if test -n "$STRIP"; then +- ac_cv_prog_STRIP="$STRIP" # Let the user override the test. ++ if test -n "$CXX"; then ++ ac_cv_prog_CXX="$CXX" # Let the user override the test. + else +- ac_save_IFS=$IFS; IFS=$ac_path_separator +-ac_dummy="$PATH" +-for ac_dir in $ac_dummy; do +- IFS=$ac_save_IFS +- test -z "$ac_dir" && ac_dir=. +- $as_executable_p "$ac_dir/$ac_word" || continue +-ac_cv_prog_STRIP="${ac_tool_prefix}strip" +-echo "$as_me:3485: found $ac_dir/$ac_word" >&5 +-break ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done + done ++IFS=$as_save_IFS + + fi + fi +-STRIP=$ac_cv_prog_STRIP +-if test -n "$STRIP"; then +- echo "$as_me:3493: result: $STRIP" >&5 +-echo "${ECHO_T}$STRIP" >&6 ++CXX=$ac_cv_prog_CXX ++if test -n "$CXX"; then ++ { echo "$as_me:$LINENO: result: $CXX" >&5 ++echo "${ECHO_T}$CXX" >&6; } + else +- echo "$as_me:3496: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ ++ test -n "$CXX" && break ++ done + fi +-if test -z "$ac_cv_prog_STRIP"; then +- ac_ct_STRIP=$STRIP +- # Extract the first word of "strip", so it can be a program name with args. +-set dummy strip; ac_word=$2 +-echo "$as_me:3505: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then ++if test -z "$CXX"; then ++ ac_ct_CXX=$CXX ++ for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC ++do ++ # Extract the first word of "$ac_prog", so it can be a program name with args. ++set dummy $ac_prog; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- if test -n "$ac_ct_STRIP"; then +- ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. ++ if test -n "$ac_ct_CXX"; then ++ ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. + else +- ac_save_IFS=$IFS; IFS=$ac_path_separator +-ac_dummy="$PATH" +-for ac_dir in $ac_dummy; do +- IFS=$ac_save_IFS +- test -z "$ac_dir" && ac_dir=. +- $as_executable_p "$ac_dir/$ac_word" || continue +-ac_cv_prog_ac_ct_STRIP="strip" +-echo "$as_me:3520: found $ac_dir/$ac_word" >&5 +-break ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_ac_ct_CXX="$ac_prog" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi + done ++done ++IFS=$as_save_IFS + +- test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" +-fi + fi +-ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +-if test -n "$ac_ct_STRIP"; then +- echo "$as_me:3529: result: $ac_ct_STRIP" >&5 +-echo "${ECHO_T}$ac_ct_STRIP" >&6 +-else +- echo "$as_me:3532: result: no" >&5 +-echo "${ECHO_T}no" >&6 + fi +- +- STRIP=$ac_ct_STRIP ++ac_ct_CXX=$ac_cv_prog_ac_ct_CXX ++if test -n "$ac_ct_CXX"; then ++ { echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 ++echo "${ECHO_T}$ac_ct_CXX" >&6; } + else +- STRIP="$ac_cv_prog_STRIP" ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +-enable_dlopen=no +-enable_win32_dll=no + +-# Check whether --enable-libtool-lock or --disable-libtool-lock was given. +-if test "${enable_libtool_lock+set}" = set; then +- enableval="$enable_libtool_lock" ++ test -n "$ac_ct_CXX" && break ++done + +-fi; +-test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes ++ if test "x$ac_ct_CXX" = x; then ++ CXX="g++" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ CXX=$ac_ct_CXX ++ fi ++fi + +-# Some flags need to be propagated to the compiler or linker for good +-# libtool support. +-case $host in +-*-*-irix6*) +- # Find out which ABI we are using. +- echo '#line 3556 "configure"' > conftest.$ac_ext +- if { (eval echo "$as_me:3557: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:3560: \$? = $ac_status" >&5 +- (exit $ac_status); }; then +- case `/usr/bin/file conftest.$ac_objext` in +- *32-bit*) +- LD="${LD-ld} -32" +- ;; +- *N32*) +- LD="${LD-ld} -n32" +- ;; +- *64-bit*) +- LD="${LD-ld} -64" +- ;; +- esac + fi +- rm -rf conftest* +- ;; ++fi ++# Provide some information about the compiler. ++echo "$as_me:$LINENO: checking for C++ compiler version" >&5 ++ac_compiler=`set X $ac_compile; echo $2` ++{ (ac_try="$ac_compiler --version >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler --version >&5") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } ++{ (ac_try="$ac_compiler -v >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler -v >&5") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } ++{ (ac_try="$ac_compiler -V >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler -V >&5") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } + +-*-*-sco3.2v5*) +- # On SCO OpenServer 5, we need -belf to get full-featured binaries. +- SAVE_CFLAGS="$CFLAGS" +- CFLAGS="$CFLAGS -belf" +- echo "$as_me:3581: checking whether the C compiler needs -belf" >&5 +-echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6 +-if test "${lt_cv_cc_needs_belf+set}" = set; then ++{ echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 ++echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6; } ++if test "${ac_cv_cxx_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- +- ac_ext=c +-ac_cpp='$CPP $CPPFLAGS' +-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +-ac_compiler_gnu=$ac_cv_c_compiler_gnu +- +- cat >conftest.$ac_ext <<_ACEOF +-#line 3594 "configure" +-#include "confdefs.h" ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + + int + main () + { ++#ifndef __GNUC__ ++ choke me ++#endif + + ; + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:3606: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:3609: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:3612: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? +- echo "$as_me:3615: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- lt_cv_cc_needs_belf=yes ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_cxx_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_compiler_gnu=yes + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-lt_cv_cc_needs_belf=no +-fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +- ac_ext=c +-ac_cpp='$CPP $CPPFLAGS' +-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +-ac_compiler_gnu=$ac_cv_c_compiler_gnu ++sed 's/^/| /' conftest.$ac_ext >&5 + ++ ac_compiler_gnu=no + fi +-echo "$as_me:3631: result: $lt_cv_cc_needs_belf" >&5 +-echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6 +- if test x"$lt_cv_cc_needs_belf" != x"yes"; then +- # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf +- CFLAGS="$SAVE_CFLAGS" +- fi +- ;; +- +-esac + +-# Sed substitution that helps us do robust quoting. It backslashifies +-# metacharacters that are still active within double-quoted strings. +-Xsed='sed -e s/^X//' +-sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +-# Same as above, but do not quote variable references. +-double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 ++echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6; } ++GXX=`test $ac_compiler_gnu = yes && echo yes` ++ac_test_CXXFLAGS=${CXXFLAGS+set} ++ac_save_CXXFLAGS=$CXXFLAGS ++{ echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 ++echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6; } ++if test "${ac_cv_prog_cxx_g+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_save_cxx_werror_flag=$ac_cxx_werror_flag ++ ac_cxx_werror_flag=yes ++ ac_cv_prog_cxx_g=no ++ CXXFLAGS="-g" ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + +-# Sed substitution to delay expansion of an escaped shell variable in a +-# double_quote_subst'ed string. +-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' ++int ++main () ++{ + +-# Constants: +-rm="rm -f" ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_cxx_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_prog_cxx_g=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +-# Global variables: +-default_ofile=libtool +-can_build_shared=yes ++ CXXFLAGS="" ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + +-# All known linkers require a `.a' archive for static linking (except M$VC, +-# which needs '.lib'). +-libext=a +-ltmain="$ac_aux_dir/ltmain.sh" +-ofile="$default_ofile" +-with_gnu_ld="$lt_cv_prog_gnu_ld" +-need_locks="$enable_libtool_lock" ++int ++main () ++{ + +-old_CC="$CC" +-old_CFLAGS="$CFLAGS" ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_cxx_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ : ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +-# Set sane defaults for various variables +-test -z "$AR" && AR=ar +-test -z "$AR_FLAGS" && AR_FLAGS=cru +-test -z "$AS" && AS=as +-test -z "$CC" && CC=cc +-test -z "$DLLTOOL" && DLLTOOL=dlltool +-test -z "$LD" && LD=ld +-test -z "$LN_S" && LN_S="ln -s" +-test -z "$MAGIC_CMD" && MAGIC_CMD=file +-test -z "$NM" && NM=nm +-test -z "$OBJDUMP" && OBJDUMP=objdump +-test -z "$RANLIB" && RANLIB=: +-test -z "$STRIP" && STRIP=: +-test -z "$ac_objext" && ac_objext=o ++ ac_cxx_werror_flag=$ac_save_cxx_werror_flag ++ CXXFLAGS="-g" ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + +-if test x"$host" != x"$build"; then +- ac_tool_prefix=${host_alias}- +-else +- ac_tool_prefix= +-fi ++int ++main () ++{ + +-# Transform linux* to *-*-linux-gnu*, to support old configure scripts. +-case $host_os in +-linux-gnu*) ;; +-linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; + esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_cxx_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_prog_cxx_g=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +-case $host_os in +-aix3*) +- # AIX sometimes has problems with the GCC collect2 program. For some +- # reason, if we set the COLLECT_NAMES environment variable, the problems +- # vanish in a puff of smoke. +- if test "X${COLLECT_NAMES+set}" != Xset; then +- COLLECT_NAMES= +- export COLLECT_NAMES +- fi +- ;; +-esac + +-# Determine commands to create old-style static archives. +-old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' +-old_postinstall_cmds='chmod 644 $oldlib' +-old_postuninstall_cmds= ++fi + +-if test -n "$RANLIB"; then +- case $host_os in +- openbsd*) +- old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" +- ;; +- *) +- old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" +- ;; +- esac +- old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + +-# Allow CC to be a program name with arguments. +-set dummy $CC +-compiler="$2" ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi + +-echo "$as_me:3731: checking for objdir" >&5 +-echo $ECHO_N "checking for objdir... $ECHO_C" >&6 +-rm -f .libs 2>/dev/null +-mkdir .libs 2>/dev/null +-if test -d .libs; then +- objdir=.libs ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ ac_cxx_werror_flag=$ac_save_cxx_werror_flag ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 ++echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6; } ++if test "$ac_test_CXXFLAGS" = set; then ++ CXXFLAGS=$ac_save_CXXFLAGS ++elif test $ac_cv_prog_cxx_g = yes; then ++ if test "$GXX" = yes; then ++ CXXFLAGS="-g -O2" ++ else ++ CXXFLAGS="-g" ++ fi + else +- # MS-DOS does not allow filenames that begin with a dot. +- objdir=_libs ++ if test "$GXX" = yes; then ++ CXXFLAGS="-O2" ++ else ++ CXXFLAGS= ++ fi + fi +-rmdir .libs 2>/dev/null +-echo "$as_me:3742: result: $objdir" >&5 +-echo "${ECHO_T}$objdir" >&6 ++ac_ext=cpp ++ac_cpp='$CXXCPP $CPPFLAGS' ++ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +-# Check whether --with-pic or --without-pic was given. +-if test "${with_pic+set}" = set; then +- withval="$with_pic" +- pic_mode="$withval" +-else +- pic_mode=default +-fi; +-test -z "$pic_mode" && pic_mode=default ++depcc="$CXX" am_compiler_list= + +-# We assume here that the value for lt_cv_prog_cc_pic will not be cached +-# in isolation, and that seeing it set (from the cache) indicates that +-# the associated values are set (in the cache) correctly too. +-echo "$as_me:3757: checking for $compiler option to produce PIC" >&5 +-echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 +-if test "${lt_cv_prog_cc_pic+set}" = set; then ++{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 ++echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; } ++if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- lt_cv_prog_cc_pic= +- lt_cv_prog_cc_shlib= +- lt_cv_prog_cc_wl= +- lt_cv_prog_cc_static= +- lt_cv_prog_cc_no_builtin= +- lt_cv_prog_cc_can_build_shared=$can_build_shared ++ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then ++ # We make a subdir and do the tests there. Otherwise we can end up ++ # making bogus files that we don't know about and never remove. For ++ # instance it was reported that on HP-UX the gcc test will end up ++ # making a dummy file named `D' -- because `-MD' means `put the output ++ # in D'. ++ mkdir conftest.dir ++ # Copy depcomp to subdir because otherwise we won't find it if we're ++ # using a relative directory. ++ cp "$am_depcomp" conftest.dir ++ cd conftest.dir ++ # We will build objects and dependencies in a subdirectory because ++ # it helps to detect inapplicable dependency modes. For instance ++ # both Tru64's cc and ICC support -MD to output dependencies as a ++ # side effect of compilation, but ICC will put the dependencies in ++ # the current directory while Tru64 will put them in the object ++ # directory. ++ mkdir sub + +- if test "$GCC" = yes; then +- lt_cv_prog_cc_wl='-Wl,' +- lt_cv_prog_cc_static='-static' ++ am_cv_CXX_dependencies_compiler_type=none ++ if test "$am_compiler_list" = ""; then ++ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` ++ fi ++ for depmode in $am_compiler_list; do ++ # Setup a source with many dependencies, because some compilers ++ # like to wrap large dependency lists on column 80 (with \), and ++ # we should not choose a depcomp mode which is confused by this. ++ # ++ # We need to recreate these files for each test, as the compiler may ++ # overwrite some of them when testing with obscure command lines. ++ # This happens at least with the AIX C compiler. ++ : > sub/conftest.c ++ for i in 1 2 3 4 5 6; do ++ echo '#include "conftst'$i'.h"' >> sub/conftest.c ++ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with ++ # Solaris 8's {/usr,}/bin/sh. ++ touch sub/conftst$i.h ++ done ++ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + +- case $host_os in +- aix*) +- # Below there is a dirty hack to force normal static linking with -ldl +- # The problem is because libdl dynamically linked with both libc and +- # libC (AIX C++ library), which obviously doesn't included in libraries +- # list by gcc. This cause undefined symbols with -static flags. +- # This hack allows C programs to be linked with "-static -ldl", but +- # not sure about C++ programs. +- lt_cv_prog_cc_static="$lt_cv_prog_cc_static ${lt_cv_prog_cc_wl}-lC" +- ;; +- amigaos*) +- # FIXME: we need at least 68020 code to build shared libraries, but +- # adding the `-m68020' flag to GCC prevents building anything better, +- # like `-m68040'. +- lt_cv_prog_cc_pic='-m68020 -resident32 -malways-restore-a4' +- ;; +- beos* | irix5* | irix6* | osf3* | osf4* | osf5*) +- # PIC is the default for these OSes. +- ;; +- darwin* | rhapsody*) +- # PIC is the default on this platform +- # Common symbols not allowed in MH_DYLIB files +- lt_cv_prog_cc_pic='-fno-common' +- ;; +- cygwin* | mingw* | pw32* | os2*) +- # This hack is so that the source file can tell whether it is being +- # built for inclusion in a dll (and should export symbols for example). +- lt_cv_prog_cc_pic='-DDLL_EXPORT' +- ;; +- sysv4*MP*) +- if test -d /usr/nec; then +- lt_cv_prog_cc_pic=-Kconform_pic +- fi +- ;; +- *) +- lt_cv_prog_cc_pic='-fPIC' ++ case $depmode in ++ nosideeffect) ++ # after this tag, mechanisms are not by side-effect, so they'll ++ # only be used when explicitly requested ++ if test "x$enable_dependency_tracking" = xyes; then ++ continue ++ else ++ break ++ fi + ;; ++ none) break ;; + esac +- else +- # PORTME Check for PIC flags for the system compiler. +- case $host_os in +- aix3* | aix4* | aix5*) +- lt_cv_prog_cc_wl='-Wl,' +- # All AIX code is PIC. +- if test "$host_cpu" = ia64; then +- # AIX 5 now supports IA64 processor +- lt_cv_prog_cc_static='-Bstatic' +- else +- lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp' ++ # We check with `-c' and `-o' for the sake of the "dashmstdout" ++ # mode. It turns out that the SunPro C++ compiler does not properly ++ # handle `-M -o', and we need to detect this. ++ if depmode=$depmode \ ++ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ ++ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ ++ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ ++ >/dev/null 2>conftest.err && ++ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && ++ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && ++ grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ++ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then ++ # icc doesn't choke on unknown options, it will just issue warnings ++ # or remarks (even with -Werror). So we grep stderr for any message ++ # that says an option was ignored or not supported. ++ # When given -MP, icc 7.0 and 7.1 complain thusly: ++ # icc: Command line warning: ignoring option '-M'; no argument required ++ # The diagnosis changed in icc 8.0: ++ # icc: Command line remark: option '-MP' not supported ++ if (grep 'ignoring option' conftest.err || ++ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else ++ am_cv_CXX_dependencies_compiler_type=$depmode ++ break + fi +- ;; ++ fi ++ done + +- hpux9* | hpux10* | hpux11*) +- # Is there a better lt_cv_prog_cc_static that works with the bundled CC? +- lt_cv_prog_cc_wl='-Wl,' +- lt_cv_prog_cc_static="${lt_cv_prog_cc_wl}-a ${lt_cv_prog_cc_wl}archive" +- lt_cv_prog_cc_pic='+Z' +- ;; ++ cd .. ++ rm -rf conftest.dir ++else ++ am_cv_CXX_dependencies_compiler_type=none ++fi + +- irix5* | irix6*) +- lt_cv_prog_cc_wl='-Wl,' +- lt_cv_prog_cc_static='-non_shared' +- # PIC (with -KPIC) is the default. +- ;; ++fi ++{ echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 ++echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6; } ++CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type + +- cygwin* | mingw* | pw32* | os2*) +- # This hack is so that the source file can tell whether it is being +- # built for inclusion in a dll (and should export symbols for example). +- lt_cv_prog_cc_pic='-DDLL_EXPORT' +- ;; ++ if ++ test "x$enable_dependency_tracking" != xno \ ++ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then ++ am__fastdepCXX_TRUE= ++ am__fastdepCXX_FALSE='#' ++else ++ am__fastdepCXX_TRUE='#' ++ am__fastdepCXX_FALSE= ++fi + +- newsos6) +- lt_cv_prog_cc_pic='-KPIC' +- lt_cv_prog_cc_static='-Bstatic' +- ;; + +- osf3* | osf4* | osf5*) +- # All OSF/1 code is PIC. +- lt_cv_prog_cc_wl='-Wl,' +- lt_cv_prog_cc_static='-non_shared' +- ;; + +- sco3.2v5*) +- lt_cv_prog_cc_pic='-Kpic' +- lt_cv_prog_cc_static='-dn' +- lt_cv_prog_cc_shlib='-belf' +- ;; + +- solaris*) +- lt_cv_prog_cc_pic='-KPIC' +- lt_cv_prog_cc_static='-Bstatic' +- lt_cv_prog_cc_wl='-Wl,' +- ;; ++if test -n "$CXX" && ( test "X$CXX" != "Xno" && ++ ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || ++ (test "X$CXX" != "Xg++"))) ; then ++ ac_ext=cpp ++ac_cpp='$CXXCPP $CPPFLAGS' ++ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ++{ echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 ++echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6; } ++if test -z "$CXXCPP"; then ++ if test "${ac_cv_prog_CXXCPP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ # Double quotes because CXXCPP needs to be expanded ++ for CXXCPP in "$CXX -E" "/lib/cpp" ++ do ++ ac_preproc_ok=false ++for ac_cxx_preproc_warn_flag in '' yes ++do ++ # Use a header file that comes with gcc, so configuring glibc ++ # with a fresh cross-compiler works. ++ # Prefer to if __STDC__ is defined, since ++ # exists even on freestanding compilers. ++ # On the NeXT, cc -E runs the code through the compiler's parser, ++ # not just through cpp. "Syntax error" is here to catch this case. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ Syntax error ++_ACEOF ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ : ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +- sunos4*) +- lt_cv_prog_cc_pic='-PIC' +- lt_cv_prog_cc_static='-Bstatic' +- lt_cv_prog_cc_wl='-Qoption ld ' +- ;; ++ # Broken: fails on valid input. ++continue ++fi + +- sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) +- lt_cv_prog_cc_pic='-KPIC' +- lt_cv_prog_cc_static='-Bstatic' +- if test "x$host_vendor" = xsni; then +- lt_cv_prog_cc_wl='-LD' +- else +- lt_cv_prog_cc_wl='-Wl,' +- fi +- ;; ++rm -f conftest.err conftest.$ac_ext + +- uts4*) +- lt_cv_prog_cc_pic='-pic' +- lt_cv_prog_cc_static='-Bstatic' +- ;; ++ # OK, works on sane cases. Now check whether nonexistent headers ++ # can be detected and how. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++_ACEOF ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ # Broken: success on invalid input. ++continue ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +- sysv4*MP*) +- if test -d /usr/nec ;then +- lt_cv_prog_cc_pic='-Kconform_pic' +- lt_cv_prog_cc_static='-Bstatic' +- fi +- ;; ++ # Passes both tests. ++ac_preproc_ok=: ++break ++fi + +- *) +- lt_cv_prog_cc_can_build_shared=no +- ;; +- esac +- fi ++rm -f conftest.err conftest.$ac_ext + ++done ++# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. ++rm -f conftest.err conftest.$ac_ext ++if $ac_preproc_ok; then ++ break + fi + +-if test -z "$lt_cv_prog_cc_pic"; then +- echo "$as_me:3904: result: none" >&5 +-echo "${ECHO_T}none" >&6 +-else +- echo "$as_me:3907: result: $lt_cv_prog_cc_pic" >&5 +-echo "${ECHO_T}$lt_cv_prog_cc_pic" >&6 ++ done ++ ac_cv_prog_CXXCPP=$CXXCPP + +- # Check to make sure the pic_flag actually works. +- echo "$as_me:3911: checking if $compiler PIC flag $lt_cv_prog_cc_pic works" >&5 +-echo $ECHO_N "checking if $compiler PIC flag $lt_cv_prog_cc_pic works... $ECHO_C" >&6 +- if test "${lt_cv_prog_cc_pic_works+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 ++fi ++ CXXCPP=$ac_cv_prog_CXXCPP + else +- save_CFLAGS="$CFLAGS" +- CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC" +- cat >conftest.$ac_ext <<_ACEOF +-#line 3919 "configure" +-#include "confdefs.h" ++ ac_cv_prog_CXXCPP=$CXXCPP ++fi ++{ echo "$as_me:$LINENO: result: $CXXCPP" >&5 ++echo "${ECHO_T}$CXXCPP" >&6; } ++ac_preproc_ok=false ++for ac_cxx_preproc_warn_flag in '' yes ++do ++ # Use a header file that comes with gcc, so configuring glibc ++ # with a fresh cross-compiler works. ++ # Prefer to if __STDC__ is defined, since ++ # exists even on freestanding compilers. ++ # On the NeXT, cc -E runs the code through the compiler's parser, ++ # not just through cpp. "Syntax error" is here to catch this case. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ Syntax error ++_ACEOF ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ : ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +-int +-main () +-{ ++ # Broken: fails on valid input. ++continue ++fi + +- ; +- return 0; +-} ++rm -f conftest.err conftest.$ac_ext ++ ++ # OK, works on sane cases. Now check whether nonexistent headers ++ # can be detected and how. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ + _ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:3931: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:3934: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:3937: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++_ACEOF ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? +- echo "$as_me:3940: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- case $host_os in +- hpux9* | hpux10* | hpux11*) +- # On HP-UX, both CC and GCC only warn that PIC is supported... then +- # they create non-PIC objects. So, if there were any warnings, we +- # assume that PIC is not supported. +- if test -s conftest.err; then +- lt_cv_prog_cc_pic_works=no +- else +- lt_cv_prog_cc_pic_works=yes +- fi +- ;; +- *) +- lt_cv_prog_cc_pic_works=yes +- ;; +- esac +- ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ # Broken: success on invalid input. ++continue + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +- lt_cv_prog_cc_pic_works=no ++sed 's/^/| /' conftest.$ac_ext >&5 + ++ # Passes both tests. ++ac_preproc_ok=: ++break + fi +-rm -f conftest.$ac_objext conftest.$ac_ext +- CFLAGS="$save_CFLAGS" + ++rm -f conftest.err conftest.$ac_ext ++ ++done ++# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. ++rm -f conftest.err conftest.$ac_ext ++if $ac_preproc_ok; then ++ : ++else ++ { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check ++See \`config.log' for more details." >&5 ++echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check ++See \`config.log' for more details." >&2;} ++ { (exit 1); exit 1; }; } + fi + +- if test "X$lt_cv_prog_cc_pic_works" = Xno; then +- lt_cv_prog_cc_pic= +- lt_cv_prog_cc_can_build_shared=no +- else +- lt_cv_prog_cc_pic=" $lt_cv_prog_cc_pic" +- fi ++ac_ext=cpp ++ac_cpp='$CXXCPP $CPPFLAGS' ++ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +- echo "$as_me:3976: result: $lt_cv_prog_cc_pic_works" >&5 +-echo "${ECHO_T}$lt_cv_prog_cc_pic_works" >&6 + fi + +-# Check for any special shared library compilation flags. +-if test -n "$lt_cv_prog_cc_shlib"; then +- { echo "$as_me:3982: WARNING: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries" >&5 +-echo "$as_me: WARNING: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries" >&2;} +- if echo "$old_CC $old_CFLAGS " | egrep -e "[ ]$lt_cv_prog_cc_shlib[ ]" >/dev/null; then : +- else +- { echo "$as_me:3986: WARNING: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5 +-echo "$as_me: WARNING: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;} +- lt_cv_prog_cc_can_build_shared=no +- fi +-fi + +-echo "$as_me:3992: checking if $compiler static flag $lt_cv_prog_cc_static works" >&5 +-echo $ECHO_N "checking if $compiler static flag $lt_cv_prog_cc_static works... $ECHO_C" >&6 +-if test "${lt_cv_prog_cc_static_works+set}" = set; then ++ac_ext=f ++ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ++ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_f77_compiler_gnu ++if test -n "$ac_tool_prefix"; then ++ for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn ++ do ++ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. ++set dummy $ac_tool_prefix$ac_prog; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- lt_cv_prog_cc_static_works=no +- save_LDFLAGS="$LDFLAGS" +- LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static" +- cat >conftest.$ac_ext <<_ACEOF +-#line 4001 "configure" +-#include "confdefs.h" +- +-int +-main () +-{ +- +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:4013: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:4016: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:4019: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:4022: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- lt_cv_prog_cc_static_works=yes ++ if test -n "$F77"; then ++ ac_cv_prog_F77="$F77" # Let the user override the test. + else +- echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +- LDFLAGS="$save_LDFLAGS" ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_F77="$ac_tool_prefix$ac_prog" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS + + fi ++fi ++F77=$ac_cv_prog_F77 ++if test -n "$F77"; then ++ { echo "$as_me:$LINENO: result: $F77" >&5 ++echo "${ECHO_T}$F77" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi + +-# Belt *and* braces to stop my trousers falling down: +-test "X$lt_cv_prog_cc_static_works" = Xno && lt_cv_prog_cc_static= +-echo "$as_me:4036: result: $lt_cv_prog_cc_static_works" >&5 +-echo "${ECHO_T}$lt_cv_prog_cc_static_works" >&6 +- +-pic_flag="$lt_cv_prog_cc_pic" +-special_shlib_compile_flags="$lt_cv_prog_cc_shlib" +-wl="$lt_cv_prog_cc_wl" +-link_static_flag="$lt_cv_prog_cc_static" +-no_builtin_flag="$lt_cv_prog_cc_no_builtin" +-can_build_shared="$lt_cv_prog_cc_can_build_shared" + +-# Check to see if options -o and -c are simultaneously supported by compiler +-echo "$as_me:4047: checking if $compiler supports -c -o file.$ac_objext" >&5 +-echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 +-if test "${lt_cv_compiler_c_o+set}" = set; then ++ test -n "$F77" && break ++ done ++fi ++if test -z "$F77"; then ++ ac_ct_F77=$F77 ++ for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn ++do ++ # Extract the first word of "$ac_prog", so it can be a program name with args. ++set dummy $ac_prog; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_ac_ct_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- +-$rm -r conftest 2>/dev/null +-mkdir conftest +-cd conftest +-echo "int some_variable = 0;" > conftest.$ac_ext +-mkdir out +-# According to Tom Tromey, Ian Lance Taylor reported there are C compilers +-# that will create temporary files in the current directory regardless of +-# the output directory. Thus, making CWD read-only will cause this test +-# to fail, enabling locking or at least warning the user not to do parallel +-# builds. +-chmod -w . +-save_CFLAGS="$CFLAGS" +-CFLAGS="$CFLAGS -o out/conftest2.$ac_objext" +-compiler_c_o=no +-if { (eval echo configure:4067: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then +- # The compiler can only warn and ignore the option if not recognized +- # So say no if there are warnings +- if test -s out/conftest.err; then +- lt_cv_compiler_c_o=no +- else +- lt_cv_compiler_c_o=yes ++ if test -n "$ac_ct_F77"; then ++ ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_ac_ct_F77="$ac_prog" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 + fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_F77=$ac_cv_prog_ac_ct_F77 ++if test -n "$ac_ct_F77"; then ++ { echo "$as_me:$LINENO: result: $ac_ct_F77" >&5 ++echo "${ECHO_T}$ac_ct_F77" >&6; } + else +- # Append any errors to the config.log. +- cat out/conftest.err 1>&5 +- lt_cv_compiler_c_o=no ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi +-CFLAGS="$save_CFLAGS" +-chmod u+w . +-$rm conftest* out/* +-rmdir out +-cd .. +-rmdir conftest +-$rm -r conftest 2>/dev/null + +-fi + +-compiler_c_o=$lt_cv_compiler_c_o +-echo "$as_me:4091: result: $compiler_c_o" >&5 +-echo "${ECHO_T}$compiler_c_o" >&6 ++ test -n "$ac_ct_F77" && break ++done + +-if test x"$compiler_c_o" = x"yes"; then +- # Check to see if we can write to a .lo +- echo "$as_me:4096: checking if $compiler supports -c -o file.lo" >&5 +-echo $ECHO_N "checking if $compiler supports -c -o file.lo... $ECHO_C" >&6 +- if test "${lt_cv_compiler_o_lo+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else ++ if test "x$ac_ct_F77" = x; then ++ F77="" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ F77=$ac_ct_F77 ++ fi ++fi + +- lt_cv_compiler_o_lo=no +- save_CFLAGS="$CFLAGS" +- CFLAGS="$CFLAGS -c -o conftest.lo" +- save_objext="$ac_objext" +- ac_objext=lo +- cat >conftest.$ac_ext <<_ACEOF +-#line 4108 "configure" +-#include "confdefs.h" + +-int +-main () +-{ +-int some_variable = 0; +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:4120: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 ++# Provide some information about the compiler. ++echo "$as_me:$LINENO: checking for Fortran 77 compiler version" >&5 ++ac_compiler=`set X $ac_compile; echo $2` ++{ (ac_try="$ac_compiler --version >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler --version >&5") 2>&5 + ac_status=$? +- echo "$as_me:4123: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:4126: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } ++{ (ac_try="$ac_compiler -v >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler -v >&5") 2>&5 + ac_status=$? +- echo "$as_me:4129: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- # The compiler can only warn and ignore the option if not recognized +- # So say no if there are warnings +- if test -s conftest.err; then +- lt_cv_compiler_o_lo=no +- else +- lt_cv_compiler_o_lo=yes +- fi ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } ++{ (ac_try="$ac_compiler -V >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler -V >&5") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } ++rm -f a.out ++ ++# If we don't use `.F' as extension, the preprocessor is not run on the ++# input file. (Note that this only needs to work for GNU compilers.) ++ac_save_ext=$ac_ext ++ac_ext=F ++{ echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5 ++echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6; } ++if test "${ac_cv_f77_compiler_gnu+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++ program main ++#ifndef __GNUC__ ++ choke me ++#endif + ++ end ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_f77_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_compiler_gnu=yes + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-fi +-rm -f conftest.$ac_objext conftest.$ac_ext +- ac_objext="$save_objext" +- CFLAGS="$save_CFLAGS" ++sed 's/^/| /' conftest.$ac_ext >&5 + ++ ac_compiler_gnu=no + fi + +- compiler_o_lo=$lt_cv_compiler_o_lo +- echo "$as_me:4150: result: $compiler_o_lo" >&5 +-echo "${ECHO_T}$compiler_o_lo" >&6 +-else +- compiler_o_lo=no +-fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ac_cv_f77_compiler_gnu=$ac_compiler_gnu + +-# Check to see if we can do hard links to lock some files if needed +-hard_links="nottested" +-if test "$compiler_c_o" = no && test "$need_locks" != no; then +- # do not overwrite the value of need_locks provided by the user +- echo "$as_me:4160: checking if we can lock with hard links" >&5 +-echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 +- hard_links=yes +- $rm conftest* +- ln conftest.a conftest.b 2>/dev/null && hard_links=no +- touch conftest.a +- ln conftest.a conftest.b 2>&5 || hard_links=no +- ln conftest.a conftest.b 2>/dev/null && hard_links=no +- echo "$as_me:4168: result: $hard_links" >&5 +-echo "${ECHO_T}$hard_links" >&6 +- if test "$hard_links" = no; then +- { echo "$as_me:4171: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +-echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} +- need_locks=warn +- fi +-else +- need_locks=no + fi ++{ echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5 ++echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6; } ++ac_ext=$ac_save_ext ++ac_test_FFLAGS=${FFLAGS+set} ++ac_save_FFLAGS=$FFLAGS ++FFLAGS= ++{ echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5 ++echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6; } ++if test "${ac_cv_prog_f77_g+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ FFLAGS=-g ++cat >conftest.$ac_ext <<_ACEOF ++ program main + +-if test "$GCC" = yes; then +- # Check to see if options -fno-rtti -fno-exceptions are supported by compiler +- echo "$as_me:4181: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +-echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 +- echo "int some_variable = 0;" > conftest.$ac_ext +- save_CFLAGS="$CFLAGS" +- CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext" +- compiler_rtti_exceptions=no +- cat >conftest.$ac_ext <<_ACEOF +-#line 4188 "configure" +-#include "confdefs.h" +- +-int +-main () +-{ +-int some_variable = 0; +- ; +- return 0; +-} ++ end + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:4200: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:4203: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:4206: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? +- echo "$as_me:4209: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- # The compiler can only warn and ignore the option if not recognized +- # So say no if there are warnings +- if test -s conftest.err; then +- compiler_rtti_exceptions=no +- else +- compiler_rtti_exceptions=yes +- fi +- ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_f77_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_prog_f77_g=yes + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_prog_f77_g=no + fi +-rm -f conftest.$ac_objext conftest.$ac_ext +- CFLAGS="$save_CFLAGS" +- echo "$as_me:4225: result: $compiler_rtti_exceptions" >&5 +-echo "${ECHO_T}$compiler_rtti_exceptions" >&6 + +- if test "$compiler_rtti_exceptions" = "yes"; then +- no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions' ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5 ++echo "${ECHO_T}$ac_cv_prog_f77_g" >&6; } ++if test "$ac_test_FFLAGS" = set; then ++ FFLAGS=$ac_save_FFLAGS ++elif test $ac_cv_prog_f77_g = yes; then ++ if test "x$ac_cv_f77_compiler_gnu" = xyes; then ++ FFLAGS="-g -O2" ++ else ++ FFLAGS="-g" ++ fi ++else ++ if test "x$ac_cv_f77_compiler_gnu" = xyes; then ++ FFLAGS="-O2" + else +- no_builtin_flag=' -fno-builtin' ++ FFLAGS= + fi + fi + +-# See if the linker supports building shared libraries. +-echo "$as_me:4236: checking whether the linker ($LD) supports shared libraries" >&5 +-echo $ECHO_N "checking whether the linker ($LD) supports shared libraries... $ECHO_C" >&6 +- +-allow_undefined_flag= +-no_undefined_flag= +-need_lib_prefix=unknown +-need_version=unknown +-# when you set need_version to no, make sure it does not cause -set_version +-# flags to be left without arguments +-archive_cmds= +-archive_expsym_cmds= +-old_archive_from_new_cmds= +-old_archive_from_expsyms_cmds= +-export_dynamic_flag_spec= +-whole_archive_flag_spec= +-thread_safe_flag_spec= +-hardcode_into_libs=no +-hardcode_libdir_flag_spec= +-hardcode_libdir_separator= +-hardcode_direct=no +-hardcode_minus_L=no +-hardcode_shlibpath_var=unsupported +-runpath_var= +-link_all_deplibs=unknown +-always_export_symbols=no +-export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols' +-# include_expsyms should be a list of space-separated symbols to be *always* +-# included in the symbol list +-include_expsyms= +-# exclude_expsyms can be an egrep regular expression of symbols to exclude +-# it will be wrapped by ` (' and `)$', so one must not match beginning or +-# end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', +-# as well as any symbol that contains `d'. +-exclude_expsyms="_GLOBAL_OFFSET_TABLE_" +-# Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out +-# platforms (ab)use it in PIC code, but their linkers get confused if +-# the symbol is explicitly referenced. Since portable code cannot +-# rely on this symbol name, it's probably fine to never include it in +-# preloaded symbol tables. +-extract_expsyms_cmds= ++G77=`test $ac_compiler_gnu = yes && echo yes` ++ac_ext=c ++ac_cpp='$CPP $CPPFLAGS' ++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_c_compiler_gnu + +-case $host_os in +-cygwin* | mingw* | pw32*) +- # FIXME: the MSVC++ port hasn't been tested in a loooong time +- # When not using gcc, we currently assume that we are using +- # Microsoft Visual C++. +- if test "$GCC" != yes; then +- with_gnu_ld=no +- fi +- ;; +-openbsd*) +- with_gnu_ld=no +- ;; +-esac + +-ld_shlibs=yes +-if test "$with_gnu_ld" = yes; then +- # If archive_cmds runs LD, not CC, wlarc should be empty +- wlarc='${wl}' + +- # See if GNU ld supports shared libraries. +- case $host_os in +- aix3* | aix4* | aix5*) +- # On AIX, the GNU linker is very broken +- # Note:Check GNU linker on AIX 5-IA64 when/if it becomes available. +- ld_shlibs=no +- cat <&2 ++# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! + +-*** Warning: the GNU linker, at least up to release 2.9.1, is reported +-*** to be unable to reliably create shared libraries on AIX. +-*** Therefore, libtool is disabling shared libraries support. If you +-*** really care for shared libraries, you may want to modify your PATH +-*** so that a non-GNU linker is found, and then restart. ++# find the maximum length of command line arguments ++{ echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 ++echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6; } ++if test "${lt_cv_sys_max_cmd_len+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ i=0 ++ teststring="ABCD" + +-EOF ++ case $build_os in ++ msdosdjgpp*) ++ # On DJGPP, this test can blow up pretty badly due to problems in libc ++ # (any single argument exceeding 2000 bytes causes a buffer overrun ++ # during glob expansion). Even if it were fixed, the result of this ++ # check would be larger than it should be. ++ lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + +- amigaos*) +- 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)' +- hardcode_libdir_flag_spec='-L$libdir' +- hardcode_minus_L=yes +- +- # Samuel A. Falvo II reports +- # that the semantics of dynamic libraries on AmigaOS, at least up +- # to version 4, is to share data among multiple programs linked +- # with the same dynamic library. Since this doesn't match the +- # behavior of shared libraries on other platforms, we can use +- # them. +- ld_shlibs=no ++ gnu*) ++ # Under GNU Hurd, this test is not required because there is ++ # no limit to the length of command line arguments. ++ # Libtool will interpret -1 as no limit whatsoever ++ lt_cv_sys_max_cmd_len=-1; + ;; + +- beos*) +- if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then +- allow_undefined_flag=unsupported +- # Joseph Beckenbach says some releases of gcc +- # support --undefined. This deserves some investigation. FIXME +- archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- else +- ld_shlibs=no +- fi ++ cygwin* | mingw*) ++ # On Win9x/ME, this test blows up -- it succeeds, but takes ++ # about 5 minutes as the teststring grows exponentially. ++ # Worse, since 9x/ME are not pre-emptively multitasking, ++ # you end up with a "frozen" computer, even though with patience ++ # the test eventually succeeds (with a max line length of 256k). ++ # Instead, let's just punt: use the minimum linelength reported by ++ # all of the supported platforms: 8192 (on NT/2K/XP). ++ lt_cv_sys_max_cmd_len=8192; + ;; + +- cygwin* | mingw* | pw32*) +- # hardcode_libdir_flag_spec is actually meaningless, as there is +- # no search path for DLLs. +- hardcode_libdir_flag_spec='-L$libdir' +- allow_undefined_flag=unsupported +- always_export_symbols=yes +- +- extract_expsyms_cmds='test -f $output_objdir/impgen.c || \ +- sed -e "/^# \/\* impgen\.c starts here \*\//,/^# \/\* impgen.c ends here \*\// { s/^# //;s/^# *$//; p; }" -e d < $''0 > $output_objdir/impgen.c~ +- test -f $output_objdir/impgen.exe || (cd $output_objdir && \ +- if test "x$HOST_CC" != "x" ; then $HOST_CC -o impgen impgen.c ; \ +- else $CC -o impgen impgen.c ; fi)~ +- $output_objdir/impgen $dir/$soroot > $output_objdir/$soname-def' +- +- old_archive_from_expsyms_cmds='$DLLTOOL --as=$AS --dllname $soname --def $output_objdir/$soname-def --output-lib $output_objdir/$newlib' +- +- # cygwin and mingw dlls have different entry points and sets of symbols +- # to exclude. +- # FIXME: what about values for MSVC? +- dll_entry=__cygwin_dll_entry@12 +- dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12~ +- case $host_os in +- mingw*) +- # mingw values +- dll_entry=_DllMainCRTStartup@12 +- dll_exclude_symbols=DllMain@12,DllMainCRTStartup@12,DllEntryPoint@12~ +- ;; +- esac ++ amigaos*) ++ # On AmigaOS with pdksh, this test takes hours, literally. ++ # So we just punt and use a minimum line length of 8192. ++ lt_cv_sys_max_cmd_len=8192; ++ ;; + +- # mingw and cygwin differ, and it's simplest to just exclude the union +- # of the two symbol sets. +- dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12,DllMainCRTStartup@12,DllEntryPoint@12 +- +- # recent cygwin and mingw systems supply a stub DllMain which the user +- # can override, but on older systems we have to supply one (in ltdll.c) +- if test "x$lt_cv_need_dllmain" = "xyes"; then +- ltdll_obj='$output_objdir/$soname-ltdll.'"$ac_objext " +- ltdll_cmds='test -f $output_objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $''0 > $output_objdir/$soname-ltdll.c~ +- test -f $output_objdir/$soname-ltdll.$ac_objext || (cd $output_objdir && $CC -c $soname-ltdll.c)~' ++ netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) ++ # This has been around since 386BSD, at least. Likely further. ++ if test -x /sbin/sysctl; then ++ lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` ++ elif test -x /usr/sbin/sysctl; then ++ lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else +- ltdll_obj= +- ltdll_cmds= ++ lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi ++ # And add a safety zone ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ++ ;; + +- # Extract the symbol export list from an `--export-all' def file, +- # then regenerate the def file from the symbol export list, so that +- # the compiled dll only exports the symbol export list. +- # Be careful not to strip the DATA tag left be newer dlltools. +- export_symbols_cmds="$ltdll_cmds"' +- $DLLTOOL --export-all --exclude-symbols '$dll_exclude_symbols' --output-def $output_objdir/$soname-def '$ltdll_obj'$libobjs $convenience~ +- sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]*//" -e "s/ *;.*$//" < $output_objdir/$soname-def > $export_symbols' +- +- # If the export-symbols file already is a .def file (1st line +- # is EXPORTS), use it as is. +- # If DATA tags from a recent dlltool are present, honour them! +- archive_expsym_cmds='if test "x`head -1 $export_symbols`" = xEXPORTS; then +- cp $export_symbols $output_objdir/$soname-def; +- else +- echo EXPORTS > $output_objdir/$soname-def; +- _lt_hint=1; +- cat $export_symbols | while read symbol; do +- set dummy \$symbol; +- case \$# in +- 2) echo " \$2 @ \$_lt_hint ; " >> $output_objdir/$soname-def;; +- *) echo " \$2 @ \$_lt_hint \$3 ; " >> $output_objdir/$soname-def;; +- esac; +- _lt_hint=`expr 1 + \$_lt_hint`; +- done; +- fi~ +- '"$ltdll_cmds"' +- $CC -Wl,--base-file,$output_objdir/$soname-base '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ +- $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp~ +- $CC -Wl,--base-file,$output_objdir/$soname-base $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ +- $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp --output-lib $output_objdir/$libname.dll.a~ +- $CC $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags' ++ interix*) ++ # We know the value 262144 and hardcode it with a safety zone (like BSD) ++ lt_cv_sys_max_cmd_len=196608 + ;; + +- netbsd*) +- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then +- archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' +- wlarc= +- else +- archive_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- archive_expsym_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ osf*) ++ # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure ++ # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not ++ # nice to cause kernel panics so lets avoid the loop below. ++ # First set a reasonable default. ++ lt_cv_sys_max_cmd_len=16384 ++ # ++ if test -x /sbin/sysconfig; then ++ case `/sbin/sysconfig -q proc exec_disable_arg_limit` in ++ *1*) lt_cv_sys_max_cmd_len=-1 ;; ++ esac + fi + ;; +- +- solaris* | sysv5*) +- if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then +- ld_shlibs=no +- cat <&2 +- +-*** Warning: The releases 2.8.* of the GNU linker cannot reliably +-*** create shared libraries on Solaris systems. Therefore, libtool +-*** is disabling shared libraries support. We urge you to upgrade GNU +-*** binutils to release 2.9.1 or newer. Another option is to modify +-*** your PATH or compiler configuration so that the native linker is +-*** used, and then restart. +- +-EOF +- elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then +- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ sco3.2v5*) ++ lt_cv_sys_max_cmd_len=102400 ++ ;; ++ sysv5* | sco5v6* | sysv4.2uw2*) ++ kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` ++ if test -n "$kargmax"; then ++ lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` + else +- ld_shlibs=no ++ lt_cv_sys_max_cmd_len=32768 + fi + ;; +- +- sunos4*) +- archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' +- wlarc= +- hardcode_direct=yes +- hardcode_shlibpath_var=no +- ;; +- + *) +- if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then +- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` ++ if test -n "$lt_cv_sys_max_cmd_len"; then ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else +- ld_shlibs=no ++ SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} ++ while (test "X"`$SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \ ++ = "XX$teststring") >/dev/null 2>&1 && ++ new_result=`expr "X$teststring" : ".*" 2>&1` && ++ lt_cv_sys_max_cmd_len=$new_result && ++ test $i != 17 # 1/2 MB should be enough ++ do ++ i=`expr $i + 1` ++ teststring=$teststring$teststring ++ done ++ teststring= ++ # Add a significant safety factor because C++ compilers can tack on massive ++ # amounts of additional arguments before passing them to the linker. ++ # It appears as though 1/2 is a usable value. ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac + +- if test "$ld_shlibs" = yes; then +- runpath_var=LD_RUN_PATH +- hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' +- export_dynamic_flag_spec='${wl}--export-dynamic' +- case $host_os in +- cygwin* | mingw* | pw32*) +- # dlltool doesn't understand --whole-archive et. al. +- whole_archive_flag_spec= +- ;; +- *) +- # ancient GNU ld didn't support --whole-archive et. al. +- if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then +- whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' +- else +- whole_archive_flag_spec= +- fi +- ;; +- esac +- fi ++fi ++ ++if test -n $lt_cv_sys_max_cmd_len ; then ++ { echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 ++echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6; } + else +- # PORTME fill in a description of your system's linker (not GNU ld) +- case $host_os in +- aix3*) +- allow_undefined_flag=unsupported +- always_export_symbols=yes +- 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' +- # Note: this linker hardcodes the directories in LIBPATH if there +- # are no directories specified by -L. +- hardcode_minus_L=yes +- if test "$GCC" = yes && test -z "$link_static_flag"; then +- # Neither direct hardcoding nor static linking is supported with a +- # broken collect2. +- hardcode_direct=unsupported +- fi +- ;; ++ { echo "$as_me:$LINENO: result: none" >&5 ++echo "${ECHO_T}none" >&6; } ++fi + +- aix4* | aix5*) +- if test "$host_cpu" = ia64; then +- # On IA64, the linker does run time linking by default, so we don't +- # have to do anything special. +- aix_use_runtimelinking=no +- exp_sym_flag='-Bexport' +- no_entry_flag="" +- else +- aix_use_runtimelinking=no + +- # Test if we are trying to use run time linking or normal +- # AIX style linking. If -brtl is somewhere in LDFLAGS, we +- # need to do runtime linking. +- case $host_os in aix4.[23]|aix4.[23].*|aix5*) +- for ld_flag in $LDFLAGS; do +- if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then +- aix_use_runtimelinking=yes +- break +- fi +- done +- esac + +- exp_sym_flag='-bexport' +- no_entry_flag='-bnoentry' +- fi + +- # When large executables or shared objects are built, AIX ld can +- # have problems creating the table of contents. If linking a library +- # or program results in "error TOC overflow" add -mminimal-toc to +- # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not +- # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + +- hardcode_direct=yes +- archive_cmds='' +- hardcode_libdir_separator=':' +- if test "$GCC" = yes; then +- case $host_os in aix4.[012]|aix4.[012].*) +- collect2name=`${CC} -print-prog-name=collect2` +- if test -f "$collect2name" && \ +- strings "$collect2name" | grep resolve_lib_name >/dev/null +- then +- # We have reworked collect2 +- hardcode_direct=yes +- else +- # We have old collect2 +- hardcode_direct=unsupported +- # It fails to find uninstalled libraries when the uninstalled +- # path is not listed in the libpath. Setting hardcode_minus_L +- # to unsupported forces relinking +- hardcode_minus_L=yes +- hardcode_libdir_flag_spec='-L$libdir' +- hardcode_libdir_separator= +- fi +- esac ++# Check for command to grab the raw symbol name followed by C symbol from nm. ++{ echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5 ++echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6; } ++if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else + +- shared_flag='-shared' +- else +- # not using gcc +- if test "$host_cpu" = ia64; then +- shared_flag='${wl}-G' +- else +- if test "$aix_use_runtimelinking" = yes; then +- shared_flag='${wl}-G' +- else +- shared_flag='${wl}-bM:SRE' +- fi +- fi +- fi ++# These are sane defaults that work on at least a few old systems. ++# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +- # It seems that -bexpall can do strange things, so it is better to +- # generate a list of symbols to export. +- always_export_symbols=yes +- if test "$aix_use_runtimelinking" = yes; then +- # Warning - without using the other runtime loading flags (-brtl), +- # -berok will link without error, but may produce a broken library. +- allow_undefined_flag='-berok' +- hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib' +- archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" +- else +- if test "$host_cpu" = ia64; then +- hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' +- allow_undefined_flag="-z nodefs" +- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname ${wl}-h$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" +- else +- hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib' +- # Warning - without using the other run time loading flags, +- # -berok will link without error, but may produce a broken library. +- allow_undefined_flag='${wl}-berok' +- # This is a bit strange, but is similar to how AIX traditionally builds +- # it's shared libraries. +- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"' ~$AR -crlo $objdir/$libname$release.a $objdir/$soname' +- fi +- fi +- ;; ++# Character class describing NM global symbol codes. ++symcode='[BCDEGRST]' + +- amigaos*) +- 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)' +- hardcode_libdir_flag_spec='-L$libdir' +- hardcode_minus_L=yes +- # see comment about different semantics on the GNU ld section +- ld_shlibs=no +- ;; ++# Regexp to match symbols that can be accessed directly from C. ++sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +- cygwin* | mingw* | pw32*) +- # When not using gcc, we currently assume that we are using +- # Microsoft Visual C++. +- # hardcode_libdir_flag_spec is actually meaningless, as there is +- # no search path for DLLs. +- hardcode_libdir_flag_spec=' ' +- allow_undefined_flag=unsupported +- # Tell ltmain to make .lib files, not .a files. +- libext=lib +- # FIXME: Setting linknames here is a bad hack. +- archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames=' +- # The linker will automatically build a .lib file if we build a DLL. +- old_archive_from_new_cmds='true' +- # FIXME: Should let the user specify the lib program. +- old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs' +- fix_srcfile_path='`cygpath -w "$srcfile"`' +- ;; +- +- darwin* | rhapsody*) +- case "$host_os" in +- rhapsody* | darwin1.[012]) +- allow_undefined_flag='-undefined suppress' +- ;; +- *) # Darwin 1.3 on +- allow_undefined_flag='-flat_namespace -undefined suppress' +- ;; +- esac +- # FIXME: Relying on posixy $() will cause problems for +- # cross-compilation, but unfortunately the echo tests do not +- # yet detect zsh echo's removal of \ escapes. +- archive_cmds='$nonopt $(test "x$module" = xyes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib $libobjs $deplibs$linker_flags -install_name $rpath/$soname $verstring' +- # We need to add '_' to the symbols in $export_symbols first +- #archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols' +- hardcode_direct=yes +- hardcode_shlibpath_var=no +- whole_archive_flag_spec='-all_load $convenience' +- ;; +- +- freebsd1*) +- ld_shlibs=no +- ;; +- +- # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor +- # support. Future versions do this automatically, but an explicit c++rt0.o +- # does not break anything, and helps significantly (at the cost of a little +- # extra space). +- freebsd2.2*) +- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' +- hardcode_libdir_flag_spec='-R$libdir' +- hardcode_direct=yes +- hardcode_shlibpath_var=no +- ;; ++# Transform an extracted symbol line into a proper C declaration ++lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" + +- # Unfortunately, older versions of FreeBSD 2 do not have this feature. +- freebsd2*) +- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' +- hardcode_direct=yes +- hardcode_minus_L=yes +- hardcode_shlibpath_var=no +- ;; +- +- # FreeBSD 3 and greater uses gcc -shared to do shared libraries. +- freebsd*) +- archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' +- hardcode_libdir_flag_spec='-R$libdir' +- hardcode_direct=yes +- hardcode_shlibpath_var=no +- ;; ++# Transform an extracted symbol line into symbol name and symbol address ++lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + +- hpux9* | hpux10* | hpux11*) +- case $host_os in +- hpux9*) archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ;; +- *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;; +- esac +- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' +- hardcode_libdir_separator=: +- hardcode_direct=yes +- hardcode_minus_L=yes # Not in the search PATH, but as the default +- # location of the library. +- export_dynamic_flag_spec='${wl}-E' +- ;; ++# Define system-specific variables. ++case $host_os in ++aix*) ++ symcode='[BCDT]' ++ ;; ++cygwin* | mingw* | pw32*) ++ symcode='[ABCDGISTW]' ++ ;; ++hpux*) # Its linker distinguishes data from code symbols ++ if test "$host_cpu" = ia64; then ++ symcode='[ABCDEGRST]' ++ fi ++ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" ++ lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" ++ ;; ++linux* | k*bsd*-gnu) ++ if test "$host_cpu" = ia64; then ++ symcode='[ABCDGIRSTW]' ++ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" ++ lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" ++ fi ++ ;; ++irix* | nonstopux*) ++ symcode='[BCDEGRST]' ++ ;; ++osf*) ++ symcode='[BCDEGQRST]' ++ ;; ++solaris*) ++ symcode='[BDRT]' ++ ;; ++sco3.2v5*) ++ symcode='[DT]' ++ ;; ++sysv4.2uw2*) ++ symcode='[DT]' ++ ;; ++sysv5* | sco5v6* | unixware* | OpenUNIX*) ++ symcode='[ABDT]' ++ ;; ++sysv4) ++ symcode='[DFNSTU]' ++ ;; ++esac + +- irix5* | irix6*) +- if test "$GCC" = yes; then +- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +- else +- archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' +- fi +- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' +- hardcode_libdir_separator=: +- link_all_deplibs=yes +- ;; ++# Handle CRLF in mingw tool chain ++opt_cr= ++case $build_os in ++mingw*) ++ opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp ++ ;; ++esac + +- netbsd*) +- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then +- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out +- else +- archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF +- fi +- hardcode_libdir_flag_spec='-R$libdir' +- hardcode_direct=yes +- hardcode_shlibpath_var=no +- ;; ++# If we're using GNU nm, then use its standard symbol codes. ++case `$NM -V 2>&1` in ++*GNU* | *'with BFD'*) ++ symcode='[ABCDGIRSTW]' ;; ++esac + +- newsos6) +- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_direct=yes +- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' +- hardcode_libdir_separator=: +- hardcode_shlibpath_var=no +- ;; ++# Try without a prefix undercore, then with it. ++for ac_symprfx in "" "_"; do + +- openbsd*) +- hardcode_direct=yes +- hardcode_shlibpath_var=no +- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +- archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $linker_flags' +- hardcode_libdir_flag_spec='${wl}-rpath,$libdir' +- export_dynamic_flag_spec='${wl}-E' +- else +- case "$host_os" in +- openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) +- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' +- hardcode_libdir_flag_spec='-R$libdir' +- ;; +- *) +- archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $linker_flags' +- hardcode_libdir_flag_spec='${wl}-rpath,$libdir' +- ;; +- esac +- fi +- ;; ++ # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. ++ symxfrm="\\1 $ac_symprfx\\2 \\2" + +- os2*) +- hardcode_libdir_flag_spec='-L$libdir' +- hardcode_minus_L=yes +- allow_undefined_flag=unsupported +- archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' +- old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' +- ;; ++ # Write the raw and C identifiers. ++ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + +- osf3*) +- if test "$GCC" = yes; then +- allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' +- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +- else +- allow_undefined_flag=' -expect_unresolved \*' +- archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' +- fi +- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' +- hardcode_libdir_separator=: +- ;; ++ # Check to see that the pipe works correctly. ++ pipe_works=no + +- osf4* | osf5*) # as osf3* with the addition of -msym flag +- if test "$GCC" = yes; then +- allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' +- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' +- else +- allow_undefined_flag=' -expect_unresolved \*' +- archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' +- archive_expsym_cmds='for i in `cat $export_symbols`; do printf "-exported_symbol " >> $lib.exp; echo "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ +- $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' ++ rm -f conftest* ++ cat > conftest.$ac_ext <&5 ++ (eval $ac_compile) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; then ++ # Now try to grab the symbols. ++ nlist=conftest.nm ++ if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 ++ (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && test -s "$nlist"; then ++ # Try sorting and uniquifying the output. ++ if sort "$nlist" | uniq > "$nlist"T; then ++ mv -f "$nlist"T "$nlist" ++ else ++ rm -f "$nlist"T ++ fi + +- sco3.2v5*) +- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_shlibpath_var=no +- runpath_var=LD_RUN_PATH +- hardcode_runpath_var=yes +- export_dynamic_flag_spec='${wl}-Bexport' +- ;; ++ # Make sure that we snagged all the symbols we need. ++ if grep ' nm_test_var$' "$nlist" >/dev/null; then ++ if grep ' nm_test_func$' "$nlist" >/dev/null; then ++ cat < conftest.$ac_ext ++#ifdef __cplusplus ++extern "C" { ++#endif + +- solaris*) +- # gcc --version < 3.0 without binutils cannot create self contained +- # shared libraries reliably, requiring libgcc.a to resolve some of +- # the object symbols generated in some cases. Libraries that use +- # assert need libgcc.a to resolve __eprintf, for example. Linking +- # a copy of libgcc.a into every shared library to guarantee resolving +- # such symbols causes other problems: According to Tim Van Holder +- # , C++ libraries end up with a separate +- # (to the application) exception stack for one thing. +- no_undefined_flag=' -z defs' +- if test "$GCC" = yes; then +- case `$CC --version 2>/dev/null` in +- [12].*) +- cat <&2 ++EOF ++ # Now generate the symbol file. ++ eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' + +-*** Warning: Releases of GCC earlier than version 3.0 cannot reliably +-*** create self contained shared libraries on Solaris systems, without +-*** introducing a dependency on libgcc.a. Therefore, libtool is disabling +-*** -no-undefined support, which will at least allow you to build shared +-*** libraries. However, you may find that when you link such libraries +-*** into an application without using GCC, you have to manually add +-*** \`gcc --print-libgcc-file-name\` to the link command. We urge you to +-*** upgrade to a newer version of GCC. Another option is to rebuild your +-*** current GCC to use the GNU linker from GNU binutils 2.9.1 or newer. ++ cat <> conftest.$ac_ext ++#if defined (__STDC__) && __STDC__ ++# define lt_ptr_t void * ++#else ++# define lt_ptr_t char * ++# define const ++#endif + ++/* The mapping between symbol names and symbols. */ ++const struct { ++ const char *name; ++ lt_ptr_t address; ++} ++lt_preloaded_symbols[] = ++{ + EOF +- no_undefined_flag= +- ;; +- esac +- fi +- # $CC -shared without GNU ld will not create a library from C++ +- # object files and a static libstdc++, better avoid it by now +- archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' +- archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ +- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' +- hardcode_libdir_flag_spec='-R$libdir' +- hardcode_shlibpath_var=no +- case $host_os in +- solaris2.[0-5] | solaris2.[0-5].*) ;; +- *) # Supported since Solaris 2.6 (maybe 2.5.1?) +- whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; +- esac +- link_all_deplibs=yes +- ;; +- +- sunos4*) +- if test "x$host_vendor" = xsequent; then +- # Use $CC to link under sequent, because it throws in some extra .o +- # files that make .init and .fini sections work. +- archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' +- else +- archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' +- fi +- hardcode_libdir_flag_spec='-L$libdir' +- hardcode_direct=yes +- hardcode_minus_L=yes +- hardcode_shlibpath_var=no +- ;; ++ $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext ++ cat <<\EOF >> conftest.$ac_ext ++ {0, (lt_ptr_t) 0} ++}; + +- sysv4) +- if test "x$host_vendor" = xsno; then +- archive_cmds='$LD -G -Bsymbolic -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_direct=yes # is this really true??? ++#ifdef __cplusplus ++} ++#endif ++EOF ++ # Now try linking the two files. ++ mv conftest.$ac_objext conftstm.$ac_objext ++ lt_save_LIBS="$LIBS" ++ lt_save_CFLAGS="$CFLAGS" ++ LIBS="conftstm.$ac_objext" ++ CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" ++ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ++ (eval $ac_link) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && test -s conftest${ac_exeext}; then ++ pipe_works=yes ++ fi ++ LIBS="$lt_save_LIBS" ++ CFLAGS="$lt_save_CFLAGS" ++ else ++ echo "cannot find nm_test_func in $nlist" >&5 ++ fi ++ else ++ echo "cannot find nm_test_var in $nlist" >&5 ++ fi + else +- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_direct=no #Motorola manual says yes, but my tests say they lie +- fi +- runpath_var='LD_RUN_PATH' +- hardcode_shlibpath_var=no +- ;; +- +- sysv4.3*) +- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_shlibpath_var=no +- export_dynamic_flag_spec='-Bexport' +- ;; +- +- sysv5*) +- no_undefined_flag=' -z text' +- # $CC -shared without GNU ld will not create a library from C++ +- # object files and a static libstdc++, better avoid it by now +- archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' +- archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ +- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' +- hardcode_libdir_flag_spec= +- hardcode_shlibpath_var=no +- runpath_var='LD_RUN_PATH' +- ;; +- +- uts4*) +- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_libdir_flag_spec='-L$libdir' +- hardcode_shlibpath_var=no +- ;; +- +- dgux*) +- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_libdir_flag_spec='-L$libdir' +- hardcode_shlibpath_var=no +- ;; +- +- sysv4*MP*) +- if test -d /usr/nec; then +- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_shlibpath_var=no +- runpath_var=LD_RUN_PATH +- hardcode_runpath_var=yes +- ld_shlibs=yes ++ echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 + fi +- ;; +- +- sysv4.2uw2*) +- archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' +- hardcode_direct=yes +- hardcode_minus_L=no +- hardcode_shlibpath_var=no +- hardcode_runpath_var=yes +- runpath_var=LD_RUN_PATH +- ;; ++ else ++ echo "$progname: failed program was:" >&5 ++ cat conftest.$ac_ext >&5 ++ fi ++ rm -f conftest* conftst* + +- sysv5uw7* | unixware7*) +- no_undefined_flag='${wl}-z ${wl}text' +- if test "$GCC" = yes; then +- archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' +- else +- archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' +- fi +- runpath_var='LD_RUN_PATH' +- hardcode_shlibpath_var=no +- ;; ++ # Do not use the global_symbol_pipe unless it works. ++ if test "$pipe_works" = yes; then ++ break ++ else ++ lt_cv_sys_global_symbol_pipe= ++ fi ++done + +- *) +- ld_shlibs=no +- ;; +- esac + fi +-echo "$as_me:4916: result: $ld_shlibs" >&5 +-echo "${ECHO_T}$ld_shlibs" >&6 +-test "$ld_shlibs" = no && can_build_shared=no + +-# Check hardcoding attributes. +-echo "$as_me:4921: checking how to hardcode library paths into programs" >&5 +-echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 +-hardcode_action= +-if test -n "$hardcode_libdir_flag_spec" || \ +- test -n "$runpath_var"; then +- +- # We can hardcode non-existant directories. +- if test "$hardcode_direct" != no && +- # If the only mechanism to avoid hardcoding is shlibpath_var, we +- # have to relink, otherwise we might link with an installed library +- # when we should be linking with a yet-to-be-installed one +- ## test "$hardcode_shlibpath_var" != no && +- test "$hardcode_minus_L" != no; then +- # Linking always hardcodes the temporary library directory. +- hardcode_action=relink +- else +- # We can link without hardcoding, and we can hardcode nonexisting dirs. +- hardcode_action=immediate +- fi ++if test -z "$lt_cv_sys_global_symbol_pipe"; then ++ lt_cv_sys_global_symbol_to_cdecl= ++fi ++if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then ++ { echo "$as_me:$LINENO: result: failed" >&5 ++echo "${ECHO_T}failed" >&6; } + else +- # We cannot hardcode anything, or else we can only hardcode existing +- # directories. +- hardcode_action=unsupported ++ { echo "$as_me:$LINENO: result: ok" >&5 ++echo "${ECHO_T}ok" >&6; } + fi +-echo "$as_me:4945: result: $hardcode_action" >&5 +-echo "${ECHO_T}$hardcode_action" >&6 + +-striplib= +-old_striplib= +-echo "$as_me:4950: checking whether stripping libraries is possible" >&5 +-echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 +-if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then +- test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" +- test -z "$striplib" && striplib="$STRIP --strip-unneeded" +- echo "$as_me:4955: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++{ echo "$as_me:$LINENO: checking for objdir" >&5 ++echo $ECHO_N "checking for objdir... $ECHO_C" >&6; } ++if test "${lt_cv_objdir+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ rm -f .libs 2>/dev/null ++mkdir .libs 2>/dev/null ++if test -d .libs; then ++ lt_cv_objdir=.libs + else +- echo "$as_me:4958: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ # MS-DOS does not allow filenames that begin with a dot. ++ lt_cv_objdir=_libs ++fi ++rmdir .libs 2>/dev/null + fi ++{ echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5 ++echo "${ECHO_T}$lt_cv_objdir" >&6; } ++objdir=$lt_cv_objdir + +-reload_cmds='$LD$reload_flag -o $output$reload_objs' +-test -z "$deplibs_check_method" && deplibs_check_method=unknown + +-# PORTME Fill in your ld.so characteristics +-echo "$as_me:4966: checking dynamic linker characteristics" >&5 +-echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 +-library_names_spec= +-libname_spec='lib$name' +-soname_spec= +-postinstall_cmds= +-postuninstall_cmds= +-finish_cmds= +-finish_eval= +-shlibpath_var= +-shlibpath_overrides_runpath=unknown +-version_type=none +-dynamic_linker="$host_os ld.so" +-sys_lib_dlsearch_path_spec="/lib /usr/lib" +-sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + +-case $host_os in +-aix3*) +- version_type=linux +- library_names_spec='${libname}${release}.so$versuffix $libname.a' +- shlibpath_var=LIBPATH + +- # AIX has no versioning support, so we append a major version to the name. +- soname_spec='${libname}${release}.so$major' +- ;; + +-aix4* | aix5*) +- version_type=linux +- if test "$host_cpu" = ia64; then +- # AIX 5 supports IA64 +- library_names_spec='${libname}${release}.so$major ${libname}${release}.so$versuffix $libname.so' +- shlibpath_var=LD_LIBRARY_PATH ++case $host_os in ++aix3*) ++ # AIX sometimes has problems with the GCC collect2 program. For some ++ # reason, if we set the COLLECT_NAMES environment variable, the problems ++ # vanish in a puff of smoke. ++ if test "X${COLLECT_NAMES+set}" != Xset; then ++ COLLECT_NAMES= ++ export COLLECT_NAMES ++ fi ++ ;; ++esac ++ ++# Sed substitution that helps us do robust quoting. It backslashifies ++# metacharacters that are still active within double-quoted strings. ++Xsed='sed -e 1s/^X//' ++sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' ++ ++# Same as above, but do not quote variable references. ++double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' ++ ++# Sed substitution to delay expansion of an escaped shell variable in a ++# double_quote_subst'ed string. ++delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' ++ ++# Sed substitution to avoid accidental globbing in evaled expressions ++no_glob_subst='s/\*/\\\*/g' ++ ++# Constants: ++rm="rm -f" ++ ++# Global variables: ++default_ofile=libtool ++can_build_shared=yes ++ ++# All known linkers require a `.a' archive for static linking (except MSVC, ++# which needs '.lib'). ++libext=a ++ltmain="$ac_aux_dir/ltmain.sh" ++ofile="$default_ofile" ++with_gnu_ld="$lt_cv_prog_gnu_ld" ++ ++if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. ++set dummy ${ac_tool_prefix}ar; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_AR+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$AR"; then ++ ac_cv_prog_AR="$AR" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_AR="${ac_tool_prefix}ar" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++AR=$ac_cv_prog_AR ++if test -n "$AR"; then ++ { echo "$as_me:$LINENO: result: $AR" >&5 ++echo "${ECHO_T}$AR" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_AR"; then ++ ac_ct_AR=$AR ++ # Extract the first word of "ar", so it can be a program name with args. ++set dummy ar; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_ac_ct_AR+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$ac_ct_AR"; then ++ ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_ac_ct_AR="ar" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_AR=$ac_cv_prog_ac_ct_AR ++if test -n "$ac_ct_AR"; then ++ { echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 ++echo "${ECHO_T}$ac_ct_AR" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ if test "x$ac_ct_AR" = x; then ++ AR="false" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ AR=$ac_ct_AR ++ fi ++else ++ AR="$ac_cv_prog_AR" ++fi ++ ++if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. ++set dummy ${ac_tool_prefix}ranlib; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_RANLIB+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$RANLIB"; then ++ ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++RANLIB=$ac_cv_prog_RANLIB ++if test -n "$RANLIB"; then ++ { echo "$as_me:$LINENO: result: $RANLIB" >&5 ++echo "${ECHO_T}$RANLIB" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_RANLIB"; then ++ ac_ct_RANLIB=$RANLIB ++ # Extract the first word of "ranlib", so it can be a program name with args. ++set dummy ranlib; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$ac_ct_RANLIB"; then ++ ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_ac_ct_RANLIB="ranlib" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB ++if test -n "$ac_ct_RANLIB"; then ++ { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 ++echo "${ECHO_T}$ac_ct_RANLIB" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ if test "x$ac_ct_RANLIB" = x; then ++ RANLIB=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ RANLIB=$ac_ct_RANLIB ++ fi ++else ++ RANLIB="$ac_cv_prog_RANLIB" ++fi ++ ++if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. ++set dummy ${ac_tool_prefix}strip; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_STRIP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$STRIP"; then ++ ac_cv_prog_STRIP="$STRIP" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_STRIP="${ac_tool_prefix}strip" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++STRIP=$ac_cv_prog_STRIP ++if test -n "$STRIP"; then ++ { echo "$as_me:$LINENO: result: $STRIP" >&5 ++echo "${ECHO_T}$STRIP" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_STRIP"; then ++ ac_ct_STRIP=$STRIP ++ # Extract the first word of "strip", so it can be a program name with args. ++set dummy strip; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$ac_ct_STRIP"; then ++ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_ac_ct_STRIP="strip" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP ++if test -n "$ac_ct_STRIP"; then ++ { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 ++echo "${ECHO_T}$ac_ct_STRIP" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ if test "x$ac_ct_STRIP" = x; then ++ STRIP=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ STRIP=$ac_ct_STRIP ++ fi ++else ++ STRIP="$ac_cv_prog_STRIP" ++fi ++ ++ ++old_CC="$CC" ++old_CFLAGS="$CFLAGS" ++ ++# Set sane defaults for various variables ++test -z "$AR" && AR=ar ++test -z "$AR_FLAGS" && AR_FLAGS=cru ++test -z "$AS" && AS=as ++test -z "$CC" && CC=cc ++test -z "$LTCC" && LTCC=$CC ++test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS ++test -z "$DLLTOOL" && DLLTOOL=dlltool ++test -z "$LD" && LD=ld ++test -z "$LN_S" && LN_S="ln -s" ++test -z "$MAGIC_CMD" && MAGIC_CMD=file ++test -z "$NM" && NM=nm ++test -z "$SED" && SED=sed ++test -z "$OBJDUMP" && OBJDUMP=objdump ++test -z "$RANLIB" && RANLIB=: ++test -z "$STRIP" && STRIP=: ++test -z "$ac_objext" && ac_objext=o ++ ++# Determine commands to create old-style static archives. ++old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' ++old_postinstall_cmds='chmod 644 $oldlib' ++old_postuninstall_cmds= ++ ++if test -n "$RANLIB"; then ++ case $host_os in ++ openbsd*) ++ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" ++ ;; ++ *) ++ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" ++ ;; ++ esac ++ old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" ++fi ++ ++for cc_temp in $compiler""; do ++ case $cc_temp in ++ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; ++ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; ++ \-*) ;; ++ *) break;; ++ esac ++done ++cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` ++ ++ ++# Only perform the check for file, if the check method requires it ++case $deplibs_check_method in ++file_magic*) ++ if test "$file_magic_cmd" = '$MAGIC_CMD'; then ++ { echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 ++echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6; } ++if test "${lt_cv_path_MAGIC_CMD+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ case $MAGIC_CMD in ++[\\/*] | ?:[\\/]*) ++ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ++ ;; ++*) ++ lt_save_MAGIC_CMD="$MAGIC_CMD" ++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ++ ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" ++ for ac_dir in $ac_dummy; do ++ IFS="$lt_save_ifs" ++ test -z "$ac_dir" && ac_dir=. ++ if test -f $ac_dir/${ac_tool_prefix}file; then ++ lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" ++ if test -n "$file_magic_test_file"; then ++ case $deplibs_check_method in ++ "file_magic "*) ++ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` ++ MAGIC_CMD="$lt_cv_path_MAGIC_CMD" ++ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | ++ $EGREP "$file_magic_regex" > /dev/null; then ++ : ++ else ++ cat <&2 ++ ++*** Warning: the command libtool uses to detect shared libraries, ++*** $file_magic_cmd, produces output that libtool cannot recognize. ++*** The result is that libtool may fail to recognize shared libraries ++*** as such. This will affect the creation of libtool libraries that ++*** depend on shared libraries, but programs linked with such libtool ++*** libraries will work regardless of this problem. Nevertheless, you ++*** may want to report the problem to your system manager and/or to ++*** bug-libtool@gnu.org ++ ++EOF ++ fi ;; ++ esac ++ fi ++ break ++ fi ++ done ++ IFS="$lt_save_ifs" ++ MAGIC_CMD="$lt_save_MAGIC_CMD" ++ ;; ++esac ++fi ++ ++MAGIC_CMD="$lt_cv_path_MAGIC_CMD" ++if test -n "$MAGIC_CMD"; then ++ { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 ++echo "${ECHO_T}$MAGIC_CMD" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++if test -z "$lt_cv_path_MAGIC_CMD"; then ++ if test -n "$ac_tool_prefix"; then ++ { echo "$as_me:$LINENO: checking for file" >&5 ++echo $ECHO_N "checking for file... $ECHO_C" >&6; } ++if test "${lt_cv_path_MAGIC_CMD+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ case $MAGIC_CMD in ++[\\/*] | ?:[\\/]*) ++ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ++ ;; ++*) ++ lt_save_MAGIC_CMD="$MAGIC_CMD" ++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ++ ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" ++ for ac_dir in $ac_dummy; do ++ IFS="$lt_save_ifs" ++ test -z "$ac_dir" && ac_dir=. ++ if test -f $ac_dir/file; then ++ lt_cv_path_MAGIC_CMD="$ac_dir/file" ++ if test -n "$file_magic_test_file"; then ++ case $deplibs_check_method in ++ "file_magic "*) ++ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` ++ MAGIC_CMD="$lt_cv_path_MAGIC_CMD" ++ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | ++ $EGREP "$file_magic_regex" > /dev/null; then ++ : ++ else ++ cat <&2 ++ ++*** Warning: the command libtool uses to detect shared libraries, ++*** $file_magic_cmd, produces output that libtool cannot recognize. ++*** The result is that libtool may fail to recognize shared libraries ++*** as such. This will affect the creation of libtool libraries that ++*** depend on shared libraries, but programs linked with such libtool ++*** libraries will work regardless of this problem. Nevertheless, you ++*** may want to report the problem to your system manager and/or to ++*** bug-libtool@gnu.org ++ ++EOF ++ fi ;; ++ esac ++ fi ++ break ++ fi ++ done ++ IFS="$lt_save_ifs" ++ MAGIC_CMD="$lt_save_MAGIC_CMD" ++ ;; ++esac ++fi ++ ++MAGIC_CMD="$lt_cv_path_MAGIC_CMD" ++if test -n "$MAGIC_CMD"; then ++ { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 ++echo "${ECHO_T}$MAGIC_CMD" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ else ++ MAGIC_CMD=: ++ fi ++fi ++ ++ fi ++ ;; ++esac ++ ++enable_dlopen=no ++enable_win32_dll=no ++ ++# Check whether --enable-libtool-lock was given. ++if test "${enable_libtool_lock+set}" = set; then ++ enableval=$enable_libtool_lock; ++fi ++ ++test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes ++ ++ ++# Check whether --with-pic was given. ++if test "${with_pic+set}" = set; then ++ withval=$with_pic; pic_mode="$withval" ++else ++ pic_mode=default ++fi ++ ++test -z "$pic_mode" && pic_mode=default ++ ++# Use C for the default configuration in the libtool script ++tagname= ++lt_save_CC="$CC" ++ac_ext=c ++ac_cpp='$CPP $CPPFLAGS' ++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_c_compiler_gnu ++ ++ ++# Source file extension for C test sources. ++ac_ext=c ++ ++# Object file extension for compiled C test sources. ++objext=o ++objext=$objext ++ ++# Code to be used in simple compile tests ++lt_simple_compile_test_code="int some_variable = 0;" ++ ++# Code to be used in simple link tests ++lt_simple_link_test_code='int main(){return(0);}' ++ ++ ++# If no C compiler was specified, use CC. ++LTCC=${LTCC-"$CC"} ++ ++# If no C compiler flags were specified, use CFLAGS. ++LTCFLAGS=${LTCFLAGS-"$CFLAGS"} ++ ++# Allow CC to be a program name with arguments. ++compiler=$CC ++ ++ ++# save warnings/boilerplate of simple test code ++ac_outfile=conftest.$ac_objext ++echo "$lt_simple_compile_test_code" >conftest.$ac_ext ++eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err ++_lt_compiler_boilerplate=`cat conftest.err` ++$rm conftest* ++ ++ac_outfile=conftest.$ac_objext ++echo "$lt_simple_link_test_code" >conftest.$ac_ext ++eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err ++_lt_linker_boilerplate=`cat conftest.err` ++$rm conftest* ++ ++ ++ ++lt_prog_compiler_no_builtin_flag= ++ ++if test "$GCC" = yes; then ++ lt_prog_compiler_no_builtin_flag=' -fno-builtin' ++ ++ ++{ echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 ++echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6; } ++if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_cv_prog_compiler_rtti_exceptions=no ++ ac_outfile=conftest.$ac_objext ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ lt_compiler_flag="-fno-rtti -fno-exceptions" ++ # Insert the option either (1) after the last *FLAGS variable, or ++ # (2) before a word containing "conftest.", or (3) at the end. ++ # Note that $ac_compile itself does not contain backslashes and begins ++ # with a dollar sign (not a hyphen), so the echo should work correctly. ++ # The option is referenced via a variable to avoid confusing sed. ++ lt_compile=`echo "$ac_compile" | $SED \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ ++ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ ++ -e 's:$: $lt_compiler_flag:'` ++ (eval echo "\"\$as_me:7127: $lt_compile\"" >&5) ++ (eval "$lt_compile" 2>conftest.err) ++ ac_status=$? ++ cat conftest.err >&5 ++ echo "$as_me:7131: \$? = $ac_status" >&5 ++ if (exit $ac_status) && test -s "$ac_outfile"; then ++ # The compiler can only warn and ignore the option if not recognized ++ # So say no if there are warnings other than the usual output. ++ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then ++ lt_cv_prog_compiler_rtti_exceptions=yes ++ fi ++ fi ++ $rm conftest* ++ ++fi ++{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 ++echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6; } ++ ++if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then ++ lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" ++else ++ : ++fi ++ ++fi ++ ++lt_prog_compiler_wl= ++lt_prog_compiler_pic= ++lt_prog_compiler_static= ++ ++{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 ++echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } ++ ++ if test "$GCC" = yes; then ++ lt_prog_compiler_wl='-Wl,' ++ lt_prog_compiler_static='-static' ++ ++ case $host_os in ++ aix*) ++ # All AIX code is PIC. ++ if test "$host_cpu" = ia64; then ++ # AIX 5 now supports IA64 processor ++ lt_prog_compiler_static='-Bstatic' ++ fi ++ ;; ++ ++ amigaos*) ++ # FIXME: we need at least 68020 code to build shared libraries, but ++ # adding the `-m68020' flag to GCC prevents building anything better, ++ # like `-m68040'. ++ lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ++ ;; ++ ++ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) ++ # PIC is the default for these OSes. ++ ;; ++ ++ mingw* | cygwin* | pw32* | os2*) ++ # This hack is so that the source file can tell whether it is being ++ # built for inclusion in a dll (and should export symbols for example). ++ # Although the cygwin gcc ignores -fPIC, still need this for old-style ++ # (--disable-auto-import) libraries ++ lt_prog_compiler_pic='-DDLL_EXPORT' ++ ;; ++ ++ darwin* | rhapsody*) ++ # PIC is the default on this platform ++ # Common symbols not allowed in MH_DYLIB files ++ lt_prog_compiler_pic='-fno-common' ++ ;; ++ ++ interix[3-9]*) ++ # Interix 3.x gcc -fpic/-fPIC options generate broken code. ++ # Instead, we relocate shared libraries at runtime. ++ ;; ++ ++ msdosdjgpp*) ++ # Just because we use GCC doesn't mean we suddenly get shared libraries ++ # on systems that don't support them. ++ lt_prog_compiler_can_build_shared=no ++ enable_shared=no ++ ;; ++ ++ sysv4*MP*) ++ if test -d /usr/nec; then ++ lt_prog_compiler_pic=-Kconform_pic ++ fi ++ ;; ++ ++ hpux*) ++ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but ++ # not for PA HP-UX. ++ case $host_cpu in ++ hppa*64*|ia64*) ++ # +Z the default ++ ;; ++ *) ++ lt_prog_compiler_pic='-fPIC' ++ ;; ++ esac ++ ;; ++ ++ *) ++ lt_prog_compiler_pic='-fPIC' ++ ;; ++ esac ++ else ++ # PORTME Check for flag to pass linker flags through the system compiler. ++ case $host_os in ++ aix*) ++ lt_prog_compiler_wl='-Wl,' ++ if test "$host_cpu" = ia64; then ++ # AIX 5 now supports IA64 processor ++ lt_prog_compiler_static='-Bstatic' ++ else ++ lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' ++ fi ++ ;; ++ darwin*) ++ # PIC is the default on this platform ++ # Common symbols not allowed in MH_DYLIB files ++ case $cc_basename in ++ xlc*) ++ lt_prog_compiler_pic='-qnocommon' ++ lt_prog_compiler_wl='-Wl,' ++ ;; ++ esac ++ ;; ++ ++ mingw* | cygwin* | pw32* | os2*) ++ # This hack is so that the source file can tell whether it is being ++ # built for inclusion in a dll (and should export symbols for example). ++ lt_prog_compiler_pic='-DDLL_EXPORT' ++ ;; ++ ++ hpux9* | hpux10* | hpux11*) ++ lt_prog_compiler_wl='-Wl,' ++ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but ++ # not for PA HP-UX. ++ case $host_cpu in ++ hppa*64*|ia64*) ++ # +Z the default ++ ;; ++ *) ++ lt_prog_compiler_pic='+Z' ++ ;; ++ esac ++ # Is there a better lt_prog_compiler_static that works with the bundled CC? ++ lt_prog_compiler_static='${wl}-a ${wl}archive' ++ ;; ++ ++ irix5* | irix6* | nonstopux*) ++ lt_prog_compiler_wl='-Wl,' ++ # PIC (with -KPIC) is the default. ++ lt_prog_compiler_static='-non_shared' ++ ;; ++ ++ newsos6) ++ lt_prog_compiler_pic='-KPIC' ++ lt_prog_compiler_static='-Bstatic' ++ ;; ++ ++ linux* | k*bsd*-gnu) ++ case $cc_basename in ++ icc* | ecc*) ++ lt_prog_compiler_wl='-Wl,' ++ lt_prog_compiler_pic='-KPIC' ++ lt_prog_compiler_static='-static' ++ ;; ++ pgcc* | pgf77* | pgf90* | pgf95*) ++ # Portland Group compilers (*not* the Pentium gcc compiler, ++ # which looks to be a dead project) ++ lt_prog_compiler_wl='-Wl,' ++ lt_prog_compiler_pic='-fpic' ++ lt_prog_compiler_static='-Bstatic' ++ ;; ++ ccc*) ++ lt_prog_compiler_wl='-Wl,' ++ # All Alpha code is PIC. ++ lt_prog_compiler_static='-non_shared' ++ ;; ++ *) ++ case `$CC -V 2>&1 | sed 5q` in ++ *Sun\ C*) ++ # Sun C 5.9 ++ lt_prog_compiler_pic='-KPIC' ++ lt_prog_compiler_static='-Bstatic' ++ lt_prog_compiler_wl='-Wl,' ++ ;; ++ *Sun\ F*) ++ # Sun Fortran 8.3 passes all unrecognized flags to the linker ++ lt_prog_compiler_pic='-KPIC' ++ lt_prog_compiler_static='-Bstatic' ++ lt_prog_compiler_wl='' ++ ;; ++ esac ++ ;; ++ esac ++ ;; ++ ++ osf3* | osf4* | osf5*) ++ lt_prog_compiler_wl='-Wl,' ++ # All OSF/1 code is PIC. ++ lt_prog_compiler_static='-non_shared' ++ ;; ++ ++ rdos*) ++ lt_prog_compiler_static='-non_shared' ++ ;; ++ ++ solaris*) ++ lt_prog_compiler_pic='-KPIC' ++ lt_prog_compiler_static='-Bstatic' ++ case $cc_basename in ++ f77* | f90* | f95*) ++ lt_prog_compiler_wl='-Qoption ld ';; ++ *) ++ lt_prog_compiler_wl='-Wl,';; ++ esac ++ ;; ++ ++ sunos4*) ++ lt_prog_compiler_wl='-Qoption ld ' ++ lt_prog_compiler_pic='-PIC' ++ lt_prog_compiler_static='-Bstatic' ++ ;; ++ ++ sysv4 | sysv4.2uw2* | sysv4.3*) ++ lt_prog_compiler_wl='-Wl,' ++ lt_prog_compiler_pic='-KPIC' ++ lt_prog_compiler_static='-Bstatic' ++ ;; ++ ++ sysv4*MP*) ++ if test -d /usr/nec ;then ++ lt_prog_compiler_pic='-Kconform_pic' ++ lt_prog_compiler_static='-Bstatic' ++ fi ++ ;; ++ ++ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) ++ lt_prog_compiler_wl='-Wl,' ++ lt_prog_compiler_pic='-KPIC' ++ lt_prog_compiler_static='-Bstatic' ++ ;; ++ ++ unicos*) ++ lt_prog_compiler_wl='-Wl,' ++ lt_prog_compiler_can_build_shared=no ++ ;; ++ ++ uts4*) ++ lt_prog_compiler_pic='-pic' ++ lt_prog_compiler_static='-Bstatic' ++ ;; ++ ++ *) ++ lt_prog_compiler_can_build_shared=no ++ ;; ++ esac ++ fi ++ ++{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5 ++echo "${ECHO_T}$lt_prog_compiler_pic" >&6; } ++ ++# ++# Check to make sure the PIC flag actually works. ++# ++if test -n "$lt_prog_compiler_pic"; then ++ ++{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 ++echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6; } ++if test "${lt_prog_compiler_pic_works+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_prog_compiler_pic_works=no ++ ac_outfile=conftest.$ac_objext ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ++ # Insert the option either (1) after the last *FLAGS variable, or ++ # (2) before a word containing "conftest.", or (3) at the end. ++ # Note that $ac_compile itself does not contain backslashes and begins ++ # with a dollar sign (not a hyphen), so the echo should work correctly. ++ # The option is referenced via a variable to avoid confusing sed. ++ lt_compile=`echo "$ac_compile" | $SED \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ ++ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ ++ -e 's:$: $lt_compiler_flag:'` ++ (eval echo "\"\$as_me:7417: $lt_compile\"" >&5) ++ (eval "$lt_compile" 2>conftest.err) ++ ac_status=$? ++ cat conftest.err >&5 ++ echo "$as_me:7421: \$? = $ac_status" >&5 ++ if (exit $ac_status) && test -s "$ac_outfile"; then ++ # The compiler can only warn and ignore the option if not recognized ++ # So say no if there are warnings other than the usual output. ++ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then ++ lt_prog_compiler_pic_works=yes ++ fi ++ fi ++ $rm conftest* ++ ++fi ++{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5 ++echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6; } ++ ++if test x"$lt_prog_compiler_pic_works" = xyes; then ++ case $lt_prog_compiler_pic in ++ "" | " "*) ;; ++ *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; ++ esac ++else ++ lt_prog_compiler_pic= ++ lt_prog_compiler_can_build_shared=no ++fi ++ ++fi ++case $host_os in ++ # For platforms which do not support PIC, -DPIC is meaningless: ++ *djgpp*) ++ lt_prog_compiler_pic= ++ ;; ++ *) ++ lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ++ ;; ++esac ++ ++# ++# Check to make sure the static flag actually works. ++# ++wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" ++{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 ++echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } ++if test "${lt_prog_compiler_static_works+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_prog_compiler_static_works=no ++ save_LDFLAGS="$LDFLAGS" ++ LDFLAGS="$LDFLAGS $lt_tmp_static_flag" ++ echo "$lt_simple_link_test_code" > conftest.$ac_ext ++ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then ++ # The linker can only warn and ignore the option if not recognized ++ # So say no if there are warnings ++ if test -s conftest.err; then ++ # Append any errors to the config.log. ++ cat conftest.err 1>&5 ++ $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if diff conftest.exp conftest.er2 >/dev/null; then ++ lt_prog_compiler_static_works=yes ++ fi ++ else ++ lt_prog_compiler_static_works=yes ++ fi ++ fi ++ $rm conftest* ++ LDFLAGS="$save_LDFLAGS" ++ ++fi ++{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5 ++echo "${ECHO_T}$lt_prog_compiler_static_works" >&6; } ++ ++if test x"$lt_prog_compiler_static_works" = xyes; then ++ : ++else ++ lt_prog_compiler_static= ++fi ++ ++ ++{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 ++echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } ++if test "${lt_cv_prog_compiler_c_o+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_cv_prog_compiler_c_o=no ++ $rm -r conftest 2>/dev/null ++ mkdir conftest ++ cd conftest ++ mkdir out ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ ++ lt_compiler_flag="-o out/conftest2.$ac_objext" ++ # Insert the option either (1) after the last *FLAGS variable, or ++ # (2) before a word containing "conftest.", or (3) at the end. ++ # Note that $ac_compile itself does not contain backslashes and begins ++ # with a dollar sign (not a hyphen), so the echo should work correctly. ++ lt_compile=`echo "$ac_compile" | $SED \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ ++ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ ++ -e 's:$: $lt_compiler_flag:'` ++ (eval echo "\"\$as_me:7521: $lt_compile\"" >&5) ++ (eval "$lt_compile" 2>out/conftest.err) ++ ac_status=$? ++ cat out/conftest.err >&5 ++ echo "$as_me:7525: \$? = $ac_status" >&5 ++ if (exit $ac_status) && test -s out/conftest2.$ac_objext ++ then ++ # The compiler can only warn and ignore the option if not recognized ++ # So say no if there are warnings ++ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp ++ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 ++ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then ++ lt_cv_prog_compiler_c_o=yes ++ fi ++ fi ++ chmod u+w . 2>&5 ++ $rm conftest* ++ # SGI C++ compiler will create directory out/ii_files/ for ++ # template instantiation ++ test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files ++ $rm out/* && rmdir out ++ cd .. ++ rmdir conftest ++ $rm conftest* ++ ++fi ++{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 ++echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6; } ++ ++ ++hard_links="nottested" ++if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then ++ # do not overwrite the value of need_locks provided by the user ++ { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 ++echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } ++ hard_links=yes ++ $rm conftest* ++ ln conftest.a conftest.b 2>/dev/null && hard_links=no ++ touch conftest.a ++ ln conftest.a conftest.b 2>&5 || hard_links=no ++ ln conftest.a conftest.b 2>/dev/null && hard_links=no ++ { echo "$as_me:$LINENO: result: $hard_links" >&5 ++echo "${ECHO_T}$hard_links" >&6; } ++ if test "$hard_links" = no; then ++ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 ++echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} ++ need_locks=warn ++ fi ++else ++ need_locks=no ++fi ++ ++{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 ++echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } ++ ++ runpath_var= ++ allow_undefined_flag= ++ enable_shared_with_static_runtimes=no ++ archive_cmds= ++ archive_expsym_cmds= ++ old_archive_From_new_cmds= ++ old_archive_from_expsyms_cmds= ++ export_dynamic_flag_spec= ++ whole_archive_flag_spec= ++ thread_safe_flag_spec= ++ hardcode_libdir_flag_spec= ++ hardcode_libdir_flag_spec_ld= ++ hardcode_libdir_separator= ++ hardcode_direct=no ++ hardcode_minus_L=no ++ hardcode_shlibpath_var=unsupported ++ link_all_deplibs=unknown ++ hardcode_automatic=no ++ module_cmds= ++ module_expsym_cmds= ++ always_export_symbols=no ++ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ++ # include_expsyms should be a list of space-separated symbols to be *always* ++ # included in the symbol list ++ include_expsyms= ++ # exclude_expsyms can be an extended regexp of symbols to exclude ++ # it will be wrapped by ` (' and `)$', so one must not match beginning or ++ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', ++ # as well as any symbol that contains `d'. ++ exclude_expsyms="_GLOBAL_OFFSET_TABLE_" ++ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out ++ # platforms (ab)use it in PIC code, but their linkers get confused if ++ # the symbol is explicitly referenced. Since portable code cannot ++ # rely on this symbol name, it's probably fine to never include it in ++ # preloaded symbol tables. ++ extract_expsyms_cmds= ++ # Just being paranoid about ensuring that cc_basename is set. ++ for cc_temp in $compiler""; do ++ case $cc_temp in ++ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; ++ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; ++ \-*) ;; ++ *) break;; ++ esac ++done ++cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` ++ ++ case $host_os in ++ cygwin* | mingw* | pw32*) ++ # FIXME: the MSVC++ port hasn't been tested in a loooong time ++ # When not using gcc, we currently assume that we are using ++ # Microsoft Visual C++. ++ if test "$GCC" != yes; then ++ with_gnu_ld=no ++ fi ++ ;; ++ interix*) ++ # we just hope/assume this is gcc and not c89 (= MSVC++) ++ with_gnu_ld=yes ++ ;; ++ openbsd*) ++ with_gnu_ld=no ++ ;; ++ esac ++ ++ ld_shlibs=yes ++ if test "$with_gnu_ld" = yes; then ++ # If archive_cmds runs LD, not CC, wlarc should be empty ++ wlarc='${wl}' ++ ++ # Set some defaults for GNU ld with shared library support. These ++ # are reset later if shared libraries are not supported. Putting them ++ # here allows them to be overridden if necessary. ++ runpath_var=LD_RUN_PATH ++ hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' ++ export_dynamic_flag_spec='${wl}--export-dynamic' ++ # ancient GNU ld didn't support --whole-archive et. al. ++ if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then ++ whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' ++ else ++ whole_archive_flag_spec= ++ fi ++ supports_anon_versioning=no ++ case `$LD -v 2>/dev/null` in ++ *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 ++ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... ++ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... ++ *\ 2.11.*) ;; # other 2.11 versions ++ *) supports_anon_versioning=yes ;; ++ esac ++ ++ # See if GNU ld supports shared libraries. ++ case $host_os in ++ aix3* | aix4* | aix5*) ++ # On AIX/PPC, the GNU linker is very broken ++ if test "$host_cpu" != ia64; then ++ ld_shlibs=no ++ cat <&2 ++ ++*** Warning: the GNU linker, at least up to release 2.9.1, is reported ++*** to be unable to reliably create shared libraries on AIX. ++*** Therefore, libtool is disabling shared libraries support. If you ++*** really care for shared libraries, you may want to modify your PATH ++*** so that a non-GNU linker is found, and then restart. ++ ++EOF ++ fi ++ ;; ++ ++ amigaos*) ++ 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)' ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_minus_L=yes ++ ++ # Samuel A. Falvo II reports ++ # that the semantics of dynamic libraries on AmigaOS, at least up ++ # to version 4, is to share data among multiple programs linked ++ # with the same dynamic library. Since this doesn't match the ++ # behavior of shared libraries on other platforms, we can't use ++ # them. ++ ld_shlibs=no ++ ;; ++ ++ beos*) ++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ allow_undefined_flag=unsupported ++ # Joseph Beckenbach says some releases of gcc ++ # support --undefined. This deserves some investigation. FIXME ++ archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ ++ cygwin* | mingw* | pw32*) ++ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, ++ # as there is no search path for DLLs. ++ hardcode_libdir_flag_spec='-L$libdir' ++ allow_undefined_flag=unsupported ++ always_export_symbols=no ++ enable_shared_with_static_runtimes=yes ++ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' ++ ++ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' ++ # If the export-symbols file already is a .def file (1st line ++ # is EXPORTS), use it as is; otherwise, prepend... ++ archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then ++ cp $export_symbols $output_objdir/$soname.def; ++ else ++ echo EXPORTS > $output_objdir/$soname.def; ++ cat $export_symbols >> $output_objdir/$soname.def; ++ fi~ ++ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ ++ interix[3-9]*) ++ hardcode_direct=no ++ hardcode_shlibpath_var=no ++ hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ++ export_dynamic_flag_spec='${wl}-E' ++ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. ++ # Instead, shared libraries are loaded at an image base (0x10000000 by ++ # default) and relocated if they conflict, which is a slow very memory ++ # consuming and fragmenting process. To avoid this, we pick a random, ++ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link ++ # time. Moving up from 0x10000000 also allows more sbrk(2) space. ++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ++ 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' ++ ;; ++ ++ gnu* | linux* | k*bsd*-gnu) ++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ tmp_addflag= ++ case $cc_basename,$host_cpu in ++ pgcc*) # Portland Group C compiler ++ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ++ tmp_addflag=' $pic_flag' ++ ;; ++ pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers ++ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ++ tmp_addflag=' $pic_flag -Mnomain' ;; ++ ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 ++ tmp_addflag=' -i_dynamic' ;; ++ efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 ++ tmp_addflag=' -i_dynamic -nofor_main' ;; ++ ifc* | ifort*) # Intel Fortran compiler ++ tmp_addflag=' -nofor_main' ;; ++ esac ++ case `$CC -V 2>&1 | sed 5q` in ++ *Sun\ C*) # Sun C 5.9 ++ whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ++ tmp_sharedflag='-G' ;; ++ *Sun\ F*) # Sun Fortran 8.3 ++ tmp_sharedflag='-G' ;; ++ *) ++ tmp_sharedflag='-shared' ;; ++ esac ++ archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ ++ if test $supports_anon_versioning = yes; then ++ archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~ ++ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ ++ $echo "local: *; };" >> $output_objdir/$libname.ver~ ++ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' ++ fi ++ link_all_deplibs=no ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ ++ netbsd* | netbsdelf*-gnu) ++ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then ++ archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' ++ wlarc= ++ else ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ fi ++ ;; ++ ++ solaris*) ++ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ++ ld_shlibs=no ++ cat <&2 ++ ++*** Warning: The releases 2.8.* of the GNU linker cannot reliably ++*** create shared libraries on Solaris systems. Therefore, libtool ++*** is disabling shared libraries support. We urge you to upgrade GNU ++*** binutils to release 2.9.1 or newer. Another option is to modify ++*** your PATH or compiler configuration so that the native linker is ++*** used, and then restart. ++ ++EOF ++ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ ++ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) ++ case `$LD -v 2>&1` in ++ *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ++ ld_shlibs=no ++ cat <<_LT_EOF 1>&2 ++ ++*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not ++*** reliably create shared libraries on SCO systems. Therefore, libtool ++*** is disabling shared libraries support. We urge you to upgrade GNU ++*** binutils to release 2.16.91.0.3 or newer. Another option is to modify ++*** your PATH or compiler configuration so that the native linker is ++*** used, and then restart. ++ ++_LT_EOF ++ ;; ++ *) ++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' ++ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ esac ++ ;; ++ ++ sunos4*) ++ archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' ++ wlarc= ++ hardcode_direct=yes ++ hardcode_shlibpath_var=no ++ ;; ++ ++ *) ++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ esac ++ ++ if test "$ld_shlibs" = no; then ++ runpath_var= ++ hardcode_libdir_flag_spec= ++ export_dynamic_flag_spec= ++ whole_archive_flag_spec= ++ fi ++ else ++ # PORTME fill in a description of your system's linker (not GNU ld) ++ case $host_os in ++ aix3*) ++ allow_undefined_flag=unsupported ++ always_export_symbols=yes ++ 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' ++ # Note: this linker hardcodes the directories in LIBPATH if there ++ # are no directories specified by -L. ++ hardcode_minus_L=yes ++ if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then ++ # Neither direct hardcoding nor static linking is supported with a ++ # broken collect2. ++ hardcode_direct=unsupported ++ fi ++ ;; ++ ++ aix4* | aix5*) ++ if test "$host_cpu" = ia64; then ++ # On IA64, the linker does run time linking by default, so we don't ++ # have to do anything special. ++ aix_use_runtimelinking=no ++ exp_sym_flag='-Bexport' ++ no_entry_flag="" ++ else ++ # If we're using GNU nm, then we don't want the "-C" option. ++ # -C means demangle to AIX nm, but means don't demangle with GNU nm ++ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then ++ export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' ++ else ++ export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' ++ fi ++ aix_use_runtimelinking=no ++ ++ # Test if we are trying to use run time linking or normal ++ # AIX style linking. If -brtl is somewhere in LDFLAGS, we ++ # need to do runtime linking. ++ case $host_os in aix4.[23]|aix4.[23].*|aix5*) ++ for ld_flag in $LDFLAGS; do ++ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then ++ aix_use_runtimelinking=yes ++ break ++ fi ++ done ++ ;; ++ esac ++ ++ exp_sym_flag='-bexport' ++ no_entry_flag='-bnoentry' ++ fi ++ ++ # When large executables or shared objects are built, AIX ld can ++ # have problems creating the table of contents. If linking a library ++ # or program results in "error TOC overflow" add -mminimal-toc to ++ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not ++ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. ++ ++ archive_cmds='' ++ hardcode_direct=yes ++ hardcode_libdir_separator=':' ++ link_all_deplibs=yes ++ ++ if test "$GCC" = yes; then ++ case $host_os in aix4.[012]|aix4.[012].*) ++ # We only want to do this on AIX 4.2 and lower, the check ++ # below for broken collect2 doesn't work under 4.3+ ++ collect2name=`${CC} -print-prog-name=collect2` ++ if test -f "$collect2name" && \ ++ strings "$collect2name" | grep resolve_lib_name >/dev/null ++ then ++ # We have reworked collect2 ++ : ++ else ++ # We have old collect2 ++ hardcode_direct=unsupported ++ # It fails to find uninstalled libraries when the uninstalled ++ # path is not listed in the libpath. Setting hardcode_minus_L ++ # to unsupported forces relinking ++ hardcode_minus_L=yes ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_libdir_separator= ++ fi ++ ;; ++ esac ++ shared_flag='-shared' ++ if test "$aix_use_runtimelinking" = yes; then ++ shared_flag="$shared_flag "'${wl}-G' ++ fi ++ else ++ # not using gcc ++ if test "$host_cpu" = ia64; then ++ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release ++ # chokes on -Wl,-G. The following line is correct: ++ shared_flag='-G' ++ else ++ if test "$aix_use_runtimelinking" = yes; then ++ shared_flag='${wl}-G' ++ else ++ shared_flag='${wl}-bM:SRE' ++ fi ++ fi ++ fi ++ ++ # It seems that -bexpall does not export symbols beginning with ++ # underscore (_), so it is better to generate a list of symbols to export. ++ always_export_symbols=yes ++ if test "$aix_use_runtimelinking" = yes; then ++ # Warning - without using the other runtime loading flags (-brtl), ++ # -berok will link without error, but may produce a broken library. ++ allow_undefined_flag='-berok' ++ # Determine the default libpath from the value encoded in an empty executable. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ++lt_aix_libpath_sed=' ++ /Import File Strings/,/^$/ { ++ /^0/ { ++ s/^0 *\(.*\)$/\1/ ++ p ++ } ++ }' ++aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++# Check for a 64-bit object if we didn't find anything. ++if test -z "$aix_libpath"; then ++ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++fi ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ++ ++ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" ++ archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" ++ else ++ if test "$host_cpu" = ia64; then ++ hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' ++ allow_undefined_flag="-z nodefs" ++ 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" ++ else ++ # Determine the default libpath from the value encoded in an empty executable. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ++lt_aix_libpath_sed=' ++ /Import File Strings/,/^$/ { ++ /^0/ { ++ s/^0 *\(.*\)$/\1/ ++ p ++ } ++ }' ++aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++# Check for a 64-bit object if we didn't find anything. ++if test -z "$aix_libpath"; then ++ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++fi ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ++ ++ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" ++ # Warning - without using the other run time loading flags, ++ # -berok will link without error, but may produce a broken library. ++ no_undefined_flag=' ${wl}-bernotok' ++ allow_undefined_flag=' ${wl}-berok' ++ # Exported symbols can be pulled into shared objects from archives ++ whole_archive_flag_spec='$convenience' ++ archive_cmds_need_lc=yes ++ # This is similar to how AIX traditionally builds its shared libraries. ++ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' ++ fi ++ fi ++ ;; ++ ++ amigaos*) ++ 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)' ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_minus_L=yes ++ # see comment about different semantics on the GNU ld section ++ ld_shlibs=no ++ ;; ++ ++ bsdi[45]*) ++ export_dynamic_flag_spec=-rdynamic ++ ;; ++ ++ cygwin* | mingw* | pw32*) ++ # When not using gcc, we currently assume that we are using ++ # Microsoft Visual C++. ++ # hardcode_libdir_flag_spec is actually meaningless, as there is ++ # no search path for DLLs. ++ hardcode_libdir_flag_spec=' ' ++ allow_undefined_flag=unsupported ++ # Tell ltmain to make .lib files, not .a files. ++ libext=lib ++ # Tell ltmain to make .dll files, not .so files. ++ shrext_cmds=".dll" ++ # FIXME: Setting linknames here is a bad hack. ++ archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' ++ # The linker will automatically build a .lib file if we build a DLL. ++ old_archive_From_new_cmds='true' ++ # FIXME: Should let the user specify the lib program. ++ old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' ++ fix_srcfile_path='`cygpath -w "$srcfile"`' ++ enable_shared_with_static_runtimes=yes ++ ;; ++ ++ darwin* | rhapsody*) ++ case $host_os in ++ rhapsody* | darwin1.[012]) ++ allow_undefined_flag='${wl}-undefined ${wl}suppress' ++ ;; ++ *) # Darwin 1.3 on ++ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then ++ allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ++ else ++ case ${MACOSX_DEPLOYMENT_TARGET} in ++ 10.[012]) ++ allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ++ ;; ++ 10.*) ++ allow_undefined_flag='${wl}-undefined ${wl}dynamic_lookup' ++ ;; ++ esac ++ fi ++ ;; ++ esac ++ archive_cmds_need_lc=no ++ hardcode_direct=no ++ hardcode_automatic=yes ++ hardcode_shlibpath_var=unsupported ++ whole_archive_flag_spec='' ++ link_all_deplibs=yes ++ if test "$GCC" = yes ; then ++ output_verbose_link_cmd='echo' ++ archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' ++ module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' ++ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds ++ archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ else ++ case $cc_basename in ++ xlc*) ++ output_verbose_link_cmd='echo' ++ archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' ++ module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' ++ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds ++ archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ ;; ++ *) ++ ld_shlibs=no ++ ;; ++ esac ++ fi ++ ;; ++ ++ dgux*) ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_shlibpath_var=no ++ ;; ++ ++ freebsd1*) ++ ld_shlibs=no ++ ;; ++ ++ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor ++ # support. Future versions do this automatically, but an explicit c++rt0.o ++ # does not break anything, and helps significantly (at the cost of a little ++ # extra space). ++ freebsd2.2*) ++ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' ++ hardcode_libdir_flag_spec='-R$libdir' ++ hardcode_direct=yes ++ hardcode_shlibpath_var=no ++ ;; ++ ++ # Unfortunately, older versions of FreeBSD 2 do not have this feature. ++ freebsd2*) ++ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_direct=yes ++ hardcode_minus_L=yes ++ hardcode_shlibpath_var=no ++ ;; ++ ++ # FreeBSD 3 and greater uses gcc -shared to do shared libraries. ++ freebsd* | dragonfly*) ++ archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' ++ hardcode_libdir_flag_spec='-R$libdir' ++ hardcode_direct=yes ++ hardcode_shlibpath_var=no ++ ;; ++ ++ hpux9*) ++ if test "$GCC" = yes; then ++ archive_cmds='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ++ else ++ archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ++ fi ++ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' ++ hardcode_libdir_separator=: ++ hardcode_direct=yes ++ ++ # hardcode_minus_L: Not really in the search PATH, ++ # but as the default location of the library. ++ hardcode_minus_L=yes ++ export_dynamic_flag_spec='${wl}-E' ++ ;; ++ ++ hpux10*) ++ if test "$GCC" = yes -a "$with_gnu_ld" = no; then ++ archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ++ fi ++ if test "$with_gnu_ld" = no; then ++ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' ++ hardcode_libdir_separator=: ++ ++ hardcode_direct=yes ++ export_dynamic_flag_spec='${wl}-E' ++ ++ # hardcode_minus_L: Not really in the search PATH, ++ # but as the default location of the library. ++ hardcode_minus_L=yes ++ fi ++ ;; ++ ++ hpux11*) ++ if test "$GCC" = yes -a "$with_gnu_ld" = no; then ++ case $host_cpu in ++ hppa*64*) ++ archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ ia64*) ++ archive_cmds='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ *) ++ archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ esac ++ else ++ case $host_cpu in ++ hppa*64*) ++ archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ ia64*) ++ archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ *) ++ archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ esac ++ fi ++ if test "$with_gnu_ld" = no; then ++ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' ++ hardcode_libdir_separator=: ++ ++ case $host_cpu in ++ hppa*64*|ia64*) ++ hardcode_libdir_flag_spec_ld='+b $libdir' ++ hardcode_direct=no ++ hardcode_shlibpath_var=no ++ ;; ++ *) ++ hardcode_direct=yes ++ export_dynamic_flag_spec='${wl}-E' ++ ++ # hardcode_minus_L: Not really in the search PATH, ++ # but as the default location of the library. ++ hardcode_minus_L=yes ++ ;; ++ esac ++ fi ++ ;; ++ ++ irix5* | irix6* | nonstopux*) ++ if test "$GCC" = yes; then ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ else ++ archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' ++ hardcode_libdir_flag_spec_ld='-rpath $libdir' ++ fi ++ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' ++ hardcode_libdir_separator=: ++ link_all_deplibs=yes ++ ;; ++ ++ netbsd* | netbsdelf*-gnu) ++ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then ++ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out ++ else ++ archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF ++ fi ++ hardcode_libdir_flag_spec='-R$libdir' ++ hardcode_direct=yes ++ hardcode_shlibpath_var=no ++ ;; ++ ++ newsos6) ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_direct=yes ++ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' ++ hardcode_libdir_separator=: ++ hardcode_shlibpath_var=no ++ ;; ++ ++ openbsd*) ++ if test -f /usr/libexec/ld.so; then ++ hardcode_direct=yes ++ hardcode_shlibpath_var=no ++ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then ++ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' ++ hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ++ export_dynamic_flag_spec='${wl}-E' ++ else ++ case $host_os in ++ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) ++ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_libdir_flag_spec='-R$libdir' ++ ;; ++ *) ++ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ++ hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ++ ;; ++ esac ++ fi ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ ++ os2*) ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_minus_L=yes ++ allow_undefined_flag=unsupported ++ archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' ++ old_archive_From_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ++ ;; ++ ++ osf3*) ++ if test "$GCC" = yes; then ++ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' ++ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ else ++ allow_undefined_flag=' -expect_unresolved \*' ++ archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' ++ fi ++ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' ++ hardcode_libdir_separator=: ++ ;; ++ ++ osf4* | osf5*) # as osf3* with the addition of -msym flag ++ if test "$GCC" = yes; then ++ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' ++ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' ++ else ++ allow_undefined_flag=' -expect_unresolved \*' ++ archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' ++ archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ ++ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' ++ ++ # Both c and cxx compiler support -rpath directly ++ hardcode_libdir_flag_spec='-rpath $libdir' ++ fi ++ hardcode_libdir_separator=: ++ ;; ++ ++ solaris*) ++ no_undefined_flag=' -z text' ++ if test "$GCC" = yes; then ++ wlarc='${wl}' ++ archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ ++ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' ++ else ++ wlarc='' ++ archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ ++ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' ++ fi ++ hardcode_libdir_flag_spec='-R$libdir' ++ hardcode_shlibpath_var=no ++ case $host_os in ++ solaris2.[0-5] | solaris2.[0-5].*) ;; ++ *) ++ # The compiler driver will combine and reorder linker options, ++ # but understands `-z linker_flag'. GCC discards it without `$wl', ++ # but is careful enough not to reorder. ++ # Supported since Solaris 2.6 (maybe 2.5.1?) ++ if test "$GCC" = yes; then ++ whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ++ else ++ whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ++ fi ++ ;; ++ esac ++ link_all_deplibs=yes ++ ;; ++ ++ sunos4*) ++ if test "x$host_vendor" = xsequent; then ++ # Use $CC to link under sequent, because it throws in some extra .o ++ # files that make .init and .fini sections work. ++ archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' ++ fi ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_direct=yes ++ hardcode_minus_L=yes ++ hardcode_shlibpath_var=no ++ ;; ++ ++ sysv4) ++ case $host_vendor in ++ sni) ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_direct=yes # is this really true??? ++ ;; ++ siemens) ++ ## LD is ld it makes a PLAMLIB ++ ## CC just makes a GrossModule. ++ archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' ++ reload_cmds='$CC -r -o $output$reload_objs' ++ hardcode_direct=no ++ ;; ++ motorola) ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_direct=no #Motorola manual says yes, but my tests say they lie ++ ;; ++ esac ++ runpath_var='LD_RUN_PATH' ++ hardcode_shlibpath_var=no ++ ;; ++ ++ sysv4.3*) ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_shlibpath_var=no ++ export_dynamic_flag_spec='-Bexport' ++ ;; ++ ++ sysv4*MP*) ++ if test -d /usr/nec; then ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_shlibpath_var=no ++ runpath_var=LD_RUN_PATH ++ hardcode_runpath_var=yes ++ ld_shlibs=yes ++ fi ++ ;; ++ ++ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) ++ no_undefined_flag='${wl}-z,text' ++ archive_cmds_need_lc=no ++ hardcode_shlibpath_var=no ++ runpath_var='LD_RUN_PATH' ++ ++ if test "$GCC" = yes; then ++ archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ fi ++ ;; ++ ++ sysv5* | sco3.2v5* | sco5v6*) ++ # Note: We can NOT use -z defs as we might desire, because we do not ++ # link with -lc, and that would cause any symbols used from libc to ++ # always be unresolved, which means just about no library would ++ # ever link correctly. If we're not using GNU ld we use -z text ++ # though, which does catch some bad symbols but isn't as heavy-handed ++ # as -z defs. ++ no_undefined_flag='${wl}-z,text' ++ allow_undefined_flag='${wl}-z,nodefs' ++ archive_cmds_need_lc=no ++ hardcode_shlibpath_var=no ++ hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' ++ hardcode_libdir_separator=':' ++ link_all_deplibs=yes ++ export_dynamic_flag_spec='${wl}-Bexport' ++ runpath_var='LD_RUN_PATH' ++ ++ if test "$GCC" = yes; then ++ archive_cmds='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ archive_cmds='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ fi ++ ;; ++ ++ uts4*) ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_shlibpath_var=no ++ ;; ++ ++ *) ++ ld_shlibs=no ++ ;; ++ esac ++ fi ++ ++{ echo "$as_me:$LINENO: result: $ld_shlibs" >&5 ++echo "${ECHO_T}$ld_shlibs" >&6; } ++test "$ld_shlibs" = no && can_build_shared=no ++ ++# ++# Do we need to explicitly link libc? ++# ++case "x$archive_cmds_need_lc" in ++x|xyes) ++ # Assume -lc should be added ++ archive_cmds_need_lc=yes ++ ++ if test "$enable_shared" = yes && test "$GCC" = yes; then ++ case $archive_cmds in ++ *'~'*) ++ # FIXME: we may have to deal with multi-command sequences. ++ ;; ++ '$CC '*) ++ # Test whether the compiler implicitly links with -lc since on some ++ # systems, -lgcc has to come before -lc. If gcc already passes -lc ++ # to ld, don't add -lc before -lgcc. ++ { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 ++echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } ++ $rm conftest* ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ ++ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ++ (eval $ac_compile) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } 2>conftest.err; then ++ soname=conftest ++ lib=conftest ++ libobjs=conftest.$ac_objext ++ deplibs= ++ wl=$lt_prog_compiler_wl ++ pic_flag=$lt_prog_compiler_pic ++ compiler_flags=-v ++ linker_flags=-v ++ verstring= ++ output_objdir=. ++ libname=conftest ++ lt_save_allow_undefined_flag=$allow_undefined_flag ++ allow_undefined_flag= ++ if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 ++ (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } ++ then ++ archive_cmds_need_lc=no ++ else ++ archive_cmds_need_lc=yes ++ fi ++ allow_undefined_flag=$lt_save_allow_undefined_flag ++ else ++ cat conftest.err 1>&5 ++ fi ++ $rm conftest* ++ { echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5 ++echo "${ECHO_T}$archive_cmds_need_lc" >&6; } ++ ;; ++ esac ++ fi ++ ;; ++esac ++ ++{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 ++echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } ++library_names_spec= ++libname_spec='lib$name' ++soname_spec= ++shrext_cmds=".so" ++postinstall_cmds= ++postuninstall_cmds= ++finish_cmds= ++finish_eval= ++shlibpath_var= ++shlibpath_overrides_runpath=unknown ++version_type=none ++dynamic_linker="$host_os ld.so" ++sys_lib_dlsearch_path_spec="/lib /usr/lib" ++ ++if test "$GCC" = yes; then ++ case $host_os in ++ darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; ++ *) lt_awk_arg="/^libraries:/" ;; ++ esac ++ lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` ++ if echo "$lt_search_path_spec" | grep ';' >/dev/null ; then ++ # if the path contains ";" then we assume it to be the separator ++ # otherwise default to the standard path separator (i.e. ":") - it is ++ # assumed that no part of a normal pathname contains ";" but that should ++ # okay in the real world where ";" in dirpaths is itself problematic. ++ lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e 's/;/ /g'` ++ else ++ lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ++ fi ++ # Ok, now we have the path, separated by spaces, we can step through it ++ # and add multilib dir if necessary. ++ lt_tmp_lt_search_path_spec= ++ lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` ++ for lt_sys_path in $lt_search_path_spec; do ++ if test -d "$lt_sys_path/$lt_multi_os_dir"; then ++ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" ++ else ++ test -d "$lt_sys_path" && \ ++ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" ++ fi ++ done ++ lt_search_path_spec=`echo $lt_tmp_lt_search_path_spec | awk ' ++BEGIN {RS=" "; FS="/|\n";} { ++ lt_foo=""; ++ lt_count=0; ++ for (lt_i = NF; lt_i > 0; lt_i--) { ++ if ($lt_i != "" && $lt_i != ".") { ++ if ($lt_i == "..") { ++ lt_count++; ++ } else { ++ if (lt_count == 0) { ++ lt_foo="/" $lt_i lt_foo; ++ } else { ++ lt_count--; ++ } ++ } ++ } ++ } ++ if (lt_foo != "") { lt_freq[lt_foo]++; } ++ if (lt_freq[lt_foo] == 1) { print lt_foo; } ++}'` ++ sys_lib_search_path_spec=`echo $lt_search_path_spec` ++else ++ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" ++fi ++need_lib_prefix=unknown ++hardcode_into_libs=no ++ ++# when you set need_version to no, make sure it does not cause -set_version ++# flags to be left without arguments ++need_version=unknown ++ ++case $host_os in ++aix3*) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' ++ shlibpath_var=LIBPATH ++ ++ # AIX 3 has no versioning support, so we append a major version to the name. ++ soname_spec='${libname}${release}${shared_ext}$major' ++ ;; ++ ++aix4* | aix5*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ hardcode_into_libs=yes ++ if test "$host_cpu" = ia64; then ++ # AIX 5 supports IA64 ++ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' ++ shlibpath_var=LD_LIBRARY_PATH ++ else ++ # With GCC up to 2.95.x, collect2 would create an import file ++ # for dependence libraries. The import file would start with ++ # the line `#! .'. This would cause the generated library to ++ # depend on `.', always an invalid library. This was fixed in ++ # development snapshots of GCC prior to 3.0. ++ case $host_os in ++ aix4 | aix4.[01] | aix4.[01].*) ++ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' ++ echo ' yes ' ++ echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then ++ : ++ else ++ can_build_shared=no ++ fi ++ ;; ++ esac ++ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct ++ # soname into executable. Probably we can add versioning support to ++ # collect2, so additional links can be useful in future. ++ if test "$aix_use_runtimelinking" = yes; then ++ # If using run time linking (on AIX 4.2 or later) use lib.so ++ # instead of lib.a to let people know that these are not ++ # typical AIX shared libraries. ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ else ++ # We preserve .a as extension for shared libraries through AIX4.2 ++ # and later when we are not doing run time linking. ++ library_names_spec='${libname}${release}.a $libname.a' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ fi ++ shlibpath_var=LIBPATH ++ fi ++ ;; ++ ++amigaos*) ++ library_names_spec='$libname.ixlibrary $libname.a' ++ # Create ${libname}_ixlibrary.a entries in /sys/libs. ++ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $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' ++ ;; ++ ++beos*) ++ library_names_spec='${libname}${shared_ext}' ++ dynamic_linker="$host_os ld.so" ++ shlibpath_var=LIBRARY_PATH ++ ;; ++ ++bsdi[45]*) ++ version_type=linux ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" ++ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" ++ # the default ld.so.conf also contains /usr/contrib/lib and ++ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow ++ # libtool to hard-code these into programs ++ ;; ++ ++cygwin* | mingw* | pw32*) ++ version_type=windows ++ shrext_cmds=".dll" ++ need_version=no ++ need_lib_prefix=no ++ ++ case $GCC,$host_os in ++ yes,cygwin* | yes,mingw* | yes,pw32*) ++ library_names_spec='$libname.dll.a' ++ # DLL is installed to $(libdir)/../bin by postinstall_cmds ++ postinstall_cmds='base_file=`basename \${file}`~ ++ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ ++ dldir=$destdir/`dirname \$dlpath`~ ++ test -d \$dldir || mkdir -p \$dldir~ ++ $install_prog $dir/$dlname \$dldir/$dlname~ ++ chmod a+x \$dldir/$dlname' ++ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ ++ dlpath=$dir/\$dldll~ ++ $rm \$dlpath' ++ shlibpath_overrides_runpath=yes ++ ++ case $host_os in ++ cygwin*) ++ # Cygwin DLLs use 'cyg' prefix rather than 'lib' ++ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ++ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ++ ;; ++ mingw*) ++ # MinGW DLLs use traditional 'lib' prefix ++ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ++ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` ++ if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then ++ # It is most probably a Windows format PATH printed by ++ # mingw gcc, but we are running on Cygwin. Gcc prints its search ++ # path with ; separators, and with drive letters. We can handle the ++ # drive letters (cygwin fileutils understands them), so leave them, ++ # especially as we might pass files found there to a mingw objdump, ++ # which wouldn't understand a cygwinified path. Ahh. ++ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` ++ else ++ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ++ fi ++ ;; ++ pw32*) ++ # pw32 DLLs use 'pw' prefix rather than 'lib' ++ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ++ ;; ++ esac ++ ;; ++ ++ *) ++ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ++ ;; ++ esac ++ dynamic_linker='Win32 ld.exe' ++ # FIXME: first we should search . and the directory the executable is in ++ shlibpath_var=PATH ++ ;; ++ ++darwin* | rhapsody*) ++ dynamic_linker="$host_os dyld" ++ version_type=darwin ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' ++ soname_spec='${libname}${release}${major}$shared_ext' ++ shlibpath_overrides_runpath=yes ++ shlibpath_var=DYLD_LIBRARY_PATH ++ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' ++ ++ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" ++ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ++ ;; ++ ++dgux*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ ;; ++ ++freebsd1*) ++ dynamic_linker=no ++ ;; ++ ++freebsd* | dragonfly*) ++ # DragonFly does not have aout. When/if they implement a new ++ # versioning mechanism, adjust this. ++ if test -x /usr/bin/objformat; then ++ objformat=`/usr/bin/objformat` ++ else ++ case $host_os in ++ freebsd[123]*) objformat=aout ;; ++ *) objformat=elf ;; ++ esac ++ fi ++ version_type=freebsd-$objformat ++ case $version_type in ++ freebsd-elf*) ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' ++ need_version=no ++ need_lib_prefix=no ++ ;; ++ freebsd-*) ++ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' ++ need_version=yes ++ ;; ++ esac ++ shlibpath_var=LD_LIBRARY_PATH ++ case $host_os in ++ freebsd2*) ++ shlibpath_overrides_runpath=yes ++ ;; ++ freebsd3.[01]* | freebsdelf3.[01]*) ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ ;; ++ freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ ++ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ ;; ++ *) # from 4.6 on, and DragonFly ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ ;; ++ esac ++ ;; ++ ++gnu*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ hardcode_into_libs=yes ++ ;; ++ ++hpux9* | hpux10* | hpux11*) ++ # Give a soname corresponding to the major version so that dld.sl refuses to ++ # link against other versions. ++ version_type=sunos ++ need_lib_prefix=no ++ need_version=no ++ case $host_cpu in ++ ia64*) ++ shrext_cmds='.so' ++ hardcode_into_libs=yes ++ dynamic_linker="$host_os dld.so" ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ if test "X$HPUX_IA64_MODE" = X32; then ++ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" ++ else ++ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" ++ fi ++ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ++ ;; ++ hppa*64*) ++ shrext_cmds='.sl' ++ hardcode_into_libs=yes ++ dynamic_linker="$host_os dld.sl" ++ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH ++ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" ++ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ++ ;; ++ *) ++ shrext_cmds='.sl' ++ dynamic_linker="$host_os dld.sl" ++ shlibpath_var=SHLIB_PATH ++ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ ;; ++ esac ++ # HP-UX runs *really* slowly unless shared libraries are mode 555. ++ postinstall_cmds='chmod 555 $lib' ++ ;; ++ ++interix[3-9]*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ ;; ++ ++irix5* | irix6* | nonstopux*) ++ case $host_os in ++ nonstopux*) version_type=nonstopux ;; ++ *) ++ if test "$lt_cv_prog_gnu_ld" = yes; then ++ version_type=linux ++ else ++ version_type=irix ++ fi ;; ++ esac ++ need_lib_prefix=no ++ need_version=no ++ soname_spec='${libname}${release}${shared_ext}$major' ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' ++ case $host_os in ++ irix5* | nonstopux*) ++ libsuff= shlibsuff= ++ ;; ++ *) ++ case $LD in # libtool.m4 will add one of these switches to LD ++ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") ++ libsuff= shlibsuff= libmagic=32-bit;; ++ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") ++ libsuff=32 shlibsuff=N32 libmagic=N32;; ++ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") ++ libsuff=64 shlibsuff=64 libmagic=64-bit;; ++ *) libsuff= shlibsuff= libmagic=never-match;; ++ esac ++ ;; ++ esac ++ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH ++ shlibpath_overrides_runpath=no ++ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" ++ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" ++ hardcode_into_libs=yes ++ ;; ++ ++# No shared lib support for Linux oldld, aout, or coff. ++linux*oldld* | linux*aout* | linux*coff*) ++ dynamic_linker=no ++ ;; ++ ++# This must be Linux ELF. ++linux* | k*bsd*-gnu) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ # This implies no fast_install, which is unacceptable. ++ # Some rework will be needed to allow for fast_install ++ # before this can be enabled. ++ hardcode_into_libs=yes ++ ++ # Append ld.so.conf contents to the search path ++ if test -f /etc/ld.so.conf; then ++ 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;/^$/d' | tr '\n' ' '` ++ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" ++ fi ++ ++ # We used to test for /lib/ld.so.1 and disable shared libraries on ++ # powerpc, because MkLinux only supported shared libraries with the ++ # GNU dynamic linker. Since this was broken with cross compilers, ++ # most powerpc-linux boxes support dynamic linking these days and ++ # people can always --disable-shared, the test was removed, and we ++ # assume the GNU/Linux dynamic linker is in use. ++ dynamic_linker='GNU/Linux ld.so' ++ ;; ++ ++netbsdelf*-gnu) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ dynamic_linker='NetBSD ld.elf_so' ++ ;; ++ ++netbsd*) ++ version_type=sunos ++ need_lib_prefix=no ++ need_version=no ++ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' ++ dynamic_linker='NetBSD (a.out) ld.so' ++ else ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ dynamic_linker='NetBSD ld.elf_so' ++ fi ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ ;; ++ ++newsos6) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ ;; ++ ++nto-qnx*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ ;; ++ ++openbsd*) ++ version_type=sunos ++ sys_lib_dlsearch_path_spec="/usr/lib" ++ need_lib_prefix=no ++ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. ++ case $host_os in ++ openbsd3.3 | openbsd3.3.*) need_version=yes ;; ++ *) need_version=no ;; ++ esac ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then ++ case $host_os in ++ openbsd2.[89] | openbsd2.[89].*) ++ shlibpath_overrides_runpath=no ++ ;; ++ *) ++ shlibpath_overrides_runpath=yes ++ ;; ++ esac ++ else ++ shlibpath_overrides_runpath=yes ++ fi ++ ;; ++ ++os2*) ++ libname_spec='$name' ++ shrext_cmds=".dll" ++ need_lib_prefix=no ++ library_names_spec='$libname${shared_ext} $libname.a' ++ dynamic_linker='OS/2 ld.exe' ++ shlibpath_var=LIBPATH ++ ;; ++ ++osf3* | osf4* | osf5*) ++ version_type=osf ++ need_lib_prefix=no ++ need_version=no ++ soname_spec='${libname}${release}${shared_ext}$major' ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ shlibpath_var=LD_LIBRARY_PATH ++ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" ++ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ++ ;; ++ ++rdos*) ++ dynamic_linker=no ++ ;; ++ ++solaris*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ # ldd complains unless libraries are executable ++ postinstall_cmds='chmod +x $lib' ++ ;; ++ ++sunos4*) ++ version_type=sunos ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' ++ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ if test "$with_gnu_ld" = yes; then ++ need_lib_prefix=no ++ fi ++ need_version=yes ++ ;; ++ ++sysv4 | sysv4.3*) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ case $host_vendor in ++ sni) ++ shlibpath_overrides_runpath=no ++ need_lib_prefix=no ++ export_dynamic_flag_spec='${wl}-Blargedynsym' ++ runpath_var=LD_RUN_PATH ++ ;; ++ siemens) ++ need_lib_prefix=no ++ ;; ++ motorola) ++ need_lib_prefix=no ++ need_version=no ++ shlibpath_overrides_runpath=no ++ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ++ ;; ++ esac ++ ;; ++ ++sysv4*MP*) ++ if test -d /usr/nec ;then ++ version_type=linux ++ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' ++ soname_spec='$libname${shared_ext}.$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ fi ++ ;; ++ ++sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) ++ version_type=freebsd-elf ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ hardcode_into_libs=yes ++ if test "$with_gnu_ld" = yes; then ++ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' ++ shlibpath_overrides_runpath=no ++ else ++ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' ++ shlibpath_overrides_runpath=yes ++ case $host_os in ++ sco3.2v5*) ++ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ++ ;; ++ esac ++ fi ++ sys_lib_dlsearch_path_spec='/usr/lib' ++ ;; ++ ++uts4*) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ ;; ++ ++*) ++ dynamic_linker=no ++ ;; ++esac ++{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5 ++echo "${ECHO_T}$dynamic_linker" >&6; } ++test "$dynamic_linker" = no && can_build_shared=no ++ ++variables_saved_for_relink="PATH $shlibpath_var $runpath_var" ++if test "$GCC" = yes; then ++ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" ++fi ++ ++{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 ++echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } ++hardcode_action= ++if test -n "$hardcode_libdir_flag_spec" || \ ++ test -n "$runpath_var" || \ ++ test "X$hardcode_automatic" = "Xyes" ; then ++ ++ # We can hardcode non-existant directories. ++ if test "$hardcode_direct" != no && ++ # If the only mechanism to avoid hardcoding is shlibpath_var, we ++ # have to relink, otherwise we might link with an installed library ++ # when we should be linking with a yet-to-be-installed one ++ ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, )" != no && ++ test "$hardcode_minus_L" != no; then ++ # Linking always hardcodes the temporary library directory. ++ hardcode_action=relink ++ else ++ # We can link without hardcoding, and we can hardcode nonexisting dirs. ++ hardcode_action=immediate ++ fi ++else ++ # We cannot hardcode anything, or else we can only hardcode existing ++ # directories. ++ hardcode_action=unsupported ++fi ++{ echo "$as_me:$LINENO: result: $hardcode_action" >&5 ++echo "${ECHO_T}$hardcode_action" >&6; } ++ ++if test "$hardcode_action" = relink; then ++ # Fast installation is not supported ++ enable_fast_install=no ++elif test "$shlibpath_overrides_runpath" = yes || ++ test "$enable_shared" = no; then ++ # Fast installation is not necessary ++ enable_fast_install=needless ++fi ++ ++striplib= ++old_striplib= ++{ echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 ++echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6; } ++if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then ++ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" ++ test -z "$striplib" && striplib="$STRIP --strip-unneeded" ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } ++else ++# FIXME - insert some real tests, host_os isn't really good enough ++ case $host_os in ++ darwin*) ++ if test -n "$STRIP" ; then ++ striplib="$STRIP -x" ++ old_striplib="$STRIP -S" ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } ++ else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ;; ++ *) ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++ ;; ++ esac ++fi ++ ++if test "x$enable_dlopen" != xyes; then ++ enable_dlopen=unknown ++ enable_dlopen_self=unknown ++ enable_dlopen_self_static=unknown ++else ++ lt_cv_dlopen=no ++ lt_cv_dlopen_libs= ++ ++ case $host_os in ++ beos*) ++ lt_cv_dlopen="load_add_on" ++ lt_cv_dlopen_libs= ++ lt_cv_dlopen_self=yes ++ ;; ++ ++ mingw* | pw32*) ++ lt_cv_dlopen="LoadLibrary" ++ lt_cv_dlopen_libs= ++ ;; ++ ++ cygwin*) ++ lt_cv_dlopen="dlopen" ++ lt_cv_dlopen_libs= ++ ;; ++ ++ darwin*) ++ # if libdl is installed we need to link against it ++ { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 ++echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; } ++if test "${ac_cv_lib_dl_dlopen+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-ldl $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char dlopen (); ++int ++main () ++{ ++return dlopen (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_dl_dlopen=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_dl_dlopen=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 ++echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; } ++if test $ac_cv_lib_dl_dlopen = yes; then ++ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" ++else ++ ++ lt_cv_dlopen="dyld" ++ lt_cv_dlopen_libs= ++ lt_cv_dlopen_self=yes ++ ++fi ++ ++ ;; ++ ++ *) ++ { echo "$as_me:$LINENO: checking for shl_load" >&5 ++echo $ECHO_N "checking for shl_load... $ECHO_C" >&6; } ++if test "${ac_cv_func_shl_load+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++/* Define shl_load to an innocuous variant, in case declares shl_load. ++ For example, HP-UX 11i declares gettimeofday. */ ++#define shl_load innocuous_shl_load ++ ++/* System header to define __stub macros and hopefully few prototypes, ++ which can conflict with char shl_load (); below. ++ Prefer to if __STDC__ is defined, since ++ exists even on freestanding compilers. */ ++ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ ++#undef shl_load ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char shl_load (); ++/* The GNU C library defines this for functions which it implements ++ to always fail with ENOSYS. Some functions are actually named ++ something starting with __ and the normal name is an alias. */ ++#if defined __stub_shl_load || defined __stub___shl_load ++choke me ++#endif ++ ++int ++main () ++{ ++return shl_load (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_func_shl_load=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_func_shl_load=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 ++echo "${ECHO_T}$ac_cv_func_shl_load" >&6; } ++if test $ac_cv_func_shl_load = yes; then ++ lt_cv_dlopen="shl_load" ++else ++ { echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 ++echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6; } ++if test "${ac_cv_lib_dld_shl_load+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-ldld $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char shl_load (); ++int ++main () ++{ ++return shl_load (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_dld_shl_load=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_dld_shl_load=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 ++echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6; } ++if test $ac_cv_lib_dld_shl_load = yes; then ++ lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" ++else ++ { echo "$as_me:$LINENO: checking for dlopen" >&5 ++echo $ECHO_N "checking for dlopen... $ECHO_C" >&6; } ++if test "${ac_cv_func_dlopen+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++/* Define dlopen to an innocuous variant, in case declares dlopen. ++ For example, HP-UX 11i declares gettimeofday. */ ++#define dlopen innocuous_dlopen ++ ++/* System header to define __stub macros and hopefully few prototypes, ++ which can conflict with char dlopen (); below. ++ Prefer to if __STDC__ is defined, since ++ exists even on freestanding compilers. */ ++ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ ++#undef dlopen ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char dlopen (); ++/* The GNU C library defines this for functions which it implements ++ to always fail with ENOSYS. Some functions are actually named ++ something starting with __ and the normal name is an alias. */ ++#if defined __stub_dlopen || defined __stub___dlopen ++choke me ++#endif ++ ++int ++main () ++{ ++return dlopen (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_func_dlopen=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_func_dlopen=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 ++echo "${ECHO_T}$ac_cv_func_dlopen" >&6; } ++if test $ac_cv_func_dlopen = yes; then ++ lt_cv_dlopen="dlopen" ++else ++ { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 ++echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; } ++if test "${ac_cv_lib_dl_dlopen+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-ldl $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char dlopen (); ++int ++main () ++{ ++return dlopen (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_dl_dlopen=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_dl_dlopen=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 ++echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; } ++if test $ac_cv_lib_dl_dlopen = yes; then ++ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" ++else ++ { echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 ++echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6; } ++if test "${ac_cv_lib_svld_dlopen+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lsvld $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char dlopen (); ++int ++main () ++{ ++return dlopen (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_svld_dlopen=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_svld_dlopen=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 ++echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6; } ++if test $ac_cv_lib_svld_dlopen = yes; then ++ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" ++else ++ { echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 ++echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6; } ++if test "${ac_cv_lib_dld_dld_link+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-ldld $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char dld_link (); ++int ++main () ++{ ++return dld_link (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_dld_dld_link=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_dld_dld_link=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 ++echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6; } ++if test $ac_cv_lib_dld_dld_link = yes; then ++ lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" ++fi ++ ++ ++fi ++ ++ ++fi ++ ++ ++fi ++ ++ ++fi ++ ++ ++fi ++ ++ ;; ++ esac ++ ++ if test "x$lt_cv_dlopen" != xno; then ++ enable_dlopen=yes ++ else ++ enable_dlopen=no ++ fi ++ ++ case $lt_cv_dlopen in ++ dlopen) ++ save_CPPFLAGS="$CPPFLAGS" ++ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" ++ ++ save_LDFLAGS="$LDFLAGS" ++ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" ++ ++ save_LIBS="$LIBS" ++ LIBS="$lt_cv_dlopen_libs $LIBS" ++ ++ { echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 ++echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6; } ++if test "${lt_cv_dlopen_self+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test "$cross_compiling" = yes; then : ++ lt_cv_dlopen_self=cross ++else ++ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 ++ lt_status=$lt_dlunknown ++ cat > conftest.$ac_ext < ++#endif ++ ++#include ++ ++#ifdef RTLD_GLOBAL ++# define LT_DLGLOBAL RTLD_GLOBAL ++#else ++# ifdef DL_GLOBAL ++# define LT_DLGLOBAL DL_GLOBAL ++# else ++# define LT_DLGLOBAL 0 ++# endif ++#endif ++ ++/* We may have to define LT_DLLAZY_OR_NOW in the command line if we ++ find out it does not work in some platform. */ ++#ifndef LT_DLLAZY_OR_NOW ++# ifdef RTLD_LAZY ++# define LT_DLLAZY_OR_NOW RTLD_LAZY ++# else ++# ifdef DL_LAZY ++# define LT_DLLAZY_OR_NOW DL_LAZY ++# else ++# ifdef RTLD_NOW ++# define LT_DLLAZY_OR_NOW RTLD_NOW ++# else ++# ifdef DL_NOW ++# define LT_DLLAZY_OR_NOW DL_NOW ++# else ++# define LT_DLLAZY_OR_NOW 0 ++# endif ++# endif ++# endif ++# endif ++#endif ++ ++#ifdef __cplusplus ++extern "C" void exit (int); ++#endif ++ ++void fnord() { int i=42;} ++int main () ++{ ++ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); ++ int status = $lt_dlunknown; ++ ++ if (self) ++ { ++ if (dlsym (self,"fnord")) status = $lt_dlno_uscore; ++ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; ++ /* dlclose (self); */ ++ } ++ else ++ puts (dlerror ()); ++ ++ exit (status); ++} ++EOF ++ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ++ (eval $ac_link) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then ++ (./conftest; exit; ) >&5 2>/dev/null ++ lt_status=$? ++ case x$lt_status in ++ x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; ++ x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; ++ x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; ++ esac ++ else : ++ # compilation failed ++ lt_cv_dlopen_self=no ++ fi ++fi ++rm -fr conftest* ++ ++ ++fi ++{ echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 ++echo "${ECHO_T}$lt_cv_dlopen_self" >&6; } ++ ++ if test "x$lt_cv_dlopen_self" = xyes; then ++ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" ++ { echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 ++echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6; } ++if test "${lt_cv_dlopen_self_static+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test "$cross_compiling" = yes; then : ++ lt_cv_dlopen_self_static=cross ++else ++ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 ++ lt_status=$lt_dlunknown ++ cat > conftest.$ac_ext < ++#endif ++ ++#include ++ ++#ifdef RTLD_GLOBAL ++# define LT_DLGLOBAL RTLD_GLOBAL ++#else ++# ifdef DL_GLOBAL ++# define LT_DLGLOBAL DL_GLOBAL ++# else ++# define LT_DLGLOBAL 0 ++# endif ++#endif ++ ++/* We may have to define LT_DLLAZY_OR_NOW in the command line if we ++ find out it does not work in some platform. */ ++#ifndef LT_DLLAZY_OR_NOW ++# ifdef RTLD_LAZY ++# define LT_DLLAZY_OR_NOW RTLD_LAZY ++# else ++# ifdef DL_LAZY ++# define LT_DLLAZY_OR_NOW DL_LAZY ++# else ++# ifdef RTLD_NOW ++# define LT_DLLAZY_OR_NOW RTLD_NOW ++# else ++# ifdef DL_NOW ++# define LT_DLLAZY_OR_NOW DL_NOW ++# else ++# define LT_DLLAZY_OR_NOW 0 ++# endif ++# endif ++# endif ++# endif ++#endif ++ ++#ifdef __cplusplus ++extern "C" void exit (int); ++#endif ++ ++void fnord() { int i=42;} ++int main () ++{ ++ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); ++ int status = $lt_dlunknown; ++ ++ if (self) ++ { ++ if (dlsym (self,"fnord")) status = $lt_dlno_uscore; ++ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; ++ /* dlclose (self); */ ++ } ++ else ++ puts (dlerror ()); ++ ++ exit (status); ++} ++EOF ++ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ++ (eval $ac_link) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then ++ (./conftest; exit; ) >&5 2>/dev/null ++ lt_status=$? ++ case x$lt_status in ++ x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; ++ x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; ++ x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; ++ esac ++ else : ++ # compilation failed ++ lt_cv_dlopen_self_static=no ++ fi ++fi ++rm -fr conftest* ++ ++ ++fi ++{ echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 ++echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6; } ++ fi ++ ++ CPPFLAGS="$save_CPPFLAGS" ++ LDFLAGS="$save_LDFLAGS" ++ LIBS="$save_LIBS" ++ ;; ++ esac ++ ++ case $lt_cv_dlopen_self in ++ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; ++ *) enable_dlopen_self=unknown ;; ++ esac ++ ++ case $lt_cv_dlopen_self_static in ++ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; ++ *) enable_dlopen_self_static=unknown ;; ++ esac ++fi ++ ++ ++# Report which library types will actually be built ++{ echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 ++echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6; } ++{ echo "$as_me:$LINENO: result: $can_build_shared" >&5 ++echo "${ECHO_T}$can_build_shared" >&6; } ++ ++{ echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 ++echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6; } ++test "$can_build_shared" = "no" && enable_shared=no ++ ++# On AIX, shared libraries and static libraries use the same namespace, and ++# are all built from PIC. ++case $host_os in ++aix3*) ++ test "$enable_shared" = yes && enable_static=no ++ if test -n "$RANLIB"; then ++ archive_cmds="$archive_cmds~\$RANLIB \$lib" ++ postinstall_cmds='$RANLIB $lib' ++ fi ++ ;; ++ ++aix4* | aix5*) ++ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then ++ test "$enable_shared" = yes && enable_static=no ++ fi ++ ;; ++esac ++{ echo "$as_me:$LINENO: result: $enable_shared" >&5 ++echo "${ECHO_T}$enable_shared" >&6; } ++ ++{ echo "$as_me:$LINENO: checking whether to build static libraries" >&5 ++echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6; } ++# Make sure either enable_shared or enable_static is yes. ++test "$enable_shared" = yes || enable_static=yes ++{ echo "$as_me:$LINENO: result: $enable_static" >&5 ++echo "${ECHO_T}$enable_static" >&6; } ++ ++# The else clause should only fire when bootstrapping the ++# libtool distribution, otherwise you forgot to ship ltmain.sh ++# with your package, and you will get complaints that there are ++# no rules to generate ltmain.sh. ++if test -f "$ltmain"; then ++ # See if we are running on zsh, and set the options which allow our commands through ++ # without removal of \ escapes. ++ if test -n "${ZSH_VERSION+set}" ; then ++ setopt NO_GLOB_SUBST ++ fi ++ # Now quote all the things that may contain metacharacters while being ++ # careful not to overquote the AC_SUBSTed values. We take copies of the ++ # variables and quote the copies for generation of the libtool script. ++ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ ++ SED SHELL STRIP \ ++ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ ++ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ ++ deplibs_check_method reload_flag reload_cmds need_locks \ ++ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ ++ lt_cv_sys_global_symbol_to_c_name_address \ ++ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ ++ old_postinstall_cmds old_postuninstall_cmds \ ++ compiler \ ++ CC \ ++ LD \ ++ lt_prog_compiler_wl \ ++ lt_prog_compiler_pic \ ++ lt_prog_compiler_static \ ++ lt_prog_compiler_no_builtin_flag \ ++ export_dynamic_flag_spec \ ++ thread_safe_flag_spec \ ++ whole_archive_flag_spec \ ++ enable_shared_with_static_runtimes \ ++ old_archive_cmds \ ++ old_archive_from_new_cmds \ ++ predep_objects \ ++ postdep_objects \ ++ predeps \ ++ postdeps \ ++ compiler_lib_search_path \ ++ archive_cmds \ ++ archive_expsym_cmds \ ++ postinstall_cmds \ ++ postuninstall_cmds \ ++ old_archive_from_expsyms_cmds \ ++ allow_undefined_flag \ ++ no_undefined_flag \ ++ export_symbols_cmds \ ++ hardcode_libdir_flag_spec \ ++ hardcode_libdir_flag_spec_ld \ ++ hardcode_libdir_separator \ ++ hardcode_automatic \ ++ module_cmds \ ++ module_expsym_cmds \ ++ lt_cv_prog_compiler_c_o \ ++ fix_srcfile_path \ ++ exclude_expsyms \ ++ include_expsyms; do ++ ++ case $var in ++ old_archive_cmds | \ ++ old_archive_from_new_cmds | \ ++ archive_cmds | \ ++ archive_expsym_cmds | \ ++ module_cmds | \ ++ module_expsym_cmds | \ ++ old_archive_from_expsyms_cmds | \ ++ export_symbols_cmds | \ ++ extract_expsyms_cmds | reload_cmds | finish_cmds | \ ++ postinstall_cmds | postuninstall_cmds | \ ++ old_postinstall_cmds | old_postuninstall_cmds | \ ++ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) ++ # Double-quote double-evaled strings. ++ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ++ ;; ++ *) ++ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ++ ;; ++ esac ++ done ++ ++ case $lt_echo in ++ *'\$0 --fallback-echo"') ++ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ++ ;; ++ esac ++ ++cfgfile="${ofile}T" ++ trap "$rm \"$cfgfile\"; exit 1" 1 2 15 ++ $rm -f "$cfgfile" ++ { echo "$as_me:$LINENO: creating $ofile" >&5 ++echo "$as_me: creating $ofile" >&6;} ++ ++ cat <<__EOF__ >> "$cfgfile" ++#! $SHELL ++ ++# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. ++# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) ++# NOTE: Changes made to this file will be lost: look at ltmain.sh. ++# ++# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 ++# Free Software Foundation, Inc. ++# ++# This file is part of GNU Libtool: ++# Originally by Gordon Matzigkeit , 1996 ++# ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 2 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, but ++# WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++# General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program; if not, write to the Free Software ++# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ++# ++# As a special exception to the GNU General Public License, if you ++# distribute this file as part of a program that contains a ++# configuration script generated by Autoconf, you may include it under ++# the same distribution terms that you use for the rest of that program. ++ ++# A sed program that does not truncate output. ++SED=$lt_SED ++ ++# Sed that helps us avoid accidentally triggering echo(1) options like -n. ++Xsed="$SED -e 1s/^X//" ++ ++# The HP-UX ksh and POSIX shell print the target directory to stdout ++# if CDPATH is set. ++(unset CDPATH) >/dev/null 2>&1 && unset CDPATH ++ ++# The names of the tagged configurations supported by this script. ++available_tags= ++ ++# ### BEGIN LIBTOOL CONFIG ++ ++# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: ++ ++# Shell to use when invoking shell scripts. ++SHELL=$lt_SHELL ++ ++# Whether or not to build shared libraries. ++build_libtool_libs=$enable_shared ++ ++# Whether or not to build static libraries. ++build_old_libs=$enable_static ++ ++# Whether or not to add -lc for building shared libraries. ++build_libtool_need_lc=$archive_cmds_need_lc ++ ++# Whether or not to disallow shared libs when runtime libs are static ++allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes ++ ++# Whether or not to optimize for fast installation. ++fast_install=$enable_fast_install ++ ++# The host system. ++host_alias=$host_alias ++host=$host ++host_os=$host_os ++ ++# The build system. ++build_alias=$build_alias ++build=$build ++build_os=$build_os ++ ++# An echo program that does not interpret backslashes. ++echo=$lt_echo ++ ++# The archiver. ++AR=$lt_AR ++AR_FLAGS=$lt_AR_FLAGS ++ ++# A C compiler. ++LTCC=$lt_LTCC ++ ++# LTCC compiler flags. ++LTCFLAGS=$lt_LTCFLAGS ++ ++# A language-specific compiler. ++CC=$lt_compiler ++ ++# Is the compiler the GNU C compiler? ++with_gcc=$GCC ++ ++# An ERE matcher. ++EGREP=$lt_EGREP ++ ++# The linker used to build libraries. ++LD=$lt_LD ++ ++# Whether we need hard or soft links. ++LN_S=$lt_LN_S ++ ++# A BSD-compatible nm program. ++NM=$lt_NM ++ ++# A symbol stripping program ++STRIP=$lt_STRIP ++ ++# Used to examine libraries when file_magic_cmd begins "file" ++MAGIC_CMD=$MAGIC_CMD ++ ++# Used on cygwin: DLL creation program. ++DLLTOOL="$DLLTOOL" ++ ++# Used on cygwin: object dumper. ++OBJDUMP="$OBJDUMP" ++ ++# Used on cygwin: assembler. ++AS="$AS" ++ ++# The name of the directory that contains temporary libtool files. ++objdir=$objdir ++ ++# How to create reloadable object files. ++reload_flag=$lt_reload_flag ++reload_cmds=$lt_reload_cmds ++ ++# How to pass a linker flag through the compiler. ++wl=$lt_lt_prog_compiler_wl ++ ++# Object file suffix (normally "o"). ++objext="$ac_objext" ++ ++# Old archive suffix (normally "a"). ++libext="$libext" ++ ++# Shared library suffix (normally ".so"). ++shrext_cmds='$shrext_cmds' ++ ++# Executable file suffix (normally ""). ++exeext="$exeext" ++ ++# Additional compiler flags for building library objects. ++pic_flag=$lt_lt_prog_compiler_pic ++pic_mode=$pic_mode ++ ++# What is the maximum length of a command? ++max_cmd_len=$lt_cv_sys_max_cmd_len ++ ++# Does compiler simultaneously support -c and -o options? ++compiler_c_o=$lt_lt_cv_prog_compiler_c_o ++ ++# Must we lock files when doing compilation? ++need_locks=$lt_need_locks ++ ++# Do we need the lib prefix for modules? ++need_lib_prefix=$need_lib_prefix ++ ++# Do we need a version for libraries? ++need_version=$need_version ++ ++# Whether dlopen is supported. ++dlopen_support=$enable_dlopen ++ ++# Whether dlopen of programs is supported. ++dlopen_self=$enable_dlopen_self ++ ++# Whether dlopen of statically linked programs is supported. ++dlopen_self_static=$enable_dlopen_self_static ++ ++# Compiler flag to prevent dynamic linking. ++link_static_flag=$lt_lt_prog_compiler_static ++ ++# Compiler flag to turn off builtin functions. ++no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag ++ ++# Compiler flag to allow reflexive dlopens. ++export_dynamic_flag_spec=$lt_export_dynamic_flag_spec ++ ++# Compiler flag to generate shared objects directly from archives. ++whole_archive_flag_spec=$lt_whole_archive_flag_spec ++ ++# Compiler flag to generate thread-safe objects. ++thread_safe_flag_spec=$lt_thread_safe_flag_spec ++ ++# Library versioning type. ++version_type=$version_type ++ ++# Format of library name prefix. ++libname_spec=$lt_libname_spec ++ ++# List of archive names. First name is the real one, the rest are links. ++# The last name is the one that the linker finds with -lNAME. ++library_names_spec=$lt_library_names_spec ++ ++# The coded name of the library, if different from the real name. ++soname_spec=$lt_soname_spec ++ ++# Commands used to build and install an old-style archive. ++RANLIB=$lt_RANLIB ++old_archive_cmds=$lt_old_archive_cmds ++old_postinstall_cmds=$lt_old_postinstall_cmds ++old_postuninstall_cmds=$lt_old_postuninstall_cmds ++ ++# Create an old-style archive from a shared archive. ++old_archive_from_new_cmds=$lt_old_archive_from_new_cmds ++ ++# Create a temporary old-style archive to link instead of a shared archive. ++old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds ++ ++# Commands used to build and install a shared archive. ++archive_cmds=$lt_archive_cmds ++archive_expsym_cmds=$lt_archive_expsym_cmds ++postinstall_cmds=$lt_postinstall_cmds ++postuninstall_cmds=$lt_postuninstall_cmds ++ ++# Commands used to build a loadable module (assumed same as above if empty) ++module_cmds=$lt_module_cmds ++module_expsym_cmds=$lt_module_expsym_cmds ++ ++# Commands to strip libraries. ++old_striplib=$lt_old_striplib ++striplib=$lt_striplib ++ ++# Dependencies to place before the objects being linked to create a ++# shared library. ++predep_objects=$lt_predep_objects ++ ++# Dependencies to place after the objects being linked to create a ++# shared library. ++postdep_objects=$lt_postdep_objects ++ ++# Dependencies to place before the objects being linked to create a ++# shared library. ++predeps=$lt_predeps ++ ++# Dependencies to place after the objects being linked to create a ++# shared library. ++postdeps=$lt_postdeps ++ ++# The library search path used internally by the compiler when linking ++# a shared library. ++compiler_lib_search_path=$lt_compiler_lib_search_path ++ ++# Method to check whether dependent libraries are shared objects. ++deplibs_check_method=$lt_deplibs_check_method ++ ++# Command to use when deplibs_check_method == file_magic. ++file_magic_cmd=$lt_file_magic_cmd ++ ++# Flag that allows shared libraries with undefined symbols to be built. ++allow_undefined_flag=$lt_allow_undefined_flag ++ ++# Flag that forces no undefined symbols. ++no_undefined_flag=$lt_no_undefined_flag ++ ++# Commands used to finish a libtool library installation in a directory. ++finish_cmds=$lt_finish_cmds ++ ++# Same as above, but a single script fragment to be evaled but not shown. ++finish_eval=$lt_finish_eval ++ ++# Take the output of nm and produce a listing of raw symbols and C names. ++global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe ++ ++# Transform the output of nm in a proper C declaration ++global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl ++ ++# Transform the output of nm in a C name address pair ++global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address ++ ++# This is the shared library runtime path variable. ++runpath_var=$runpath_var ++ ++# This is the shared library path variable. ++shlibpath_var=$shlibpath_var ++ ++# Is shlibpath searched before the hard-coded library search path? ++shlibpath_overrides_runpath=$shlibpath_overrides_runpath ++ ++# How to hardcode a shared library path into an executable. ++hardcode_action=$hardcode_action ++ ++# Whether we should hardcode library paths into libraries. ++hardcode_into_libs=$hardcode_into_libs ++ ++# Flag to hardcode \$libdir into a binary during linking. ++# This must work even if \$libdir does not exist. ++hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec ++ ++# If ld is used when linking, flag to hardcode \$libdir into ++# a binary during linking. This must work even if \$libdir does ++# not exist. ++hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld ++ ++# Whether we need a single -rpath flag with a separated argument. ++hardcode_libdir_separator=$lt_hardcode_libdir_separator ++ ++# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the ++# resulting binary. ++hardcode_direct=$hardcode_direct ++ ++# Set to yes if using the -LDIR flag during linking hardcodes DIR into the ++# resulting binary. ++hardcode_minus_L=$hardcode_minus_L ++ ++# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into ++# the resulting binary. ++hardcode_shlibpath_var=$hardcode_shlibpath_var ++ ++# Set to yes if building a shared library automatically hardcodes DIR into the library ++# and all subsequent libraries and executables linked against it. ++hardcode_automatic=$hardcode_automatic ++ ++# Variables whose values should be saved in libtool wrapper scripts and ++# restored at relink time. ++variables_saved_for_relink="$variables_saved_for_relink" ++ ++# Whether libtool must link a program against all its dependency libraries. ++link_all_deplibs=$link_all_deplibs ++ ++# Compile-time system search path for libraries ++sys_lib_search_path_spec=$lt_sys_lib_search_path_spec ++ ++# Run-time system search path for libraries ++sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec ++ ++# Fix the shell variable \$srcfile for the compiler. ++fix_srcfile_path=$lt_fix_srcfile_path ++ ++# Set to yes if exported symbols are required. ++always_export_symbols=$always_export_symbols ++ ++# The commands to list exported symbols. ++export_symbols_cmds=$lt_export_symbols_cmds ++ ++# The commands to extract the exported symbol list from a shared archive. ++extract_expsyms_cmds=$lt_extract_expsyms_cmds ++ ++# Symbols that should not be listed in the preloaded symbols. ++exclude_expsyms=$lt_exclude_expsyms ++ ++# Symbols that must always be exported. ++include_expsyms=$lt_include_expsyms ++ ++# ### END LIBTOOL CONFIG ++ ++__EOF__ ++ ++ ++ case $host_os in ++ aix3*) ++ cat <<\EOF >> "$cfgfile" ++ ++# AIX sometimes has problems with the GCC collect2 program. For some ++# reason, if we set the COLLECT_NAMES environment variable, the problems ++# vanish in a puff of smoke. ++if test "X${COLLECT_NAMES+set}" != Xset; then ++ COLLECT_NAMES= ++ export COLLECT_NAMES ++fi ++EOF ++ ;; ++ esac ++ ++ # We use sed instead of cat because bash on DJGPP gets confused if ++ # if finds mixed CR/LF and LF-only lines. Since sed operates in ++ # text mode, it properly converts lines to CR/LF. This bash problem ++ # is reportedly fixed, but why not run on old versions too? ++ sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) ++ ++ mv -f "$cfgfile" "$ofile" || \ ++ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") ++ chmod +x "$ofile" ++ ++else ++ # If there is no Makefile yet, we rely on a make rule to execute ++ # `config.status --recheck' to rerun these tests and create the ++ # libtool script then. ++ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` ++ if test -f "$ltmain_in"; then ++ test -f Makefile && make "$ltmain" ++ fi ++fi ++ ++ ++ac_ext=c ++ac_cpp='$CPP $CPPFLAGS' ++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_c_compiler_gnu ++ ++CC="$lt_save_CC" ++ ++ ++# Check whether --with-tags was given. ++if test "${with_tags+set}" = set; then ++ withval=$with_tags; tagnames="$withval" ++fi ++ ++ ++if test -f "$ltmain" && test -n "$tagnames"; then ++ if test ! -f "${ofile}"; then ++ { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5 ++echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;} ++ fi ++ ++ if test -z "$LTCC"; then ++ eval "`$SHELL ${ofile} --config | grep '^LTCC='`" ++ if test -z "$LTCC"; then ++ { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5 ++echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;} ++ else ++ { echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5 ++echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;} ++ fi ++ fi ++ if test -z "$LTCFLAGS"; then ++ eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`" ++ fi ++ ++ # Extract list of available tagged configurations in $ofile. ++ # Note that this assumes the entire list is on one line. ++ available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` ++ ++ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," ++ for tagname in $tagnames; do ++ IFS="$lt_save_ifs" ++ # Check whether tagname contains only valid characters ++ case `$echo "X$tagname" | $Xsed -e 's:[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]::g'` in ++ "") ;; ++ *) { { echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5 ++echo "$as_me: error: invalid tag name: $tagname" >&2;} ++ { (exit 1); exit 1; }; } ++ ;; ++ esac ++ ++ if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null ++ then ++ { { echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5 ++echo "$as_me: error: tag name \"$tagname\" already exists" >&2;} ++ { (exit 1); exit 1; }; } ++ fi ++ ++ # Update the list of available tags. ++ if test -n "$tagname"; then ++ echo appending configuration tag \"$tagname\" to $ofile ++ ++ case $tagname in ++ CXX) ++ if test -n "$CXX" && ( test "X$CXX" != "Xno" && ++ ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || ++ (test "X$CXX" != "Xg++"))) ; then ++ ac_ext=cpp ++ac_cpp='$CXXCPP $CPPFLAGS' ++ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ++ ++ ++ ++ ++archive_cmds_need_lc_CXX=no ++allow_undefined_flag_CXX= ++always_export_symbols_CXX=no ++archive_expsym_cmds_CXX= ++export_dynamic_flag_spec_CXX= ++hardcode_direct_CXX=no ++hardcode_libdir_flag_spec_CXX= ++hardcode_libdir_flag_spec_ld_CXX= ++hardcode_libdir_separator_CXX= ++hardcode_minus_L_CXX=no ++hardcode_shlibpath_var_CXX=unsupported ++hardcode_automatic_CXX=no ++module_cmds_CXX= ++module_expsym_cmds_CXX= ++link_all_deplibs_CXX=unknown ++old_archive_cmds_CXX=$old_archive_cmds ++no_undefined_flag_CXX= ++whole_archive_flag_spec_CXX= ++enable_shared_with_static_runtimes_CXX=no ++ ++# Dependencies to place before and after the object being linked: ++predep_objects_CXX= ++postdep_objects_CXX= ++predeps_CXX= ++postdeps_CXX= ++compiler_lib_search_path_CXX= ++ ++# Source file extension for C++ test sources. ++ac_ext=cpp ++ ++# Object file extension for compiled C++ test sources. ++objext=o ++objext_CXX=$objext ++ ++# Code to be used in simple compile tests ++lt_simple_compile_test_code="int some_variable = 0;" ++ ++# Code to be used in simple link tests ++lt_simple_link_test_code='int main(int, char *[]) { return(0); }' ++ ++# ltmain only uses $CC for tagged configurations so make sure $CC is set. ++ ++# If no C compiler was specified, use CC. ++LTCC=${LTCC-"$CC"} ++ ++# If no C compiler flags were specified, use CFLAGS. ++LTCFLAGS=${LTCFLAGS-"$CFLAGS"} ++ ++# Allow CC to be a program name with arguments. ++compiler=$CC ++ ++ ++# save warnings/boilerplate of simple test code ++ac_outfile=conftest.$ac_objext ++echo "$lt_simple_compile_test_code" >conftest.$ac_ext ++eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err ++_lt_compiler_boilerplate=`cat conftest.err` ++$rm conftest* ++ ++ac_outfile=conftest.$ac_objext ++echo "$lt_simple_link_test_code" >conftest.$ac_ext ++eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err ++_lt_linker_boilerplate=`cat conftest.err` ++$rm conftest* ++ ++ ++# Allow CC to be a program name with arguments. ++lt_save_CC=$CC ++lt_save_LD=$LD ++lt_save_GCC=$GCC ++GCC=$GXX ++lt_save_with_gnu_ld=$with_gnu_ld ++lt_save_path_LD=$lt_cv_path_LD ++if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then ++ lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx ++else ++ $as_unset lt_cv_prog_gnu_ld ++fi ++if test -n "${lt_cv_path_LDCXX+set}"; then ++ lt_cv_path_LD=$lt_cv_path_LDCXX ++else ++ $as_unset lt_cv_path_LD ++fi ++test -z "${LDCXX+set}" || LD=$LDCXX ++CC=${CXX-"c++"} ++compiler=$CC ++compiler_CXX=$CC ++for cc_temp in $compiler""; do ++ case $cc_temp in ++ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; ++ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; ++ \-*) ;; ++ *) break;; ++ esac ++done ++cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` ++ ++ ++# We don't want -fno-exception wen compiling C++ code, so set the ++# no_builtin_flag separately ++if test "$GXX" = yes; then ++ lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' ++else ++ lt_prog_compiler_no_builtin_flag_CXX= ++fi ++ ++if test "$GXX" = yes; then ++ # Set up default GNU C++ configuration ++ ++ ++# Check whether --with-gnu-ld was given. ++if test "${with_gnu_ld+set}" = set; then ++ withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes ++else ++ with_gnu_ld=no ++fi ++ ++ac_prog=ld ++if test "$GCC" = yes; then ++ # Check if gcc -print-prog-name=ld gives a path. ++ { echo "$as_me:$LINENO: checking for ld used by $CC" >&5 ++echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6; } ++ case $host in ++ *-*-mingw*) ++ # gcc leaves a trailing carriage return which upsets mingw ++ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; ++ *) ++ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; ++ esac ++ case $ac_prog in ++ # Accept absolute paths. ++ [\\/]* | ?:[\\/]*) ++ re_direlt='/[^/][^/]*/\.\./' ++ # Canonicalize the pathname of ld ++ ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` ++ while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ++ ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` ++ done ++ test -z "$LD" && LD="$ac_prog" ++ ;; ++ "") ++ # If it fails, then pretend we aren't using GCC. ++ ac_prog=ld ++ ;; ++ *) ++ # If it is relative, then search for the first ld in PATH. ++ with_gnu_ld=unknown ++ ;; ++ esac ++elif test "$with_gnu_ld" = yes; then ++ { echo "$as_me:$LINENO: checking for GNU ld" >&5 ++echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; } ++else ++ { echo "$as_me:$LINENO: checking for non-GNU ld" >&5 ++echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; } ++fi ++if test "${lt_cv_path_LD+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -z "$LD"; then ++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ++ for ac_dir in $PATH; do ++ IFS="$lt_save_ifs" ++ test -z "$ac_dir" && ac_dir=. ++ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then ++ lt_cv_path_LD="$ac_dir/$ac_prog" ++ # Check to see if the program is GNU ld. I'd rather use --version, ++ # but apparently some variants of GNU ld only accept -v. ++ # Break only if it was the GNU/non-GNU ld that we prefer. ++ case `"$lt_cv_path_LD" -v 2>&1 &5 ++echo "${ECHO_T}$LD" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 ++echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} ++ { (exit 1); exit 1; }; } ++{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 ++echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; } ++if test "${lt_cv_prog_gnu_ld+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ # I'd rather use --version here, but apparently some GNU lds only accept -v. ++case `$LD -v 2>&1 &5 ++echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; } ++with_gnu_ld=$lt_cv_prog_gnu_ld ++ ++ ++ ++ # Check if GNU C++ uses GNU ld as the underlying linker, since the ++ # archiving commands below assume that GNU ld is being used. ++ if test "$with_gnu_ld" = yes; then ++ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ ++ hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' ++ export_dynamic_flag_spec_CXX='${wl}--export-dynamic' ++ ++ # If archive_cmds runs LD, not CC, wlarc should be empty ++ # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to ++ # investigate it a little bit more. (MM) ++ wlarc='${wl}' ++ ++ # ancient GNU ld didn't support --whole-archive et. al. ++ if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ ++ grep 'no-whole-archive' > /dev/null; then ++ whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' ++ else ++ whole_archive_flag_spec_CXX= ++ fi ++ else ++ with_gnu_ld=no ++ wlarc= ++ ++ # A generic and very simple default shared library creation ++ # command for GNU C++ for the case where it uses the native ++ # linker, instead of GNU ld. If possible, this setting should ++ # overridden to take advantage of the native linker features on ++ # the platform it is being used on. ++ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' ++ fi ++ ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' ++ ++else ++ GXX=no ++ with_gnu_ld=no ++ wlarc= ++fi ++ ++# PORTME: fill in a description of your system's C++ link characteristics ++{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 ++echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } ++ld_shlibs_CXX=yes ++case $host_os in ++ aix3*) ++ # FIXME: insert proper C++ library support ++ ld_shlibs_CXX=no ++ ;; ++ aix4* | aix5*) ++ if test "$host_cpu" = ia64; then ++ # On IA64, the linker does run time linking by default, so we don't ++ # have to do anything special. ++ aix_use_runtimelinking=no ++ exp_sym_flag='-Bexport' ++ no_entry_flag="" ++ else ++ aix_use_runtimelinking=no ++ ++ # Test if we are trying to use run time linking or normal ++ # AIX style linking. If -brtl is somewhere in LDFLAGS, we ++ # need to do runtime linking. ++ case $host_os in aix4.[23]|aix4.[23].*|aix5*) ++ for ld_flag in $LDFLAGS; do ++ case $ld_flag in ++ *-brtl*) ++ aix_use_runtimelinking=yes ++ break ++ ;; ++ esac ++ done ++ ;; ++ esac ++ ++ exp_sym_flag='-bexport' ++ no_entry_flag='-bnoentry' ++ fi ++ ++ # When large executables or shared objects are built, AIX ld can ++ # have problems creating the table of contents. If linking a library ++ # or program results in "error TOC overflow" add -mminimal-toc to ++ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not ++ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. ++ ++ archive_cmds_CXX='' ++ hardcode_direct_CXX=yes ++ hardcode_libdir_separator_CXX=':' ++ link_all_deplibs_CXX=yes ++ ++ if test "$GXX" = yes; then ++ case $host_os in aix4.[012]|aix4.[012].*) ++ # We only want to do this on AIX 4.2 and lower, the check ++ # below for broken collect2 doesn't work under 4.3+ ++ collect2name=`${CC} -print-prog-name=collect2` ++ if test -f "$collect2name" && \ ++ strings "$collect2name" | grep resolve_lib_name >/dev/null ++ then ++ # We have reworked collect2 ++ : ++ else ++ # We have old collect2 ++ hardcode_direct_CXX=unsupported ++ # It fails to find uninstalled libraries when the uninstalled ++ # path is not listed in the libpath. Setting hardcode_minus_L ++ # to unsupported forces relinking ++ hardcode_minus_L_CXX=yes ++ hardcode_libdir_flag_spec_CXX='-L$libdir' ++ hardcode_libdir_separator_CXX= ++ fi ++ ;; ++ esac ++ shared_flag='-shared' ++ if test "$aix_use_runtimelinking" = yes; then ++ shared_flag="$shared_flag "'${wl}-G' ++ fi ++ else ++ # not using gcc ++ if test "$host_cpu" = ia64; then ++ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release ++ # chokes on -Wl,-G. The following line is correct: ++ shared_flag='-G' ++ else ++ if test "$aix_use_runtimelinking" = yes; then ++ shared_flag='${wl}-G' ++ else ++ shared_flag='${wl}-bM:SRE' ++ fi ++ fi ++ fi ++ ++ # It seems that -bexpall does not export symbols beginning with ++ # underscore (_), so it is better to generate a list of symbols to export. ++ always_export_symbols_CXX=yes ++ if test "$aix_use_runtimelinking" = yes; then ++ # Warning - without using the other runtime loading flags (-brtl), ++ # -berok will link without error, but may produce a broken library. ++ allow_undefined_flag_CXX='-berok' ++ # Determine the default libpath from the value encoded in an empty executable. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_cxx_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ++lt_aix_libpath_sed=' ++ /Import File Strings/,/^$/ { ++ /^0/ { ++ s/^0 *\(.*\)$/\1/ ++ p ++ } ++ }' ++aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++# Check for a 64-bit object if we didn't find anything. ++if test -z "$aix_libpath"; then ++ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++fi ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ++ ++ hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" ++ ++ archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" ++ else ++ if test "$host_cpu" = ia64; then ++ hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' ++ allow_undefined_flag_CXX="-z nodefs" ++ 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" ++ else ++ # Determine the default libpath from the value encoded in an empty executable. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_cxx_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ++lt_aix_libpath_sed=' ++ /Import File Strings/,/^$/ { ++ /^0/ { ++ s/^0 *\(.*\)$/\1/ ++ p ++ } ++ }' ++aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++# Check for a 64-bit object if we didn't find anything. ++if test -z "$aix_libpath"; then ++ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++fi ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ++ ++ hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" ++ # Warning - without using the other run time loading flags, ++ # -berok will link without error, but may produce a broken library. ++ no_undefined_flag_CXX=' ${wl}-bernotok' ++ allow_undefined_flag_CXX=' ${wl}-berok' ++ # Exported symbols can be pulled into shared objects from archives ++ whole_archive_flag_spec_CXX='$convenience' ++ archive_cmds_need_lc_CXX=yes ++ # This is similar to how AIX traditionally builds its shared libraries. ++ archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' ++ fi ++ fi ++ ;; ++ ++ beos*) ++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ allow_undefined_flag_CXX=unsupported ++ # Joseph Beckenbach says some releases of gcc ++ # support --undefined. This deserves some investigation. FIXME ++ archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ else ++ ld_shlibs_CXX=no ++ fi ++ ;; ++ ++ chorus*) ++ case $cc_basename in ++ *) ++ # FIXME: insert proper C++ library support ++ ld_shlibs_CXX=no ++ ;; ++ esac ++ ;; ++ ++ cygwin* | mingw* | pw32*) ++ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, ++ # as there is no search path for DLLs. ++ hardcode_libdir_flag_spec_CXX='-L$libdir' ++ allow_undefined_flag_CXX=unsupported ++ always_export_symbols_CXX=no ++ enable_shared_with_static_runtimes_CXX=yes ++ ++ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then ++ 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' ++ # If the export-symbols file already is a .def file (1st line ++ # is EXPORTS), use it as is; otherwise, prepend... ++ archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then ++ cp $export_symbols $output_objdir/$soname.def; ++ else ++ echo EXPORTS > $output_objdir/$soname.def; ++ cat $export_symbols >> $output_objdir/$soname.def; ++ fi~ ++ $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' ++ else ++ ld_shlibs_CXX=no ++ fi ++ ;; ++ darwin* | rhapsody*) ++ case $host_os in ++ rhapsody* | darwin1.[012]) ++ allow_undefined_flag_CXX='${wl}-undefined ${wl}suppress' ++ ;; ++ *) # Darwin 1.3 on ++ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then ++ allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ++ else ++ case ${MACOSX_DEPLOYMENT_TARGET} in ++ 10.[012]) ++ allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ++ ;; ++ 10.*) ++ allow_undefined_flag_CXX='${wl}-undefined ${wl}dynamic_lookup' ++ ;; ++ esac ++ fi ++ ;; ++ esac ++ archive_cmds_need_lc_CXX=no ++ hardcode_direct_CXX=no ++ hardcode_automatic_CXX=yes ++ hardcode_shlibpath_var_CXX=unsupported ++ whole_archive_flag_spec_CXX='' ++ link_all_deplibs_CXX=yes ++ ++ if test "$GXX" = yes ; then ++ lt_int_apple_cc_single_mod=no ++ output_verbose_link_cmd='echo' ++ if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then ++ lt_int_apple_cc_single_mod=yes ++ fi ++ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then ++ archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' ++ else ++ 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' ++ fi ++ module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' ++ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds ++ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then ++ archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ else ++ archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "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~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ fi ++ module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ else ++ case $cc_basename in ++ xlc*) ++ output_verbose_link_cmd='echo' ++ archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' ++ module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' ++ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds ++ archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ ;; ++ *) ++ ld_shlibs_CXX=no ++ ;; ++ esac ++ fi ++ ;; ++ ++ dgux*) ++ case $cc_basename in ++ ec++*) ++ # FIXME: insert proper C++ library support ++ ld_shlibs_CXX=no ++ ;; ++ ghcx*) ++ # Green Hills C++ Compiler ++ # FIXME: insert proper C++ library support ++ ld_shlibs_CXX=no ++ ;; ++ *) ++ # FIXME: insert proper C++ library support ++ ld_shlibs_CXX=no ++ ;; ++ esac ++ ;; ++ freebsd[12]*) ++ # C++ shared libraries reported to be fairly broken before switch to ELF ++ ld_shlibs_CXX=no ++ ;; ++ freebsd-elf*) ++ archive_cmds_need_lc_CXX=no ++ ;; ++ freebsd* | dragonfly*) ++ # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF ++ # conventions ++ ld_shlibs_CXX=yes ++ ;; ++ gnu*) ++ ;; ++ hpux9*) ++ hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' ++ hardcode_libdir_separator_CXX=: ++ export_dynamic_flag_spec_CXX='${wl}-E' ++ hardcode_direct_CXX=yes ++ hardcode_minus_L_CXX=yes # Not in the search PATH, ++ # but as the default ++ # location of the library. ++ ++ case $cc_basename in ++ CC*) ++ # FIXME: insert proper C++ library support ++ ld_shlibs_CXX=no ++ ;; ++ aCC*) ++ 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 $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ # ++ # There doesn't appear to be a way to prevent this compiler from ++ # explicitly linking system object files so we need to strip them ++ # from the output so that they don't get included in the library ++ # dependencies. ++ 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; echo $list' ++ ;; ++ *) ++ if test "$GXX" = yes; then ++ archive_cmds_CXX='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ++ else ++ # FIXME: insert proper C++ library support ++ ld_shlibs_CXX=no ++ fi ++ ;; ++ esac ++ ;; ++ hpux10*|hpux11*) ++ if test $with_gnu_ld = no; then ++ hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' ++ hardcode_libdir_separator_CXX=: ++ ++ case $host_cpu in ++ hppa*64*|ia64*) ;; ++ *) ++ export_dynamic_flag_spec_CXX='${wl}-E' ++ ;; ++ esac ++ fi ++ case $host_cpu in ++ hppa*64*|ia64*) ++ hardcode_direct_CXX=no ++ hardcode_shlibpath_var_CXX=no ++ ;; ++ *) ++ hardcode_direct_CXX=yes ++ hardcode_minus_L_CXX=yes # Not in the search PATH, ++ # but as the default ++ # location of the library. ++ ;; ++ esac ++ ++ case $cc_basename in ++ CC*) ++ # FIXME: insert proper C++ library support ++ ld_shlibs_CXX=no ++ ;; ++ aCC*) ++ case $host_cpu in ++ hppa*64*) ++ archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ++ ;; ++ ia64*) ++ archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ++ ;; ++ *) ++ archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ++ ;; ++ esac ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ # ++ # There doesn't appear to be a way to prevent this compiler from ++ # explicitly linking system object files so we need to strip them ++ # from the output so that they don't get included in the library ++ # dependencies. ++ 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; echo $list' ++ ;; ++ *) ++ if test "$GXX" = yes; then ++ if test $with_gnu_ld = no; then ++ case $host_cpu in ++ hppa*64*) ++ archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ++ ;; ++ ia64*) ++ archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ++ ;; ++ *) ++ archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ++ ;; ++ esac ++ fi ++ else ++ # FIXME: insert proper C++ library support ++ ld_shlibs_CXX=no ++ fi ++ ;; ++ esac ++ ;; ++ interix[3-9]*) ++ hardcode_direct_CXX=no ++ hardcode_shlibpath_var_CXX=no ++ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' ++ export_dynamic_flag_spec_CXX='${wl}-E' ++ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. ++ # Instead, shared libraries are loaded at an image base (0x10000000 by ++ # default) and relocated if they conflict, which is a slow very memory ++ # consuming and fragmenting process. To avoid this, we pick a random, ++ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link ++ # time. Moving up from 0x10000000 also allows more sbrk(2) space. ++ 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' ++ 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' ++ ;; ++ irix5* | irix6*) ++ case $cc_basename in ++ CC*) ++ # SGI C++ ++ archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' ++ ++ # Archives containing C++ object files must be created using ++ # "CC -ar", where "CC" is the IRIX C++ compiler. This is ++ # necessary to make sure instantiated templates are included ++ # in the archive. ++ old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' ++ ;; ++ *) ++ if test "$GXX" = yes; then ++ if test "$with_gnu_ld" = no; then ++ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ else ++ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' ++ fi ++ fi ++ link_all_deplibs_CXX=yes ++ ;; ++ esac ++ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' ++ hardcode_libdir_separator_CXX=: ++ ;; ++ linux* | k*bsd*-gnu) ++ case $cc_basename in ++ KCC*) ++ # Kuck and Associates, Inc. (KAI) C++ Compiler ++ ++ # KCC will only create a shared library if the output file ++ # ends with ".so" (or ".sl" for HP-UX), so rename the library ++ # to its proper name (with version) after linking. ++ 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' ++ 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' ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ # ++ # There doesn't appear to be a way to prevent this compiler from ++ # explicitly linking system object files so we need to strip them ++ # from the output so that they don't get included in the library ++ # dependencies. ++ 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; echo $list' ++ ++ hardcode_libdir_flag_spec_CXX='${wl}--rpath,$libdir' ++ export_dynamic_flag_spec_CXX='${wl}--export-dynamic' ++ ++ # Archives containing C++ object files must be created using ++ # "CC -Bstatic", where "CC" is the KAI C++ compiler. ++ old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ++ ;; ++ icpc*) ++ # Intel C++ ++ with_gnu_ld=yes ++ # version 8.0 and above of icpc choke on multiply defined symbols ++ # if we add $predep_objects and $postdep_objects, however 7.1 and ++ # earlier do not add the objects themselves. ++ case `$CC -V 2>&1` in ++ *"Version 7."*) ++ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ 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' ++ ;; ++ *) # Version 8.0 or newer ++ tmp_idyn= ++ case $host_cpu in ++ ia64*) tmp_idyn=' -i_dynamic';; ++ esac ++ archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ 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' ++ ;; ++ esac ++ archive_cmds_need_lc_CXX=no ++ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' ++ export_dynamic_flag_spec_CXX='${wl}--export-dynamic' ++ whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ++ ;; ++ pgCC*) ++ # Portland Group C++ compiler ++ archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' ++ 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' ++ ++ hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' ++ export_dynamic_flag_spec_CXX='${wl}--export-dynamic' ++ whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ++ ;; ++ cxx*) ++ # Compaq C++ ++ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ 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' ++ ++ runpath_var=LD_RUN_PATH ++ hardcode_libdir_flag_spec_CXX='-rpath $libdir' ++ hardcode_libdir_separator_CXX=: ++ ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ # ++ # There doesn't appear to be a way to prevent this compiler from ++ # explicitly linking system object files so we need to strip them ++ # from the output so that they don't get included in the library ++ # dependencies. ++ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $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; echo $list' ++ ;; ++ *) ++ case `$CC -V 2>&1 | sed 5q` in ++ *Sun\ C*) ++ # Sun C++ 5.9 ++ no_undefined_flag_CXX=' -zdefs' ++ archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ++ 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' ++ hardcode_libdir_flag_spec_CXX='-R$libdir' ++ whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ++ ++ # Not sure whether something based on ++ # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 ++ # would be better. ++ output_verbose_link_cmd='echo' ++ ++ # Archives containing C++ object files must be created using ++ # "CC -xar", where "CC" is the Sun C++ compiler. This is ++ # necessary to make sure instantiated templates are included ++ # in the archive. ++ old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ++ ;; ++ esac ++ ;; ++ esac ++ ;; ++ lynxos*) ++ # FIXME: insert proper C++ library support ++ ld_shlibs_CXX=no ++ ;; ++ m88k*) ++ # FIXME: insert proper C++ library support ++ ld_shlibs_CXX=no ++ ;; ++ mvs*) ++ case $cc_basename in ++ cxx*) ++ # FIXME: insert proper C++ library support ++ ld_shlibs_CXX=no ++ ;; ++ *) ++ # FIXME: insert proper C++ library support ++ ld_shlibs_CXX=no ++ ;; ++ esac ++ ;; ++ netbsd* | netbsdelf*-gnu) ++ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then ++ archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' ++ wlarc= ++ hardcode_libdir_flag_spec_CXX='-R$libdir' ++ hardcode_direct_CXX=yes ++ hardcode_shlibpath_var_CXX=no ++ fi ++ # Workaround some broken pre-1.5 toolchains ++ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ++ ;; ++ openbsd2*) ++ # C++ shared libraries are fairly broken ++ ld_shlibs_CXX=no ++ ;; ++ openbsd*) ++ if test -f /usr/libexec/ld.so; then ++ hardcode_direct_CXX=yes ++ hardcode_shlibpath_var_CXX=no ++ archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' ++ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' ++ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then ++ archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' ++ export_dynamic_flag_spec_CXX='${wl}-E' ++ whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' ++ fi ++ output_verbose_link_cmd='echo' ++ else ++ ld_shlibs_CXX=no ++ fi ++ ;; ++ osf3*) ++ case $cc_basename in ++ KCC*) ++ # Kuck and Associates, Inc. (KAI) C++ Compiler ++ ++ # KCC will only create a shared library if the output file ++ # ends with ".so" (or ".sl" for HP-UX), so rename the library ++ # to its proper name (with version) after linking. ++ 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' ++ ++ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' ++ hardcode_libdir_separator_CXX=: ++ ++ # Archives containing C++ object files must be created using ++ # "CC -Bstatic", where "CC" is the KAI C++ compiler. ++ old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ++ ++ ;; ++ RCC*) ++ # Rational C++ 2.4.1 ++ # FIXME: insert proper C++ library support ++ ld_shlibs_CXX=no ++ ;; ++ cxx*) ++ allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' ++ archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' ++ ++ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' ++ hardcode_libdir_separator_CXX=: ++ ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ # ++ # There doesn't appear to be a way to prevent this compiler from ++ # explicitly linking system object files so we need to strip them ++ # from the output so that they don't get included in the library ++ # dependencies. ++ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $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; echo $list' ++ ;; ++ *) ++ if test "$GXX" = yes && test "$with_gnu_ld" = no; then ++ allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' ++ archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ ++ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' ++ hardcode_libdir_separator_CXX=: ++ ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' ++ ++ else ++ # FIXME: insert proper C++ library support ++ ld_shlibs_CXX=no ++ fi ++ ;; ++ esac ++ ;; ++ osf4* | osf5*) ++ case $cc_basename in ++ KCC*) ++ # Kuck and Associates, Inc. (KAI) C++ Compiler ++ ++ # KCC will only create a shared library if the output file ++ # ends with ".so" (or ".sl" for HP-UX), so rename the library ++ # to its proper name (with version) after linking. ++ 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' ++ ++ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' ++ hardcode_libdir_separator_CXX=: ++ ++ # Archives containing C++ object files must be created using ++ # the KAI C++ compiler. ++ old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ++ ;; ++ RCC*) ++ # Rational C++ 2.4.1 ++ # FIXME: insert proper C++ library support ++ ld_shlibs_CXX=no ++ ;; ++ cxx*) ++ allow_undefined_flag_CXX=' -expect_unresolved \*' ++ archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' ++ archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ ++ echo "-hidden">> $lib.exp~ ++ $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~ ++ $rm $lib.exp' ++ ++ hardcode_libdir_flag_spec_CXX='-rpath $libdir' ++ hardcode_libdir_separator_CXX=: ++ ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ # ++ # There doesn't appear to be a way to prevent this compiler from ++ # explicitly linking system object files so we need to strip them ++ # from the output so that they don't get included in the library ++ # dependencies. ++ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $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; echo $list' ++ ;; ++ *) ++ if test "$GXX" = yes && test "$with_gnu_ld" = no; then ++ allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' ++ archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ ++ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' ++ hardcode_libdir_separator_CXX=: ++ ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' ++ ++ else ++ # FIXME: insert proper C++ library support ++ ld_shlibs_CXX=no ++ fi ++ ;; ++ esac ++ ;; ++ psos*) ++ # FIXME: insert proper C++ library support ++ ld_shlibs_CXX=no ++ ;; ++ sunos4*) ++ case $cc_basename in ++ CC*) ++ # Sun C++ 4.x ++ # FIXME: insert proper C++ library support ++ ld_shlibs_CXX=no ++ ;; ++ lcc*) ++ # Lucid ++ # FIXME: insert proper C++ library support ++ ld_shlibs_CXX=no ++ ;; ++ *) ++ # FIXME: insert proper C++ library support ++ ld_shlibs_CXX=no ++ ;; ++ esac ++ ;; ++ solaris*) ++ case $cc_basename in ++ CC*) ++ # Sun C++ 4.2, 5.x and Centerline C++ ++ archive_cmds_need_lc_CXX=yes ++ no_undefined_flag_CXX=' -zdefs' ++ archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ++ archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ ++ $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' ++ ++ hardcode_libdir_flag_spec_CXX='-R$libdir' ++ hardcode_shlibpath_var_CXX=no ++ case $host_os in ++ solaris2.[0-5] | solaris2.[0-5].*) ;; ++ *) ++ # The compiler driver will combine and reorder linker options, ++ # but understands `-z linker_flag'. ++ # Supported since Solaris 2.6 (maybe 2.5.1?) ++ whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' ++ ;; ++ esac ++ link_all_deplibs_CXX=yes ++ ++ output_verbose_link_cmd='echo' ++ ++ # Archives containing C++ object files must be created using ++ # "CC -xar", where "CC" is the Sun C++ compiler. This is ++ # necessary to make sure instantiated templates are included ++ # in the archive. ++ old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ++ ;; ++ gcx*) ++ # Green Hills C++ Compiler ++ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' ++ ++ # The C++ compiler must be used to create the archive. ++ old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ++ ;; ++ *) ++ # GNU C++ compiler with Solaris linker ++ if test "$GXX" = yes && test "$with_gnu_ld" = no; then ++ no_undefined_flag_CXX=' ${wl}-z ${wl}defs' ++ if $CC --version | grep -v '^2\.7' > /dev/null; then ++ archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' ++ archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ ++ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' ++ ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" ++ else ++ # g++ 2.7 appears to require `-G' NOT `-shared' on this ++ # platform. ++ archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' ++ archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ ++ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' ++ ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" ++ fi ++ ++ hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' ++ case $host_os in ++ solaris2.[0-5] | solaris2.[0-5].*) ;; ++ *) ++ whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ++ ;; ++ esac ++ fi ++ ;; ++ esac ++ ;; ++ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) ++ no_undefined_flag_CXX='${wl}-z,text' ++ archive_cmds_need_lc_CXX=no ++ hardcode_shlibpath_var_CXX=no ++ runpath_var='LD_RUN_PATH' ++ ++ case $cc_basename in ++ CC*) ++ archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ *) ++ archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ esac ++ ;; ++ sysv5* | sco3.2v5* | sco5v6*) ++ # Note: We can NOT use -z defs as we might desire, because we do not ++ # link with -lc, and that would cause any symbols used from libc to ++ # always be unresolved, which means just about no library would ++ # ever link correctly. If we're not using GNU ld we use -z text ++ # though, which does catch some bad symbols but isn't as heavy-handed ++ # as -z defs. ++ # For security reasons, it is highly recommended that you always ++ # use absolute paths for naming shared libraries, and exclude the ++ # DT_RUNPATH tag from executables and libraries. But doing so ++ # requires that you compile everything twice, which is a pain. ++ # So that behaviour is only enabled if SCOABSPATH is set to a ++ # non-empty value in the environment. Most likely only useful for ++ # creating official distributions of packages. ++ # This is a hack until libtool officially supports absolute path ++ # names for shared libraries. ++ no_undefined_flag_CXX='${wl}-z,text' ++ allow_undefined_flag_CXX='${wl}-z,nodefs' ++ archive_cmds_need_lc_CXX=no ++ hardcode_shlibpath_var_CXX=no ++ hardcode_libdir_flag_spec_CXX='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' ++ hardcode_libdir_separator_CXX=':' ++ link_all_deplibs_CXX=yes ++ export_dynamic_flag_spec_CXX='${wl}-Bexport' ++ runpath_var='LD_RUN_PATH' ++ ++ case $cc_basename in ++ CC*) ++ archive_cmds_CXX='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ *) ++ archive_cmds_CXX='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ esac ++ ;; ++ tandem*) ++ case $cc_basename in ++ NCC*) ++ # NonStop-UX NCC 3.20 ++ # FIXME: insert proper C++ library support ++ ld_shlibs_CXX=no ++ ;; ++ *) ++ # FIXME: insert proper C++ library support ++ ld_shlibs_CXX=no ++ ;; ++ esac ++ ;; ++ vxworks*) ++ # FIXME: insert proper C++ library support ++ ld_shlibs_CXX=no ++ ;; ++ *) ++ # FIXME: insert proper C++ library support ++ ld_shlibs_CXX=no ++ ;; ++esac ++{ echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 ++echo "${ECHO_T}$ld_shlibs_CXX" >&6; } ++test "$ld_shlibs_CXX" = no && can_build_shared=no ++ ++GCC_CXX="$GXX" ++LD_CXX="$LD" ++ ++ ++cat > conftest.$ac_ext <&5 ++ (eval $ac_compile) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; then ++ # Parse the compiler output and extract the necessary ++ # objects, libraries and library flags. ++ ++ # Sentinel used to keep track of whether or not we are before ++ # the conftest object file. ++ pre_test_object_deps_done=no ++ ++ # The `*' in the case matches for architectures that use `case' in ++ # $output_verbose_cmd can trigger glob expansion during the loop ++ # eval without this substitution. ++ output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"` ++ ++ for p in `eval $output_verbose_link_cmd`; do ++ case $p in ++ ++ -L* | -R* | -l*) ++ # Some compilers place space between "-{L,R}" and the path. ++ # Remove the space. ++ if test $p = "-L" \ ++ || test $p = "-R"; then ++ prev=$p ++ continue ++ else ++ prev= ++ fi ++ ++ if test "$pre_test_object_deps_done" = no; then ++ case $p in ++ -L* | -R*) ++ # Internal compiler library paths should come after those ++ # provided the user. The postdeps already come after the ++ # user supplied libs so there is no need to process them. ++ if test -z "$compiler_lib_search_path_CXX"; then ++ compiler_lib_search_path_CXX="${prev}${p}" ++ else ++ compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" ++ fi ++ ;; ++ # The "-l" case would never come before the object being ++ # linked, so don't bother handling this case. ++ esac ++ else ++ if test -z "$postdeps_CXX"; then ++ postdeps_CXX="${prev}${p}" ++ else ++ postdeps_CXX="${postdeps_CXX} ${prev}${p}" ++ fi ++ fi ++ ;; ++ ++ *.$objext) ++ # This assumes that the test object file only shows up ++ # once in the compiler output. ++ if test "$p" = "conftest.$objext"; then ++ pre_test_object_deps_done=yes ++ continue ++ fi ++ ++ if test "$pre_test_object_deps_done" = no; then ++ if test -z "$predep_objects_CXX"; then ++ predep_objects_CXX="$p" ++ else ++ predep_objects_CXX="$predep_objects_CXX $p" ++ fi ++ else ++ if test -z "$postdep_objects_CXX"; then ++ postdep_objects_CXX="$p" ++ else ++ postdep_objects_CXX="$postdep_objects_CXX $p" ++ fi ++ fi ++ ;; ++ ++ *) ;; # Ignore the rest. ++ ++ esac ++ done ++ ++ # Clean up. ++ rm -f a.out a.exe ++else ++ echo "libtool.m4: error: problem compiling CXX test program" ++fi ++ ++$rm -f confest.$objext ++ ++# PORTME: override above test on systems where it is broken ++case $host_os in ++interix[3-9]*) ++ # Interix 3.5 installs completely hosed .la files for C++, so rather than ++ # hack all around it, let's just trust "g++" to DTRT. ++ predep_objects_CXX= ++ postdep_objects_CXX= ++ postdeps_CXX= ++ ;; ++ ++linux*) ++ case `$CC -V 2>&1 | sed 5q` in ++ *Sun\ C*) ++ # Sun C++ 5.9 ++ # ++ # The more standards-conforming stlport4 library is ++ # incompatible with the Cstd library. Avoid specifying ++ # it if it's in CXXFLAGS. Ignore libCrun as ++ # -library=stlport4 depends on it. ++ case " $CXX $CXXFLAGS " in ++ *" -library=stlport4 "*) ++ solaris_use_stlport4=yes ++ ;; ++ esac ++ if test "$solaris_use_stlport4" != yes; then ++ postdeps_CXX='-library=Cstd -library=Crun' ++ fi ++ ;; ++ esac ++ ;; ++ ++solaris*) ++ case $cc_basename in ++ CC*) ++ # The more standards-conforming stlport4 library is ++ # incompatible with the Cstd library. Avoid specifying ++ # it if it's in CXXFLAGS. Ignore libCrun as ++ # -library=stlport4 depends on it. ++ case " $CXX $CXXFLAGS " in ++ *" -library=stlport4 "*) ++ solaris_use_stlport4=yes ++ ;; ++ esac ++ ++ # Adding this requires a known-good setup of shared libraries for ++ # Sun compiler versions before 5.6, else PIC objects from an old ++ # archive will be linked into the output, leading to subtle bugs. ++ if test "$solaris_use_stlport4" != yes; then ++ postdeps_CXX='-library=Cstd -library=Crun' ++ fi ++ ;; ++ esac ++ ;; ++esac ++ ++ ++case " $postdeps_CXX " in ++*" -lc "*) archive_cmds_need_lc_CXX=no ;; ++esac ++ ++lt_prog_compiler_wl_CXX= ++lt_prog_compiler_pic_CXX= ++lt_prog_compiler_static_CXX= ++ ++{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 ++echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } ++ ++ # C++ specific cases for pic, static, wl, etc. ++ if test "$GXX" = yes; then ++ lt_prog_compiler_wl_CXX='-Wl,' ++ lt_prog_compiler_static_CXX='-static' ++ ++ case $host_os in ++ aix*) ++ # All AIX code is PIC. ++ if test "$host_cpu" = ia64; then ++ # AIX 5 now supports IA64 processor ++ lt_prog_compiler_static_CXX='-Bstatic' ++ fi ++ ;; ++ amigaos*) ++ # FIXME: we need at least 68020 code to build shared libraries, but ++ # adding the `-m68020' flag to GCC prevents building anything better, ++ # like `-m68040'. ++ lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' ++ ;; ++ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) ++ # PIC is the default for these OSes. ++ ;; ++ mingw* | cygwin* | os2* | pw32*) ++ # This hack is so that the source file can tell whether it is being ++ # built for inclusion in a dll (and should export symbols for example). ++ # Although the cygwin gcc ignores -fPIC, still need this for old-style ++ # (--disable-auto-import) libraries ++ lt_prog_compiler_pic_CXX='-DDLL_EXPORT' ++ ;; ++ darwin* | rhapsody*) ++ # PIC is the default on this platform ++ # Common symbols not allowed in MH_DYLIB files ++ lt_prog_compiler_pic_CXX='-fno-common' ++ ;; ++ *djgpp*) ++ # DJGPP does not support shared libraries at all ++ lt_prog_compiler_pic_CXX= ++ ;; ++ interix[3-9]*) ++ # Interix 3.x gcc -fpic/-fPIC options generate broken code. ++ # Instead, we relocate shared libraries at runtime. ++ ;; ++ sysv4*MP*) ++ if test -d /usr/nec; then ++ lt_prog_compiler_pic_CXX=-Kconform_pic ++ fi ++ ;; ++ hpux*) ++ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but ++ # not for PA HP-UX. ++ case $host_cpu in ++ hppa*64*|ia64*) ++ ;; ++ *) ++ lt_prog_compiler_pic_CXX='-fPIC' ++ ;; ++ esac ++ ;; ++ *) ++ lt_prog_compiler_pic_CXX='-fPIC' ++ ;; ++ esac ++ else ++ case $host_os in ++ aix4* | aix5*) ++ # All AIX code is PIC. ++ if test "$host_cpu" = ia64; then ++ # AIX 5 now supports IA64 processor ++ lt_prog_compiler_static_CXX='-Bstatic' ++ else ++ lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' ++ fi ++ ;; ++ chorus*) ++ case $cc_basename in ++ cxch68*) ++ # Green Hills C++ Compiler ++ # _LT_AC_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" ++ ;; ++ esac ++ ;; ++ darwin*) ++ # PIC is the default on this platform ++ # Common symbols not allowed in MH_DYLIB files ++ case $cc_basename in ++ xlc*) ++ lt_prog_compiler_pic_CXX='-qnocommon' ++ lt_prog_compiler_wl_CXX='-Wl,' ++ ;; ++ esac ++ ;; ++ dgux*) ++ case $cc_basename in ++ ec++*) ++ lt_prog_compiler_pic_CXX='-KPIC' ++ ;; ++ ghcx*) ++ # Green Hills C++ Compiler ++ lt_prog_compiler_pic_CXX='-pic' ++ ;; ++ *) ++ ;; ++ esac ++ ;; ++ freebsd* | dragonfly*) ++ # FreeBSD uses GNU C++ ++ ;; ++ hpux9* | hpux10* | hpux11*) ++ case $cc_basename in ++ CC*) ++ lt_prog_compiler_wl_CXX='-Wl,' ++ lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' ++ if test "$host_cpu" != ia64; then ++ lt_prog_compiler_pic_CXX='+Z' ++ fi ++ ;; ++ aCC*) ++ lt_prog_compiler_wl_CXX='-Wl,' ++ lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' ++ case $host_cpu in ++ hppa*64*|ia64*) ++ # +Z the default ++ ;; ++ *) ++ lt_prog_compiler_pic_CXX='+Z' ++ ;; ++ esac ++ ;; ++ *) ++ ;; ++ esac ++ ;; ++ interix*) ++ # This is c89, which is MS Visual C++ (no shared libs) ++ # Anyone wants to do a port? ++ ;; ++ irix5* | irix6* | nonstopux*) ++ case $cc_basename in ++ CC*) ++ lt_prog_compiler_wl_CXX='-Wl,' ++ lt_prog_compiler_static_CXX='-non_shared' ++ # CC pic flag -KPIC is the default. ++ ;; ++ *) ++ ;; ++ esac ++ ;; ++ linux* | k*bsd*-gnu) ++ case $cc_basename in ++ KCC*) ++ # KAI C++ Compiler ++ lt_prog_compiler_wl_CXX='--backend -Wl,' ++ lt_prog_compiler_pic_CXX='-fPIC' ++ ;; ++ icpc* | ecpc*) ++ # Intel C++ ++ lt_prog_compiler_wl_CXX='-Wl,' ++ lt_prog_compiler_pic_CXX='-KPIC' ++ lt_prog_compiler_static_CXX='-static' ++ ;; ++ pgCC*) ++ # Portland Group C++ compiler. ++ lt_prog_compiler_wl_CXX='-Wl,' ++ lt_prog_compiler_pic_CXX='-fpic' ++ lt_prog_compiler_static_CXX='-Bstatic' ++ ;; ++ cxx*) ++ # Compaq C++ ++ # Make sure the PIC flag is empty. It appears that all Alpha ++ # Linux and Compaq Tru64 Unix objects are PIC. ++ lt_prog_compiler_pic_CXX= ++ lt_prog_compiler_static_CXX='-non_shared' ++ ;; ++ *) ++ case `$CC -V 2>&1 | sed 5q` in ++ *Sun\ C*) ++ # Sun C++ 5.9 ++ lt_prog_compiler_pic_CXX='-KPIC' ++ lt_prog_compiler_static_CXX='-Bstatic' ++ lt_prog_compiler_wl_CXX='-Qoption ld ' ++ ;; ++ esac ++ ;; ++ esac ++ ;; ++ lynxos*) ++ ;; ++ m88k*) ++ ;; ++ mvs*) ++ case $cc_basename in ++ cxx*) ++ lt_prog_compiler_pic_CXX='-W c,exportall' ++ ;; ++ *) ++ ;; ++ esac ++ ;; ++ netbsd* | netbsdelf*-gnu) ++ ;; ++ osf3* | osf4* | osf5*) ++ case $cc_basename in ++ KCC*) ++ lt_prog_compiler_wl_CXX='--backend -Wl,' ++ ;; ++ RCC*) ++ # Rational C++ 2.4.1 ++ lt_prog_compiler_pic_CXX='-pic' ++ ;; ++ cxx*) ++ # Digital/Compaq C++ ++ lt_prog_compiler_wl_CXX='-Wl,' ++ # Make sure the PIC flag is empty. It appears that all Alpha ++ # Linux and Compaq Tru64 Unix objects are PIC. ++ lt_prog_compiler_pic_CXX= ++ lt_prog_compiler_static_CXX='-non_shared' ++ ;; ++ *) ++ ;; ++ esac ++ ;; ++ psos*) ++ ;; ++ solaris*) ++ case $cc_basename in ++ CC*) ++ # Sun C++ 4.2, 5.x and Centerline C++ ++ lt_prog_compiler_pic_CXX='-KPIC' ++ lt_prog_compiler_static_CXX='-Bstatic' ++ lt_prog_compiler_wl_CXX='-Qoption ld ' ++ ;; ++ gcx*) ++ # Green Hills C++ Compiler ++ lt_prog_compiler_pic_CXX='-PIC' ++ ;; ++ *) ++ ;; ++ esac ++ ;; ++ sunos4*) ++ case $cc_basename in ++ CC*) ++ # Sun C++ 4.x ++ lt_prog_compiler_pic_CXX='-pic' ++ lt_prog_compiler_static_CXX='-Bstatic' ++ ;; ++ lcc*) ++ # Lucid ++ lt_prog_compiler_pic_CXX='-pic' ++ ;; ++ *) ++ ;; ++ esac ++ ;; ++ tandem*) ++ case $cc_basename in ++ NCC*) ++ # NonStop-UX NCC 3.20 ++ lt_prog_compiler_pic_CXX='-KPIC' ++ ;; ++ *) ++ ;; ++ esac ++ ;; ++ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) ++ case $cc_basename in ++ CC*) ++ lt_prog_compiler_wl_CXX='-Wl,' ++ lt_prog_compiler_pic_CXX='-KPIC' ++ lt_prog_compiler_static_CXX='-Bstatic' ++ ;; ++ esac ++ ;; ++ vxworks*) ++ ;; ++ *) ++ lt_prog_compiler_can_build_shared_CXX=no ++ ;; ++ esac ++ fi ++ ++{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5 ++echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6; } ++ ++# ++# Check to make sure the PIC flag actually works. ++# ++if test -n "$lt_prog_compiler_pic_CXX"; then ++ ++{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 ++echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6; } ++if test "${lt_prog_compiler_pic_works_CXX+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_prog_compiler_pic_works_CXX=no ++ ac_outfile=conftest.$ac_objext ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" ++ # Insert the option either (1) after the last *FLAGS variable, or ++ # (2) before a word containing "conftest.", or (3) at the end. ++ # Note that $ac_compile itself does not contain backslashes and begins ++ # with a dollar sign (not a hyphen), so the echo should work correctly. ++ # The option is referenced via a variable to avoid confusing sed. ++ lt_compile=`echo "$ac_compile" | $SED \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ ++ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ ++ -e 's:$: $lt_compiler_flag:'` ++ (eval echo "\"\$as_me:12403: $lt_compile\"" >&5) ++ (eval "$lt_compile" 2>conftest.err) ++ ac_status=$? ++ cat conftest.err >&5 ++ echo "$as_me:12407: \$? = $ac_status" >&5 ++ if (exit $ac_status) && test -s "$ac_outfile"; then ++ # The compiler can only warn and ignore the option if not recognized ++ # So say no if there are warnings other than the usual output. ++ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then ++ lt_prog_compiler_pic_works_CXX=yes ++ fi ++ fi ++ $rm conftest* ++ ++fi ++{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_CXX" >&5 ++echo "${ECHO_T}$lt_prog_compiler_pic_works_CXX" >&6; } ++ ++if test x"$lt_prog_compiler_pic_works_CXX" = xyes; then ++ case $lt_prog_compiler_pic_CXX in ++ "" | " "*) ;; ++ *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; ++ esac ++else ++ lt_prog_compiler_pic_CXX= ++ lt_prog_compiler_can_build_shared_CXX=no ++fi ++ ++fi ++case $host_os in ++ # For platforms which do not support PIC, -DPIC is meaningless: ++ *djgpp*) ++ lt_prog_compiler_pic_CXX= ++ ;; ++ *) ++ lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" ++ ;; ++esac ++ ++# ++# Check to make sure the static flag actually works. ++# ++wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" ++{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 ++echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } ++if test "${lt_prog_compiler_static_works_CXX+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_prog_compiler_static_works_CXX=no ++ save_LDFLAGS="$LDFLAGS" ++ LDFLAGS="$LDFLAGS $lt_tmp_static_flag" ++ echo "$lt_simple_link_test_code" > conftest.$ac_ext ++ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then ++ # The linker can only warn and ignore the option if not recognized ++ # So say no if there are warnings ++ if test -s conftest.err; then ++ # Append any errors to the config.log. ++ cat conftest.err 1>&5 ++ $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if diff conftest.exp conftest.er2 >/dev/null; then ++ lt_prog_compiler_static_works_CXX=yes ++ fi ++ else ++ lt_prog_compiler_static_works_CXX=yes ++ fi ++ fi ++ $rm conftest* ++ LDFLAGS="$save_LDFLAGS" ++ ++fi ++{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_CXX" >&5 ++echo "${ECHO_T}$lt_prog_compiler_static_works_CXX" >&6; } ++ ++if test x"$lt_prog_compiler_static_works_CXX" = xyes; then ++ : ++else ++ lt_prog_compiler_static_CXX= ++fi ++ ++ ++{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 ++echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } ++if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_cv_prog_compiler_c_o_CXX=no ++ $rm -r conftest 2>/dev/null ++ mkdir conftest ++ cd conftest ++ mkdir out ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ ++ lt_compiler_flag="-o out/conftest2.$ac_objext" ++ # Insert the option either (1) after the last *FLAGS variable, or ++ # (2) before a word containing "conftest.", or (3) at the end. ++ # Note that $ac_compile itself does not contain backslashes and begins ++ # with a dollar sign (not a hyphen), so the echo should work correctly. ++ lt_compile=`echo "$ac_compile" | $SED \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ ++ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ ++ -e 's:$: $lt_compiler_flag:'` ++ (eval echo "\"\$as_me:12507: $lt_compile\"" >&5) ++ (eval "$lt_compile" 2>out/conftest.err) ++ ac_status=$? ++ cat out/conftest.err >&5 ++ echo "$as_me:12511: \$? = $ac_status" >&5 ++ if (exit $ac_status) && test -s out/conftest2.$ac_objext ++ then ++ # The compiler can only warn and ignore the option if not recognized ++ # So say no if there are warnings ++ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp ++ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 ++ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then ++ lt_cv_prog_compiler_c_o_CXX=yes ++ fi ++ fi ++ chmod u+w . 2>&5 ++ $rm conftest* ++ # SGI C++ compiler will create directory out/ii_files/ for ++ # template instantiation ++ test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files ++ $rm out/* && rmdir out ++ cd .. ++ rmdir conftest ++ $rm conftest* ++ ++fi ++{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5 ++echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6; } ++ ++ ++hard_links="nottested" ++if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then ++ # do not overwrite the value of need_locks provided by the user ++ { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 ++echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } ++ hard_links=yes ++ $rm conftest* ++ ln conftest.a conftest.b 2>/dev/null && hard_links=no ++ touch conftest.a ++ ln conftest.a conftest.b 2>&5 || hard_links=no ++ ln conftest.a conftest.b 2>/dev/null && hard_links=no ++ { echo "$as_me:$LINENO: result: $hard_links" >&5 ++echo "${ECHO_T}$hard_links" >&6; } ++ if test "$hard_links" = no; then ++ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 ++echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} ++ need_locks=warn ++ fi ++else ++ need_locks=no ++fi ++ ++{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 ++echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } ++ ++ export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ++ case $host_os in ++ aix4* | aix5*) ++ # If we're using GNU nm, then we don't want the "-C" option. ++ # -C means demangle to AIX nm, but means don't demangle with GNU nm ++ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then ++ export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' ++ else ++ export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' ++ fi ++ ;; ++ pw32*) ++ export_symbols_cmds_CXX="$ltdll_cmds" ++ ;; ++ cygwin* | mingw*) ++ export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;/^.*[ ]__nm__/s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' ++ ;; ++ linux* | k*bsd*-gnu) ++ link_all_deplibs_CXX=no ++ ;; ++ *) ++ export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ++ ;; ++ esac ++ ++{ echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 ++echo "${ECHO_T}$ld_shlibs_CXX" >&6; } ++test "$ld_shlibs_CXX" = no && can_build_shared=no ++ ++# ++# Do we need to explicitly link libc? ++# ++case "x$archive_cmds_need_lc_CXX" in ++x|xyes) ++ # Assume -lc should be added ++ archive_cmds_need_lc_CXX=yes ++ ++ if test "$enable_shared" = yes && test "$GCC" = yes; then ++ case $archive_cmds_CXX in ++ *'~'*) ++ # FIXME: we may have to deal with multi-command sequences. ++ ;; ++ '$CC '*) ++ # Test whether the compiler implicitly links with -lc since on some ++ # systems, -lgcc has to come before -lc. If gcc already passes -lc ++ # to ld, don't add -lc before -lgcc. ++ { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 ++echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } ++ $rm conftest* ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ ++ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ++ (eval $ac_compile) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } 2>conftest.err; then ++ soname=conftest ++ lib=conftest ++ libobjs=conftest.$ac_objext ++ deplibs= ++ wl=$lt_prog_compiler_wl_CXX ++ pic_flag=$lt_prog_compiler_pic_CXX ++ compiler_flags=-v ++ linker_flags=-v ++ verstring= ++ output_objdir=. ++ libname=conftest ++ lt_save_allow_undefined_flag=$allow_undefined_flag_CXX ++ allow_undefined_flag_CXX= ++ if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 ++ (eval $archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } ++ then ++ archive_cmds_need_lc_CXX=no ++ else ++ archive_cmds_need_lc_CXX=yes ++ fi ++ allow_undefined_flag_CXX=$lt_save_allow_undefined_flag ++ else ++ cat conftest.err 1>&5 ++ fi ++ $rm conftest* ++ { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5 ++echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6; } ++ ;; ++ esac ++ fi ++ ;; ++esac ++ ++{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 ++echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } ++library_names_spec= ++libname_spec='lib$name' ++soname_spec= ++shrext_cmds=".so" ++postinstall_cmds= ++postuninstall_cmds= ++finish_cmds= ++finish_eval= ++shlibpath_var= ++shlibpath_overrides_runpath=unknown ++version_type=none ++dynamic_linker="$host_os ld.so" ++sys_lib_dlsearch_path_spec="/lib /usr/lib" ++ ++need_lib_prefix=unknown ++hardcode_into_libs=no ++ ++# when you set need_version to no, make sure it does not cause -set_version ++# flags to be left without arguments ++need_version=unknown ++ ++case $host_os in ++aix3*) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' ++ shlibpath_var=LIBPATH ++ ++ # AIX 3 has no versioning support, so we append a major version to the name. ++ soname_spec='${libname}${release}${shared_ext}$major' ++ ;; ++ ++aix4* | aix5*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ hardcode_into_libs=yes ++ if test "$host_cpu" = ia64; then ++ # AIX 5 supports IA64 ++ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' ++ shlibpath_var=LD_LIBRARY_PATH ++ else ++ # With GCC up to 2.95.x, collect2 would create an import file ++ # for dependence libraries. The import file would start with ++ # the line `#! .'. This would cause the generated library to ++ # depend on `.', always an invalid library. This was fixed in ++ # development snapshots of GCC prior to 3.0. ++ case $host_os in ++ aix4 | aix4.[01] | aix4.[01].*) ++ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' ++ echo ' yes ' ++ echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then ++ : ++ else ++ can_build_shared=no ++ fi ++ ;; ++ esac ++ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct ++ # soname into executable. Probably we can add versioning support to ++ # collect2, so additional links can be useful in future. ++ if test "$aix_use_runtimelinking" = yes; then ++ # If using run time linking (on AIX 4.2 or later) use lib.so ++ # instead of lib.a to let people know that these are not ++ # typical AIX shared libraries. ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ else ++ # We preserve .a as extension for shared libraries through AIX4.2 ++ # and later when we are not doing run time linking. ++ library_names_spec='${libname}${release}.a $libname.a' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ fi ++ shlibpath_var=LIBPATH ++ fi ++ ;; ++ ++amigaos*) ++ library_names_spec='$libname.ixlibrary $libname.a' ++ # Create ${libname}_ixlibrary.a entries in /sys/libs. ++ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $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' ++ ;; ++ ++beos*) ++ library_names_spec='${libname}${shared_ext}' ++ dynamic_linker="$host_os ld.so" ++ shlibpath_var=LIBRARY_PATH ++ ;; ++ ++bsdi[45]*) ++ version_type=linux ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" ++ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" ++ # the default ld.so.conf also contains /usr/contrib/lib and ++ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow ++ # libtool to hard-code these into programs ++ ;; ++ ++cygwin* | mingw* | pw32*) ++ version_type=windows ++ shrext_cmds=".dll" ++ need_version=no ++ need_lib_prefix=no ++ ++ case $GCC,$host_os in ++ yes,cygwin* | yes,mingw* | yes,pw32*) ++ library_names_spec='$libname.dll.a' ++ # DLL is installed to $(libdir)/../bin by postinstall_cmds ++ postinstall_cmds='base_file=`basename \${file}`~ ++ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ ++ dldir=$destdir/`dirname \$dlpath`~ ++ test -d \$dldir || mkdir -p \$dldir~ ++ $install_prog $dir/$dlname \$dldir/$dlname~ ++ chmod a+x \$dldir/$dlname' ++ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ ++ dlpath=$dir/\$dldll~ ++ $rm \$dlpath' ++ shlibpath_overrides_runpath=yes ++ ++ case $host_os in ++ cygwin*) ++ # Cygwin DLLs use 'cyg' prefix rather than 'lib' ++ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ++ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ++ ;; ++ mingw*) ++ # MinGW DLLs use traditional 'lib' prefix ++ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ++ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` ++ if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then ++ # It is most probably a Windows format PATH printed by ++ # mingw gcc, but we are running on Cygwin. Gcc prints its search ++ # path with ; separators, and with drive letters. We can handle the ++ # drive letters (cygwin fileutils understands them), so leave them, ++ # especially as we might pass files found there to a mingw objdump, ++ # which wouldn't understand a cygwinified path. Ahh. ++ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` ++ else ++ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ++ fi ++ ;; ++ pw32*) ++ # pw32 DLLs use 'pw' prefix rather than 'lib' ++ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ++ ;; ++ esac ++ ;; ++ ++ *) ++ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ++ ;; ++ esac ++ dynamic_linker='Win32 ld.exe' ++ # FIXME: first we should search . and the directory the executable is in ++ shlibpath_var=PATH ++ ;; ++ ++darwin* | rhapsody*) ++ dynamic_linker="$host_os dyld" ++ version_type=darwin ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' ++ soname_spec='${libname}${release}${major}$shared_ext' ++ shlibpath_overrides_runpath=yes ++ shlibpath_var=DYLD_LIBRARY_PATH ++ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' ++ ++ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ++ ;; ++ ++dgux*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ ;; ++ ++freebsd1*) ++ dynamic_linker=no ++ ;; ++ ++freebsd* | dragonfly*) ++ # DragonFly does not have aout. When/if they implement a new ++ # versioning mechanism, adjust this. ++ if test -x /usr/bin/objformat; then ++ objformat=`/usr/bin/objformat` ++ else ++ case $host_os in ++ freebsd[123]*) objformat=aout ;; ++ *) objformat=elf ;; ++ esac ++ fi ++ version_type=freebsd-$objformat ++ case $version_type in ++ freebsd-elf*) ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' ++ need_version=no ++ need_lib_prefix=no ++ ;; ++ freebsd-*) ++ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' ++ need_version=yes ++ ;; ++ esac ++ shlibpath_var=LD_LIBRARY_PATH ++ case $host_os in ++ freebsd2*) ++ shlibpath_overrides_runpath=yes ++ ;; ++ freebsd3.[01]* | freebsdelf3.[01]*) ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ ;; ++ freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ ++ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ ;; ++ *) # from 4.6 on, and DragonFly ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ ;; ++ esac ++ ;; ++ ++gnu*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ hardcode_into_libs=yes ++ ;; ++ ++hpux9* | hpux10* | hpux11*) ++ # Give a soname corresponding to the major version so that dld.sl refuses to ++ # link against other versions. ++ version_type=sunos ++ need_lib_prefix=no ++ need_version=no ++ case $host_cpu in ++ ia64*) ++ shrext_cmds='.so' ++ hardcode_into_libs=yes ++ dynamic_linker="$host_os dld.so" ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ if test "X$HPUX_IA64_MODE" = X32; then ++ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" ++ else ++ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" ++ fi ++ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ++ ;; ++ hppa*64*) ++ shrext_cmds='.sl' ++ hardcode_into_libs=yes ++ dynamic_linker="$host_os dld.sl" ++ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH ++ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" ++ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ++ ;; ++ *) ++ shrext_cmds='.sl' ++ dynamic_linker="$host_os dld.sl" ++ shlibpath_var=SHLIB_PATH ++ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ ;; ++ esac ++ # HP-UX runs *really* slowly unless shared libraries are mode 555. ++ postinstall_cmds='chmod 555 $lib' ++ ;; ++ ++interix[3-9]*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ ;; ++ ++irix5* | irix6* | nonstopux*) ++ case $host_os in ++ nonstopux*) version_type=nonstopux ;; ++ *) ++ if test "$lt_cv_prog_gnu_ld" = yes; then ++ version_type=linux ++ else ++ version_type=irix ++ fi ;; ++ esac ++ need_lib_prefix=no ++ need_version=no ++ soname_spec='${libname}${release}${shared_ext}$major' ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' ++ case $host_os in ++ irix5* | nonstopux*) ++ libsuff= shlibsuff= ++ ;; ++ *) ++ case $LD in # libtool.m4 will add one of these switches to LD ++ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") ++ libsuff= shlibsuff= libmagic=32-bit;; ++ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") ++ libsuff=32 shlibsuff=N32 libmagic=N32;; ++ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") ++ libsuff=64 shlibsuff=64 libmagic=64-bit;; ++ *) libsuff= shlibsuff= libmagic=never-match;; ++ esac ++ ;; ++ esac ++ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH ++ shlibpath_overrides_runpath=no ++ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" ++ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" ++ hardcode_into_libs=yes ++ ;; ++ ++# No shared lib support for Linux oldld, aout, or coff. ++linux*oldld* | linux*aout* | linux*coff*) ++ dynamic_linker=no ++ ;; ++ ++# This must be Linux ELF. ++linux* | k*bsd*-gnu) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ # This implies no fast_install, which is unacceptable. ++ # Some rework will be needed to allow for fast_install ++ # before this can be enabled. ++ hardcode_into_libs=yes ++ ++ # Append ld.so.conf contents to the search path ++ if test -f /etc/ld.so.conf; then ++ 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;/^$/d' | tr '\n' ' '` ++ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" ++ fi ++ ++ # We used to test for /lib/ld.so.1 and disable shared libraries on ++ # powerpc, because MkLinux only supported shared libraries with the ++ # GNU dynamic linker. Since this was broken with cross compilers, ++ # most powerpc-linux boxes support dynamic linking these days and ++ # people can always --disable-shared, the test was removed, and we ++ # assume the GNU/Linux dynamic linker is in use. ++ dynamic_linker='GNU/Linux ld.so' ++ ;; ++ ++netbsdelf*-gnu) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ dynamic_linker='NetBSD ld.elf_so' ++ ;; ++ ++netbsd*) ++ version_type=sunos ++ need_lib_prefix=no ++ need_version=no ++ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' ++ dynamic_linker='NetBSD (a.out) ld.so' ++ else ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ dynamic_linker='NetBSD ld.elf_so' ++ fi ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ ;; ++ ++newsos6) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ ;; ++ ++nto-qnx*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ ;; ++ ++openbsd*) ++ version_type=sunos ++ sys_lib_dlsearch_path_spec="/usr/lib" ++ need_lib_prefix=no ++ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. ++ case $host_os in ++ openbsd3.3 | openbsd3.3.*) need_version=yes ;; ++ *) need_version=no ;; ++ esac ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then ++ case $host_os in ++ openbsd2.[89] | openbsd2.[89].*) ++ shlibpath_overrides_runpath=no ++ ;; ++ *) ++ shlibpath_overrides_runpath=yes ++ ;; ++ esac ++ else ++ shlibpath_overrides_runpath=yes ++ fi ++ ;; ++ ++os2*) ++ libname_spec='$name' ++ shrext_cmds=".dll" ++ need_lib_prefix=no ++ library_names_spec='$libname${shared_ext} $libname.a' ++ dynamic_linker='OS/2 ld.exe' ++ shlibpath_var=LIBPATH ++ ;; ++ ++osf3* | osf4* | osf5*) ++ version_type=osf ++ need_lib_prefix=no ++ need_version=no ++ soname_spec='${libname}${release}${shared_ext}$major' ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ shlibpath_var=LD_LIBRARY_PATH ++ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" ++ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ++ ;; ++ ++rdos*) ++ dynamic_linker=no ++ ;; ++ ++solaris*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ # ldd complains unless libraries are executable ++ postinstall_cmds='chmod +x $lib' ++ ;; ++ ++sunos4*) ++ version_type=sunos ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' ++ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ if test "$with_gnu_ld" = yes; then ++ need_lib_prefix=no ++ fi ++ need_version=yes ++ ;; ++ ++sysv4 | sysv4.3*) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ case $host_vendor in ++ sni) ++ shlibpath_overrides_runpath=no ++ need_lib_prefix=no ++ export_dynamic_flag_spec='${wl}-Blargedynsym' ++ runpath_var=LD_RUN_PATH ++ ;; ++ siemens) ++ need_lib_prefix=no ++ ;; ++ motorola) ++ need_lib_prefix=no ++ need_version=no ++ shlibpath_overrides_runpath=no ++ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ++ ;; ++ esac ++ ;; ++ ++sysv4*MP*) ++ if test -d /usr/nec ;then ++ version_type=linux ++ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' ++ soname_spec='$libname${shared_ext}.$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ fi ++ ;; ++ ++sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) ++ version_type=freebsd-elf ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ hardcode_into_libs=yes ++ if test "$with_gnu_ld" = yes; then ++ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' ++ shlibpath_overrides_runpath=no ++ else ++ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' ++ shlibpath_overrides_runpath=yes ++ case $host_os in ++ sco3.2v5*) ++ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ++ ;; ++ esac ++ fi ++ sys_lib_dlsearch_path_spec='/usr/lib' ++ ;; ++ ++uts4*) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ ;; ++ ++*) ++ dynamic_linker=no ++ ;; ++esac ++{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5 ++echo "${ECHO_T}$dynamic_linker" >&6; } ++test "$dynamic_linker" = no && can_build_shared=no ++ ++variables_saved_for_relink="PATH $shlibpath_var $runpath_var" ++if test "$GCC" = yes; then ++ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" ++fi ++ ++{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 ++echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } ++hardcode_action_CXX= ++if test -n "$hardcode_libdir_flag_spec_CXX" || \ ++ test -n "$runpath_var_CXX" || \ ++ test "X$hardcode_automatic_CXX" = "Xyes" ; then ++ ++ # We can hardcode non-existant directories. ++ if test "$hardcode_direct_CXX" != no && ++ # If the only mechanism to avoid hardcoding is shlibpath_var, we ++ # have to relink, otherwise we might link with an installed library ++ # when we should be linking with a yet-to-be-installed one ++ ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, CXX)" != no && ++ test "$hardcode_minus_L_CXX" != no; then ++ # Linking always hardcodes the temporary library directory. ++ hardcode_action_CXX=relink ++ else ++ # We can link without hardcoding, and we can hardcode nonexisting dirs. ++ hardcode_action_CXX=immediate ++ fi ++else ++ # We cannot hardcode anything, or else we can only hardcode existing ++ # directories. ++ hardcode_action_CXX=unsupported ++fi ++{ echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5 ++echo "${ECHO_T}$hardcode_action_CXX" >&6; } ++ ++if test "$hardcode_action_CXX" = relink; then ++ # Fast installation is not supported ++ enable_fast_install=no ++elif test "$shlibpath_overrides_runpath" = yes || ++ test "$enable_shared" = no; then ++ # Fast installation is not necessary ++ enable_fast_install=needless ++fi ++ ++ ++# The else clause should only fire when bootstrapping the ++# libtool distribution, otherwise you forgot to ship ltmain.sh ++# with your package, and you will get complaints that there are ++# no rules to generate ltmain.sh. ++if test -f "$ltmain"; then ++ # See if we are running on zsh, and set the options which allow our commands through ++ # without removal of \ escapes. ++ if test -n "${ZSH_VERSION+set}" ; then ++ setopt NO_GLOB_SUBST ++ fi ++ # Now quote all the things that may contain metacharacters while being ++ # careful not to overquote the AC_SUBSTed values. We take copies of the ++ # variables and quote the copies for generation of the libtool script. ++ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ ++ SED SHELL STRIP \ ++ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ ++ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ ++ deplibs_check_method reload_flag reload_cmds need_locks \ ++ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ ++ lt_cv_sys_global_symbol_to_c_name_address \ ++ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ ++ old_postinstall_cmds old_postuninstall_cmds \ ++ compiler_CXX \ ++ CC_CXX \ ++ LD_CXX \ ++ lt_prog_compiler_wl_CXX \ ++ lt_prog_compiler_pic_CXX \ ++ lt_prog_compiler_static_CXX \ ++ lt_prog_compiler_no_builtin_flag_CXX \ ++ export_dynamic_flag_spec_CXX \ ++ thread_safe_flag_spec_CXX \ ++ whole_archive_flag_spec_CXX \ ++ enable_shared_with_static_runtimes_CXX \ ++ old_archive_cmds_CXX \ ++ old_archive_from_new_cmds_CXX \ ++ predep_objects_CXX \ ++ postdep_objects_CXX \ ++ predeps_CXX \ ++ postdeps_CXX \ ++ compiler_lib_search_path_CXX \ ++ archive_cmds_CXX \ ++ archive_expsym_cmds_CXX \ ++ postinstall_cmds_CXX \ ++ postuninstall_cmds_CXX \ ++ old_archive_from_expsyms_cmds_CXX \ ++ allow_undefined_flag_CXX \ ++ no_undefined_flag_CXX \ ++ export_symbols_cmds_CXX \ ++ hardcode_libdir_flag_spec_CXX \ ++ hardcode_libdir_flag_spec_ld_CXX \ ++ hardcode_libdir_separator_CXX \ ++ hardcode_automatic_CXX \ ++ module_cmds_CXX \ ++ module_expsym_cmds_CXX \ ++ lt_cv_prog_compiler_c_o_CXX \ ++ fix_srcfile_path_CXX \ ++ exclude_expsyms_CXX \ ++ include_expsyms_CXX; do ++ ++ case $var in ++ old_archive_cmds_CXX | \ ++ old_archive_from_new_cmds_CXX | \ ++ archive_cmds_CXX | \ ++ archive_expsym_cmds_CXX | \ ++ module_cmds_CXX | \ ++ module_expsym_cmds_CXX | \ ++ old_archive_from_expsyms_cmds_CXX | \ ++ export_symbols_cmds_CXX | \ ++ extract_expsyms_cmds | reload_cmds | finish_cmds | \ ++ postinstall_cmds | postuninstall_cmds | \ ++ old_postinstall_cmds | old_postuninstall_cmds | \ ++ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) ++ # Double-quote double-evaled strings. ++ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ++ ;; ++ *) ++ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ++ ;; ++ esac ++ done ++ ++ case $lt_echo in ++ *'\$0 --fallback-echo"') ++ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ++ ;; ++ esac ++ ++cfgfile="$ofile" ++ ++ cat <<__EOF__ >> "$cfgfile" ++# ### BEGIN LIBTOOL TAG CONFIG: $tagname ++ ++# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: ++ ++# Shell to use when invoking shell scripts. ++SHELL=$lt_SHELL ++ ++# Whether or not to build shared libraries. ++build_libtool_libs=$enable_shared ++ ++# Whether or not to build static libraries. ++build_old_libs=$enable_static ++ ++# Whether or not to add -lc for building shared libraries. ++build_libtool_need_lc=$archive_cmds_need_lc_CXX ++ ++# Whether or not to disallow shared libs when runtime libs are static ++allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX ++ ++# Whether or not to optimize for fast installation. ++fast_install=$enable_fast_install ++ ++# The host system. ++host_alias=$host_alias ++host=$host ++host_os=$host_os ++ ++# The build system. ++build_alias=$build_alias ++build=$build ++build_os=$build_os ++ ++# An echo program that does not interpret backslashes. ++echo=$lt_echo ++ ++# The archiver. ++AR=$lt_AR ++AR_FLAGS=$lt_AR_FLAGS ++ ++# A C compiler. ++LTCC=$lt_LTCC ++ ++# LTCC compiler flags. ++LTCFLAGS=$lt_LTCFLAGS ++ ++# A language-specific compiler. ++CC=$lt_compiler_CXX ++ ++# Is the compiler the GNU C compiler? ++with_gcc=$GCC_CXX ++ ++# An ERE matcher. ++EGREP=$lt_EGREP ++ ++# The linker used to build libraries. ++LD=$lt_LD_CXX ++ ++# Whether we need hard or soft links. ++LN_S=$lt_LN_S ++ ++# A BSD-compatible nm program. ++NM=$lt_NM ++ ++# A symbol stripping program ++STRIP=$lt_STRIP ++ ++# Used to examine libraries when file_magic_cmd begins "file" ++MAGIC_CMD=$MAGIC_CMD ++ ++# Used on cygwin: DLL creation program. ++DLLTOOL="$DLLTOOL" ++ ++# Used on cygwin: object dumper. ++OBJDUMP="$OBJDUMP" ++ ++# Used on cygwin: assembler. ++AS="$AS" ++ ++# The name of the directory that contains temporary libtool files. ++objdir=$objdir ++ ++# How to create reloadable object files. ++reload_flag=$lt_reload_flag ++reload_cmds=$lt_reload_cmds ++ ++# How to pass a linker flag through the compiler. ++wl=$lt_lt_prog_compiler_wl_CXX ++ ++# Object file suffix (normally "o"). ++objext="$ac_objext" ++ ++# Old archive suffix (normally "a"). ++libext="$libext" ++ ++# Shared library suffix (normally ".so"). ++shrext_cmds='$shrext_cmds' ++ ++# Executable file suffix (normally ""). ++exeext="$exeext" ++ ++# Additional compiler flags for building library objects. ++pic_flag=$lt_lt_prog_compiler_pic_CXX ++pic_mode=$pic_mode ++ ++# What is the maximum length of a command? ++max_cmd_len=$lt_cv_sys_max_cmd_len ++ ++# Does compiler simultaneously support -c and -o options? ++compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX ++ ++# Must we lock files when doing compilation? ++need_locks=$lt_need_locks ++ ++# Do we need the lib prefix for modules? ++need_lib_prefix=$need_lib_prefix ++ ++# Do we need a version for libraries? ++need_version=$need_version ++ ++# Whether dlopen is supported. ++dlopen_support=$enable_dlopen ++ ++# Whether dlopen of programs is supported. ++dlopen_self=$enable_dlopen_self ++ ++# Whether dlopen of statically linked programs is supported. ++dlopen_self_static=$enable_dlopen_self_static ++ ++# Compiler flag to prevent dynamic linking. ++link_static_flag=$lt_lt_prog_compiler_static_CXX ++ ++# Compiler flag to turn off builtin functions. ++no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX ++ ++# Compiler flag to allow reflexive dlopens. ++export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX ++ ++# Compiler flag to generate shared objects directly from archives. ++whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX ++ ++# Compiler flag to generate thread-safe objects. ++thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX ++ ++# Library versioning type. ++version_type=$version_type ++ ++# Format of library name prefix. ++libname_spec=$lt_libname_spec ++ ++# List of archive names. First name is the real one, the rest are links. ++# The last name is the one that the linker finds with -lNAME. ++library_names_spec=$lt_library_names_spec ++ ++# The coded name of the library, if different from the real name. ++soname_spec=$lt_soname_spec ++ ++# Commands used to build and install an old-style archive. ++RANLIB=$lt_RANLIB ++old_archive_cmds=$lt_old_archive_cmds_CXX ++old_postinstall_cmds=$lt_old_postinstall_cmds ++old_postuninstall_cmds=$lt_old_postuninstall_cmds ++ ++# Create an old-style archive from a shared archive. ++old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX ++ ++# Create a temporary old-style archive to link instead of a shared archive. ++old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX ++ ++# Commands used to build and install a shared archive. ++archive_cmds=$lt_archive_cmds_CXX ++archive_expsym_cmds=$lt_archive_expsym_cmds_CXX ++postinstall_cmds=$lt_postinstall_cmds ++postuninstall_cmds=$lt_postuninstall_cmds ++ ++# Commands used to build a loadable module (assumed same as above if empty) ++module_cmds=$lt_module_cmds_CXX ++module_expsym_cmds=$lt_module_expsym_cmds_CXX ++ ++# Commands to strip libraries. ++old_striplib=$lt_old_striplib ++striplib=$lt_striplib ++ ++# Dependencies to place before the objects being linked to create a ++# shared library. ++predep_objects=$lt_predep_objects_CXX ++ ++# Dependencies to place after the objects being linked to create a ++# shared library. ++postdep_objects=$lt_postdep_objects_CXX ++ ++# Dependencies to place before the objects being linked to create a ++# shared library. ++predeps=$lt_predeps_CXX ++ ++# Dependencies to place after the objects being linked to create a ++# shared library. ++postdeps=$lt_postdeps_CXX ++ ++# The library search path used internally by the compiler when linking ++# a shared library. ++compiler_lib_search_path=$lt_compiler_lib_search_path_CXX ++ ++# Method to check whether dependent libraries are shared objects. ++deplibs_check_method=$lt_deplibs_check_method ++ ++# Command to use when deplibs_check_method == file_magic. ++file_magic_cmd=$lt_file_magic_cmd ++ ++# Flag that allows shared libraries with undefined symbols to be built. ++allow_undefined_flag=$lt_allow_undefined_flag_CXX ++ ++# Flag that forces no undefined symbols. ++no_undefined_flag=$lt_no_undefined_flag_CXX ++ ++# Commands used to finish a libtool library installation in a directory. ++finish_cmds=$lt_finish_cmds ++ ++# Same as above, but a single script fragment to be evaled but not shown. ++finish_eval=$lt_finish_eval ++ ++# Take the output of nm and produce a listing of raw symbols and C names. ++global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe ++ ++# Transform the output of nm in a proper C declaration ++global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl ++ ++# Transform the output of nm in a C name address pair ++global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address ++ ++# This is the shared library runtime path variable. ++runpath_var=$runpath_var ++ ++# This is the shared library path variable. ++shlibpath_var=$shlibpath_var ++ ++# Is shlibpath searched before the hard-coded library search path? ++shlibpath_overrides_runpath=$shlibpath_overrides_runpath ++ ++# How to hardcode a shared library path into an executable. ++hardcode_action=$hardcode_action_CXX ++ ++# Whether we should hardcode library paths into libraries. ++hardcode_into_libs=$hardcode_into_libs ++ ++# Flag to hardcode \$libdir into a binary during linking. ++# This must work even if \$libdir does not exist. ++hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX ++ ++# If ld is used when linking, flag to hardcode \$libdir into ++# a binary during linking. This must work even if \$libdir does ++# not exist. ++hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX ++ ++# Whether we need a single -rpath flag with a separated argument. ++hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX ++ ++# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the ++# resulting binary. ++hardcode_direct=$hardcode_direct_CXX ++ ++# Set to yes if using the -LDIR flag during linking hardcodes DIR into the ++# resulting binary. ++hardcode_minus_L=$hardcode_minus_L_CXX ++ ++# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into ++# the resulting binary. ++hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX ++ ++# Set to yes if building a shared library automatically hardcodes DIR into the library ++# and all subsequent libraries and executables linked against it. ++hardcode_automatic=$hardcode_automatic_CXX ++ ++# Variables whose values should be saved in libtool wrapper scripts and ++# restored at relink time. ++variables_saved_for_relink="$variables_saved_for_relink" ++ ++# Whether libtool must link a program against all its dependency libraries. ++link_all_deplibs=$link_all_deplibs_CXX ++ ++# Compile-time system search path for libraries ++sys_lib_search_path_spec=$lt_sys_lib_search_path_spec ++ ++# Run-time system search path for libraries ++sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec ++ ++# Fix the shell variable \$srcfile for the compiler. ++fix_srcfile_path=$lt_fix_srcfile_path ++ ++# Set to yes if exported symbols are required. ++always_export_symbols=$always_export_symbols_CXX ++ ++# The commands to list exported symbols. ++export_symbols_cmds=$lt_export_symbols_cmds_CXX ++ ++# The commands to extract the exported symbol list from a shared archive. ++extract_expsyms_cmds=$lt_extract_expsyms_cmds ++ ++# Symbols that should not be listed in the preloaded symbols. ++exclude_expsyms=$lt_exclude_expsyms_CXX ++ ++# Symbols that must always be exported. ++include_expsyms=$lt_include_expsyms_CXX ++ ++# ### END LIBTOOL TAG CONFIG: $tagname ++ ++__EOF__ ++ ++ ++else ++ # If there is no Makefile yet, we rely on a make rule to execute ++ # `config.status --recheck' to rerun these tests and create the ++ # libtool script then. ++ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` ++ if test -f "$ltmain_in"; then ++ test -f Makefile && make "$ltmain" ++ fi ++fi ++ ++ ++ac_ext=c ++ac_cpp='$CPP $CPPFLAGS' ++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_c_compiler_gnu ++ ++CC=$lt_save_CC ++LDCXX=$LD ++LD=$lt_save_LD ++GCC=$lt_save_GCC ++with_gnu_ldcxx=$with_gnu_ld ++with_gnu_ld=$lt_save_with_gnu_ld ++lt_cv_path_LDCXX=$lt_cv_path_LD ++lt_cv_path_LD=$lt_save_path_LD ++lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld ++lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld ++ ++ else ++ tagname="" ++ fi ++ ;; ++ ++ F77) ++ if test -n "$F77" && test "X$F77" != "Xno"; then ++ ++ac_ext=f ++ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ++ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_f77_compiler_gnu ++ ++ ++archive_cmds_need_lc_F77=no ++allow_undefined_flag_F77= ++always_export_symbols_F77=no ++archive_expsym_cmds_F77= ++export_dynamic_flag_spec_F77= ++hardcode_direct_F77=no ++hardcode_libdir_flag_spec_F77= ++hardcode_libdir_flag_spec_ld_F77= ++hardcode_libdir_separator_F77= ++hardcode_minus_L_F77=no ++hardcode_automatic_F77=no ++module_cmds_F77= ++module_expsym_cmds_F77= ++link_all_deplibs_F77=unknown ++old_archive_cmds_F77=$old_archive_cmds ++no_undefined_flag_F77= ++whole_archive_flag_spec_F77= ++enable_shared_with_static_runtimes_F77=no ++ ++# Source file extension for f77 test sources. ++ac_ext=f ++ ++# Object file extension for compiled f77 test sources. ++objext=o ++objext_F77=$objext ++ ++# Code to be used in simple compile tests ++lt_simple_compile_test_code="\ ++ subroutine t ++ return ++ end ++" ++ ++# Code to be used in simple link tests ++lt_simple_link_test_code="\ ++ program t ++ end ++" ++ ++# ltmain only uses $CC for tagged configurations so make sure $CC is set. ++ ++# If no C compiler was specified, use CC. ++LTCC=${LTCC-"$CC"} ++ ++# If no C compiler flags were specified, use CFLAGS. ++LTCFLAGS=${LTCFLAGS-"$CFLAGS"} ++ ++# Allow CC to be a program name with arguments. ++compiler=$CC ++ ++ ++# save warnings/boilerplate of simple test code ++ac_outfile=conftest.$ac_objext ++echo "$lt_simple_compile_test_code" >conftest.$ac_ext ++eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err ++_lt_compiler_boilerplate=`cat conftest.err` ++$rm conftest* ++ ++ac_outfile=conftest.$ac_objext ++echo "$lt_simple_link_test_code" >conftest.$ac_ext ++eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err ++_lt_linker_boilerplate=`cat conftest.err` ++$rm conftest* ++ ++ ++# Allow CC to be a program name with arguments. ++lt_save_CC="$CC" ++CC=${F77-"f77"} ++compiler=$CC ++compiler_F77=$CC ++for cc_temp in $compiler""; do ++ case $cc_temp in ++ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; ++ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; ++ \-*) ;; ++ *) break;; ++ esac ++done ++cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` ++ ++ ++{ echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 ++echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6; } ++{ echo "$as_me:$LINENO: result: $can_build_shared" >&5 ++echo "${ECHO_T}$can_build_shared" >&6; } ++ ++{ echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 ++echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6; } ++test "$can_build_shared" = "no" && enable_shared=no ++ ++# On AIX, shared libraries and static libraries use the same namespace, and ++# are all built from PIC. ++case $host_os in ++aix3*) ++ test "$enable_shared" = yes && enable_static=no ++ if test -n "$RANLIB"; then ++ archive_cmds="$archive_cmds~\$RANLIB \$lib" ++ postinstall_cmds='$RANLIB $lib' ++ fi ++ ;; ++aix4* | aix5*) ++ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then ++ test "$enable_shared" = yes && enable_static=no ++ fi ++ ;; ++esac ++{ echo "$as_me:$LINENO: result: $enable_shared" >&5 ++echo "${ECHO_T}$enable_shared" >&6; } ++ ++{ echo "$as_me:$LINENO: checking whether to build static libraries" >&5 ++echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6; } ++# Make sure either enable_shared or enable_static is yes. ++test "$enable_shared" = yes || enable_static=yes ++{ echo "$as_me:$LINENO: result: $enable_static" >&5 ++echo "${ECHO_T}$enable_static" >&6; } ++ ++GCC_F77="$G77" ++LD_F77="$LD" ++ ++lt_prog_compiler_wl_F77= ++lt_prog_compiler_pic_F77= ++lt_prog_compiler_static_F77= ++ ++{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 ++echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } ++ ++ if test "$GCC" = yes; then ++ lt_prog_compiler_wl_F77='-Wl,' ++ lt_prog_compiler_static_F77='-static' ++ ++ case $host_os in ++ aix*) ++ # All AIX code is PIC. ++ if test "$host_cpu" = ia64; then ++ # AIX 5 now supports IA64 processor ++ lt_prog_compiler_static_F77='-Bstatic' ++ fi ++ ;; ++ ++ amigaos*) ++ # FIXME: we need at least 68020 code to build shared libraries, but ++ # adding the `-m68020' flag to GCC prevents building anything better, ++ # like `-m68040'. ++ lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4' ++ ;; ++ ++ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) ++ # PIC is the default for these OSes. ++ ;; ++ ++ mingw* | cygwin* | pw32* | os2*) ++ # This hack is so that the source file can tell whether it is being ++ # built for inclusion in a dll (and should export symbols for example). ++ # Although the cygwin gcc ignores -fPIC, still need this for old-style ++ # (--disable-auto-import) libraries ++ lt_prog_compiler_pic_F77='-DDLL_EXPORT' ++ ;; ++ ++ darwin* | rhapsody*) ++ # PIC is the default on this platform ++ # Common symbols not allowed in MH_DYLIB files ++ lt_prog_compiler_pic_F77='-fno-common' ++ ;; ++ ++ interix[3-9]*) ++ # Interix 3.x gcc -fpic/-fPIC options generate broken code. ++ # Instead, we relocate shared libraries at runtime. ++ ;; ++ ++ msdosdjgpp*) ++ # Just because we use GCC doesn't mean we suddenly get shared libraries ++ # on systems that don't support them. ++ lt_prog_compiler_can_build_shared_F77=no ++ enable_shared=no ++ ;; ++ ++ sysv4*MP*) ++ if test -d /usr/nec; then ++ lt_prog_compiler_pic_F77=-Kconform_pic ++ fi ++ ;; ++ ++ hpux*) ++ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but ++ # not for PA HP-UX. ++ case $host_cpu in ++ hppa*64*|ia64*) ++ # +Z the default ++ ;; ++ *) ++ lt_prog_compiler_pic_F77='-fPIC' ++ ;; ++ esac ++ ;; ++ ++ *) ++ lt_prog_compiler_pic_F77='-fPIC' ++ ;; ++ esac ++ else ++ # PORTME Check for flag to pass linker flags through the system compiler. ++ case $host_os in ++ aix*) ++ lt_prog_compiler_wl_F77='-Wl,' ++ if test "$host_cpu" = ia64; then ++ # AIX 5 now supports IA64 processor ++ lt_prog_compiler_static_F77='-Bstatic' ++ else ++ lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp' ++ fi ++ ;; ++ darwin*) ++ # PIC is the default on this platform ++ # Common symbols not allowed in MH_DYLIB files ++ case $cc_basename in ++ xlc*) ++ lt_prog_compiler_pic_F77='-qnocommon' ++ lt_prog_compiler_wl_F77='-Wl,' ++ ;; ++ esac ++ ;; ++ ++ mingw* | cygwin* | pw32* | os2*) ++ # This hack is so that the source file can tell whether it is being ++ # built for inclusion in a dll (and should export symbols for example). ++ lt_prog_compiler_pic_F77='-DDLL_EXPORT' ++ ;; ++ ++ hpux9* | hpux10* | hpux11*) ++ lt_prog_compiler_wl_F77='-Wl,' ++ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but ++ # not for PA HP-UX. ++ case $host_cpu in ++ hppa*64*|ia64*) ++ # +Z the default ++ ;; ++ *) ++ lt_prog_compiler_pic_F77='+Z' ++ ;; ++ esac ++ # Is there a better lt_prog_compiler_static that works with the bundled CC? ++ lt_prog_compiler_static_F77='${wl}-a ${wl}archive' ++ ;; ++ ++ irix5* | irix6* | nonstopux*) ++ lt_prog_compiler_wl_F77='-Wl,' ++ # PIC (with -KPIC) is the default. ++ lt_prog_compiler_static_F77='-non_shared' ++ ;; ++ ++ newsos6) ++ lt_prog_compiler_pic_F77='-KPIC' ++ lt_prog_compiler_static_F77='-Bstatic' ++ ;; ++ ++ linux* | k*bsd*-gnu) ++ case $cc_basename in ++ icc* | ecc*) ++ lt_prog_compiler_wl_F77='-Wl,' ++ lt_prog_compiler_pic_F77='-KPIC' ++ lt_prog_compiler_static_F77='-static' ++ ;; ++ pgcc* | pgf77* | pgf90* | pgf95*) ++ # Portland Group compilers (*not* the Pentium gcc compiler, ++ # which looks to be a dead project) ++ lt_prog_compiler_wl_F77='-Wl,' ++ lt_prog_compiler_pic_F77='-fpic' ++ lt_prog_compiler_static_F77='-Bstatic' ++ ;; ++ ccc*) ++ lt_prog_compiler_wl_F77='-Wl,' ++ # All Alpha code is PIC. ++ lt_prog_compiler_static_F77='-non_shared' ++ ;; ++ *) ++ case `$CC -V 2>&1 | sed 5q` in ++ *Sun\ C*) ++ # Sun C 5.9 ++ lt_prog_compiler_pic_F77='-KPIC' ++ lt_prog_compiler_static_F77='-Bstatic' ++ lt_prog_compiler_wl_F77='-Wl,' ++ ;; ++ *Sun\ F*) ++ # Sun Fortran 8.3 passes all unrecognized flags to the linker ++ lt_prog_compiler_pic_F77='-KPIC' ++ lt_prog_compiler_static_F77='-Bstatic' ++ lt_prog_compiler_wl_F77='' ++ ;; ++ esac ++ ;; ++ esac ++ ;; ++ ++ osf3* | osf4* | osf5*) ++ lt_prog_compiler_wl_F77='-Wl,' ++ # All OSF/1 code is PIC. ++ lt_prog_compiler_static_F77='-non_shared' ++ ;; ++ ++ rdos*) ++ lt_prog_compiler_static_F77='-non_shared' ++ ;; ++ ++ solaris*) ++ lt_prog_compiler_pic_F77='-KPIC' ++ lt_prog_compiler_static_F77='-Bstatic' ++ case $cc_basename in ++ f77* | f90* | f95*) ++ lt_prog_compiler_wl_F77='-Qoption ld ';; ++ *) ++ lt_prog_compiler_wl_F77='-Wl,';; ++ esac ++ ;; ++ ++ sunos4*) ++ lt_prog_compiler_wl_F77='-Qoption ld ' ++ lt_prog_compiler_pic_F77='-PIC' ++ lt_prog_compiler_static_F77='-Bstatic' ++ ;; ++ ++ sysv4 | sysv4.2uw2* | sysv4.3*) ++ lt_prog_compiler_wl_F77='-Wl,' ++ lt_prog_compiler_pic_F77='-KPIC' ++ lt_prog_compiler_static_F77='-Bstatic' ++ ;; ++ ++ sysv4*MP*) ++ if test -d /usr/nec ;then ++ lt_prog_compiler_pic_F77='-Kconform_pic' ++ lt_prog_compiler_static_F77='-Bstatic' ++ fi ++ ;; ++ ++ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) ++ lt_prog_compiler_wl_F77='-Wl,' ++ lt_prog_compiler_pic_F77='-KPIC' ++ lt_prog_compiler_static_F77='-Bstatic' ++ ;; ++ ++ unicos*) ++ lt_prog_compiler_wl_F77='-Wl,' ++ lt_prog_compiler_can_build_shared_F77=no ++ ;; ++ ++ uts4*) ++ lt_prog_compiler_pic_F77='-pic' ++ lt_prog_compiler_static_F77='-Bstatic' ++ ;; ++ ++ *) ++ lt_prog_compiler_can_build_shared_F77=no ++ ;; ++ esac ++ fi ++ ++{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5 ++echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6; } ++ ++# ++# Check to make sure the PIC flag actually works. ++# ++if test -n "$lt_prog_compiler_pic_F77"; then ++ ++{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5 ++echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6; } ++if test "${lt_prog_compiler_pic_works_F77+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_prog_compiler_pic_works_F77=no ++ ac_outfile=conftest.$ac_objext ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ lt_compiler_flag="$lt_prog_compiler_pic_F77" ++ # Insert the option either (1) after the last *FLAGS variable, or ++ # (2) before a word containing "conftest.", or (3) at the end. ++ # Note that $ac_compile itself does not contain backslashes and begins ++ # with a dollar sign (not a hyphen), so the echo should work correctly. ++ # The option is referenced via a variable to avoid confusing sed. ++ lt_compile=`echo "$ac_compile" | $SED \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ ++ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ ++ -e 's:$: $lt_compiler_flag:'` ++ (eval echo "\"\$as_me:14084: $lt_compile\"" >&5) ++ (eval "$lt_compile" 2>conftest.err) ++ ac_status=$? ++ cat conftest.err >&5 ++ echo "$as_me:14088: \$? = $ac_status" >&5 ++ if (exit $ac_status) && test -s "$ac_outfile"; then ++ # The compiler can only warn and ignore the option if not recognized ++ # So say no if there are warnings other than the usual output. ++ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then ++ lt_prog_compiler_pic_works_F77=yes ++ fi ++ fi ++ $rm conftest* ++ ++fi ++{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_F77" >&5 ++echo "${ECHO_T}$lt_prog_compiler_pic_works_F77" >&6; } ++ ++if test x"$lt_prog_compiler_pic_works_F77" = xyes; then ++ case $lt_prog_compiler_pic_F77 in ++ "" | " "*) ;; ++ *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;; ++ esac ++else ++ lt_prog_compiler_pic_F77= ++ lt_prog_compiler_can_build_shared_F77=no ++fi ++ ++fi ++case $host_os in ++ # For platforms which do not support PIC, -DPIC is meaningless: ++ *djgpp*) ++ lt_prog_compiler_pic_F77= ++ ;; ++ *) ++ lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77" ++ ;; ++esac ++ ++# ++# Check to make sure the static flag actually works. ++# ++wl=$lt_prog_compiler_wl_F77 eval lt_tmp_static_flag=\"$lt_prog_compiler_static_F77\" ++{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 ++echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } ++if test "${lt_prog_compiler_static_works_F77+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_prog_compiler_static_works_F77=no ++ save_LDFLAGS="$LDFLAGS" ++ LDFLAGS="$LDFLAGS $lt_tmp_static_flag" ++ echo "$lt_simple_link_test_code" > conftest.$ac_ext ++ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then ++ # The linker can only warn and ignore the option if not recognized ++ # So say no if there are warnings ++ if test -s conftest.err; then ++ # Append any errors to the config.log. ++ cat conftest.err 1>&5 ++ $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if diff conftest.exp conftest.er2 >/dev/null; then ++ lt_prog_compiler_static_works_F77=yes ++ fi ++ else ++ lt_prog_compiler_static_works_F77=yes ++ fi ++ fi ++ $rm conftest* ++ LDFLAGS="$save_LDFLAGS" ++ ++fi ++{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_F77" >&5 ++echo "${ECHO_T}$lt_prog_compiler_static_works_F77" >&6; } ++ ++if test x"$lt_prog_compiler_static_works_F77" = xyes; then ++ : ++else ++ lt_prog_compiler_static_F77= ++fi ++ ++ ++{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 ++echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } ++if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_cv_prog_compiler_c_o_F77=no ++ $rm -r conftest 2>/dev/null ++ mkdir conftest ++ cd conftest ++ mkdir out ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ ++ lt_compiler_flag="-o out/conftest2.$ac_objext" ++ # Insert the option either (1) after the last *FLAGS variable, or ++ # (2) before a word containing "conftest.", or (3) at the end. ++ # Note that $ac_compile itself does not contain backslashes and begins ++ # with a dollar sign (not a hyphen), so the echo should work correctly. ++ lt_compile=`echo "$ac_compile" | $SED \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ ++ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ ++ -e 's:$: $lt_compiler_flag:'` ++ (eval echo "\"\$as_me:14188: $lt_compile\"" >&5) ++ (eval "$lt_compile" 2>out/conftest.err) ++ ac_status=$? ++ cat out/conftest.err >&5 ++ echo "$as_me:14192: \$? = $ac_status" >&5 ++ if (exit $ac_status) && test -s out/conftest2.$ac_objext ++ then ++ # The compiler can only warn and ignore the option if not recognized ++ # So say no if there are warnings ++ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp ++ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 ++ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then ++ lt_cv_prog_compiler_c_o_F77=yes ++ fi ++ fi ++ chmod u+w . 2>&5 ++ $rm conftest* ++ # SGI C++ compiler will create directory out/ii_files/ for ++ # template instantiation ++ test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files ++ $rm out/* && rmdir out ++ cd .. ++ rmdir conftest ++ $rm conftest* ++ ++fi ++{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5 ++echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6; } ++ ++ ++hard_links="nottested" ++if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then ++ # do not overwrite the value of need_locks provided by the user ++ { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 ++echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } ++ hard_links=yes ++ $rm conftest* ++ ln conftest.a conftest.b 2>/dev/null && hard_links=no ++ touch conftest.a ++ ln conftest.a conftest.b 2>&5 || hard_links=no ++ ln conftest.a conftest.b 2>/dev/null && hard_links=no ++ { echo "$as_me:$LINENO: result: $hard_links" >&5 ++echo "${ECHO_T}$hard_links" >&6; } ++ if test "$hard_links" = no; then ++ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 ++echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} ++ need_locks=warn ++ fi ++else ++ need_locks=no ++fi ++ ++{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 ++echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } ++ ++ runpath_var= ++ allow_undefined_flag_F77= ++ enable_shared_with_static_runtimes_F77=no ++ archive_cmds_F77= ++ archive_expsym_cmds_F77= ++ old_archive_From_new_cmds_F77= ++ old_archive_from_expsyms_cmds_F77= ++ export_dynamic_flag_spec_F77= ++ whole_archive_flag_spec_F77= ++ thread_safe_flag_spec_F77= ++ hardcode_libdir_flag_spec_F77= ++ hardcode_libdir_flag_spec_ld_F77= ++ hardcode_libdir_separator_F77= ++ hardcode_direct_F77=no ++ hardcode_minus_L_F77=no ++ hardcode_shlibpath_var_F77=unsupported ++ link_all_deplibs_F77=unknown ++ hardcode_automatic_F77=no ++ module_cmds_F77= ++ module_expsym_cmds_F77= ++ always_export_symbols_F77=no ++ export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ++ # include_expsyms should be a list of space-separated symbols to be *always* ++ # included in the symbol list ++ include_expsyms_F77= ++ # exclude_expsyms can be an extended regexp of symbols to exclude ++ # it will be wrapped by ` (' and `)$', so one must not match beginning or ++ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', ++ # as well as any symbol that contains `d'. ++ exclude_expsyms_F77="_GLOBAL_OFFSET_TABLE_" ++ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out ++ # platforms (ab)use it in PIC code, but their linkers get confused if ++ # the symbol is explicitly referenced. Since portable code cannot ++ # rely on this symbol name, it's probably fine to never include it in ++ # preloaded symbol tables. ++ extract_expsyms_cmds= ++ # Just being paranoid about ensuring that cc_basename is set. ++ for cc_temp in $compiler""; do ++ case $cc_temp in ++ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; ++ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; ++ \-*) ;; ++ *) break;; ++ esac ++done ++cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` ++ ++ case $host_os in ++ cygwin* | mingw* | pw32*) ++ # FIXME: the MSVC++ port hasn't been tested in a loooong time ++ # When not using gcc, we currently assume that we are using ++ # Microsoft Visual C++. ++ if test "$GCC" != yes; then ++ with_gnu_ld=no ++ fi ++ ;; ++ interix*) ++ # we just hope/assume this is gcc and not c89 (= MSVC++) ++ with_gnu_ld=yes ++ ;; ++ openbsd*) ++ with_gnu_ld=no ++ ;; ++ esac ++ ++ ld_shlibs_F77=yes ++ if test "$with_gnu_ld" = yes; then ++ # If archive_cmds runs LD, not CC, wlarc should be empty ++ wlarc='${wl}' ++ ++ # Set some defaults for GNU ld with shared library support. These ++ # are reset later if shared libraries are not supported. Putting them ++ # here allows them to be overridden if necessary. ++ runpath_var=LD_RUN_PATH ++ hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir' ++ export_dynamic_flag_spec_F77='${wl}--export-dynamic' ++ # ancient GNU ld didn't support --whole-archive et. al. ++ if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then ++ whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' ++ else ++ whole_archive_flag_spec_F77= ++ fi ++ supports_anon_versioning=no ++ case `$LD -v 2>/dev/null` in ++ *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 ++ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... ++ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... ++ *\ 2.11.*) ;; # other 2.11 versions ++ *) supports_anon_versioning=yes ;; ++ esac ++ ++ # See if GNU ld supports shared libraries. ++ case $host_os in ++ aix3* | aix4* | aix5*) ++ # On AIX/PPC, the GNU linker is very broken ++ if test "$host_cpu" != ia64; then ++ ld_shlibs_F77=no ++ cat <&2 ++ ++*** Warning: the GNU linker, at least up to release 2.9.1, is reported ++*** to be unable to reliably create shared libraries on AIX. ++*** Therefore, libtool is disabling shared libraries support. If you ++*** really care for shared libraries, you may want to modify your PATH ++*** so that a non-GNU linker is found, and then restart. ++ ++EOF ++ fi ++ ;; ++ ++ amigaos*) ++ archive_cmds_F77='$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)' ++ hardcode_libdir_flag_spec_F77='-L$libdir' ++ hardcode_minus_L_F77=yes ++ ++ # Samuel A. Falvo II reports ++ # that the semantics of dynamic libraries on AmigaOS, at least up ++ # to version 4, is to share data among multiple programs linked ++ # with the same dynamic library. Since this doesn't match the ++ # behavior of shared libraries on other platforms, we can't use ++ # them. ++ ld_shlibs_F77=no ++ ;; ++ ++ beos*) ++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ allow_undefined_flag_F77=unsupported ++ # Joseph Beckenbach says some releases of gcc ++ # support --undefined. This deserves some investigation. FIXME ++ archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ else ++ ld_shlibs_F77=no ++ fi ++ ;; ++ ++ cygwin* | mingw* | pw32*) ++ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless, ++ # as there is no search path for DLLs. ++ hardcode_libdir_flag_spec_F77='-L$libdir' ++ allow_undefined_flag_F77=unsupported ++ always_export_symbols_F77=no ++ enable_shared_with_static_runtimes_F77=yes ++ export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' ++ ++ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then ++ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' ++ # If the export-symbols file already is a .def file (1st line ++ # is EXPORTS), use it as is; otherwise, prepend... ++ archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then ++ cp $export_symbols $output_objdir/$soname.def; ++ else ++ echo EXPORTS > $output_objdir/$soname.def; ++ cat $export_symbols >> $output_objdir/$soname.def; ++ fi~ ++ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' ++ else ++ ld_shlibs_F77=no ++ fi ++ ;; ++ ++ interix[3-9]*) ++ hardcode_direct_F77=no ++ hardcode_shlibpath_var_F77=no ++ hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' ++ export_dynamic_flag_spec_F77='${wl}-E' ++ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. ++ # Instead, shared libraries are loaded at an image base (0x10000000 by ++ # default) and relocated if they conflict, which is a slow very memory ++ # consuming and fragmenting process. To avoid this, we pick a random, ++ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link ++ # time. Moving up from 0x10000000 also allows more sbrk(2) space. ++ archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ++ archive_expsym_cmds_F77='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' ++ ;; ++ ++ gnu* | linux* | k*bsd*-gnu) ++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ tmp_addflag= ++ case $cc_basename,$host_cpu in ++ pgcc*) # Portland Group C compiler ++ whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ++ tmp_addflag=' $pic_flag' ++ ;; ++ pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers ++ whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ++ tmp_addflag=' $pic_flag -Mnomain' ;; ++ ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 ++ tmp_addflag=' -i_dynamic' ;; ++ efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 ++ tmp_addflag=' -i_dynamic -nofor_main' ;; ++ ifc* | ifort*) # Intel Fortran compiler ++ tmp_addflag=' -nofor_main' ;; ++ esac ++ case `$CC -V 2>&1 | sed 5q` in ++ *Sun\ C*) # Sun C 5.9 ++ whole_archive_flag_spec_F77='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ++ tmp_sharedflag='-G' ;; ++ *Sun\ F*) # Sun Fortran 8.3 ++ tmp_sharedflag='-G' ;; ++ *) ++ tmp_sharedflag='-shared' ;; ++ esac ++ archive_cmds_F77='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ ++ if test $supports_anon_versioning = yes; then ++ archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~ ++ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ ++ $echo "local: *; };" >> $output_objdir/$libname.ver~ ++ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' ++ fi ++ link_all_deplibs_F77=no ++ else ++ ld_shlibs_F77=no ++ fi ++ ;; ++ ++ netbsd* | netbsdelf*-gnu) ++ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then ++ archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' ++ wlarc= ++ else ++ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ fi ++ ;; ++ ++ solaris*) ++ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ++ ld_shlibs_F77=no ++ cat <&2 ++ ++*** Warning: The releases 2.8.* of the GNU linker cannot reliably ++*** create shared libraries on Solaris systems. Therefore, libtool ++*** is disabling shared libraries support. We urge you to upgrade GNU ++*** binutils to release 2.9.1 or newer. Another option is to modify ++*** your PATH or compiler configuration so that the native linker is ++*** used, and then restart. ++ ++EOF ++ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ else ++ ld_shlibs_F77=no ++ fi ++ ;; ++ ++ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) ++ case `$LD -v 2>&1` in ++ *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ++ ld_shlibs_F77=no ++ cat <<_LT_EOF 1>&2 ++ ++*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not ++*** reliably create shared libraries on SCO systems. Therefore, libtool ++*** is disabling shared libraries support. We urge you to upgrade GNU ++*** binutils to release 2.16.91.0.3 or newer. Another option is to modify ++*** your PATH or compiler configuration so that the native linker is ++*** used, and then restart. ++ ++_LT_EOF ++ ;; ++ *) ++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' ++ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' ++ archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' ++ else ++ ld_shlibs_F77=no ++ fi ++ ;; ++ esac ++ ;; ++ ++ sunos4*) ++ archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' ++ wlarc= ++ hardcode_direct_F77=yes ++ hardcode_shlibpath_var_F77=no ++ ;; ++ ++ *) ++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ else ++ ld_shlibs_F77=no ++ fi ++ ;; ++ esac ++ ++ if test "$ld_shlibs_F77" = no; then ++ runpath_var= ++ hardcode_libdir_flag_spec_F77= ++ export_dynamic_flag_spec_F77= ++ whole_archive_flag_spec_F77= ++ fi ++ else ++ # PORTME fill in a description of your system's linker (not GNU ld) ++ case $host_os in ++ aix3*) ++ allow_undefined_flag_F77=unsupported ++ always_export_symbols_F77=yes ++ archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' ++ # Note: this linker hardcodes the directories in LIBPATH if there ++ # are no directories specified by -L. ++ hardcode_minus_L_F77=yes ++ if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then ++ # Neither direct hardcoding nor static linking is supported with a ++ # broken collect2. ++ hardcode_direct_F77=unsupported ++ fi ++ ;; ++ ++ aix4* | aix5*) ++ if test "$host_cpu" = ia64; then ++ # On IA64, the linker does run time linking by default, so we don't ++ # have to do anything special. ++ aix_use_runtimelinking=no ++ exp_sym_flag='-Bexport' ++ no_entry_flag="" ++ else ++ # If we're using GNU nm, then we don't want the "-C" option. ++ # -C means demangle to AIX nm, but means don't demangle with GNU nm ++ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then ++ export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' ++ else ++ export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' ++ fi ++ aix_use_runtimelinking=no ++ ++ # Test if we are trying to use run time linking or normal ++ # AIX style linking. If -brtl is somewhere in LDFLAGS, we ++ # need to do runtime linking. ++ case $host_os in aix4.[23]|aix4.[23].*|aix5*) ++ for ld_flag in $LDFLAGS; do ++ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then ++ aix_use_runtimelinking=yes ++ break ++ fi ++ done ++ ;; ++ esac ++ ++ exp_sym_flag='-bexport' ++ no_entry_flag='-bnoentry' ++ fi ++ ++ # When large executables or shared objects are built, AIX ld can ++ # have problems creating the table of contents. If linking a library ++ # or program results in "error TOC overflow" add -mminimal-toc to ++ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not ++ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. ++ ++ archive_cmds_F77='' ++ hardcode_direct_F77=yes ++ hardcode_libdir_separator_F77=':' ++ link_all_deplibs_F77=yes ++ ++ if test "$GCC" = yes; then ++ case $host_os in aix4.[012]|aix4.[012].*) ++ # We only want to do this on AIX 4.2 and lower, the check ++ # below for broken collect2 doesn't work under 4.3+ ++ collect2name=`${CC} -print-prog-name=collect2` ++ if test -f "$collect2name" && \ ++ strings "$collect2name" | grep resolve_lib_name >/dev/null ++ then ++ # We have reworked collect2 ++ : ++ else ++ # We have old collect2 ++ hardcode_direct_F77=unsupported ++ # It fails to find uninstalled libraries when the uninstalled ++ # path is not listed in the libpath. Setting hardcode_minus_L ++ # to unsupported forces relinking ++ hardcode_minus_L_F77=yes ++ hardcode_libdir_flag_spec_F77='-L$libdir' ++ hardcode_libdir_separator_F77= ++ fi ++ ;; ++ esac ++ shared_flag='-shared' ++ if test "$aix_use_runtimelinking" = yes; then ++ shared_flag="$shared_flag "'${wl}-G' ++ fi ++ else ++ # not using gcc ++ if test "$host_cpu" = ia64; then ++ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release ++ # chokes on -Wl,-G. The following line is correct: ++ shared_flag='-G' ++ else ++ if test "$aix_use_runtimelinking" = yes; then ++ shared_flag='${wl}-G' ++ else ++ shared_flag='${wl}-bM:SRE' ++ fi ++ fi ++ fi ++ ++ # It seems that -bexpall does not export symbols beginning with ++ # underscore (_), so it is better to generate a list of symbols to export. ++ always_export_symbols_F77=yes ++ if test "$aix_use_runtimelinking" = yes; then ++ # Warning - without using the other runtime loading flags (-brtl), ++ # -berok will link without error, but may produce a broken library. ++ allow_undefined_flag_F77='-berok' ++ # Determine the default libpath from the value encoded in an empty executable. ++ cat >conftest.$ac_ext <<_ACEOF ++ program main ++ ++ end ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_f77_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ++lt_aix_libpath_sed=' ++ /Import File Strings/,/^$/ { ++ /^0/ { ++ s/^0 *\(.*\)$/\1/ ++ p ++ } ++ }' ++aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++# Check for a 64-bit object if we didn't find anything. ++if test -z "$aix_libpath"; then ++ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++fi ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ++ ++ hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" ++ archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" ++ else ++ if test "$host_cpu" = ia64; then ++ hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib' ++ allow_undefined_flag_F77="-z nodefs" ++ archive_expsym_cmds_F77="\$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" ++ else ++ # Determine the default libpath from the value encoded in an empty executable. ++ cat >conftest.$ac_ext <<_ACEOF ++ program main ++ ++ end ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_f77_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ++lt_aix_libpath_sed=' ++ /Import File Strings/,/^$/ { ++ /^0/ { ++ s/^0 *\(.*\)$/\1/ ++ p ++ } ++ }' ++aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++# Check for a 64-bit object if we didn't find anything. ++if test -z "$aix_libpath"; then ++ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++fi ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ++ ++ hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" ++ # Warning - without using the other run time loading flags, ++ # -berok will link without error, but may produce a broken library. ++ no_undefined_flag_F77=' ${wl}-bernotok' ++ allow_undefined_flag_F77=' ${wl}-berok' ++ # Exported symbols can be pulled into shared objects from archives ++ whole_archive_flag_spec_F77='$convenience' ++ archive_cmds_need_lc_F77=yes ++ # This is similar to how AIX traditionally builds its shared libraries. ++ archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' ++ fi ++ fi ++ ;; ++ ++ amigaos*) ++ archive_cmds_F77='$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)' ++ hardcode_libdir_flag_spec_F77='-L$libdir' ++ hardcode_minus_L_F77=yes ++ # see comment about different semantics on the GNU ld section ++ ld_shlibs_F77=no ++ ;; ++ ++ bsdi[45]*) ++ export_dynamic_flag_spec_F77=-rdynamic ++ ;; ++ ++ cygwin* | mingw* | pw32*) ++ # When not using gcc, we currently assume that we are using ++ # Microsoft Visual C++. ++ # hardcode_libdir_flag_spec is actually meaningless, as there is ++ # no search path for DLLs. ++ hardcode_libdir_flag_spec_F77=' ' ++ allow_undefined_flag_F77=unsupported ++ # Tell ltmain to make .lib files, not .a files. ++ libext=lib ++ # Tell ltmain to make .dll files, not .so files. ++ shrext_cmds=".dll" ++ # FIXME: Setting linknames here is a bad hack. ++ archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' ++ # The linker will automatically build a .lib file if we build a DLL. ++ old_archive_From_new_cmds_F77='true' ++ # FIXME: Should let the user specify the lib program. ++ old_archive_cmds_F77='lib -OUT:$oldlib$oldobjs$old_deplibs' ++ fix_srcfile_path_F77='`cygpath -w "$srcfile"`' ++ enable_shared_with_static_runtimes_F77=yes ++ ;; ++ ++ darwin* | rhapsody*) ++ case $host_os in ++ rhapsody* | darwin1.[012]) ++ allow_undefined_flag_F77='${wl}-undefined ${wl}suppress' ++ ;; ++ *) # Darwin 1.3 on ++ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then ++ allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ++ else ++ case ${MACOSX_DEPLOYMENT_TARGET} in ++ 10.[012]) ++ allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ++ ;; ++ 10.*) ++ allow_undefined_flag_F77='${wl}-undefined ${wl}dynamic_lookup' ++ ;; ++ esac ++ fi ++ ;; ++ esac ++ archive_cmds_need_lc_F77=no ++ hardcode_direct_F77=no ++ hardcode_automatic_F77=yes ++ hardcode_shlibpath_var_F77=unsupported ++ whole_archive_flag_spec_F77='' ++ link_all_deplibs_F77=yes ++ if test "$GCC" = yes ; then ++ output_verbose_link_cmd='echo' ++ archive_cmds_F77='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' ++ module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' ++ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds ++ archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ else ++ case $cc_basename in ++ xlc*) ++ output_verbose_link_cmd='echo' ++ archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' ++ module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' ++ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds ++ archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ ;; ++ *) ++ ld_shlibs_F77=no ++ ;; ++ esac ++ fi ++ ;; ++ ++ dgux*) ++ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_libdir_flag_spec_F77='-L$libdir' ++ hardcode_shlibpath_var_F77=no ++ ;; ++ ++ freebsd1*) ++ ld_shlibs_F77=no ++ ;; ++ ++ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor ++ # support. Future versions do this automatically, but an explicit c++rt0.o ++ # does not break anything, and helps significantly (at the cost of a little ++ # extra space). ++ freebsd2.2*) ++ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' ++ hardcode_libdir_flag_spec_F77='-R$libdir' ++ hardcode_direct_F77=yes ++ hardcode_shlibpath_var_F77=no ++ ;; ++ ++ # Unfortunately, older versions of FreeBSD 2 do not have this feature. ++ freebsd2*) ++ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_direct_F77=yes ++ hardcode_minus_L_F77=yes ++ hardcode_shlibpath_var_F77=no ++ ;; ++ ++ # FreeBSD 3 and greater uses gcc -shared to do shared libraries. ++ freebsd* | dragonfly*) ++ archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' ++ hardcode_libdir_flag_spec_F77='-R$libdir' ++ hardcode_direct_F77=yes ++ hardcode_shlibpath_var_F77=no ++ ;; ++ ++ hpux9*) ++ if test "$GCC" = yes; then ++ archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ++ else ++ archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ++ fi ++ hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' ++ hardcode_libdir_separator_F77=: ++ hardcode_direct_F77=yes ++ ++ # hardcode_minus_L: Not really in the search PATH, ++ # but as the default location of the library. ++ hardcode_minus_L_F77=yes ++ export_dynamic_flag_spec_F77='${wl}-E' ++ ;; ++ ++ hpux10*) ++ if test "$GCC" = yes -a "$with_gnu_ld" = no; then ++ archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ++ fi ++ if test "$with_gnu_ld" = no; then ++ hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' ++ hardcode_libdir_separator_F77=: ++ ++ hardcode_direct_F77=yes ++ export_dynamic_flag_spec_F77='${wl}-E' ++ ++ # hardcode_minus_L: Not really in the search PATH, ++ # but as the default location of the library. ++ hardcode_minus_L_F77=yes ++ fi ++ ;; ++ ++ hpux11*) ++ if test "$GCC" = yes -a "$with_gnu_ld" = no; then ++ case $host_cpu in ++ hppa*64*) ++ archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ ia64*) ++ archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ *) ++ archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ esac ++ else ++ case $host_cpu in ++ hppa*64*) ++ archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ ia64*) ++ archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ *) ++ archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ esac ++ fi ++ if test "$with_gnu_ld" = no; then ++ hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' ++ hardcode_libdir_separator_F77=: ++ ++ case $host_cpu in ++ hppa*64*|ia64*) ++ hardcode_libdir_flag_spec_ld_F77='+b $libdir' ++ hardcode_direct_F77=no ++ hardcode_shlibpath_var_F77=no ++ ;; ++ *) ++ hardcode_direct_F77=yes ++ export_dynamic_flag_spec_F77='${wl}-E' ++ ++ # hardcode_minus_L: Not really in the search PATH, ++ # but as the default location of the library. ++ hardcode_minus_L_F77=yes ++ ;; ++ esac ++ fi ++ ;; ++ ++ irix5* | irix6* | nonstopux*) ++ if test "$GCC" = yes; then ++ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ else ++ archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' ++ hardcode_libdir_flag_spec_ld_F77='-rpath $libdir' ++ fi ++ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' ++ hardcode_libdir_separator_F77=: ++ link_all_deplibs_F77=yes ++ ;; ++ ++ netbsd* | netbsdelf*-gnu) ++ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then ++ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out ++ else ++ archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF ++ fi ++ hardcode_libdir_flag_spec_F77='-R$libdir' ++ hardcode_direct_F77=yes ++ hardcode_shlibpath_var_F77=no ++ ;; ++ ++ newsos6) ++ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_direct_F77=yes ++ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' ++ hardcode_libdir_separator_F77=: ++ hardcode_shlibpath_var_F77=no ++ ;; ++ ++ openbsd*) ++ if test -f /usr/libexec/ld.so; then ++ hardcode_direct_F77=yes ++ hardcode_shlibpath_var_F77=no ++ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then ++ archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' ++ hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' ++ export_dynamic_flag_spec_F77='${wl}-E' ++ else ++ case $host_os in ++ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) ++ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_libdir_flag_spec_F77='-R$libdir' ++ ;; ++ *) ++ archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ++ hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' ++ ;; ++ esac ++ fi ++ else ++ ld_shlibs_F77=no ++ fi ++ ;; ++ ++ os2*) ++ hardcode_libdir_flag_spec_F77='-L$libdir' ++ hardcode_minus_L_F77=yes ++ allow_undefined_flag_F77=unsupported ++ archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' ++ old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ++ ;; ++ ++ osf3*) ++ if test "$GCC" = yes; then ++ allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' ++ archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ else ++ allow_undefined_flag_F77=' -expect_unresolved \*' ++ archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' ++ fi ++ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' ++ hardcode_libdir_separator_F77=: ++ ;; ++ ++ osf4* | osf5*) # as osf3* with the addition of -msym flag ++ if test "$GCC" = yes; then ++ allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' ++ archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' ++ else ++ allow_undefined_flag_F77=' -expect_unresolved \*' ++ archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' ++ archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ ++ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' ++ ++ # Both c and cxx compiler support -rpath directly ++ hardcode_libdir_flag_spec_F77='-rpath $libdir' ++ fi ++ hardcode_libdir_separator_F77=: ++ ;; ++ ++ solaris*) ++ no_undefined_flag_F77=' -z text' ++ if test "$GCC" = yes; then ++ wlarc='${wl}' ++ archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ ++ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' ++ else ++ wlarc='' ++ archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ ++ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' ++ fi ++ hardcode_libdir_flag_spec_F77='-R$libdir' ++ hardcode_shlibpath_var_F77=no ++ case $host_os in ++ solaris2.[0-5] | solaris2.[0-5].*) ;; ++ *) ++ # The compiler driver will combine and reorder linker options, ++ # but understands `-z linker_flag'. GCC discards it without `$wl', ++ # but is careful enough not to reorder. ++ # Supported since Solaris 2.6 (maybe 2.5.1?) ++ if test "$GCC" = yes; then ++ whole_archive_flag_spec_F77='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ++ else ++ whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' ++ fi ++ ;; ++ esac ++ link_all_deplibs_F77=yes ++ ;; ++ ++ sunos4*) ++ if test "x$host_vendor" = xsequent; then ++ # Use $CC to link under sequent, because it throws in some extra .o ++ # files that make .init and .fini sections work. ++ archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' ++ fi ++ hardcode_libdir_flag_spec_F77='-L$libdir' ++ hardcode_direct_F77=yes ++ hardcode_minus_L_F77=yes ++ hardcode_shlibpath_var_F77=no ++ ;; ++ ++ sysv4) ++ case $host_vendor in ++ sni) ++ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_direct_F77=yes # is this really true??? ++ ;; ++ siemens) ++ ## LD is ld it makes a PLAMLIB ++ ## CC just makes a GrossModule. ++ archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' ++ reload_cmds_F77='$CC -r -o $output$reload_objs' ++ hardcode_direct_F77=no ++ ;; ++ motorola) ++ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie ++ ;; ++ esac ++ runpath_var='LD_RUN_PATH' ++ hardcode_shlibpath_var_F77=no ++ ;; ++ ++ sysv4.3*) ++ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_shlibpath_var_F77=no ++ export_dynamic_flag_spec_F77='-Bexport' ++ ;; ++ ++ sysv4*MP*) ++ if test -d /usr/nec; then ++ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_shlibpath_var_F77=no ++ runpath_var=LD_RUN_PATH ++ hardcode_runpath_var=yes ++ ld_shlibs_F77=yes ++ fi ++ ;; ++ ++ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) ++ no_undefined_flag_F77='${wl}-z,text' ++ archive_cmds_need_lc_F77=no ++ hardcode_shlibpath_var_F77=no ++ runpath_var='LD_RUN_PATH' ++ ++ if test "$GCC" = yes; then ++ archive_cmds_F77='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ archive_cmds_F77='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ fi ++ ;; ++ ++ sysv5* | sco3.2v5* | sco5v6*) ++ # Note: We can NOT use -z defs as we might desire, because we do not ++ # link with -lc, and that would cause any symbols used from libc to ++ # always be unresolved, which means just about no library would ++ # ever link correctly. If we're not using GNU ld we use -z text ++ # though, which does catch some bad symbols but isn't as heavy-handed ++ # as -z defs. ++ no_undefined_flag_F77='${wl}-z,text' ++ allow_undefined_flag_F77='${wl}-z,nodefs' ++ archive_cmds_need_lc_F77=no ++ hardcode_shlibpath_var_F77=no ++ hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' ++ hardcode_libdir_separator_F77=':' ++ link_all_deplibs_F77=yes ++ export_dynamic_flag_spec_F77='${wl}-Bexport' ++ runpath_var='LD_RUN_PATH' ++ ++ if test "$GCC" = yes; then ++ archive_cmds_F77='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ archive_cmds_F77='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ fi ++ ;; ++ ++ uts4*) ++ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_libdir_flag_spec_F77='-L$libdir' ++ hardcode_shlibpath_var_F77=no ++ ;; ++ ++ *) ++ ld_shlibs_F77=no ++ ;; ++ esac ++ fi ++ ++{ echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5 ++echo "${ECHO_T}$ld_shlibs_F77" >&6; } ++test "$ld_shlibs_F77" = no && can_build_shared=no ++ ++# ++# Do we need to explicitly link libc? ++# ++case "x$archive_cmds_need_lc_F77" in ++x|xyes) ++ # Assume -lc should be added ++ archive_cmds_need_lc_F77=yes ++ ++ if test "$enable_shared" = yes && test "$GCC" = yes; then ++ case $archive_cmds_F77 in ++ *'~'*) ++ # FIXME: we may have to deal with multi-command sequences. ++ ;; ++ '$CC '*) ++ # Test whether the compiler implicitly links with -lc since on some ++ # systems, -lgcc has to come before -lc. If gcc already passes -lc ++ # to ld, don't add -lc before -lgcc. ++ { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 ++echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } ++ $rm conftest* ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ ++ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ++ (eval $ac_compile) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } 2>conftest.err; then ++ soname=conftest ++ lib=conftest ++ libobjs=conftest.$ac_objext ++ deplibs= ++ wl=$lt_prog_compiler_wl_F77 ++ pic_flag=$lt_prog_compiler_pic_F77 ++ compiler_flags=-v ++ linker_flags=-v ++ verstring= ++ output_objdir=. ++ libname=conftest ++ lt_save_allow_undefined_flag=$allow_undefined_flag_F77 ++ allow_undefined_flag_F77= ++ if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 ++ (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } ++ then ++ archive_cmds_need_lc_F77=no ++ else ++ archive_cmds_need_lc_F77=yes ++ fi ++ allow_undefined_flag_F77=$lt_save_allow_undefined_flag ++ else ++ cat conftest.err 1>&5 ++ fi ++ $rm conftest* ++ { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5 ++echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6; } ++ ;; ++ esac ++ fi ++ ;; ++esac ++ ++{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 ++echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } ++library_names_spec= ++libname_spec='lib$name' ++soname_spec= ++shrext_cmds=".so" ++postinstall_cmds= ++postuninstall_cmds= ++finish_cmds= ++finish_eval= ++shlibpath_var= ++shlibpath_overrides_runpath=unknown ++version_type=none ++dynamic_linker="$host_os ld.so" ++sys_lib_dlsearch_path_spec="/lib /usr/lib" ++ ++need_lib_prefix=unknown ++hardcode_into_libs=no ++ ++# when you set need_version to no, make sure it does not cause -set_version ++# flags to be left without arguments ++need_version=unknown ++ ++case $host_os in ++aix3*) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' ++ shlibpath_var=LIBPATH ++ ++ # AIX 3 has no versioning support, so we append a major version to the name. ++ soname_spec='${libname}${release}${shared_ext}$major' ++ ;; ++ ++aix4* | aix5*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ hardcode_into_libs=yes ++ if test "$host_cpu" = ia64; then ++ # AIX 5 supports IA64 ++ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' ++ shlibpath_var=LD_LIBRARY_PATH ++ else ++ # With GCC up to 2.95.x, collect2 would create an import file ++ # for dependence libraries. The import file would start with ++ # the line `#! .'. This would cause the generated library to ++ # depend on `.', always an invalid library. This was fixed in ++ # development snapshots of GCC prior to 3.0. ++ case $host_os in ++ aix4 | aix4.[01] | aix4.[01].*) ++ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' ++ echo ' yes ' ++ echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then ++ : ++ else ++ can_build_shared=no ++ fi ++ ;; ++ esac ++ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct ++ # soname into executable. Probably we can add versioning support to ++ # collect2, so additional links can be useful in future. ++ if test "$aix_use_runtimelinking" = yes; then ++ # If using run time linking (on AIX 4.2 or later) use lib.so ++ # instead of lib.a to let people know that these are not ++ # typical AIX shared libraries. ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ else ++ # We preserve .a as extension for shared libraries through AIX4.2 ++ # and later when we are not doing run time linking. ++ library_names_spec='${libname}${release}.a $libname.a' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ fi ++ shlibpath_var=LIBPATH ++ fi ++ ;; ++ ++amigaos*) ++ library_names_spec='$libname.ixlibrary $libname.a' ++ # Create ${libname}_ixlibrary.a entries in /sys/libs. ++ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $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' ++ ;; ++ ++beos*) ++ library_names_spec='${libname}${shared_ext}' ++ dynamic_linker="$host_os ld.so" ++ shlibpath_var=LIBRARY_PATH ++ ;; ++ ++bsdi[45]*) ++ version_type=linux ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" ++ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" ++ # the default ld.so.conf also contains /usr/contrib/lib and ++ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow ++ # libtool to hard-code these into programs ++ ;; ++ ++cygwin* | mingw* | pw32*) ++ version_type=windows ++ shrext_cmds=".dll" ++ need_version=no ++ need_lib_prefix=no ++ ++ case $GCC,$host_os in ++ yes,cygwin* | yes,mingw* | yes,pw32*) ++ library_names_spec='$libname.dll.a' ++ # DLL is installed to $(libdir)/../bin by postinstall_cmds ++ postinstall_cmds='base_file=`basename \${file}`~ ++ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ ++ dldir=$destdir/`dirname \$dlpath`~ ++ test -d \$dldir || mkdir -p \$dldir~ ++ $install_prog $dir/$dlname \$dldir/$dlname~ ++ chmod a+x \$dldir/$dlname' ++ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ ++ dlpath=$dir/\$dldll~ ++ $rm \$dlpath' ++ shlibpath_overrides_runpath=yes ++ ++ case $host_os in ++ cygwin*) ++ # Cygwin DLLs use 'cyg' prefix rather than 'lib' ++ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ++ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ++ ;; ++ mingw*) ++ # MinGW DLLs use traditional 'lib' prefix ++ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ++ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` ++ if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then ++ # It is most probably a Windows format PATH printed by ++ # mingw gcc, but we are running on Cygwin. Gcc prints its search ++ # path with ; separators, and with drive letters. We can handle the ++ # drive letters (cygwin fileutils understands them), so leave them, ++ # especially as we might pass files found there to a mingw objdump, ++ # which wouldn't understand a cygwinified path. Ahh. ++ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` ++ else ++ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ++ fi ++ ;; ++ pw32*) ++ # pw32 DLLs use 'pw' prefix rather than 'lib' ++ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ++ ;; ++ esac ++ ;; ++ ++ *) ++ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ++ ;; ++ esac ++ dynamic_linker='Win32 ld.exe' ++ # FIXME: first we should search . and the directory the executable is in ++ shlibpath_var=PATH ++ ;; ++ ++darwin* | rhapsody*) ++ dynamic_linker="$host_os dyld" ++ version_type=darwin ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' ++ soname_spec='${libname}${release}${major}$shared_ext' ++ shlibpath_overrides_runpath=yes ++ shlibpath_var=DYLD_LIBRARY_PATH ++ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' ++ ++ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ++ ;; ++ ++dgux*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ ;; ++ ++freebsd1*) ++ dynamic_linker=no ++ ;; ++ ++freebsd* | dragonfly*) ++ # DragonFly does not have aout. When/if they implement a new ++ # versioning mechanism, adjust this. ++ if test -x /usr/bin/objformat; then ++ objformat=`/usr/bin/objformat` ++ else ++ case $host_os in ++ freebsd[123]*) objformat=aout ;; ++ *) objformat=elf ;; ++ esac ++ fi ++ version_type=freebsd-$objformat ++ case $version_type in ++ freebsd-elf*) ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' ++ need_version=no ++ need_lib_prefix=no ++ ;; ++ freebsd-*) ++ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' ++ need_version=yes ++ ;; ++ esac ++ shlibpath_var=LD_LIBRARY_PATH ++ case $host_os in ++ freebsd2*) ++ shlibpath_overrides_runpath=yes ++ ;; ++ freebsd3.[01]* | freebsdelf3.[01]*) ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ ;; ++ freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ ++ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ ;; ++ *) # from 4.6 on, and DragonFly ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ ;; ++ esac ++ ;; ++ ++gnu*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ hardcode_into_libs=yes ++ ;; ++ ++hpux9* | hpux10* | hpux11*) ++ # Give a soname corresponding to the major version so that dld.sl refuses to ++ # link against other versions. ++ version_type=sunos ++ need_lib_prefix=no ++ need_version=no ++ case $host_cpu in ++ ia64*) ++ shrext_cmds='.so' ++ hardcode_into_libs=yes ++ dynamic_linker="$host_os dld.so" ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ if test "X$HPUX_IA64_MODE" = X32; then ++ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" ++ else ++ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" ++ fi ++ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ++ ;; ++ hppa*64*) ++ shrext_cmds='.sl' ++ hardcode_into_libs=yes ++ dynamic_linker="$host_os dld.sl" ++ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH ++ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" ++ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ++ ;; ++ *) ++ shrext_cmds='.sl' ++ dynamic_linker="$host_os dld.sl" ++ shlibpath_var=SHLIB_PATH ++ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ ;; ++ esac ++ # HP-UX runs *really* slowly unless shared libraries are mode 555. ++ postinstall_cmds='chmod 555 $lib' ++ ;; ++ ++interix[3-9]*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ ;; ++ ++irix5* | irix6* | nonstopux*) ++ case $host_os in ++ nonstopux*) version_type=nonstopux ;; ++ *) ++ if test "$lt_cv_prog_gnu_ld" = yes; then ++ version_type=linux ++ else ++ version_type=irix ++ fi ;; ++ esac ++ need_lib_prefix=no ++ need_version=no ++ soname_spec='${libname}${release}${shared_ext}$major' ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' ++ case $host_os in ++ irix5* | nonstopux*) ++ libsuff= shlibsuff= ++ ;; ++ *) ++ case $LD in # libtool.m4 will add one of these switches to LD ++ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") ++ libsuff= shlibsuff= libmagic=32-bit;; ++ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") ++ libsuff=32 shlibsuff=N32 libmagic=N32;; ++ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") ++ libsuff=64 shlibsuff=64 libmagic=64-bit;; ++ *) libsuff= shlibsuff= libmagic=never-match;; ++ esac ++ ;; ++ esac ++ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH ++ shlibpath_overrides_runpath=no ++ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" ++ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" ++ hardcode_into_libs=yes ++ ;; ++ ++# No shared lib support for Linux oldld, aout, or coff. ++linux*oldld* | linux*aout* | linux*coff*) ++ dynamic_linker=no ++ ;; ++ ++# This must be Linux ELF. ++linux* | k*bsd*-gnu) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ # This implies no fast_install, which is unacceptable. ++ # Some rework will be needed to allow for fast_install ++ # before this can be enabled. ++ hardcode_into_libs=yes ++ ++ # Append ld.so.conf contents to the search path ++ if test -f /etc/ld.so.conf; then ++ 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;/^$/d' | tr '\n' ' '` ++ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" ++ fi ++ ++ # We used to test for /lib/ld.so.1 and disable shared libraries on ++ # powerpc, because MkLinux only supported shared libraries with the ++ # GNU dynamic linker. Since this was broken with cross compilers, ++ # most powerpc-linux boxes support dynamic linking these days and ++ # people can always --disable-shared, the test was removed, and we ++ # assume the GNU/Linux dynamic linker is in use. ++ dynamic_linker='GNU/Linux ld.so' ++ ;; ++ ++netbsdelf*-gnu) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ dynamic_linker='NetBSD ld.elf_so' ++ ;; ++ ++netbsd*) ++ version_type=sunos ++ need_lib_prefix=no ++ need_version=no ++ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' ++ dynamic_linker='NetBSD (a.out) ld.so' ++ else ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ dynamic_linker='NetBSD ld.elf_so' ++ fi ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ ;; ++ ++newsos6) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ ;; ++ ++nto-qnx*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ ;; ++ ++openbsd*) ++ version_type=sunos ++ sys_lib_dlsearch_path_spec="/usr/lib" ++ need_lib_prefix=no ++ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. ++ case $host_os in ++ openbsd3.3 | openbsd3.3.*) need_version=yes ;; ++ *) need_version=no ;; ++ esac ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then ++ case $host_os in ++ openbsd2.[89] | openbsd2.[89].*) ++ shlibpath_overrides_runpath=no ++ ;; ++ *) ++ shlibpath_overrides_runpath=yes ++ ;; ++ esac ++ else ++ shlibpath_overrides_runpath=yes ++ fi ++ ;; ++ ++os2*) ++ libname_spec='$name' ++ shrext_cmds=".dll" ++ need_lib_prefix=no ++ library_names_spec='$libname${shared_ext} $libname.a' ++ dynamic_linker='OS/2 ld.exe' ++ shlibpath_var=LIBPATH ++ ;; ++ ++osf3* | osf4* | osf5*) ++ version_type=osf ++ need_lib_prefix=no ++ need_version=no ++ soname_spec='${libname}${release}${shared_ext}$major' ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ shlibpath_var=LD_LIBRARY_PATH ++ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" ++ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ++ ;; ++ ++rdos*) ++ dynamic_linker=no ++ ;; ++ ++solaris*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ # ldd complains unless libraries are executable ++ postinstall_cmds='chmod +x $lib' ++ ;; ++ ++sunos4*) ++ version_type=sunos ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' ++ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ if test "$with_gnu_ld" = yes; then ++ need_lib_prefix=no ++ fi ++ need_version=yes ++ ;; ++ ++sysv4 | sysv4.3*) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ case $host_vendor in ++ sni) ++ shlibpath_overrides_runpath=no ++ need_lib_prefix=no ++ export_dynamic_flag_spec='${wl}-Blargedynsym' ++ runpath_var=LD_RUN_PATH ++ ;; ++ siemens) ++ need_lib_prefix=no ++ ;; ++ motorola) ++ need_lib_prefix=no ++ need_version=no ++ shlibpath_overrides_runpath=no ++ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ++ ;; ++ esac ++ ;; ++ ++sysv4*MP*) ++ if test -d /usr/nec ;then ++ version_type=linux ++ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' ++ soname_spec='$libname${shared_ext}.$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ fi ++ ;; ++ ++sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) ++ version_type=freebsd-elf ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ hardcode_into_libs=yes ++ if test "$with_gnu_ld" = yes; then ++ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' ++ shlibpath_overrides_runpath=no ++ else ++ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' ++ shlibpath_overrides_runpath=yes ++ case $host_os in ++ sco3.2v5*) ++ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ++ ;; ++ esac ++ fi ++ sys_lib_dlsearch_path_spec='/usr/lib' ++ ;; ++ ++uts4*) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ ;; ++ ++*) ++ dynamic_linker=no ++ ;; ++esac ++{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5 ++echo "${ECHO_T}$dynamic_linker" >&6; } ++test "$dynamic_linker" = no && can_build_shared=no ++ ++variables_saved_for_relink="PATH $shlibpath_var $runpath_var" ++if test "$GCC" = yes; then ++ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" ++fi ++ ++{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 ++echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } ++hardcode_action_F77= ++if test -n "$hardcode_libdir_flag_spec_F77" || \ ++ test -n "$runpath_var_F77" || \ ++ test "X$hardcode_automatic_F77" = "Xyes" ; then ++ ++ # We can hardcode non-existant directories. ++ if test "$hardcode_direct_F77" != no && ++ # If the only mechanism to avoid hardcoding is shlibpath_var, we ++ # have to relink, otherwise we might link with an installed library ++ # when we should be linking with a yet-to-be-installed one ++ ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no && ++ test "$hardcode_minus_L_F77" != no; then ++ # Linking always hardcodes the temporary library directory. ++ hardcode_action_F77=relink ++ else ++ # We can link without hardcoding, and we can hardcode nonexisting dirs. ++ hardcode_action_F77=immediate ++ fi ++else ++ # We cannot hardcode anything, or else we can only hardcode existing ++ # directories. ++ hardcode_action_F77=unsupported ++fi ++{ echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5 ++echo "${ECHO_T}$hardcode_action_F77" >&6; } ++ ++if test "$hardcode_action_F77" = relink; then ++ # Fast installation is not supported ++ enable_fast_install=no ++elif test "$shlibpath_overrides_runpath" = yes || ++ test "$enable_shared" = no; then ++ # Fast installation is not necessary ++ enable_fast_install=needless ++fi ++ ++ ++# The else clause should only fire when bootstrapping the ++# libtool distribution, otherwise you forgot to ship ltmain.sh ++# with your package, and you will get complaints that there are ++# no rules to generate ltmain.sh. ++if test -f "$ltmain"; then ++ # See if we are running on zsh, and set the options which allow our commands through ++ # without removal of \ escapes. ++ if test -n "${ZSH_VERSION+set}" ; then ++ setopt NO_GLOB_SUBST ++ fi ++ # Now quote all the things that may contain metacharacters while being ++ # careful not to overquote the AC_SUBSTed values. We take copies of the ++ # variables and quote the copies for generation of the libtool script. ++ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ ++ SED SHELL STRIP \ ++ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ ++ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ ++ deplibs_check_method reload_flag reload_cmds need_locks \ ++ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ ++ lt_cv_sys_global_symbol_to_c_name_address \ ++ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ ++ old_postinstall_cmds old_postuninstall_cmds \ ++ compiler_F77 \ ++ CC_F77 \ ++ LD_F77 \ ++ lt_prog_compiler_wl_F77 \ ++ lt_prog_compiler_pic_F77 \ ++ lt_prog_compiler_static_F77 \ ++ lt_prog_compiler_no_builtin_flag_F77 \ ++ export_dynamic_flag_spec_F77 \ ++ thread_safe_flag_spec_F77 \ ++ whole_archive_flag_spec_F77 \ ++ enable_shared_with_static_runtimes_F77 \ ++ old_archive_cmds_F77 \ ++ old_archive_from_new_cmds_F77 \ ++ predep_objects_F77 \ ++ postdep_objects_F77 \ ++ predeps_F77 \ ++ postdeps_F77 \ ++ compiler_lib_search_path_F77 \ ++ archive_cmds_F77 \ ++ archive_expsym_cmds_F77 \ ++ postinstall_cmds_F77 \ ++ postuninstall_cmds_F77 \ ++ old_archive_from_expsyms_cmds_F77 \ ++ allow_undefined_flag_F77 \ ++ no_undefined_flag_F77 \ ++ export_symbols_cmds_F77 \ ++ hardcode_libdir_flag_spec_F77 \ ++ hardcode_libdir_flag_spec_ld_F77 \ ++ hardcode_libdir_separator_F77 \ ++ hardcode_automatic_F77 \ ++ module_cmds_F77 \ ++ module_expsym_cmds_F77 \ ++ lt_cv_prog_compiler_c_o_F77 \ ++ fix_srcfile_path_F77 \ ++ exclude_expsyms_F77 \ ++ include_expsyms_F77; do ++ ++ case $var in ++ old_archive_cmds_F77 | \ ++ old_archive_from_new_cmds_F77 | \ ++ archive_cmds_F77 | \ ++ archive_expsym_cmds_F77 | \ ++ module_cmds_F77 | \ ++ module_expsym_cmds_F77 | \ ++ old_archive_from_expsyms_cmds_F77 | \ ++ export_symbols_cmds_F77 | \ ++ extract_expsyms_cmds | reload_cmds | finish_cmds | \ ++ postinstall_cmds | postuninstall_cmds | \ ++ old_postinstall_cmds | old_postuninstall_cmds | \ ++ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) ++ # Double-quote double-evaled strings. ++ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ++ ;; ++ *) ++ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ++ ;; ++ esac ++ done ++ ++ case $lt_echo in ++ *'\$0 --fallback-echo"') ++ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ++ ;; ++ esac ++ ++cfgfile="$ofile" ++ ++ cat <<__EOF__ >> "$cfgfile" ++# ### BEGIN LIBTOOL TAG CONFIG: $tagname ++ ++# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: ++ ++# Shell to use when invoking shell scripts. ++SHELL=$lt_SHELL ++ ++# Whether or not to build shared libraries. ++build_libtool_libs=$enable_shared ++ ++# Whether or not to build static libraries. ++build_old_libs=$enable_static ++ ++# Whether or not to add -lc for building shared libraries. ++build_libtool_need_lc=$archive_cmds_need_lc_F77 ++ ++# Whether or not to disallow shared libs when runtime libs are static ++allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77 ++ ++# Whether or not to optimize for fast installation. ++fast_install=$enable_fast_install ++ ++# The host system. ++host_alias=$host_alias ++host=$host ++host_os=$host_os ++ ++# The build system. ++build_alias=$build_alias ++build=$build ++build_os=$build_os ++ ++# An echo program that does not interpret backslashes. ++echo=$lt_echo ++ ++# The archiver. ++AR=$lt_AR ++AR_FLAGS=$lt_AR_FLAGS ++ ++# A C compiler. ++LTCC=$lt_LTCC ++ ++# LTCC compiler flags. ++LTCFLAGS=$lt_LTCFLAGS ++ ++# A language-specific compiler. ++CC=$lt_compiler_F77 ++ ++# Is the compiler the GNU C compiler? ++with_gcc=$GCC_F77 ++ ++# An ERE matcher. ++EGREP=$lt_EGREP ++ ++# The linker used to build libraries. ++LD=$lt_LD_F77 ++ ++# Whether we need hard or soft links. ++LN_S=$lt_LN_S ++ ++# A BSD-compatible nm program. ++NM=$lt_NM ++ ++# A symbol stripping program ++STRIP=$lt_STRIP ++ ++# Used to examine libraries when file_magic_cmd begins "file" ++MAGIC_CMD=$MAGIC_CMD ++ ++# Used on cygwin: DLL creation program. ++DLLTOOL="$DLLTOOL" ++ ++# Used on cygwin: object dumper. ++OBJDUMP="$OBJDUMP" ++ ++# Used on cygwin: assembler. ++AS="$AS" ++ ++# The name of the directory that contains temporary libtool files. ++objdir=$objdir ++ ++# How to create reloadable object files. ++reload_flag=$lt_reload_flag ++reload_cmds=$lt_reload_cmds ++ ++# How to pass a linker flag through the compiler. ++wl=$lt_lt_prog_compiler_wl_F77 ++ ++# Object file suffix (normally "o"). ++objext="$ac_objext" ++ ++# Old archive suffix (normally "a"). ++libext="$libext" ++ ++# Shared library suffix (normally ".so"). ++shrext_cmds='$shrext_cmds' ++ ++# Executable file suffix (normally ""). ++exeext="$exeext" ++ ++# Additional compiler flags for building library objects. ++pic_flag=$lt_lt_prog_compiler_pic_F77 ++pic_mode=$pic_mode ++ ++# What is the maximum length of a command? ++max_cmd_len=$lt_cv_sys_max_cmd_len ++ ++# Does compiler simultaneously support -c and -o options? ++compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77 ++ ++# Must we lock files when doing compilation? ++need_locks=$lt_need_locks ++ ++# Do we need the lib prefix for modules? ++need_lib_prefix=$need_lib_prefix ++ ++# Do we need a version for libraries? ++need_version=$need_version ++ ++# Whether dlopen is supported. ++dlopen_support=$enable_dlopen ++ ++# Whether dlopen of programs is supported. ++dlopen_self=$enable_dlopen_self ++ ++# Whether dlopen of statically linked programs is supported. ++dlopen_self_static=$enable_dlopen_self_static ++ ++# Compiler flag to prevent dynamic linking. ++link_static_flag=$lt_lt_prog_compiler_static_F77 ++ ++# Compiler flag to turn off builtin functions. ++no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77 ++ ++# Compiler flag to allow reflexive dlopens. ++export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77 ++ ++# Compiler flag to generate shared objects directly from archives. ++whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77 ++ ++# Compiler flag to generate thread-safe objects. ++thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77 ++ ++# Library versioning type. ++version_type=$version_type ++ ++# Format of library name prefix. ++libname_spec=$lt_libname_spec ++ ++# List of archive names. First name is the real one, the rest are links. ++# The last name is the one that the linker finds with -lNAME. ++library_names_spec=$lt_library_names_spec ++ ++# The coded name of the library, if different from the real name. ++soname_spec=$lt_soname_spec ++ ++# Commands used to build and install an old-style archive. ++RANLIB=$lt_RANLIB ++old_archive_cmds=$lt_old_archive_cmds_F77 ++old_postinstall_cmds=$lt_old_postinstall_cmds ++old_postuninstall_cmds=$lt_old_postuninstall_cmds ++ ++# Create an old-style archive from a shared archive. ++old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77 ++ ++# Create a temporary old-style archive to link instead of a shared archive. ++old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77 ++ ++# Commands used to build and install a shared archive. ++archive_cmds=$lt_archive_cmds_F77 ++archive_expsym_cmds=$lt_archive_expsym_cmds_F77 ++postinstall_cmds=$lt_postinstall_cmds ++postuninstall_cmds=$lt_postuninstall_cmds ++ ++# Commands used to build a loadable module (assumed same as above if empty) ++module_cmds=$lt_module_cmds_F77 ++module_expsym_cmds=$lt_module_expsym_cmds_F77 ++ ++# Commands to strip libraries. ++old_striplib=$lt_old_striplib ++striplib=$lt_striplib ++ ++# Dependencies to place before the objects being linked to create a ++# shared library. ++predep_objects=$lt_predep_objects_F77 ++ ++# Dependencies to place after the objects being linked to create a ++# shared library. ++postdep_objects=$lt_postdep_objects_F77 ++ ++# Dependencies to place before the objects being linked to create a ++# shared library. ++predeps=$lt_predeps_F77 ++ ++# Dependencies to place after the objects being linked to create a ++# shared library. ++postdeps=$lt_postdeps_F77 ++ ++# The library search path used internally by the compiler when linking ++# a shared library. ++compiler_lib_search_path=$lt_compiler_lib_search_path_F77 ++ ++# Method to check whether dependent libraries are shared objects. ++deplibs_check_method=$lt_deplibs_check_method ++ ++# Command to use when deplibs_check_method == file_magic. ++file_magic_cmd=$lt_file_magic_cmd ++ ++# Flag that allows shared libraries with undefined symbols to be built. ++allow_undefined_flag=$lt_allow_undefined_flag_F77 ++ ++# Flag that forces no undefined symbols. ++no_undefined_flag=$lt_no_undefined_flag_F77 ++ ++# Commands used to finish a libtool library installation in a directory. ++finish_cmds=$lt_finish_cmds ++ ++# Same as above, but a single script fragment to be evaled but not shown. ++finish_eval=$lt_finish_eval ++ ++# Take the output of nm and produce a listing of raw symbols and C names. ++global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe ++ ++# Transform the output of nm in a proper C declaration ++global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl ++ ++# Transform the output of nm in a C name address pair ++global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address ++ ++# This is the shared library runtime path variable. ++runpath_var=$runpath_var ++ ++# This is the shared library path variable. ++shlibpath_var=$shlibpath_var ++ ++# Is shlibpath searched before the hard-coded library search path? ++shlibpath_overrides_runpath=$shlibpath_overrides_runpath ++ ++# How to hardcode a shared library path into an executable. ++hardcode_action=$hardcode_action_F77 ++ ++# Whether we should hardcode library paths into libraries. ++hardcode_into_libs=$hardcode_into_libs ++ ++# Flag to hardcode \$libdir into a binary during linking. ++# This must work even if \$libdir does not exist. ++hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77 ++ ++# If ld is used when linking, flag to hardcode \$libdir into ++# a binary during linking. This must work even if \$libdir does ++# not exist. ++hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_F77 ++ ++# Whether we need a single -rpath flag with a separated argument. ++hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77 ++ ++# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the ++# resulting binary. ++hardcode_direct=$hardcode_direct_F77 ++ ++# Set to yes if using the -LDIR flag during linking hardcodes DIR into the ++# resulting binary. ++hardcode_minus_L=$hardcode_minus_L_F77 ++ ++# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into ++# the resulting binary. ++hardcode_shlibpath_var=$hardcode_shlibpath_var_F77 ++ ++# Set to yes if building a shared library automatically hardcodes DIR into the library ++# and all subsequent libraries and executables linked against it. ++hardcode_automatic=$hardcode_automatic_F77 ++ ++# Variables whose values should be saved in libtool wrapper scripts and ++# restored at relink time. ++variables_saved_for_relink="$variables_saved_for_relink" ++ ++# Whether libtool must link a program against all its dependency libraries. ++link_all_deplibs=$link_all_deplibs_F77 ++ ++# Compile-time system search path for libraries ++sys_lib_search_path_spec=$lt_sys_lib_search_path_spec ++ ++# Run-time system search path for libraries ++sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec ++ ++# Fix the shell variable \$srcfile for the compiler. ++fix_srcfile_path=$lt_fix_srcfile_path ++ ++# Set to yes if exported symbols are required. ++always_export_symbols=$always_export_symbols_F77 ++ ++# The commands to list exported symbols. ++export_symbols_cmds=$lt_export_symbols_cmds_F77 ++ ++# The commands to extract the exported symbol list from a shared archive. ++extract_expsyms_cmds=$lt_extract_expsyms_cmds ++ ++# Symbols that should not be listed in the preloaded symbols. ++exclude_expsyms=$lt_exclude_expsyms_F77 ++ ++# Symbols that must always be exported. ++include_expsyms=$lt_include_expsyms_F77 ++ ++# ### END LIBTOOL TAG CONFIG: $tagname ++ ++__EOF__ ++ ++ ++else ++ # If there is no Makefile yet, we rely on a make rule to execute ++ # `config.status --recheck' to rerun these tests and create the ++ # libtool script then. ++ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` ++ if test -f "$ltmain_in"; then ++ test -f Makefile && make "$ltmain" ++ fi ++fi ++ ++ ++ac_ext=c ++ac_cpp='$CPP $CPPFLAGS' ++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_c_compiler_gnu ++ ++CC="$lt_save_CC" ++ ++ else ++ tagname="" ++ fi ++ ;; ++ ++ GCJ) ++ if test -n "$GCJ" && test "X$GCJ" != "Xno"; then ++ ++ ++# Source file extension for Java test sources. ++ac_ext=java ++ ++# Object file extension for compiled Java test sources. ++objext=o ++objext_GCJ=$objext ++ ++# Code to be used in simple compile tests ++lt_simple_compile_test_code="class foo {}" ++ ++# Code to be used in simple link tests ++lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }' ++ ++# ltmain only uses $CC for tagged configurations so make sure $CC is set. ++ ++# If no C compiler was specified, use CC. ++LTCC=${LTCC-"$CC"} ++ ++# If no C compiler flags were specified, use CFLAGS. ++LTCFLAGS=${LTCFLAGS-"$CFLAGS"} ++ ++# Allow CC to be a program name with arguments. ++compiler=$CC ++ ++ ++# save warnings/boilerplate of simple test code ++ac_outfile=conftest.$ac_objext ++echo "$lt_simple_compile_test_code" >conftest.$ac_ext ++eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err ++_lt_compiler_boilerplate=`cat conftest.err` ++$rm conftest* ++ ++ac_outfile=conftest.$ac_objext ++echo "$lt_simple_link_test_code" >conftest.$ac_ext ++eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err ++_lt_linker_boilerplate=`cat conftest.err` ++$rm conftest* ++ ++ ++# Allow CC to be a program name with arguments. ++lt_save_CC="$CC" ++CC=${GCJ-"gcj"} ++compiler=$CC ++compiler_GCJ=$CC ++for cc_temp in $compiler""; do ++ case $cc_temp in ++ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; ++ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; ++ \-*) ;; ++ *) break;; ++ esac ++done ++cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` ++ ++ ++# GCJ did not exist at the time GCC didn't implicitly link libc in. ++archive_cmds_need_lc_GCJ=no ++ ++old_archive_cmds_GCJ=$old_archive_cmds ++ ++ ++lt_prog_compiler_no_builtin_flag_GCJ= ++ ++if test "$GCC" = yes; then ++ lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin' ++ ++ ++{ echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 ++echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6; } ++if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_cv_prog_compiler_rtti_exceptions=no ++ ac_outfile=conftest.$ac_objext ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ lt_compiler_flag="-fno-rtti -fno-exceptions" ++ # Insert the option either (1) after the last *FLAGS variable, or ++ # (2) before a word containing "conftest.", or (3) at the end. ++ # Note that $ac_compile itself does not contain backslashes and begins ++ # with a dollar sign (not a hyphen), so the echo should work correctly. ++ # The option is referenced via a variable to avoid confusing sed. ++ lt_compile=`echo "$ac_compile" | $SED \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ ++ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ ++ -e 's:$: $lt_compiler_flag:'` ++ (eval echo "\"\$as_me:16388: $lt_compile\"" >&5) ++ (eval "$lt_compile" 2>conftest.err) ++ ac_status=$? ++ cat conftest.err >&5 ++ echo "$as_me:16392: \$? = $ac_status" >&5 ++ if (exit $ac_status) && test -s "$ac_outfile"; then ++ # The compiler can only warn and ignore the option if not recognized ++ # So say no if there are warnings other than the usual output. ++ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then ++ lt_cv_prog_compiler_rtti_exceptions=yes ++ fi ++ fi ++ $rm conftest* ++ ++fi ++{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 ++echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6; } ++ ++if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then ++ lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions" ++else ++ : ++fi ++ ++fi ++ ++lt_prog_compiler_wl_GCJ= ++lt_prog_compiler_pic_GCJ= ++lt_prog_compiler_static_GCJ= ++ ++{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 ++echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } ++ ++ if test "$GCC" = yes; then ++ lt_prog_compiler_wl_GCJ='-Wl,' ++ lt_prog_compiler_static_GCJ='-static' ++ ++ case $host_os in ++ aix*) ++ # All AIX code is PIC. ++ if test "$host_cpu" = ia64; then ++ # AIX 5 now supports IA64 processor ++ lt_prog_compiler_static_GCJ='-Bstatic' ++ fi ++ ;; ++ ++ amigaos*) ++ # FIXME: we need at least 68020 code to build shared libraries, but ++ # adding the `-m68020' flag to GCC prevents building anything better, ++ # like `-m68040'. ++ lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4' ++ ;; ++ ++ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) ++ # PIC is the default for these OSes. ++ ;; ++ ++ mingw* | cygwin* | pw32* | os2*) ++ # This hack is so that the source file can tell whether it is being ++ # built for inclusion in a dll (and should export symbols for example). ++ # Although the cygwin gcc ignores -fPIC, still need this for old-style ++ # (--disable-auto-import) libraries ++ lt_prog_compiler_pic_GCJ='-DDLL_EXPORT' ++ ;; ++ ++ darwin* | rhapsody*) ++ # PIC is the default on this platform ++ # Common symbols not allowed in MH_DYLIB files ++ lt_prog_compiler_pic_GCJ='-fno-common' ++ ;; ++ ++ interix[3-9]*) ++ # Interix 3.x gcc -fpic/-fPIC options generate broken code. ++ # Instead, we relocate shared libraries at runtime. ++ ;; ++ ++ msdosdjgpp*) ++ # Just because we use GCC doesn't mean we suddenly get shared libraries ++ # on systems that don't support them. ++ lt_prog_compiler_can_build_shared_GCJ=no ++ enable_shared=no ++ ;; ++ ++ sysv4*MP*) ++ if test -d /usr/nec; then ++ lt_prog_compiler_pic_GCJ=-Kconform_pic ++ fi ++ ;; ++ ++ hpux*) ++ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but ++ # not for PA HP-UX. ++ case $host_cpu in ++ hppa*64*|ia64*) ++ # +Z the default ++ ;; ++ *) ++ lt_prog_compiler_pic_GCJ='-fPIC' ++ ;; ++ esac ++ ;; ++ ++ *) ++ lt_prog_compiler_pic_GCJ='-fPIC' ++ ;; ++ esac ++ else ++ # PORTME Check for flag to pass linker flags through the system compiler. ++ case $host_os in ++ aix*) ++ lt_prog_compiler_wl_GCJ='-Wl,' ++ if test "$host_cpu" = ia64; then ++ # AIX 5 now supports IA64 processor ++ lt_prog_compiler_static_GCJ='-Bstatic' ++ else ++ lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp' ++ fi ++ ;; ++ darwin*) ++ # PIC is the default on this platform ++ # Common symbols not allowed in MH_DYLIB files ++ case $cc_basename in ++ xlc*) ++ lt_prog_compiler_pic_GCJ='-qnocommon' ++ lt_prog_compiler_wl_GCJ='-Wl,' ++ ;; ++ esac ++ ;; ++ ++ mingw* | cygwin* | pw32* | os2*) ++ # This hack is so that the source file can tell whether it is being ++ # built for inclusion in a dll (and should export symbols for example). ++ lt_prog_compiler_pic_GCJ='-DDLL_EXPORT' ++ ;; ++ ++ hpux9* | hpux10* | hpux11*) ++ lt_prog_compiler_wl_GCJ='-Wl,' ++ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but ++ # not for PA HP-UX. ++ case $host_cpu in ++ hppa*64*|ia64*) ++ # +Z the default ++ ;; ++ *) ++ lt_prog_compiler_pic_GCJ='+Z' ++ ;; ++ esac ++ # Is there a better lt_prog_compiler_static that works with the bundled CC? ++ lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive' ++ ;; ++ ++ irix5* | irix6* | nonstopux*) ++ lt_prog_compiler_wl_GCJ='-Wl,' ++ # PIC (with -KPIC) is the default. ++ lt_prog_compiler_static_GCJ='-non_shared' ++ ;; ++ ++ newsos6) ++ lt_prog_compiler_pic_GCJ='-KPIC' ++ lt_prog_compiler_static_GCJ='-Bstatic' ++ ;; ++ ++ linux* | k*bsd*-gnu) ++ case $cc_basename in ++ icc* | ecc*) ++ lt_prog_compiler_wl_GCJ='-Wl,' ++ lt_prog_compiler_pic_GCJ='-KPIC' ++ lt_prog_compiler_static_GCJ='-static' ++ ;; ++ pgcc* | pgf77* | pgf90* | pgf95*) ++ # Portland Group compilers (*not* the Pentium gcc compiler, ++ # which looks to be a dead project) ++ lt_prog_compiler_wl_GCJ='-Wl,' ++ lt_prog_compiler_pic_GCJ='-fpic' ++ lt_prog_compiler_static_GCJ='-Bstatic' ++ ;; ++ ccc*) ++ lt_prog_compiler_wl_GCJ='-Wl,' ++ # All Alpha code is PIC. ++ lt_prog_compiler_static_GCJ='-non_shared' ++ ;; ++ *) ++ case `$CC -V 2>&1 | sed 5q` in ++ *Sun\ C*) ++ # Sun C 5.9 ++ lt_prog_compiler_pic_GCJ='-KPIC' ++ lt_prog_compiler_static_GCJ='-Bstatic' ++ lt_prog_compiler_wl_GCJ='-Wl,' ++ ;; ++ *Sun\ F*) ++ # Sun Fortran 8.3 passes all unrecognized flags to the linker ++ lt_prog_compiler_pic_GCJ='-KPIC' ++ lt_prog_compiler_static_GCJ='-Bstatic' ++ lt_prog_compiler_wl_GCJ='' ++ ;; ++ esac ++ ;; ++ esac ++ ;; ++ ++ osf3* | osf4* | osf5*) ++ lt_prog_compiler_wl_GCJ='-Wl,' ++ # All OSF/1 code is PIC. ++ lt_prog_compiler_static_GCJ='-non_shared' ++ ;; ++ ++ rdos*) ++ lt_prog_compiler_static_GCJ='-non_shared' ++ ;; ++ ++ solaris*) ++ lt_prog_compiler_pic_GCJ='-KPIC' ++ lt_prog_compiler_static_GCJ='-Bstatic' ++ case $cc_basename in ++ f77* | f90* | f95*) ++ lt_prog_compiler_wl_GCJ='-Qoption ld ';; ++ *) ++ lt_prog_compiler_wl_GCJ='-Wl,';; ++ esac ++ ;; ++ ++ sunos4*) ++ lt_prog_compiler_wl_GCJ='-Qoption ld ' ++ lt_prog_compiler_pic_GCJ='-PIC' ++ lt_prog_compiler_static_GCJ='-Bstatic' ++ ;; ++ ++ sysv4 | sysv4.2uw2* | sysv4.3*) ++ lt_prog_compiler_wl_GCJ='-Wl,' ++ lt_prog_compiler_pic_GCJ='-KPIC' ++ lt_prog_compiler_static_GCJ='-Bstatic' ++ ;; ++ ++ sysv4*MP*) ++ if test -d /usr/nec ;then ++ lt_prog_compiler_pic_GCJ='-Kconform_pic' ++ lt_prog_compiler_static_GCJ='-Bstatic' ++ fi ++ ;; ++ ++ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) ++ lt_prog_compiler_wl_GCJ='-Wl,' ++ lt_prog_compiler_pic_GCJ='-KPIC' ++ lt_prog_compiler_static_GCJ='-Bstatic' ++ ;; ++ ++ unicos*) ++ lt_prog_compiler_wl_GCJ='-Wl,' ++ lt_prog_compiler_can_build_shared_GCJ=no ++ ;; ++ ++ uts4*) ++ lt_prog_compiler_pic_GCJ='-pic' ++ lt_prog_compiler_static_GCJ='-Bstatic' ++ ;; ++ ++ *) ++ lt_prog_compiler_can_build_shared_GCJ=no ++ ;; ++ esac ++ fi ++ ++{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5 ++echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6; } ++ ++# ++# Check to make sure the PIC flag actually works. ++# ++if test -n "$lt_prog_compiler_pic_GCJ"; then ++ ++{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5 ++echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6; } ++if test "${lt_prog_compiler_pic_works_GCJ+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_prog_compiler_pic_works_GCJ=no ++ ac_outfile=conftest.$ac_objext ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ lt_compiler_flag="$lt_prog_compiler_pic_GCJ" ++ # Insert the option either (1) after the last *FLAGS variable, or ++ # (2) before a word containing "conftest.", or (3) at the end. ++ # Note that $ac_compile itself does not contain backslashes and begins ++ # with a dollar sign (not a hyphen), so the echo should work correctly. ++ # The option is referenced via a variable to avoid confusing sed. ++ lt_compile=`echo "$ac_compile" | $SED \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ ++ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ ++ -e 's:$: $lt_compiler_flag:'` ++ (eval echo "\"\$as_me:16678: $lt_compile\"" >&5) ++ (eval "$lt_compile" 2>conftest.err) ++ ac_status=$? ++ cat conftest.err >&5 ++ echo "$as_me:16682: \$? = $ac_status" >&5 ++ if (exit $ac_status) && test -s "$ac_outfile"; then ++ # The compiler can only warn and ignore the option if not recognized ++ # So say no if there are warnings other than the usual output. ++ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then ++ lt_prog_compiler_pic_works_GCJ=yes ++ fi ++ fi ++ $rm conftest* ++ ++fi ++{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_GCJ" >&5 ++echo "${ECHO_T}$lt_prog_compiler_pic_works_GCJ" >&6; } ++ ++if test x"$lt_prog_compiler_pic_works_GCJ" = xyes; then ++ case $lt_prog_compiler_pic_GCJ in ++ "" | " "*) ;; ++ *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;; ++ esac ++else ++ lt_prog_compiler_pic_GCJ= ++ lt_prog_compiler_can_build_shared_GCJ=no ++fi ++ ++fi ++case $host_os in ++ # For platforms which do not support PIC, -DPIC is meaningless: ++ *djgpp*) ++ lt_prog_compiler_pic_GCJ= ++ ;; ++ *) ++ lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ" ++ ;; ++esac ++ ++# ++# Check to make sure the static flag actually works. ++# ++wl=$lt_prog_compiler_wl_GCJ eval lt_tmp_static_flag=\"$lt_prog_compiler_static_GCJ\" ++{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 ++echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } ++if test "${lt_prog_compiler_static_works_GCJ+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_prog_compiler_static_works_GCJ=no ++ save_LDFLAGS="$LDFLAGS" ++ LDFLAGS="$LDFLAGS $lt_tmp_static_flag" ++ echo "$lt_simple_link_test_code" > conftest.$ac_ext ++ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then ++ # The linker can only warn and ignore the option if not recognized ++ # So say no if there are warnings ++ if test -s conftest.err; then ++ # Append any errors to the config.log. ++ cat conftest.err 1>&5 ++ $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if diff conftest.exp conftest.er2 >/dev/null; then ++ lt_prog_compiler_static_works_GCJ=yes ++ fi ++ else ++ lt_prog_compiler_static_works_GCJ=yes ++ fi ++ fi ++ $rm conftest* ++ LDFLAGS="$save_LDFLAGS" ++ ++fi ++{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_GCJ" >&5 ++echo "${ECHO_T}$lt_prog_compiler_static_works_GCJ" >&6; } ++ ++if test x"$lt_prog_compiler_static_works_GCJ" = xyes; then ++ : ++else ++ lt_prog_compiler_static_GCJ= ++fi ++ ++ ++{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 ++echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } ++if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_cv_prog_compiler_c_o_GCJ=no ++ $rm -r conftest 2>/dev/null ++ mkdir conftest ++ cd conftest ++ mkdir out ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ ++ lt_compiler_flag="-o out/conftest2.$ac_objext" ++ # Insert the option either (1) after the last *FLAGS variable, or ++ # (2) before a word containing "conftest.", or (3) at the end. ++ # Note that $ac_compile itself does not contain backslashes and begins ++ # with a dollar sign (not a hyphen), so the echo should work correctly. ++ lt_compile=`echo "$ac_compile" | $SED \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ ++ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ ++ -e 's:$: $lt_compiler_flag:'` ++ (eval echo "\"\$as_me:16782: $lt_compile\"" >&5) ++ (eval "$lt_compile" 2>out/conftest.err) ++ ac_status=$? ++ cat out/conftest.err >&5 ++ echo "$as_me:16786: \$? = $ac_status" >&5 ++ if (exit $ac_status) && test -s out/conftest2.$ac_objext ++ then ++ # The compiler can only warn and ignore the option if not recognized ++ # So say no if there are warnings ++ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp ++ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 ++ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then ++ lt_cv_prog_compiler_c_o_GCJ=yes ++ fi ++ fi ++ chmod u+w . 2>&5 ++ $rm conftest* ++ # SGI C++ compiler will create directory out/ii_files/ for ++ # template instantiation ++ test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files ++ $rm out/* && rmdir out ++ cd .. ++ rmdir conftest ++ $rm conftest* ++ ++fi ++{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5 ++echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6; } ++ ++ ++hard_links="nottested" ++if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then ++ # do not overwrite the value of need_locks provided by the user ++ { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 ++echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } ++ hard_links=yes ++ $rm conftest* ++ ln conftest.a conftest.b 2>/dev/null && hard_links=no ++ touch conftest.a ++ ln conftest.a conftest.b 2>&5 || hard_links=no ++ ln conftest.a conftest.b 2>/dev/null && hard_links=no ++ { echo "$as_me:$LINENO: result: $hard_links" >&5 ++echo "${ECHO_T}$hard_links" >&6; } ++ if test "$hard_links" = no; then ++ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 ++echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} ++ need_locks=warn ++ fi ++else ++ need_locks=no ++fi ++ ++{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 ++echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } ++ ++ runpath_var= ++ allow_undefined_flag_GCJ= ++ enable_shared_with_static_runtimes_GCJ=no ++ archive_cmds_GCJ= ++ archive_expsym_cmds_GCJ= ++ old_archive_From_new_cmds_GCJ= ++ old_archive_from_expsyms_cmds_GCJ= ++ export_dynamic_flag_spec_GCJ= ++ whole_archive_flag_spec_GCJ= ++ thread_safe_flag_spec_GCJ= ++ hardcode_libdir_flag_spec_GCJ= ++ hardcode_libdir_flag_spec_ld_GCJ= ++ hardcode_libdir_separator_GCJ= ++ hardcode_direct_GCJ=no ++ hardcode_minus_L_GCJ=no ++ hardcode_shlibpath_var_GCJ=unsupported ++ link_all_deplibs_GCJ=unknown ++ hardcode_automatic_GCJ=no ++ module_cmds_GCJ= ++ module_expsym_cmds_GCJ= ++ always_export_symbols_GCJ=no ++ export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ++ # include_expsyms should be a list of space-separated symbols to be *always* ++ # included in the symbol list ++ include_expsyms_GCJ= ++ # exclude_expsyms can be an extended regexp of symbols to exclude ++ # it will be wrapped by ` (' and `)$', so one must not match beginning or ++ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', ++ # as well as any symbol that contains `d'. ++ exclude_expsyms_GCJ="_GLOBAL_OFFSET_TABLE_" ++ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out ++ # platforms (ab)use it in PIC code, but their linkers get confused if ++ # the symbol is explicitly referenced. Since portable code cannot ++ # rely on this symbol name, it's probably fine to never include it in ++ # preloaded symbol tables. ++ extract_expsyms_cmds= ++ # Just being paranoid about ensuring that cc_basename is set. ++ for cc_temp in $compiler""; do ++ case $cc_temp in ++ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; ++ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; ++ \-*) ;; ++ *) break;; ++ esac ++done ++cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` ++ ++ case $host_os in ++ cygwin* | mingw* | pw32*) ++ # FIXME: the MSVC++ port hasn't been tested in a loooong time ++ # When not using gcc, we currently assume that we are using ++ # Microsoft Visual C++. ++ if test "$GCC" != yes; then ++ with_gnu_ld=no ++ fi ++ ;; ++ interix*) ++ # we just hope/assume this is gcc and not c89 (= MSVC++) ++ with_gnu_ld=yes ++ ;; ++ openbsd*) ++ with_gnu_ld=no ++ ;; ++ esac ++ ++ ld_shlibs_GCJ=yes ++ if test "$with_gnu_ld" = yes; then ++ # If archive_cmds runs LD, not CC, wlarc should be empty ++ wlarc='${wl}' ++ ++ # Set some defaults for GNU ld with shared library support. These ++ # are reset later if shared libraries are not supported. Putting them ++ # here allows them to be overridden if necessary. ++ runpath_var=LD_RUN_PATH ++ hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir' ++ export_dynamic_flag_spec_GCJ='${wl}--export-dynamic' ++ # ancient GNU ld didn't support --whole-archive et. al. ++ if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then ++ whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' ++ else ++ whole_archive_flag_spec_GCJ= ++ fi ++ supports_anon_versioning=no ++ case `$LD -v 2>/dev/null` in ++ *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 ++ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... ++ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... ++ *\ 2.11.*) ;; # other 2.11 versions ++ *) supports_anon_versioning=yes ;; ++ esac ++ ++ # See if GNU ld supports shared libraries. ++ case $host_os in ++ aix3* | aix4* | aix5*) ++ # On AIX/PPC, the GNU linker is very broken ++ if test "$host_cpu" != ia64; then ++ ld_shlibs_GCJ=no ++ cat <&2 ++ ++*** Warning: the GNU linker, at least up to release 2.9.1, is reported ++*** to be unable to reliably create shared libraries on AIX. ++*** Therefore, libtool is disabling shared libraries support. If you ++*** really care for shared libraries, you may want to modify your PATH ++*** so that a non-GNU linker is found, and then restart. ++ ++EOF ++ fi ++ ;; ++ ++ amigaos*) ++ archive_cmds_GCJ='$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)' ++ hardcode_libdir_flag_spec_GCJ='-L$libdir' ++ hardcode_minus_L_GCJ=yes ++ ++ # Samuel A. Falvo II reports ++ # that the semantics of dynamic libraries on AmigaOS, at least up ++ # to version 4, is to share data among multiple programs linked ++ # with the same dynamic library. Since this doesn't match the ++ # behavior of shared libraries on other platforms, we can't use ++ # them. ++ ld_shlibs_GCJ=no ++ ;; ++ ++ beos*) ++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ allow_undefined_flag_GCJ=unsupported ++ # Joseph Beckenbach says some releases of gcc ++ # support --undefined. This deserves some investigation. FIXME ++ archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ else ++ ld_shlibs_GCJ=no ++ fi ++ ;; ++ ++ cygwin* | mingw* | pw32*) ++ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless, ++ # as there is no search path for DLLs. ++ hardcode_libdir_flag_spec_GCJ='-L$libdir' ++ allow_undefined_flag_GCJ=unsupported ++ always_export_symbols_GCJ=no ++ enable_shared_with_static_runtimes_GCJ=yes ++ export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' ++ ++ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then ++ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' ++ # If the export-symbols file already is a .def file (1st line ++ # is EXPORTS), use it as is; otherwise, prepend... ++ archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then ++ cp $export_symbols $output_objdir/$soname.def; ++ else ++ echo EXPORTS > $output_objdir/$soname.def; ++ cat $export_symbols >> $output_objdir/$soname.def; ++ fi~ ++ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' ++ else ++ ld_shlibs_GCJ=no ++ fi ++ ;; ++ ++ interix[3-9]*) ++ hardcode_direct_GCJ=no ++ hardcode_shlibpath_var_GCJ=no ++ hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' ++ export_dynamic_flag_spec_GCJ='${wl}-E' ++ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. ++ # Instead, shared libraries are loaded at an image base (0x10000000 by ++ # default) and relocated if they conflict, which is a slow very memory ++ # consuming and fragmenting process. To avoid this, we pick a random, ++ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link ++ # time. Moving up from 0x10000000 also allows more sbrk(2) space. ++ archive_cmds_GCJ='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ++ archive_expsym_cmds_GCJ='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' ++ ;; ++ ++ gnu* | linux* | k*bsd*-gnu) ++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ tmp_addflag= ++ case $cc_basename,$host_cpu in ++ pgcc*) # Portland Group C compiler ++ whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ++ tmp_addflag=' $pic_flag' ++ ;; ++ pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers ++ whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ++ tmp_addflag=' $pic_flag -Mnomain' ;; ++ ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 ++ tmp_addflag=' -i_dynamic' ;; ++ efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 ++ tmp_addflag=' -i_dynamic -nofor_main' ;; ++ ifc* | ifort*) # Intel Fortran compiler ++ tmp_addflag=' -nofor_main' ;; ++ esac ++ case `$CC -V 2>&1 | sed 5q` in ++ *Sun\ C*) # Sun C 5.9 ++ whole_archive_flag_spec_GCJ='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ++ tmp_sharedflag='-G' ;; ++ *Sun\ F*) # Sun Fortran 8.3 ++ tmp_sharedflag='-G' ;; ++ *) ++ tmp_sharedflag='-shared' ;; ++ esac ++ archive_cmds_GCJ='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ ++ if test $supports_anon_versioning = yes; then ++ archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~ ++ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ ++ $echo "local: *; };" >> $output_objdir/$libname.ver~ ++ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' ++ fi ++ link_all_deplibs_GCJ=no ++ else ++ ld_shlibs_GCJ=no ++ fi ++ ;; ++ ++ netbsd* | netbsdelf*-gnu) ++ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then ++ archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' ++ wlarc= ++ else ++ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ fi ++ ;; ++ ++ solaris*) ++ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ++ ld_shlibs_GCJ=no ++ cat <&2 ++ ++*** Warning: The releases 2.8.* of the GNU linker cannot reliably ++*** create shared libraries on Solaris systems. Therefore, libtool ++*** is disabling shared libraries support. We urge you to upgrade GNU ++*** binutils to release 2.9.1 or newer. Another option is to modify ++*** your PATH or compiler configuration so that the native linker is ++*** used, and then restart. ++ ++EOF ++ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ else ++ ld_shlibs_GCJ=no ++ fi ++ ;; ++ ++ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) ++ case `$LD -v 2>&1` in ++ *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ++ ld_shlibs_GCJ=no ++ cat <<_LT_EOF 1>&2 ++ ++*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not ++*** reliably create shared libraries on SCO systems. Therefore, libtool ++*** is disabling shared libraries support. We urge you to upgrade GNU ++*** binutils to release 2.16.91.0.3 or newer. Another option is to modify ++*** your PATH or compiler configuration so that the native linker is ++*** used, and then restart. ++ ++_LT_EOF ++ ;; ++ *) ++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' ++ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' ++ archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' ++ else ++ ld_shlibs_GCJ=no ++ fi ++ ;; ++ esac ++ ;; ++ ++ sunos4*) ++ archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' ++ wlarc= ++ hardcode_direct_GCJ=yes ++ hardcode_shlibpath_var_GCJ=no ++ ;; ++ ++ *) ++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ else ++ ld_shlibs_GCJ=no ++ fi ++ ;; ++ esac ++ ++ if test "$ld_shlibs_GCJ" = no; then ++ runpath_var= ++ hardcode_libdir_flag_spec_GCJ= ++ export_dynamic_flag_spec_GCJ= ++ whole_archive_flag_spec_GCJ= ++ fi ++ else ++ # PORTME fill in a description of your system's linker (not GNU ld) ++ case $host_os in ++ aix3*) ++ allow_undefined_flag_GCJ=unsupported ++ always_export_symbols_GCJ=yes ++ archive_expsym_cmds_GCJ='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' ++ # Note: this linker hardcodes the directories in LIBPATH if there ++ # are no directories specified by -L. ++ hardcode_minus_L_GCJ=yes ++ if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then ++ # Neither direct hardcoding nor static linking is supported with a ++ # broken collect2. ++ hardcode_direct_GCJ=unsupported ++ fi ++ ;; ++ ++ aix4* | aix5*) ++ if test "$host_cpu" = ia64; then ++ # On IA64, the linker does run time linking by default, so we don't ++ # have to do anything special. ++ aix_use_runtimelinking=no ++ exp_sym_flag='-Bexport' ++ no_entry_flag="" ++ else ++ # If we're using GNU nm, then we don't want the "-C" option. ++ # -C means demangle to AIX nm, but means don't demangle with GNU nm ++ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then ++ export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' ++ else ++ export_symbols_cmds_GCJ='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' ++ fi ++ aix_use_runtimelinking=no ++ ++ # Test if we are trying to use run time linking or normal ++ # AIX style linking. If -brtl is somewhere in LDFLAGS, we ++ # need to do runtime linking. ++ case $host_os in aix4.[23]|aix4.[23].*|aix5*) ++ for ld_flag in $LDFLAGS; do ++ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then ++ aix_use_runtimelinking=yes ++ break ++ fi ++ done ++ ;; ++ esac ++ ++ exp_sym_flag='-bexport' ++ no_entry_flag='-bnoentry' ++ fi ++ ++ # When large executables or shared objects are built, AIX ld can ++ # have problems creating the table of contents. If linking a library ++ # or program results in "error TOC overflow" add -mminimal-toc to ++ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not ++ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. ++ ++ archive_cmds_GCJ='' ++ hardcode_direct_GCJ=yes ++ hardcode_libdir_separator_GCJ=':' ++ link_all_deplibs_GCJ=yes ++ ++ if test "$GCC" = yes; then ++ case $host_os in aix4.[012]|aix4.[012].*) ++ # We only want to do this on AIX 4.2 and lower, the check ++ # below for broken collect2 doesn't work under 4.3+ ++ collect2name=`${CC} -print-prog-name=collect2` ++ if test -f "$collect2name" && \ ++ strings "$collect2name" | grep resolve_lib_name >/dev/null ++ then ++ # We have reworked collect2 ++ : ++ else ++ # We have old collect2 ++ hardcode_direct_GCJ=unsupported ++ # It fails to find uninstalled libraries when the uninstalled ++ # path is not listed in the libpath. Setting hardcode_minus_L ++ # to unsupported forces relinking ++ hardcode_minus_L_GCJ=yes ++ hardcode_libdir_flag_spec_GCJ='-L$libdir' ++ hardcode_libdir_separator_GCJ= ++ fi ++ ;; ++ esac ++ shared_flag='-shared' ++ if test "$aix_use_runtimelinking" = yes; then ++ shared_flag="$shared_flag "'${wl}-G' ++ fi ++ else ++ # not using gcc ++ if test "$host_cpu" = ia64; then ++ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release ++ # chokes on -Wl,-G. The following line is correct: ++ shared_flag='-G' ++ else ++ if test "$aix_use_runtimelinking" = yes; then ++ shared_flag='${wl}-G' ++ else ++ shared_flag='${wl}-bM:SRE' ++ fi ++ fi ++ fi ++ ++ # It seems that -bexpall does not export symbols beginning with ++ # underscore (_), so it is better to generate a list of symbols to export. ++ always_export_symbols_GCJ=yes ++ if test "$aix_use_runtimelinking" = yes; then ++ # Warning - without using the other runtime loading flags (-brtl), ++ # -berok will link without error, but may produce a broken library. ++ allow_undefined_flag_GCJ='-berok' ++ # Determine the default libpath from the value encoded in an empty executable. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ++lt_aix_libpath_sed=' ++ /Import File Strings/,/^$/ { ++ /^0/ { ++ s/^0 *\(.*\)$/\1/ ++ p ++ } ++ }' ++aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++# Check for a 64-bit object if we didn't find anything. ++if test -z "$aix_libpath"; then ++ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++fi ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ++ ++ hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" ++ archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" ++ else ++ if test "$host_cpu" = ia64; then ++ hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib' ++ allow_undefined_flag_GCJ="-z nodefs" ++ archive_expsym_cmds_GCJ="\$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" ++ else ++ # Determine the default libpath from the value encoded in an empty executable. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ++lt_aix_libpath_sed=' ++ /Import File Strings/,/^$/ { ++ /^0/ { ++ s/^0 *\(.*\)$/\1/ ++ p ++ } ++ }' ++aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++# Check for a 64-bit object if we didn't find anything. ++if test -z "$aix_libpath"; then ++ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++fi ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ++ ++ hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" ++ # Warning - without using the other run time loading flags, ++ # -berok will link without error, but may produce a broken library. ++ no_undefined_flag_GCJ=' ${wl}-bernotok' ++ allow_undefined_flag_GCJ=' ${wl}-berok' ++ # Exported symbols can be pulled into shared objects from archives ++ whole_archive_flag_spec_GCJ='$convenience' ++ archive_cmds_need_lc_GCJ=yes ++ # This is similar to how AIX traditionally builds its shared libraries. ++ archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' ++ fi ++ fi ++ ;; ++ ++ amigaos*) ++ archive_cmds_GCJ='$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)' ++ hardcode_libdir_flag_spec_GCJ='-L$libdir' ++ hardcode_minus_L_GCJ=yes ++ # see comment about different semantics on the GNU ld section ++ ld_shlibs_GCJ=no ++ ;; ++ ++ bsdi[45]*) ++ export_dynamic_flag_spec_GCJ=-rdynamic ++ ;; ++ ++ cygwin* | mingw* | pw32*) ++ # When not using gcc, we currently assume that we are using ++ # Microsoft Visual C++. ++ # hardcode_libdir_flag_spec is actually meaningless, as there is ++ # no search path for DLLs. ++ hardcode_libdir_flag_spec_GCJ=' ' ++ allow_undefined_flag_GCJ=unsupported ++ # Tell ltmain to make .lib files, not .a files. ++ libext=lib ++ # Tell ltmain to make .dll files, not .so files. ++ shrext_cmds=".dll" ++ # FIXME: Setting linknames here is a bad hack. ++ archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' ++ # The linker will automatically build a .lib file if we build a DLL. ++ old_archive_From_new_cmds_GCJ='true' ++ # FIXME: Should let the user specify the lib program. ++ old_archive_cmds_GCJ='lib -OUT:$oldlib$oldobjs$old_deplibs' ++ fix_srcfile_path_GCJ='`cygpath -w "$srcfile"`' ++ enable_shared_with_static_runtimes_GCJ=yes ++ ;; ++ ++ darwin* | rhapsody*) ++ case $host_os in ++ rhapsody* | darwin1.[012]) ++ allow_undefined_flag_GCJ='${wl}-undefined ${wl}suppress' ++ ;; ++ *) # Darwin 1.3 on ++ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then ++ allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ++ else ++ case ${MACOSX_DEPLOYMENT_TARGET} in ++ 10.[012]) ++ allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ++ ;; ++ 10.*) ++ allow_undefined_flag_GCJ='${wl}-undefined ${wl}dynamic_lookup' ++ ;; ++ esac ++ fi ++ ;; ++ esac ++ archive_cmds_need_lc_GCJ=no ++ hardcode_direct_GCJ=no ++ hardcode_automatic_GCJ=yes ++ hardcode_shlibpath_var_GCJ=unsupported ++ whole_archive_flag_spec_GCJ='' ++ link_all_deplibs_GCJ=yes ++ if test "$GCC" = yes ; then ++ output_verbose_link_cmd='echo' ++ archive_cmds_GCJ='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' ++ module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' ++ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds ++ archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ else ++ case $cc_basename in ++ xlc*) ++ output_verbose_link_cmd='echo' ++ archive_cmds_GCJ='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' ++ module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' ++ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds ++ archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ ;; ++ *) ++ ld_shlibs_GCJ=no ++ ;; ++ esac ++ fi ++ ;; ++ ++ dgux*) ++ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_libdir_flag_spec_GCJ='-L$libdir' ++ hardcode_shlibpath_var_GCJ=no ++ ;; ++ ++ freebsd1*) ++ ld_shlibs_GCJ=no ++ ;; ++ ++ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor ++ # support. Future versions do this automatically, but an explicit c++rt0.o ++ # does not break anything, and helps significantly (at the cost of a little ++ # extra space). ++ freebsd2.2*) ++ archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' ++ hardcode_libdir_flag_spec_GCJ='-R$libdir' ++ hardcode_direct_GCJ=yes ++ hardcode_shlibpath_var_GCJ=no ++ ;; ++ ++ # Unfortunately, older versions of FreeBSD 2 do not have this feature. ++ freebsd2*) ++ archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_direct_GCJ=yes ++ hardcode_minus_L_GCJ=yes ++ hardcode_shlibpath_var_GCJ=no ++ ;; ++ ++ # FreeBSD 3 and greater uses gcc -shared to do shared libraries. ++ freebsd* | dragonfly*) ++ archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' ++ hardcode_libdir_flag_spec_GCJ='-R$libdir' ++ hardcode_direct_GCJ=yes ++ hardcode_shlibpath_var_GCJ=no ++ ;; ++ ++ hpux9*) ++ if test "$GCC" = yes; then ++ archive_cmds_GCJ='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ++ else ++ archive_cmds_GCJ='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ++ fi ++ hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' ++ hardcode_libdir_separator_GCJ=: ++ hardcode_direct_GCJ=yes ++ ++ # hardcode_minus_L: Not really in the search PATH, ++ # but as the default location of the library. ++ hardcode_minus_L_GCJ=yes ++ export_dynamic_flag_spec_GCJ='${wl}-E' ++ ;; ++ ++ hpux10*) ++ if test "$GCC" = yes -a "$with_gnu_ld" = no; then ++ archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ++ fi ++ if test "$with_gnu_ld" = no; then ++ hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' ++ hardcode_libdir_separator_GCJ=: ++ ++ hardcode_direct_GCJ=yes ++ export_dynamic_flag_spec_GCJ='${wl}-E' ++ ++ # hardcode_minus_L: Not really in the search PATH, ++ # but as the default location of the library. ++ hardcode_minus_L_GCJ=yes ++ fi ++ ;; ++ ++ hpux11*) ++ if test "$GCC" = yes -a "$with_gnu_ld" = no; then ++ case $host_cpu in ++ hppa*64*) ++ archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ ia64*) ++ archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ *) ++ archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ esac ++ else ++ case $host_cpu in ++ hppa*64*) ++ archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ ia64*) ++ archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ *) ++ archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ esac ++ fi ++ if test "$with_gnu_ld" = no; then ++ hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' ++ hardcode_libdir_separator_GCJ=: ++ ++ case $host_cpu in ++ hppa*64*|ia64*) ++ hardcode_libdir_flag_spec_ld_GCJ='+b $libdir' ++ hardcode_direct_GCJ=no ++ hardcode_shlibpath_var_GCJ=no ++ ;; ++ *) ++ hardcode_direct_GCJ=yes ++ export_dynamic_flag_spec_GCJ='${wl}-E' ++ ++ # hardcode_minus_L: Not really in the search PATH, ++ # but as the default location of the library. ++ hardcode_minus_L_GCJ=yes ++ ;; ++ esac ++ fi ++ ;; ++ ++ irix5* | irix6* | nonstopux*) ++ if test "$GCC" = yes; then ++ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ else ++ archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' ++ hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir' ++ fi ++ hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' ++ hardcode_libdir_separator_GCJ=: ++ link_all_deplibs_GCJ=yes ++ ;; ++ ++ netbsd* | netbsdelf*-gnu) ++ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then ++ archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out ++ else ++ archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF ++ fi ++ hardcode_libdir_flag_spec_GCJ='-R$libdir' ++ hardcode_direct_GCJ=yes ++ hardcode_shlibpath_var_GCJ=no ++ ;; ++ ++ newsos6) ++ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_direct_GCJ=yes ++ hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' ++ hardcode_libdir_separator_GCJ=: ++ hardcode_shlibpath_var_GCJ=no ++ ;; ++ ++ openbsd*) ++ if test -f /usr/libexec/ld.so; then ++ hardcode_direct_GCJ=yes ++ hardcode_shlibpath_var_GCJ=no ++ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then ++ archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' ++ hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' ++ export_dynamic_flag_spec_GCJ='${wl}-E' ++ else ++ case $host_os in ++ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) ++ archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_libdir_flag_spec_GCJ='-R$libdir' ++ ;; ++ *) ++ archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ++ hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' ++ ;; ++ esac ++ fi ++ else ++ ld_shlibs_GCJ=no ++ fi ++ ;; ++ ++ os2*) ++ hardcode_libdir_flag_spec_GCJ='-L$libdir' ++ hardcode_minus_L_GCJ=yes ++ allow_undefined_flag_GCJ=unsupported ++ archive_cmds_GCJ='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' ++ old_archive_From_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ++ ;; ++ ++ osf3*) ++ if test "$GCC" = yes; then ++ allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' ++ archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ else ++ allow_undefined_flag_GCJ=' -expect_unresolved \*' ++ archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' ++ fi ++ hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' ++ hardcode_libdir_separator_GCJ=: ++ ;; ++ ++ osf4* | osf5*) # as osf3* with the addition of -msym flag ++ if test "$GCC" = yes; then ++ allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' ++ archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' ++ else ++ allow_undefined_flag_GCJ=' -expect_unresolved \*' ++ archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' ++ archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ ++ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' ++ ++ # Both c and cxx compiler support -rpath directly ++ hardcode_libdir_flag_spec_GCJ='-rpath $libdir' ++ fi ++ hardcode_libdir_separator_GCJ=: ++ ;; ++ ++ solaris*) ++ no_undefined_flag_GCJ=' -z text' ++ if test "$GCC" = yes; then ++ wlarc='${wl}' ++ archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ ++ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' ++ else ++ wlarc='' ++ archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ ++ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' ++ fi ++ hardcode_libdir_flag_spec_GCJ='-R$libdir' ++ hardcode_shlibpath_var_GCJ=no ++ case $host_os in ++ solaris2.[0-5] | solaris2.[0-5].*) ;; ++ *) ++ # The compiler driver will combine and reorder linker options, ++ # but understands `-z linker_flag'. GCC discards it without `$wl', ++ # but is careful enough not to reorder. ++ # Supported since Solaris 2.6 (maybe 2.5.1?) ++ if test "$GCC" = yes; then ++ whole_archive_flag_spec_GCJ='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ++ else ++ whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' ++ fi ++ ;; ++ esac ++ link_all_deplibs_GCJ=yes ++ ;; ++ ++ sunos4*) ++ if test "x$host_vendor" = xsequent; then ++ # Use $CC to link under sequent, because it throws in some extra .o ++ # files that make .init and .fini sections work. ++ archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' ++ fi ++ hardcode_libdir_flag_spec_GCJ='-L$libdir' ++ hardcode_direct_GCJ=yes ++ hardcode_minus_L_GCJ=yes ++ hardcode_shlibpath_var_GCJ=no ++ ;; ++ ++ sysv4) ++ case $host_vendor in ++ sni) ++ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_direct_GCJ=yes # is this really true??? ++ ;; ++ siemens) ++ ## LD is ld it makes a PLAMLIB ++ ## CC just makes a GrossModule. ++ archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' ++ reload_cmds_GCJ='$CC -r -o $output$reload_objs' ++ hardcode_direct_GCJ=no ++ ;; ++ motorola) ++ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie ++ ;; ++ esac ++ runpath_var='LD_RUN_PATH' ++ hardcode_shlibpath_var_GCJ=no ++ ;; ++ ++ sysv4.3*) ++ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_shlibpath_var_GCJ=no ++ export_dynamic_flag_spec_GCJ='-Bexport' ++ ;; ++ ++ sysv4*MP*) ++ if test -d /usr/nec; then ++ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_shlibpath_var_GCJ=no ++ runpath_var=LD_RUN_PATH ++ hardcode_runpath_var=yes ++ ld_shlibs_GCJ=yes ++ fi ++ ;; ++ ++ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) ++ no_undefined_flag_GCJ='${wl}-z,text' ++ archive_cmds_need_lc_GCJ=no ++ hardcode_shlibpath_var_GCJ=no ++ runpath_var='LD_RUN_PATH' ++ ++ if test "$GCC" = yes; then ++ archive_cmds_GCJ='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ archive_cmds_GCJ='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ fi ++ ;; ++ ++ sysv5* | sco3.2v5* | sco5v6*) ++ # Note: We can NOT use -z defs as we might desire, because we do not ++ # link with -lc, and that would cause any symbols used from libc to ++ # always be unresolved, which means just about no library would ++ # ever link correctly. If we're not using GNU ld we use -z text ++ # though, which does catch some bad symbols but isn't as heavy-handed ++ # as -z defs. ++ no_undefined_flag_GCJ='${wl}-z,text' ++ allow_undefined_flag_GCJ='${wl}-z,nodefs' ++ archive_cmds_need_lc_GCJ=no ++ hardcode_shlibpath_var_GCJ=no ++ hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' ++ hardcode_libdir_separator_GCJ=':' ++ link_all_deplibs_GCJ=yes ++ export_dynamic_flag_spec_GCJ='${wl}-Bexport' ++ runpath_var='LD_RUN_PATH' ++ ++ if test "$GCC" = yes; then ++ archive_cmds_GCJ='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ archive_cmds_GCJ='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ fi ++ ;; ++ ++ uts4*) ++ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_libdir_flag_spec_GCJ='-L$libdir' ++ hardcode_shlibpath_var_GCJ=no ++ ;; ++ ++ *) ++ ld_shlibs_GCJ=no ++ ;; ++ esac ++ fi ++ ++{ echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5 ++echo "${ECHO_T}$ld_shlibs_GCJ" >&6; } ++test "$ld_shlibs_GCJ" = no && can_build_shared=no ++ ++# ++# Do we need to explicitly link libc? ++# ++case "x$archive_cmds_need_lc_GCJ" in ++x|xyes) ++ # Assume -lc should be added ++ archive_cmds_need_lc_GCJ=yes ++ ++ if test "$enable_shared" = yes && test "$GCC" = yes; then ++ case $archive_cmds_GCJ in ++ *'~'*) ++ # FIXME: we may have to deal with multi-command sequences. ++ ;; ++ '$CC '*) ++ # Test whether the compiler implicitly links with -lc since on some ++ # systems, -lgcc has to come before -lc. If gcc already passes -lc ++ # to ld, don't add -lc before -lgcc. ++ { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 ++echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } ++ $rm conftest* ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ ++ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ++ (eval $ac_compile) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } 2>conftest.err; then ++ soname=conftest ++ lib=conftest ++ libobjs=conftest.$ac_objext ++ deplibs= ++ wl=$lt_prog_compiler_wl_GCJ ++ pic_flag=$lt_prog_compiler_pic_GCJ ++ compiler_flags=-v ++ linker_flags=-v ++ verstring= ++ output_objdir=. ++ libname=conftest ++ lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ ++ allow_undefined_flag_GCJ= ++ if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 ++ (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } ++ then ++ archive_cmds_need_lc_GCJ=no ++ else ++ archive_cmds_need_lc_GCJ=yes ++ fi ++ allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag ++ else ++ cat conftest.err 1>&5 ++ fi ++ $rm conftest* ++ { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5 ++echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6; } ++ ;; ++ esac ++ fi ++ ;; ++esac ++ ++{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 ++echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } ++library_names_spec= ++libname_spec='lib$name' ++soname_spec= ++shrext_cmds=".so" ++postinstall_cmds= ++postuninstall_cmds= ++finish_cmds= ++finish_eval= ++shlibpath_var= ++shlibpath_overrides_runpath=unknown ++version_type=none ++dynamic_linker="$host_os ld.so" ++sys_lib_dlsearch_path_spec="/lib /usr/lib" ++ ++need_lib_prefix=unknown ++hardcode_into_libs=no ++ ++# when you set need_version to no, make sure it does not cause -set_version ++# flags to be left without arguments ++need_version=unknown ++ ++case $host_os in ++aix3*) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' ++ shlibpath_var=LIBPATH ++ ++ # AIX 3 has no versioning support, so we append a major version to the name. ++ soname_spec='${libname}${release}${shared_ext}$major' ++ ;; ++ ++aix4* | aix5*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ hardcode_into_libs=yes ++ if test "$host_cpu" = ia64; then ++ # AIX 5 supports IA64 ++ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' ++ shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with +@@ -5003,29 +17929,28 @@ + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) +- if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' +- echo ' yes ' +- echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then +- : +- else +- can_build_shared=no +- fi +- ;; ++ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' ++ echo ' yes ' ++ echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then ++ : ++ else ++ can_build_shared=no ++ fi ++ ;; + esac +- # AIX (on Power*) has no versioning support, so currently we can +- # not hardcode correct soname into executable. Probably we can +- # add versioning support to collect2, so additional links can +- # be useful in future. ++ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct ++ # soname into executable. Probably we can add versioning support to ++ # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' +- soname_spec='${libname}${release}.so$major' ++ soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi +@@ -5034,25 +17959,24 @@ + amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. +- finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $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' ++ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $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' + ;; + + beos*) +- library_names_spec='${libname}.so' ++ library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +-bsdi4*) ++bsdi[45]*) + version_type=linux + need_version=no +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' +- soname_spec='${libname}${release}.so$major' ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" +- export_dynamic_flag_spec=-rdynamic + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs +@@ -5060,29 +17984,56 @@ + + cygwin* | mingw* | pw32*) + version_type=windows ++ shrext_cmds=".dll" + need_version=no + need_lib_prefix=no ++ + case $GCC,$host_os in +- yes,cygwin*) ++ yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' +- soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll' +- postinstall_cmds='dlpath=`bash 2>&1 -c '\''. $dir/${file}i;echo \$dlname'\''`~ ++ # DLL is installed to $(libdir)/../bin by postinstall_cmds ++ postinstall_cmds='base_file=`basename \${file}`~ ++ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ +- $install_prog .libs/$dlname \$dldir/$dlname' +- postuninstall_cmds='dldll=`bash 2>&1 -c '\''. $file; echo \$dlname'\''`~ ++ $install_prog $dir/$dlname \$dldir/$dlname~ ++ chmod a+x \$dldir/$dlname' ++ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' ++ shlibpath_overrides_runpath=yes ++ ++ case $host_os in ++ cygwin*) ++ # Cygwin DLLs use 'cyg' prefix rather than 'lib' ++ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ++ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ++ ;; ++ mingw*) ++ # MinGW DLLs use traditional 'lib' prefix ++ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ++ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` ++ if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then ++ # It is most probably a Windows format PATH printed by ++ # mingw gcc, but we are running on Cygwin. Gcc prints its search ++ # path with ; separators, and with drive letters. We can handle the ++ # drive letters (cygwin fileutils understands them), so leave them, ++ # especially as we might pass files found there to a mingw objdump, ++ # which wouldn't understand a cygwinified path. Ahh. ++ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` ++ else ++ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ++ fi ++ ;; ++ pw32*) ++ # pw32 DLLs use 'pw' prefix rather than 'lib' ++ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ++ ;; ++ esac + ;; +- yes,mingw*) +- library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll' +- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g"` +- ;; +- yes,pw32*) +- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | sed -e 's/./-/g'`${versuffix}.dll' +- ;; ++ + *) +- library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.lib' ++ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' +@@ -5095,30 +18046,48 @@ + version_type=darwin + need_lib_prefix=no + need_version=no +- # FIXME: Relying on posixy $() will cause problems for +- # cross-compilation, but unfortunately the echo tests do not +- # yet detect zsh echo's removal of \ escapes. +- library_names_spec='${libname}${release}${versuffix}.$(test .$module = .yes && echo so || echo dylib) ${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib) ${libname}.$(test .$module = .yes && echo so || echo dylib)' +- soname_spec='${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib)' ++ library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' ++ soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH ++ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' ++ ++ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ++ ;; ++ ++dgux*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH + ;; + + freebsd1*) + dynamic_linker=no + ;; + +-freebsd*) +- objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` ++freebsd* | dragonfly*) ++ # DragonFly does not have aout. When/if they implement a new ++ # versioning mechanism, adjust this. ++ if test -x /usr/bin/objformat; then ++ objformat=`/usr/bin/objformat` ++ else ++ case $host_os in ++ freebsd[123]*) objformat=aout ;; ++ *) objformat=elf ;; ++ esac ++ fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) +- library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix' ++ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac +@@ -5127,10 +18096,19 @@ + freebsd2*) + shlibpath_overrides_runpath=yes + ;; +- *) ++ freebsd3.[01]* | freebsdelf3.[01]*) ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ ;; ++ freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ ++ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; ++ *) # from 4.6 on, and DragonFly ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ ;; + esac + ;; + +@@ -5138,8 +18116,8 @@ + version_type=linux + need_lib_prefix=no + need_version=no +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so' +- soname_spec='${libname}${release}.so$major' ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; +@@ -5147,33 +18125,87 @@ + hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. +- dynamic_linker="$host_os dld.sl" + version_type=sunos + need_lib_prefix=no + need_version=no +- shlibpath_var=SHLIB_PATH +- shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH +- library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl' +- soname_spec='${libname}${release}.sl$major' ++ case $host_cpu in ++ ia64*) ++ shrext_cmds='.so' ++ hardcode_into_libs=yes ++ dynamic_linker="$host_os dld.so" ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ if test "X$HPUX_IA64_MODE" = X32; then ++ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" ++ else ++ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" ++ fi ++ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ++ ;; ++ hppa*64*) ++ shrext_cmds='.sl' ++ hardcode_into_libs=yes ++ dynamic_linker="$host_os dld.sl" ++ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH ++ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" ++ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ++ ;; ++ *) ++ shrext_cmds='.sl' ++ dynamic_linker="$host_os dld.sl" ++ shlibpath_var=SHLIB_PATH ++ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ ;; ++ esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +-irix5* | irix6*) +- version_type=irix ++interix[3-9]*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ ;; ++ ++irix5* | irix6* | nonstopux*) ++ case $host_os in ++ nonstopux*) version_type=nonstopux ;; ++ *) ++ if test "$lt_cv_prog_gnu_ld" = yes; then ++ version_type=linux ++ else ++ version_type=irix ++ fi ;; ++ esac + need_lib_prefix=no + need_version=no +- soname_spec='${libname}${release}.so$major' +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so $libname.so' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in +- irix5*) ++ irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD +- *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;; +- *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; +- *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;; ++ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") ++ libsuff= shlibsuff= libmagic=32-bit;; ++ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") ++ libsuff=32 shlibsuff=N32 libmagic=N32;; ++ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") ++ libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; +@@ -5182,20 +18214,21 @@ + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" ++ hardcode_into_libs=yes + ;; + + # No shared lib support for Linux oldld, aout, or coff. +-linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) ++linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + + # This must be Linux ELF. +-linux-gnu*) ++linux* | k*bsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' +- soname_spec='${libname}${release}.so$major' ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no +@@ -5204,6 +18237,12 @@ + # before this can be enabled. + hardcode_into_libs=yes + ++ # Append ld.so.conf contents to the search path ++ if test -f /etc/ld.so.conf; then ++ 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;/^$/d' | tr '\n' ' '` ++ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" ++ fi ++ + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, +@@ -5213,17 +18252,29 @@ + dynamic_linker='GNU/Linux ld.so' + ;; + ++netbsdelf*-gnu) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ dynamic_linker='NetBSD ld.elf_so' ++ ;; ++ + netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then +- library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so' +- soname_spec='${libname}${release}.so$major' ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH +@@ -5233,879 +18284,763 @@ + + newsos6) + version_type=linux +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ ;; ++ ++nto-qnx*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + + openbsd*) + version_type=sunos ++ sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no +- need_version=no ++ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. ++ case $host_os in ++ openbsd3.3 | openbsd3.3.*) need_version=yes ;; ++ *) need_version=no ;; ++ esac ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' ++ shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +- case "$host_os" in +- openbsd2.[89] | openbsd2.[89].*) +- shlibpath_overrides_runpath=no +- ;; +- *) +- shlibpath_overrides_runpath=yes +- ;; +- esac ++ case $host_os in ++ openbsd2.[89] | openbsd2.[89].*) ++ shlibpath_overrides_runpath=no ++ ;; ++ *) ++ shlibpath_overrides_runpath=yes ++ ;; ++ esac + else + shlibpath_overrides_runpath=yes + fi +- library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' +- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' +- shlibpath_var=LD_LIBRARY_PATH + ;; + + os2*) + libname_spec='$name' ++ shrext_cmds=".dll" + need_lib_prefix=no +- library_names_spec='$libname.dll $libname.a' ++ library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + + osf3* | osf4* | osf5*) + version_type=osf ++ need_lib_prefix=no + need_version=no +- soname_spec='${libname}${release}.so' +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +-sco3.2v5*) +- version_type=osf +- soname_spec='${libname}${release}.so$major' +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' ++rdos*) ++ dynamic_linker=no ++ ;; ++ ++solaris*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ # ldd complains unless libraries are executable ++ postinstall_cmds='chmod +x $lib' ++ ;; ++ ++sunos4*) ++ version_type=sunos ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' ++ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ if test "$with_gnu_ld" = yes; then ++ need_lib_prefix=no ++ fi ++ need_version=yes ++ ;; ++ ++sysv4 | sysv4.3*) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ case $host_vendor in ++ sni) ++ shlibpath_overrides_runpath=no ++ need_lib_prefix=no ++ export_dynamic_flag_spec='${wl}-Blargedynsym' ++ runpath_var=LD_RUN_PATH ++ ;; ++ siemens) ++ need_lib_prefix=no ++ ;; ++ motorola) ++ need_lib_prefix=no ++ need_version=no ++ shlibpath_overrides_runpath=no ++ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ++ ;; ++ esac ++ ;; ++ ++sysv4*MP*) ++ if test -d /usr/nec ;then ++ version_type=linux ++ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' ++ soname_spec='$libname${shared_ext}.$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ fi ++ ;; ++ ++sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) ++ version_type=freebsd-elf ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ hardcode_into_libs=yes ++ if test "$with_gnu_ld" = yes; then ++ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' ++ shlibpath_overrides_runpath=no ++ else ++ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' ++ shlibpath_overrides_runpath=yes ++ case $host_os in ++ sco3.2v5*) ++ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ++ ;; ++ esac ++ fi ++ sys_lib_dlsearch_path_spec='/usr/lib' ++ ;; ++ ++uts4*) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +-solaris*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' +- soname_spec='${libname}${release}.so$major' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- hardcode_into_libs=yes +- # ldd complains unless libraries are executable +- postinstall_cmds='chmod +x $lib' +- ;; ++*) ++ dynamic_linker=no ++ ;; ++esac ++{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5 ++echo "${ECHO_T}$dynamic_linker" >&6; } ++test "$dynamic_linker" = no && can_build_shared=no ++ ++variables_saved_for_relink="PATH $shlibpath_var $runpath_var" ++if test "$GCC" = yes; then ++ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" ++fi ++ ++{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 ++echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } ++hardcode_action_GCJ= ++if test -n "$hardcode_libdir_flag_spec_GCJ" || \ ++ test -n "$runpath_var_GCJ" || \ ++ test "X$hardcode_automatic_GCJ" = "Xyes" ; then ++ ++ # We can hardcode non-existant directories. ++ if test "$hardcode_direct_GCJ" != no && ++ # If the only mechanism to avoid hardcoding is shlibpath_var, we ++ # have to relink, otherwise we might link with an installed library ++ # when we should be linking with a yet-to-be-installed one ++ ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no && ++ test "$hardcode_minus_L_GCJ" != no; then ++ # Linking always hardcodes the temporary library directory. ++ hardcode_action_GCJ=relink ++ else ++ # We can link without hardcoding, and we can hardcode nonexisting dirs. ++ hardcode_action_GCJ=immediate ++ fi ++else ++ # We cannot hardcode anything, or else we can only hardcode existing ++ # directories. ++ hardcode_action_GCJ=unsupported ++fi ++{ echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5 ++echo "${ECHO_T}$hardcode_action_GCJ" >&6; } ++ ++if test "$hardcode_action_GCJ" = relink; then ++ # Fast installation is not supported ++ enable_fast_install=no ++elif test "$shlibpath_overrides_runpath" = yes || ++ test "$enable_shared" = no; then ++ # Fast installation is not necessary ++ enable_fast_install=needless ++fi ++ ++ ++# The else clause should only fire when bootstrapping the ++# libtool distribution, otherwise you forgot to ship ltmain.sh ++# with your package, and you will get complaints that there are ++# no rules to generate ltmain.sh. ++if test -f "$ltmain"; then ++ # See if we are running on zsh, and set the options which allow our commands through ++ # without removal of \ escapes. ++ if test -n "${ZSH_VERSION+set}" ; then ++ setopt NO_GLOB_SUBST ++ fi ++ # Now quote all the things that may contain metacharacters while being ++ # careful not to overquote the AC_SUBSTed values. We take copies of the ++ # variables and quote the copies for generation of the libtool script. ++ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ ++ SED SHELL STRIP \ ++ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ ++ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ ++ deplibs_check_method reload_flag reload_cmds need_locks \ ++ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ ++ lt_cv_sys_global_symbol_to_c_name_address \ ++ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ ++ old_postinstall_cmds old_postuninstall_cmds \ ++ compiler_GCJ \ ++ CC_GCJ \ ++ LD_GCJ \ ++ lt_prog_compiler_wl_GCJ \ ++ lt_prog_compiler_pic_GCJ \ ++ lt_prog_compiler_static_GCJ \ ++ lt_prog_compiler_no_builtin_flag_GCJ \ ++ export_dynamic_flag_spec_GCJ \ ++ thread_safe_flag_spec_GCJ \ ++ whole_archive_flag_spec_GCJ \ ++ enable_shared_with_static_runtimes_GCJ \ ++ old_archive_cmds_GCJ \ ++ old_archive_from_new_cmds_GCJ \ ++ predep_objects_GCJ \ ++ postdep_objects_GCJ \ ++ predeps_GCJ \ ++ postdeps_GCJ \ ++ compiler_lib_search_path_GCJ \ ++ archive_cmds_GCJ \ ++ archive_expsym_cmds_GCJ \ ++ postinstall_cmds_GCJ \ ++ postuninstall_cmds_GCJ \ ++ old_archive_from_expsyms_cmds_GCJ \ ++ allow_undefined_flag_GCJ \ ++ no_undefined_flag_GCJ \ ++ export_symbols_cmds_GCJ \ ++ hardcode_libdir_flag_spec_GCJ \ ++ hardcode_libdir_flag_spec_ld_GCJ \ ++ hardcode_libdir_separator_GCJ \ ++ hardcode_automatic_GCJ \ ++ module_cmds_GCJ \ ++ module_expsym_cmds_GCJ \ ++ lt_cv_prog_compiler_c_o_GCJ \ ++ fix_srcfile_path_GCJ \ ++ exclude_expsyms_GCJ \ ++ include_expsyms_GCJ; do ++ ++ case $var in ++ old_archive_cmds_GCJ | \ ++ old_archive_from_new_cmds_GCJ | \ ++ archive_cmds_GCJ | \ ++ archive_expsym_cmds_GCJ | \ ++ module_cmds_GCJ | \ ++ module_expsym_cmds_GCJ | \ ++ old_archive_from_expsyms_cmds_GCJ | \ ++ export_symbols_cmds_GCJ | \ ++ extract_expsyms_cmds | reload_cmds | finish_cmds | \ ++ postinstall_cmds | postuninstall_cmds | \ ++ old_postinstall_cmds | old_postuninstall_cmds | \ ++ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) ++ # Double-quote double-evaled strings. ++ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ++ ;; ++ *) ++ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ++ ;; ++ esac ++ done ++ ++ case $lt_echo in ++ *'\$0 --fallback-echo"') ++ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ++ ;; ++ esac ++ ++cfgfile="$ofile" ++ ++ cat <<__EOF__ >> "$cfgfile" ++# ### BEGIN LIBTOOL TAG CONFIG: $tagname ++ ++# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: ++ ++# Shell to use when invoking shell scripts. ++SHELL=$lt_SHELL ++ ++# Whether or not to build shared libraries. ++build_libtool_libs=$enable_shared ++ ++# Whether or not to build static libraries. ++build_old_libs=$enable_static ++ ++# Whether or not to add -lc for building shared libraries. ++build_libtool_need_lc=$archive_cmds_need_lc_GCJ ++ ++# Whether or not to disallow shared libs when runtime libs are static ++allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_GCJ ++ ++# Whether or not to optimize for fast installation. ++fast_install=$enable_fast_install ++ ++# The host system. ++host_alias=$host_alias ++host=$host ++host_os=$host_os ++ ++# The build system. ++build_alias=$build_alias ++build=$build ++build_os=$build_os ++ ++# An echo program that does not interpret backslashes. ++echo=$lt_echo ++ ++# The archiver. ++AR=$lt_AR ++AR_FLAGS=$lt_AR_FLAGS ++ ++# A C compiler. ++LTCC=$lt_LTCC ++ ++# LTCC compiler flags. ++LTCFLAGS=$lt_LTCFLAGS ++ ++# A language-specific compiler. ++CC=$lt_compiler_GCJ ++ ++# Is the compiler the GNU C compiler? ++with_gcc=$GCC_GCJ ++ ++# An ERE matcher. ++EGREP=$lt_EGREP ++ ++# The linker used to build libraries. ++LD=$lt_LD_GCJ ++ ++# Whether we need hard or soft links. ++LN_S=$lt_LN_S ++ ++# A BSD-compatible nm program. ++NM=$lt_NM ++ ++# A symbol stripping program ++STRIP=$lt_STRIP ++ ++# Used to examine libraries when file_magic_cmd begins "file" ++MAGIC_CMD=$MAGIC_CMD ++ ++# Used on cygwin: DLL creation program. ++DLLTOOL="$DLLTOOL" ++ ++# Used on cygwin: object dumper. ++OBJDUMP="$OBJDUMP" ++ ++# Used on cygwin: assembler. ++AS="$AS" ++ ++# The name of the directory that contains temporary libtool files. ++objdir=$objdir ++ ++# How to create reloadable object files. ++reload_flag=$lt_reload_flag ++reload_cmds=$lt_reload_cmds ++ ++# How to pass a linker flag through the compiler. ++wl=$lt_lt_prog_compiler_wl_GCJ ++ ++# Object file suffix (normally "o"). ++objext="$ac_objext" ++ ++# Old archive suffix (normally "a"). ++libext="$libext" ++ ++# Shared library suffix (normally ".so"). ++shrext_cmds='$shrext_cmds' ++ ++# Executable file suffix (normally ""). ++exeext="$exeext" ++ ++# Additional compiler flags for building library objects. ++pic_flag=$lt_lt_prog_compiler_pic_GCJ ++pic_mode=$pic_mode ++ ++# What is the maximum length of a command? ++max_cmd_len=$lt_cv_sys_max_cmd_len ++ ++# Does compiler simultaneously support -c and -o options? ++compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ ++ ++# Must we lock files when doing compilation? ++need_locks=$lt_need_locks ++ ++# Do we need the lib prefix for modules? ++need_lib_prefix=$need_lib_prefix ++ ++# Do we need a version for libraries? ++need_version=$need_version ++ ++# Whether dlopen is supported. ++dlopen_support=$enable_dlopen + +-sunos4*) +- version_type=sunos +- library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' +- finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- if test "$with_gnu_ld" = yes; then +- need_lib_prefix=no +- fi +- need_version=yes +- ;; ++# Whether dlopen of programs is supported. ++dlopen_self=$enable_dlopen_self + +-sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) +- version_type=linux +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' +- soname_spec='${libname}${release}.so$major' +- shlibpath_var=LD_LIBRARY_PATH +- case $host_vendor in +- sni) +- shlibpath_overrides_runpath=no +- ;; +- motorola) +- need_lib_prefix=no +- need_version=no +- shlibpath_overrides_runpath=no +- sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' +- ;; +- esac +- ;; ++# Whether dlopen of statically linked programs is supported. ++dlopen_self_static=$enable_dlopen_self_static + +-uts4*) +- version_type=linux +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' +- soname_spec='${libname}${release}.so$major' +- shlibpath_var=LD_LIBRARY_PATH +- ;; ++# Compiler flag to prevent dynamic linking. ++link_static_flag=$lt_lt_prog_compiler_static_GCJ + +-dgux*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' +- soname_spec='${libname}${release}.so$major' +- shlibpath_var=LD_LIBRARY_PATH +- ;; ++# Compiler flag to turn off builtin functions. ++no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_GCJ + +-sysv4*MP*) +- if test -d /usr/nec ;then +- version_type=linux +- library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so' +- soname_spec='$libname.so.$major' +- shlibpath_var=LD_LIBRARY_PATH +- fi +- ;; ++# Compiler flag to allow reflexive dlopens. ++export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_GCJ + +-*) +- dynamic_linker=no +- ;; +-esac +-echo "$as_me:5359: result: $dynamic_linker" >&5 +-echo "${ECHO_T}$dynamic_linker" >&6 +-test "$dynamic_linker" = no && can_build_shared=no ++# Compiler flag to generate shared objects directly from archives. ++whole_archive_flag_spec=$lt_whole_archive_flag_spec_GCJ + +-# Report the final consequences. +-echo "$as_me:5364: checking if libtool supports shared libraries" >&5 +-echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 +-echo "$as_me:5366: result: $can_build_shared" >&5 +-echo "${ECHO_T}$can_build_shared" >&6 ++# Compiler flag to generate thread-safe objects. ++thread_safe_flag_spec=$lt_thread_safe_flag_spec_GCJ + +-echo "$as_me:5369: checking whether to build shared libraries" >&5 +-echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6 +-test "$can_build_shared" = "no" && enable_shared=no ++# Library versioning type. ++version_type=$version_type + +-# On AIX, shared libraries and static libraries use the same namespace, and +-# are all built from PIC. +-case "$host_os" in +-aix3*) +- test "$enable_shared" = yes && enable_static=no +- if test -n "$RANLIB"; then +- archive_cmds="$archive_cmds~\$RANLIB \$lib" +- postinstall_cmds='$RANLIB $lib' +- fi +- ;; ++# Format of library name prefix. ++libname_spec=$lt_libname_spec + +-aix4*) +- if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then +- test "$enable_shared" = yes && enable_static=no +- fi +- ;; +-esac +-echo "$as_me:5390: result: $enable_shared" >&5 +-echo "${ECHO_T}$enable_shared" >&6 ++# List of archive names. First name is the real one, the rest are links. ++# The last name is the one that the linker finds with -lNAME. ++library_names_spec=$lt_library_names_spec + +-echo "$as_me:5393: checking whether to build static libraries" >&5 +-echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 +-# Make sure either enable_shared or enable_static is yes. +-test "$enable_shared" = yes || enable_static=yes +-echo "$as_me:5397: result: $enable_static" >&5 +-echo "${ECHO_T}$enable_static" >&6 ++# The coded name of the library, if different from the real name. ++soname_spec=$lt_soname_spec + +-if test "$hardcode_action" = relink; then +- # Fast installation is not supported +- enable_fast_install=no +-elif test "$shlibpath_overrides_runpath" = yes || +- test "$enable_shared" = no; then +- # Fast installation is not necessary +- enable_fast_install=needless +-fi ++# Commands used to build and install an old-style archive. ++RANLIB=$lt_RANLIB ++old_archive_cmds=$lt_old_archive_cmds_GCJ ++old_postinstall_cmds=$lt_old_postinstall_cmds ++old_postuninstall_cmds=$lt_old_postuninstall_cmds + +-variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +-if test "$GCC" = yes; then +- variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +-fi ++# Create an old-style archive from a shared archive. ++old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_GCJ + +-if test "x$enable_dlopen" != xyes; then +- enable_dlopen=unknown +- enable_dlopen_self=unknown +- enable_dlopen_self_static=unknown +-else +- lt_cv_dlopen=no +- lt_cv_dlopen_libs= ++# Create a temporary old-style archive to link instead of a shared archive. ++old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_GCJ + +- case $host_os in +- beos*) +- lt_cv_dlopen="load_add_on" +- lt_cv_dlopen_libs= +- lt_cv_dlopen_self=yes +- ;; ++# Commands used to build and install a shared archive. ++archive_cmds=$lt_archive_cmds_GCJ ++archive_expsym_cmds=$lt_archive_expsym_cmds_GCJ ++postinstall_cmds=$lt_postinstall_cmds ++postuninstall_cmds=$lt_postuninstall_cmds + +- cygwin* | mingw* | pw32*) +- lt_cv_dlopen="LoadLibrary" +- lt_cv_dlopen_libs= +- ;; ++# Commands used to build a loadable module (assumed same as above if empty) ++module_cmds=$lt_module_cmds_GCJ ++module_expsym_cmds=$lt_module_expsym_cmds_GCJ + +- *) +- echo "$as_me:5435: checking for shl_load" >&5 +-echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 +-if test "${ac_cv_func_shl_load+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-#line 5441 "configure" +-#include "confdefs.h" +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char shl_load (); below. */ +-#include +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char shl_load (); +-char (*f) (); ++# Commands to strip libraries. ++old_striplib=$lt_old_striplib ++striplib=$lt_striplib + +-int +-main () +-{ +-/* The GNU C library defines this for functions which it implements +- to always fail with ENOSYS. Some functions are actually named +- something starting with __ and the normal name is an alias. */ +-#if defined (__stub_shl_load) || defined (__stub___shl_load) +-choke me +-#else +-f = shl_load; +-#endif ++# Dependencies to place before the objects being linked to create a ++# shared library. ++predep_objects=$lt_predep_objects_GCJ ++ ++# Dependencies to place after the objects being linked to create a ++# shared library. ++postdep_objects=$lt_postdep_objects_GCJ ++ ++# Dependencies to place before the objects being linked to create a ++# shared library. ++predeps=$lt_predeps_GCJ ++ ++# Dependencies to place after the objects being linked to create a ++# shared library. ++postdeps=$lt_postdeps_GCJ ++ ++# The library search path used internally by the compiler when linking ++# a shared library. ++compiler_lib_search_path=$lt_compiler_lib_search_path_GCJ + +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:5472: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:5475: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:5478: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:5481: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_func_shl_load=yes +-else +- echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_cv_func_shl_load=no +-fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +-fi +-echo "$as_me:5491: result: $ac_cv_func_shl_load" >&5 +-echo "${ECHO_T}$ac_cv_func_shl_load" >&6 +-if test $ac_cv_func_shl_load = yes; then +- lt_cv_dlopen="shl_load" +-else +- echo "$as_me:5496: checking for shl_load in -ldld" >&5 +-echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 +-if test "${ac_cv_lib_dld_shl_load+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-ldld $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-#line 5504 "configure" +-#include "confdefs.h" ++# Method to check whether dependent libraries are shared objects. ++deplibs_check_method=$lt_deplibs_check_method + +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char shl_load (); +-int +-main () +-{ +-shl_load (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:5523: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:5526: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:5529: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:5532: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_dld_shl_load=yes +-else +- echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_cv_lib_dld_shl_load=no +-fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-echo "$as_me:5543: result: $ac_cv_lib_dld_shl_load" >&5 +-echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 +-if test $ac_cv_lib_dld_shl_load = yes; then +- lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" +-else +- echo "$as_me:5548: checking for dlopen" >&5 +-echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 +-if test "${ac_cv_func_dlopen+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-#line 5554 "configure" +-#include "confdefs.h" +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char dlopen (); below. */ +-#include +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char dlopen (); +-char (*f) (); ++# Command to use when deplibs_check_method == file_magic. ++file_magic_cmd=$lt_file_magic_cmd + +-int +-main () +-{ +-/* The GNU C library defines this for functions which it implements +- to always fail with ENOSYS. Some functions are actually named +- something starting with __ and the normal name is an alias. */ +-#if defined (__stub_dlopen) || defined (__stub___dlopen) +-choke me +-#else +-f = dlopen; +-#endif ++# Flag that allows shared libraries with undefined symbols to be built. ++allow_undefined_flag=$lt_allow_undefined_flag_GCJ + +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:5585: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:5588: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:5591: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:5594: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_func_dlopen=yes +-else +- echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_cv_func_dlopen=no +-fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +-fi +-echo "$as_me:5604: result: $ac_cv_func_dlopen" >&5 +-echo "${ECHO_T}$ac_cv_func_dlopen" >&6 +-if test $ac_cv_func_dlopen = yes; then +- lt_cv_dlopen="dlopen" +-else +- echo "$as_me:5609: checking for dlopen in -ldl" >&5 +-echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +-if test "${ac_cv_lib_dl_dlopen+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-ldl $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-#line 5617 "configure" +-#include "confdefs.h" ++# Flag that forces no undefined symbols. ++no_undefined_flag=$lt_no_undefined_flag_GCJ ++ ++# Commands used to finish a libtool library installation in a directory. ++finish_cmds=$lt_finish_cmds + +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char dlopen (); +-int +-main () +-{ +-dlopen (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:5636: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:5639: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:5642: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:5645: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_dl_dlopen=yes +-else +- echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_cv_lib_dl_dlopen=no +-fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-echo "$as_me:5656: result: $ac_cv_lib_dl_dlopen" >&5 +-echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +-if test $ac_cv_lib_dl_dlopen = yes; then +- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +-else +- echo "$as_me:5661: checking for dlopen in -lsvld" >&5 +-echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 +-if test "${ac_cv_lib_svld_dlopen+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-lsvld $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-#line 5669 "configure" +-#include "confdefs.h" ++# Same as above, but a single script fragment to be evaled but not shown. ++finish_eval=$lt_finish_eval + +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char dlopen (); +-int +-main () +-{ +-dlopen (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:5688: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:5691: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:5694: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:5697: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_svld_dlopen=yes +-else +- echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_cv_lib_svld_dlopen=no +-fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-echo "$as_me:5708: result: $ac_cv_lib_svld_dlopen" >&5 +-echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 +-if test $ac_cv_lib_svld_dlopen = yes; then +- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +-else +- echo "$as_me:5713: checking for dld_link in -ldld" >&5 +-echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 +-if test "${ac_cv_lib_dld_dld_link+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-ldld $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-#line 5721 "configure" +-#include "confdefs.h" ++# Take the output of nm and produce a listing of raw symbols and C names. ++global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char dld_link (); +-int +-main () +-{ +-dld_link (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:5740: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:5743: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:5746: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:5749: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_dld_dld_link=yes +-else +- echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_cv_lib_dld_dld_link=no +-fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-echo "$as_me:5760: result: $ac_cv_lib_dld_dld_link" >&5 +-echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 +-if test $ac_cv_lib_dld_dld_link = yes; then +- lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" +-fi ++# Transform the output of nm in a proper C declaration ++global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +-fi ++# Transform the output of nm in a C name address pair ++global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +-fi ++# This is the shared library runtime path variable. ++runpath_var=$runpath_var + +-fi ++# This is the shared library path variable. ++shlibpath_var=$shlibpath_var + +-fi ++# Is shlibpath searched before the hard-coded library search path? ++shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +-fi ++# How to hardcode a shared library path into an executable. ++hardcode_action=$hardcode_action_GCJ + +- ;; +- esac ++# Whether we should hardcode library paths into libraries. ++hardcode_into_libs=$hardcode_into_libs + +- if test "x$lt_cv_dlopen" != xno; then +- enable_dlopen=yes +- else +- enable_dlopen=no +- fi ++# Flag to hardcode \$libdir into a binary during linking. ++# This must work even if \$libdir does not exist. ++hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_GCJ + +- case $lt_cv_dlopen in +- dlopen) +- save_CPPFLAGS="$CPPFLAGS" +- test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" ++# If ld is used when linking, flag to hardcode \$libdir into ++# a binary during linking. This must work even if \$libdir does ++# not exist. ++hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_GCJ + +- save_LDFLAGS="$LDFLAGS" +- eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" ++# Whether we need a single -rpath flag with a separated argument. ++hardcode_libdir_separator=$lt_hardcode_libdir_separator_GCJ + +- save_LIBS="$LIBS" +- LIBS="$lt_cv_dlopen_libs $LIBS" ++# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the ++# resulting binary. ++hardcode_direct=$hardcode_direct_GCJ + +- echo "$as_me:5796: checking whether a program can dlopen itself" >&5 +-echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 +-if test "${lt_cv_dlopen_self+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test "$cross_compiling" = yes; then : +- lt_cv_dlopen_self=cross +-else +- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 +- lt_status=$lt_dlunknown +- cat > conftest.$ac_ext < +-#endif ++# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into ++# the resulting binary. ++hardcode_shlibpath_var=$hardcode_shlibpath_var_GCJ + +-#include ++# Set to yes if building a shared library automatically hardcodes DIR into the library ++# and all subsequent libraries and executables linked against it. ++hardcode_automatic=$hardcode_automatic_GCJ + +-#ifdef RTLD_GLOBAL +-# define LT_DLGLOBAL RTLD_GLOBAL +-#else +-# ifdef DL_GLOBAL +-# define LT_DLGLOBAL DL_GLOBAL +-# else +-# define LT_DLGLOBAL 0 +-# endif +-#endif ++# Variables whose values should be saved in libtool wrapper scripts and ++# restored at relink time. ++variables_saved_for_relink="$variables_saved_for_relink" + +-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we +- find out it does not work in some platform. */ +-#ifndef LT_DLLAZY_OR_NOW +-# ifdef RTLD_LAZY +-# define LT_DLLAZY_OR_NOW RTLD_LAZY +-# else +-# ifdef DL_LAZY +-# define LT_DLLAZY_OR_NOW DL_LAZY +-# else +-# ifdef RTLD_NOW +-# define LT_DLLAZY_OR_NOW RTLD_NOW +-# else +-# ifdef DL_NOW +-# define LT_DLLAZY_OR_NOW DL_NOW +-# else +-# define LT_DLLAZY_OR_NOW 0 +-# endif +-# endif +-# endif +-# endif +-#endif ++# Whether libtool must link a program against all its dependency libraries. ++link_all_deplibs=$link_all_deplibs_GCJ + +-#ifdef __cplusplus +-extern "C" void exit (int); +-#endif ++# Compile-time system search path for libraries ++sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +-void fnord() { int i=42;} +-int main () +-{ +- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); +- int status = $lt_dlunknown; ++# Run-time system search path for libraries ++sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +- if (self) +- { +- if (dlsym (self,"fnord")) status = $lt_dlno_uscore; +- else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; +- /* dlclose (self); */ +- } ++# Fix the shell variable \$srcfile for the compiler. ++fix_srcfile_path=$lt_fix_srcfile_path + +- exit (status); +-} +-EOF +- if { (eval echo "$as_me:5868: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:5871: \$? = $ac_status" >&5 +- (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then +- (./conftest; exit; ) 2>/dev/null +- lt_status=$? +- case x$lt_status in +- x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; +- x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; +- x$lt_unknown|x*) lt_cv_dlopen_self=no ;; +- esac +- else : +- # compilation failed +- lt_cv_dlopen_self=no ++# Set to yes if exported symbols are required. ++always_export_symbols=$always_export_symbols_GCJ ++ ++# The commands to list exported symbols. ++export_symbols_cmds=$lt_export_symbols_cmds_GCJ ++ ++# The commands to extract the exported symbol list from a shared archive. ++extract_expsyms_cmds=$lt_extract_expsyms_cmds ++ ++# Symbols that should not be listed in the preloaded symbols. ++exclude_expsyms=$lt_exclude_expsyms_GCJ ++ ++# Symbols that must always be exported. ++include_expsyms=$lt_include_expsyms_GCJ ++ ++# ### END LIBTOOL TAG CONFIG: $tagname ++ ++__EOF__ ++ ++ ++else ++ # If there is no Makefile yet, we rely on a make rule to execute ++ # `config.status --recheck' to rerun these tests and create the ++ # libtool script then. ++ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` ++ if test -f "$ltmain_in"; then ++ test -f Makefile && make "$ltmain" + fi + fi +-rm -fr conftest* + +-fi +-echo "$as_me:5888: result: $lt_cv_dlopen_self" >&5 +-echo "${ECHO_T}$lt_cv_dlopen_self" >&6 + +- if test "x$lt_cv_dlopen_self" = xyes; then +- LDFLAGS="$LDFLAGS $link_static_flag" +- echo "$as_me:5893: checking whether a statically linked program can dlopen itself" >&5 +-echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 +-if test "${lt_cv_dlopen_self_static+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test "$cross_compiling" = yes; then : +- lt_cv_dlopen_self_static=cross +-else +- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 +- lt_status=$lt_dlunknown +- cat > conftest.$ac_ext < +-#endif ++CC="$lt_save_CC" ++ ++ else ++ tagname="" ++ fi ++ ;; + +-#include ++ RC) + +-#ifdef RTLD_GLOBAL +-# define LT_DLGLOBAL RTLD_GLOBAL +-#else +-# ifdef DL_GLOBAL +-# define LT_DLGLOBAL DL_GLOBAL +-# else +-# define LT_DLGLOBAL 0 +-# endif +-#endif + +-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we +- find out it does not work in some platform. */ +-#ifndef LT_DLLAZY_OR_NOW +-# ifdef RTLD_LAZY +-# define LT_DLLAZY_OR_NOW RTLD_LAZY +-# else +-# ifdef DL_LAZY +-# define LT_DLLAZY_OR_NOW DL_LAZY +-# else +-# ifdef RTLD_NOW +-# define LT_DLLAZY_OR_NOW RTLD_NOW +-# else +-# ifdef DL_NOW +-# define LT_DLLAZY_OR_NOW DL_NOW +-# else +-# define LT_DLLAZY_OR_NOW 0 +-# endif +-# endif +-# endif +-# endif +-#endif ++# Source file extension for RC test sources. ++ac_ext=rc + +-#ifdef __cplusplus +-extern "C" void exit (int); +-#endif ++# Object file extension for compiled RC test sources. ++objext=o ++objext_RC=$objext + +-void fnord() { int i=42;} +-int main () +-{ +- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); +- int status = $lt_dlunknown; ++# Code to be used in simple compile tests ++lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' + +- if (self) +- { +- if (dlsym (self,"fnord")) status = $lt_dlno_uscore; +- else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; +- /* dlclose (self); */ +- } ++# Code to be used in simple link tests ++lt_simple_link_test_code="$lt_simple_compile_test_code" + +- exit (status); +-} +-EOF +- if { (eval echo "$as_me:5965: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:5968: \$? = $ac_status" >&5 +- (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then +- (./conftest; exit; ) 2>/dev/null +- lt_status=$? +- case x$lt_status in +- x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; +- x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; +- x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; +- esac +- else : +- # compilation failed +- lt_cv_dlopen_self_static=no +- fi +-fi +-rm -fr conftest* ++# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +-fi +-echo "$as_me:5985: result: $lt_cv_dlopen_self_static" >&5 +-echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 +- fi ++# If no C compiler was specified, use CC. ++LTCC=${LTCC-"$CC"} + +- CPPFLAGS="$save_CPPFLAGS" +- LDFLAGS="$save_LDFLAGS" +- LIBS="$save_LIBS" +- ;; +- esac ++# If no C compiler flags were specified, use CFLAGS. ++LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +- case $lt_cv_dlopen_self in +- yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; +- *) enable_dlopen_self=unknown ;; +- esac ++# Allow CC to be a program name with arguments. ++compiler=$CC + +- case $lt_cv_dlopen_self_static in +- yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; +- *) enable_dlopen_self_static=unknown ;; +- esac +-fi + +-if test "$enable_shared" = yes && test "$GCC" = yes; then +- case $archive_cmds in +- *'~'*) +- # FIXME: we may have to deal with multi-command sequences. +- ;; +- '$CC '*) +- # Test whether the compiler implicitly links with -lc since on some +- # systems, -lgcc has to come before -lc. If gcc already passes -lc +- # to ld, don't add -lc before -lgcc. +- echo "$as_me:6015: checking whether -lc should be explicitly linked in" >&5 +-echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 +- if test "${lt_cv_archive_cmds_need_lc+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- $rm conftest* +- echo 'static int dummy;' > conftest.$ac_ext ++# save warnings/boilerplate of simple test code ++ac_outfile=conftest.$ac_objext ++echo "$lt_simple_compile_test_code" >conftest.$ac_ext ++eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err ++_lt_compiler_boilerplate=`cat conftest.err` ++$rm conftest* ++ ++ac_outfile=conftest.$ac_objext ++echo "$lt_simple_link_test_code" >conftest.$ac_ext ++eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err ++_lt_linker_boilerplate=`cat conftest.err` ++$rm conftest* + +- if { (eval echo "$as_me:6023: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:6026: \$? = $ac_status" >&5 +- (exit $ac_status); }; then +- soname=conftest +- lib=conftest +- libobjs=conftest.$ac_objext +- deplibs= +- wl=$lt_cv_prog_cc_wl +- compiler_flags=-v +- linker_flags=-v +- verstring= +- output_objdir=. +- libname=conftest +- save_allow_undefined_flag=$allow_undefined_flag +- allow_undefined_flag= +- if { (eval echo "$as_me:6040: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 +- (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 +- ac_status=$? +- echo "$as_me:6043: \$? = $ac_status" >&5 +- (exit $ac_status); } +- then +- lt_cv_archive_cmds_need_lc=no +- else +- lt_cv_archive_cmds_need_lc=yes +- fi +- allow_undefined_flag=$save_allow_undefined_flag +- else +- cat conftest.err 1>&5 +- fi +-fi + +- echo "$as_me:6056: result: $lt_cv_archive_cmds_need_lc" >&5 +-echo "${ECHO_T}$lt_cv_archive_cmds_need_lc" >&6 +- ;; ++# Allow CC to be a program name with arguments. ++lt_save_CC="$CC" ++CC=${RC-"windres"} ++compiler=$CC ++compiler_RC=$CC ++for cc_temp in $compiler""; do ++ case $cc_temp in ++ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; ++ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; ++ \-*) ;; ++ *) break;; + esac +-fi +-need_lc=${lt_cv_archive_cmds_need_lc-yes} ++done ++cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + +-# The second clause should only fire when bootstrapping the ++lt_cv_prog_compiler_c_o_RC=yes ++ ++# The else clause should only fire when bootstrapping the + # libtool distribution, otherwise you forgot to ship ltmain.sh + # with your package, and you will get complaints that there are + # no rules to generate ltmain.sh. + if test -f "$ltmain"; then +- : +-else +- # If there is no Makefile yet, we rely on a make rule to execute +- # `config.status --recheck' to rerun these tests and create the +- # libtool script then. +- test -f Makefile && make "$ltmain" +-fi +- +-if test -f "$ltmain"; then +- trap "$rm \"${ofile}T\"; exit 1" 1 2 15 +- $rm -f "${ofile}T" +- +- echo creating $ofile +- ++ # See if we are running on zsh, and set the options which allow our commands through ++ # without removal of \ escapes. ++ if test -n "${ZSH_VERSION+set}" ; then ++ setopt NO_GLOB_SUBST ++ fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. +- for var in echo old_CC old_CFLAGS \ +- AR AR_FLAGS CC LD LN_S NM SHELL \ +- reload_flag reload_cmds wl \ +- pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \ +- thread_safe_flag_spec whole_archive_flag_spec libname_spec \ +- library_names_spec soname_spec \ +- RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \ +- old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds \ +- postuninstall_cmds extract_expsyms_cmds old_archive_from_expsyms_cmds \ +- old_striplib striplib file_magic_cmd export_symbols_cmds \ +- deplibs_check_method allow_undefined_flag no_undefined_flag \ +- finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \ +- global_symbol_to_c_name_address \ +- hardcode_libdir_flag_spec hardcode_libdir_separator \ ++ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ ++ SED SHELL STRIP \ ++ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ ++ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ ++ deplibs_check_method reload_flag reload_cmds need_locks \ ++ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ ++ lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ +- compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do ++ old_postinstall_cmds old_postuninstall_cmds \ ++ compiler_RC \ ++ CC_RC \ ++ LD_RC \ ++ lt_prog_compiler_wl_RC \ ++ lt_prog_compiler_pic_RC \ ++ lt_prog_compiler_static_RC \ ++ lt_prog_compiler_no_builtin_flag_RC \ ++ export_dynamic_flag_spec_RC \ ++ thread_safe_flag_spec_RC \ ++ whole_archive_flag_spec_RC \ ++ enable_shared_with_static_runtimes_RC \ ++ old_archive_cmds_RC \ ++ old_archive_from_new_cmds_RC \ ++ predep_objects_RC \ ++ postdep_objects_RC \ ++ predeps_RC \ ++ postdeps_RC \ ++ compiler_lib_search_path_RC \ ++ archive_cmds_RC \ ++ archive_expsym_cmds_RC \ ++ postinstall_cmds_RC \ ++ postuninstall_cmds_RC \ ++ old_archive_from_expsyms_cmds_RC \ ++ allow_undefined_flag_RC \ ++ no_undefined_flag_RC \ ++ export_symbols_cmds_RC \ ++ hardcode_libdir_flag_spec_RC \ ++ hardcode_libdir_flag_spec_ld_RC \ ++ hardcode_libdir_separator_RC \ ++ hardcode_automatic_RC \ ++ module_cmds_RC \ ++ module_expsym_cmds_RC \ ++ lt_cv_prog_compiler_c_o_RC \ ++ fix_srcfile_path_RC \ ++ exclude_expsyms_RC \ ++ include_expsyms_RC; do + + case $var in +- reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \ +- old_postinstall_cmds | old_postuninstall_cmds | \ +- export_symbols_cmds | archive_cmds | archive_expsym_cmds | \ +- extract_expsyms_cmds | old_archive_from_expsyms_cmds | \ ++ old_archive_cmds_RC | \ ++ old_archive_from_new_cmds_RC | \ ++ archive_cmds_RC | \ ++ archive_expsym_cmds_RC | \ ++ module_cmds_RC | \ ++ module_expsym_cmds_RC | \ ++ old_archive_from_expsyms_cmds_RC | \ ++ export_symbols_cmds_RC | \ ++ extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ +- finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) ++ old_postinstall_cmds | old_postuninstall_cmds | \ ++ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; +@@ -6115,43 +19050,16 @@ + esac + done + +- cat <<__EOF__ > "${ofile}T" +-#! $SHELL +- +-# `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +-# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +-# NOTE: Changes made to this file will be lost: look at ltmain.sh. +-# +-# Copyright (C) 1996-2000 Free Software Foundation, Inc. +-# Originally by Gordon Matzigkeit , 1996 +-# +-# This program is free software; you can redistribute it and/or modify +-# it under the terms of the GNU General Public License as published by +-# the Free Software Foundation; either version 2 of the License, or +-# (at your option) any later version. +-# +-# This program is distributed in the hope that it will be useful, but +-# WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +-# General Public License for more details. +-# +-# You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +-# +-# As a special exception to the GNU General Public License, if you +-# distribute this file as part of a program that contains a +-# configuration script generated by Autoconf, you may include it under +-# the same distribution terms that you use for the rest of that program. +- +-# Sed that helps us avoid accidentally triggering echo(1) options like -n. +-Xsed="sed -e s/^X//" ++ case $lt_echo in ++ *'\$0 --fallback-echo"') ++ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ++ ;; ++ esac + +-# The HP-UX ksh and POSIX shell print the target directory to stdout +-# if CDPATH is set. +-if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi ++cfgfile="$ofile" + +-# ### BEGIN LIBTOOL CONFIG ++ cat <<__EOF__ >> "$cfgfile" ++# ### BEGIN LIBTOOL TAG CONFIG: $tagname + + # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +@@ -6165,7 +19073,10 @@ + build_old_libs=$enable_static + + # Whether or not to add -lc for building shared libraries. +-build_libtool_need_lc=$need_lc ++build_libtool_need_lc=$archive_cmds_need_lc_RC ++ ++# Whether or not to disallow shared libs when runtime libs are static ++allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC + + # Whether or not to optimize for fast installation. + fast_install=$enable_fast_install +@@ -6173,6 +19084,12 @@ + # The host system. + host_alias=$host_alias + host=$host ++host_os=$host_os ++ ++# The build system. ++build_alias=$build_alias ++build=$build ++build_os=$build_os + + # An echo program that does not interpret backslashes. + echo=$lt_echo +@@ -6181,14 +19098,23 @@ + AR=$lt_AR + AR_FLAGS=$lt_AR_FLAGS + +-# The default C compiler. +-CC=$lt_CC ++# A C compiler. ++LTCC=$lt_LTCC ++ ++# LTCC compiler flags. ++LTCFLAGS=$lt_LTCFLAGS ++ ++# A language-specific compiler. ++CC=$lt_compiler_RC + + # Is the compiler the GNU C compiler? +-with_gcc=$GCC ++with_gcc=$GCC_RC ++ ++# An ERE matcher. ++EGREP=$lt_EGREP + + # The linker used to build libraries. +-LD=$lt_LD ++LD=$lt_LD_RC + + # Whether we need hard or soft links. + LN_S=$lt_LN_S +@@ -6197,7 +19123,7 @@ + NM=$lt_NM + + # A symbol stripping program +-STRIP=$STRIP ++STRIP=$lt_STRIP + + # Used to examine libraries when file_magic_cmd begins "file" + MAGIC_CMD=$MAGIC_CMD +@@ -6219,7 +19145,7 @@ + reload_cmds=$lt_reload_cmds + + # How to pass a linker flag through the compiler. +-wl=$lt_wl ++wl=$lt_lt_prog_compiler_wl_RC + + # Object file suffix (normally "o"). + objext="$ac_objext" +@@ -6227,20 +19153,23 @@ + # Old archive suffix (normally "a"). + libext="$libext" + ++# Shared library suffix (normally ".so"). ++shrext_cmds='$shrext_cmds' ++ + # Executable file suffix (normally ""). + exeext="$exeext" + + # Additional compiler flags for building library objects. +-pic_flag=$lt_pic_flag ++pic_flag=$lt_lt_prog_compiler_pic_RC + pic_mode=$pic_mode + +-# Does compiler simultaneously support -c and -o options? +-compiler_c_o=$lt_compiler_c_o ++# What is the maximum length of a command? ++max_cmd_len=$lt_cv_sys_max_cmd_len + +-# Can we write directly to a .lo ? +-compiler_o_lo=$lt_compiler_o_lo ++# Does compiler simultaneously support -c and -o options? ++compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC + +-# Must we lock files when doing compilation ? ++# Must we lock files when doing compilation? + need_locks=$lt_need_locks + + # Do we need the lib prefix for modules? +@@ -6259,19 +19188,19 @@ + dlopen_self_static=$enable_dlopen_self_static + + # Compiler flag to prevent dynamic linking. +-link_static_flag=$lt_link_static_flag ++link_static_flag=$lt_lt_prog_compiler_static_RC + + # Compiler flag to turn off builtin functions. +-no_builtin_flag=$lt_no_builtin_flag ++no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC + + # Compiler flag to allow reflexive dlopens. +-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec ++export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC + + # Compiler flag to generate shared objects directly from archives. +-whole_archive_flag_spec=$lt_whole_archive_flag_spec ++whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC + + # Compiler flag to generate thread-safe objects. +-thread_safe_flag_spec=$lt_thread_safe_flag_spec ++thread_safe_flag_spec=$lt_thread_safe_flag_spec_RC + + # Library versioning type. + version_type=$version_type +@@ -6288,26 +19217,50 @@ + + # Commands used to build and install an old-style archive. + RANLIB=$lt_RANLIB +-old_archive_cmds=$lt_old_archive_cmds ++old_archive_cmds=$lt_old_archive_cmds_RC + old_postinstall_cmds=$lt_old_postinstall_cmds + old_postuninstall_cmds=$lt_old_postuninstall_cmds + + # Create an old-style archive from a shared archive. +-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds ++old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC + + # Create a temporary old-style archive to link instead of a shared archive. +-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds ++old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC + + # Commands used to build and install a shared archive. +-archive_cmds=$lt_archive_cmds +-archive_expsym_cmds=$lt_archive_expsym_cmds ++archive_cmds=$lt_archive_cmds_RC ++archive_expsym_cmds=$lt_archive_expsym_cmds_RC + postinstall_cmds=$lt_postinstall_cmds + postuninstall_cmds=$lt_postuninstall_cmds + ++# Commands used to build a loadable module (assumed same as above if empty) ++module_cmds=$lt_module_cmds_RC ++module_expsym_cmds=$lt_module_expsym_cmds_RC ++ + # Commands to strip libraries. + old_striplib=$lt_old_striplib + striplib=$lt_striplib + ++# Dependencies to place before the objects being linked to create a ++# shared library. ++predep_objects=$lt_predep_objects_RC ++ ++# Dependencies to place after the objects being linked to create a ++# shared library. ++postdep_objects=$lt_postdep_objects_RC ++ ++# Dependencies to place before the objects being linked to create a ++# shared library. ++predeps=$lt_predeps_RC ++ ++# Dependencies to place after the objects being linked to create a ++# shared library. ++postdeps=$lt_postdeps_RC ++ ++# The library search path used internally by the compiler when linking ++# a shared library. ++compiler_lib_search_path=$lt_compiler_lib_search_path_RC ++ + # Method to check whether dependent libraries are shared objects. + deplibs_check_method=$lt_deplibs_check_method + +@@ -6315,10 +19268,10 @@ + file_magic_cmd=$lt_file_magic_cmd + + # Flag that allows shared libraries with undefined symbols to be built. +-allow_undefined_flag=$lt_allow_undefined_flag ++allow_undefined_flag=$lt_allow_undefined_flag_RC + + # Flag that forces no undefined symbols. +-no_undefined_flag=$lt_no_undefined_flag ++no_undefined_flag=$lt_no_undefined_flag_RC + + # Commands used to finish a libtool library installation in a directory. + finish_cmds=$lt_finish_cmds +@@ -6327,13 +19280,13 @@ + finish_eval=$lt_finish_eval + + # Take the output of nm and produce a listing of raw symbols and C names. +-global_symbol_pipe=$lt_global_symbol_pipe ++global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + + # Transform the output of nm in a proper C declaration +-global_symbol_to_cdecl=$lt_global_symbol_to_cdecl ++global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + + # Transform the output of nm in a C name address pair +-global_symbol_to_c_name_address=$lt_global_symbol_to_c_name_address ++global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + + # This is the shared library runtime path variable. + runpath_var=$runpath_var +@@ -6345,36 +19298,45 @@ + shlibpath_overrides_runpath=$shlibpath_overrides_runpath + + # How to hardcode a shared library path into an executable. +-hardcode_action=$hardcode_action ++hardcode_action=$hardcode_action_RC + + # Whether we should hardcode library paths into libraries. + hardcode_into_libs=$hardcode_into_libs + + # Flag to hardcode \$libdir into a binary during linking. + # This must work even if \$libdir does not exist. +-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec ++hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC ++ ++# If ld is used when linking, flag to hardcode \$libdir into ++# a binary during linking. This must work even if \$libdir does ++# not exist. ++hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_RC + + # Whether we need a single -rpath flag with a separated argument. +-hardcode_libdir_separator=$lt_hardcode_libdir_separator ++hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC + +-# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the ++# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the + # resulting binary. +-hardcode_direct=$hardcode_direct ++hardcode_direct=$hardcode_direct_RC + + # Set to yes if using the -LDIR flag during linking hardcodes DIR into the + # resulting binary. +-hardcode_minus_L=$hardcode_minus_L ++hardcode_minus_L=$hardcode_minus_L_RC + + # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into + # the resulting binary. +-hardcode_shlibpath_var=$hardcode_shlibpath_var ++hardcode_shlibpath_var=$hardcode_shlibpath_var_RC ++ ++# Set to yes if building a shared library automatically hardcodes DIR into the library ++# and all subsequent libraries and executables linked against it. ++hardcode_automatic=$hardcode_automatic_RC + + # Variables whose values should be saved in libtool wrapper scripts and + # restored at relink time. + variables_saved_for_relink="$variables_saved_for_relink" + + # Whether libtool must link a program against all its dependency libraries. +-link_all_deplibs=$link_all_deplibs ++link_all_deplibs=$link_all_deplibs_RC + + # Compile-time system search path for libraries + sys_lib_search_path_spec=$lt_sys_lib_search_path_spec +@@ -6383,233 +19345,78 @@ + sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + + # Fix the shell variable \$srcfile for the compiler. +-fix_srcfile_path="$fix_srcfile_path" ++fix_srcfile_path=$lt_fix_srcfile_path + + # Set to yes if exported symbols are required. +-always_export_symbols=$always_export_symbols ++always_export_symbols=$always_export_symbols_RC + + # The commands to list exported symbols. +-export_symbols_cmds=$lt_export_symbols_cmds ++export_symbols_cmds=$lt_export_symbols_cmds_RC + + # The commands to extract the exported symbol list from a shared archive. + extract_expsyms_cmds=$lt_extract_expsyms_cmds + + # Symbols that should not be listed in the preloaded symbols. +-exclude_expsyms=$lt_exclude_expsyms ++exclude_expsyms=$lt_exclude_expsyms_RC + + # Symbols that must always be exported. +-include_expsyms=$lt_include_expsyms ++include_expsyms=$lt_include_expsyms_RC + +-# ### END LIBTOOL CONFIG ++# ### END LIBTOOL TAG CONFIG: $tagname + + __EOF__ + +- case $host_os in +- aix3*) +- cat <<\EOF >> "${ofile}T" + +-# AIX sometimes has problems with the GCC collect2 program. For some +-# reason, if we set the COLLECT_NAMES environment variable, the problems +-# vanish in a puff of smoke. +-if test "X${COLLECT_NAMES+set}" != Xset; then +- COLLECT_NAMES= +- export COLLECT_NAMES ++else ++ # If there is no Makefile yet, we rely on a make rule to execute ++ # `config.status --recheck' to rerun these tests and create the ++ # libtool script then. ++ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` ++ if test -f "$ltmain_in"; then ++ test -f Makefile && make "$ltmain" ++ fi + fi +-EOF +- ;; +- esac + +- case $host_os in +- cygwin* | mingw* | pw32* | os2*) +- cat <<'EOF' >> "${ofile}T" +- # This is a source program that is used to create dlls on Windows +- # Don't remove nor modify the starting and closing comments +-# /* ltdll.c starts here */ +-# #define WIN32_LEAN_AND_MEAN +-# #include +-# #undef WIN32_LEAN_AND_MEAN +-# #include +-# +-# #ifndef __CYGWIN__ +-# # ifdef __CYGWIN32__ +-# # define __CYGWIN__ __CYGWIN32__ +-# # endif +-# #endif +-# +-# #ifdef __cplusplus +-# extern "C" { +-# #endif +-# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); +-# #ifdef __cplusplus +-# } +-# #endif +-# +-# #ifdef __CYGWIN__ +-# #include +-# DECLARE_CYGWIN_DLL( DllMain ); +-# #endif +-# HINSTANCE __hDllInstance_base; +-# +-# BOOL APIENTRY +-# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) +-# { +-# __hDllInstance_base = hInst; +-# return TRUE; +-# } +-# /* ltdll.c ends here */ +- # This is a source program that is used to create import libraries +- # on Windows for dlls which lack them. Don't remove nor modify the +- # starting and closing comments +-# /* impgen.c starts here */ +-# /* Copyright (C) 1999-2000 Free Software Foundation, Inc. +-# +-# This file is part of GNU libtool. +-# +-# This program is free software; you can redistribute it and/or modify +-# it under the terms of the GNU General Public License as published by +-# the Free Software Foundation; either version 2 of the License, or +-# (at your option) any later version. +-# +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-# GNU General Public License for more details. +-# +-# You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +-# */ +-# +-# #include /* for printf() */ +-# #include /* for open(), lseek(), read() */ +-# #include /* for O_RDONLY, O_BINARY */ +-# #include /* for strdup() */ +-# +-# /* O_BINARY isn't required (or even defined sometimes) under Unix */ +-# #ifndef O_BINARY +-# #define O_BINARY 0 +-# #endif +-# +-# static unsigned int +-# pe_get16 (fd, offset) +-# int fd; +-# int offset; +-# { +-# unsigned char b[2]; +-# lseek (fd, offset, SEEK_SET); +-# read (fd, b, 2); +-# return b[0] + (b[1]<<8); +-# } +-# +-# static unsigned int +-# pe_get32 (fd, offset) +-# int fd; +-# int offset; +-# { +-# unsigned char b[4]; +-# lseek (fd, offset, SEEK_SET); +-# read (fd, b, 4); +-# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); +-# } +-# +-# static unsigned int +-# pe_as32 (ptr) +-# void *ptr; +-# { +-# unsigned char *b = ptr; +-# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); +-# } +-# +-# int +-# main (argc, argv) +-# int argc; +-# char *argv[]; +-# { +-# int dll; +-# unsigned long pe_header_offset, opthdr_ofs, num_entries, i; +-# unsigned long export_rva, export_size, nsections, secptr, expptr; +-# unsigned long name_rvas, nexp; +-# unsigned char *expdata, *erva; +-# char *filename, *dll_name; +-# +-# filename = argv[1]; +-# +-# dll = open(filename, O_RDONLY|O_BINARY); +-# if (dll < 1) +-# return 1; +-# +-# dll_name = filename; +-# +-# for (i=0; filename[i]; i++) +-# if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':') +-# dll_name = filename + i +1; +-# +-# pe_header_offset = pe_get32 (dll, 0x3c); +-# opthdr_ofs = pe_header_offset + 4 + 20; +-# num_entries = pe_get32 (dll, opthdr_ofs + 92); +-# +-# if (num_entries < 1) /* no exports */ +-# return 1; +-# +-# export_rva = pe_get32 (dll, opthdr_ofs + 96); +-# export_size = pe_get32 (dll, opthdr_ofs + 100); +-# nsections = pe_get16 (dll, pe_header_offset + 4 +2); +-# secptr = (pe_header_offset + 4 + 20 + +-# pe_get16 (dll, pe_header_offset + 4 + 16)); +-# +-# expptr = 0; +-# for (i = 0; i < nsections; i++) +-# { +-# char sname[8]; +-# unsigned long secptr1 = secptr + 40 * i; +-# unsigned long vaddr = pe_get32 (dll, secptr1 + 12); +-# unsigned long vsize = pe_get32 (dll, secptr1 + 16); +-# unsigned long fptr = pe_get32 (dll, secptr1 + 20); +-# lseek(dll, secptr1, SEEK_SET); +-# read(dll, sname, 8); +-# if (vaddr <= export_rva && vaddr+vsize > export_rva) +-# { +-# expptr = fptr + (export_rva - vaddr); +-# if (export_rva + export_size > vaddr + vsize) +-# export_size = vsize - (export_rva - vaddr); +-# break; +-# } +-# } +-# +-# expdata = (unsigned char*)malloc(export_size); +-# lseek (dll, expptr, SEEK_SET); +-# read (dll, expdata, export_size); +-# erva = expdata - export_rva; +-# +-# nexp = pe_as32 (expdata+24); +-# name_rvas = pe_as32 (expdata+32); +-# +-# printf ("EXPORTS\n"); +-# for (i = 0; i> "${ofile}T" || (rm -f "${ofile}T"; exit 1) ++CC="$lt_save_CC" + +- mv -f "${ofile}T" "$ofile" || \ +- (rm -f "$ofile" && cp "${ofile}T" "$ofile" && rm -f "${ofile}T") +- chmod +x "$ofile" ++ ;; ++ ++ *) ++ { { echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5 ++echo "$as_me: error: Unsupported tag name: $tagname" >&2;} ++ { (exit 1); exit 1; }; } ++ ;; ++ esac ++ ++ # Append the new tag name to the list of available tags. ++ if test -n "$tagname" ; then ++ available_tags="$available_tags $tagname" ++ fi ++ fi ++ done ++ IFS="$lt_save_ifs" ++ ++ # Now substitute the updated list of available tags. ++ if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then ++ mv "${ofile}T" "$ofile" ++ chmod +x "$ofile" ++ else ++ rm -f "${ofile}T" ++ { { echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5 ++echo "$as_me: error: unable to update list of available tagged configurations." >&2;} ++ { (exit 1); exit 1; }; } ++ fi + fi + ++ ++ + # This can be used to rebuild libtool when needed + LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" + +@@ -6618,120 +19425,186 @@ + + # Prevent multiple expansion + +-ac_ext=cc ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ac_ext=cpp + ac_cpp='$CXXCPP $CPPFLAGS' + ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' + ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' + ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +-if test -n "$ac_tool_prefix"; then +- for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC ++if test -z "$CXX"; then ++ if test -n "$CCC"; then ++ CXX=$CCC ++ else ++ if test -n "$ac_tool_prefix"; then ++ for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. + set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +-echo "$as_me:6631: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. + else +- ac_save_IFS=$IFS; IFS=$ac_path_separator +-ac_dummy="$PATH" +-for ac_dir in $ac_dummy; do +- IFS=$ac_save_IFS +- test -z "$ac_dir" && ac_dir=. +- $as_executable_p "$ac_dir/$ac_word" || continue +-ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" +-echo "$as_me:6646: found $ac_dir/$ac_word" >&5 +-break ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi + done ++done ++IFS=$as_save_IFS + + fi + fi + CXX=$ac_cv_prog_CXX + if test -n "$CXX"; then +- echo "$as_me:6654: result: $CXX" >&5 +-echo "${ECHO_T}$CXX" >&6 ++ { echo "$as_me:$LINENO: result: $CXX" >&5 ++echo "${ECHO_T}$CXX" >&6; } + else +- echo "$as_me:6657: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + test -n "$CXX" && break + done + fi + if test -z "$CXX"; then + ac_ct_CXX=$CXX +- for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC ++ for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 +-echo "$as_me:6670: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. + else +- ac_save_IFS=$IFS; IFS=$ac_path_separator +-ac_dummy="$PATH" +-for ac_dir in $ac_dummy; do +- IFS=$ac_save_IFS +- test -z "$ac_dir" && ac_dir=. +- $as_executable_p "$ac_dir/$ac_word" || continue +-ac_cv_prog_ac_ct_CXX="$ac_prog" +-echo "$as_me:6685: found $ac_dir/$ac_word" >&5 +-break ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_ac_ct_CXX="$ac_prog" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi + done ++done ++IFS=$as_save_IFS + + fi + fi + ac_ct_CXX=$ac_cv_prog_ac_ct_CXX + if test -n "$ac_ct_CXX"; then +- echo "$as_me:6693: result: $ac_ct_CXX" >&5 +-echo "${ECHO_T}$ac_ct_CXX" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 ++echo "${ECHO_T}$ac_ct_CXX" >&6; } + else +- echo "$as_me:6696: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + test -n "$ac_ct_CXX" && break + done +-test -n "$ac_ct_CXX" || ac_ct_CXX="g++" + +- CXX=$ac_ct_CXX ++ if test "x$ac_ct_CXX" = x; then ++ CXX="g++" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ CXX=$ac_ct_CXX ++ fi + fi + ++ fi ++fi + # Provide some information about the compiler. +-echo "$as_me:6708:" \ +- "checking for C++ compiler version" >&5 ++echo "$as_me:$LINENO: checking for C++ compiler version" >&5 + ac_compiler=`set X $ac_compile; echo $2` +-{ (eval echo "$as_me:6711: \"$ac_compiler --version &5\"") >&5 +- (eval $ac_compiler --version &5) 2>&5 ++{ (ac_try="$ac_compiler --version >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler --version >&5") 2>&5 + ac_status=$? +- echo "$as_me:6714: \$? = $ac_status" >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +-{ (eval echo "$as_me:6716: \"$ac_compiler -v &5\"") >&5 +- (eval $ac_compiler -v &5) 2>&5 ++{ (ac_try="$ac_compiler -v >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler -v >&5") 2>&5 + ac_status=$? +- echo "$as_me:6719: \$? = $ac_status" >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +-{ (eval echo "$as_me:6721: \"$ac_compiler -V &5\"") >&5 +- (eval $ac_compiler -V &5) 2>&5 ++{ (ac_try="$ac_compiler -V >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler -V >&5") 2>&5 + ac_status=$? +- echo "$as_me:6724: \$? = $ac_status" >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +-echo "$as_me:6727: checking whether we are using the GNU C++ compiler" >&5 +-echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 ++echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6; } + if test "${ac_cv_cxx_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +-#line 6733 "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + + int + main () +@@ -6745,41 +19618,54 @@ + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:6748: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:6751: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:6754: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? +- echo "$as_me:6757: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_cxx_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_compiler_gnu=yes + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_compiler_gnu=no ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_compiler_gnu=no + fi +-rm -f conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + + fi +-echo "$as_me:6769: result: $ac_cv_cxx_compiler_gnu" >&5 +-echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 ++echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6; } + GXX=`test $ac_compiler_gnu = yes && echo yes` + ac_test_CXXFLAGS=${CXXFLAGS+set} + ac_save_CXXFLAGS=$CXXFLAGS +-CXXFLAGS="-g" +-echo "$as_me:6775: checking whether $CXX accepts -g" >&5 +-echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 ++echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6; } + if test "${ac_cv_prog_cxx_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- cat >conftest.$ac_ext <<_ACEOF +-#line 6781 "configure" +-#include "confdefs.h" ++ ac_save_cxx_werror_flag=$ac_cxx_werror_flag ++ ac_cxx_werror_flag=yes ++ ac_cv_prog_cxx_g=no ++ CXXFLAGS="-g" ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + + int + main () +@@ -6790,121 +19676,133 @@ + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:6793: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:6796: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:6799: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? +- echo "$as_me:6802: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_cxx_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_prog_cxx_g=yes + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_cv_prog_cxx_g=no +-fi +-rm -f conftest.$ac_objext conftest.$ac_ext +-fi +-echo "$as_me:6812: result: $ac_cv_prog_cxx_g" >&5 +-echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6 +-if test "$ac_test_CXXFLAGS" = set; then +- CXXFLAGS=$ac_save_CXXFLAGS +-elif test $ac_cv_prog_cxx_g = yes; then +- if test "$GXX" = yes; then +- CXXFLAGS="-g -O2" +- else +- CXXFLAGS="-g" +- fi +-else +- if test "$GXX" = yes; then +- CXXFLAGS="-O2" +- else +- CXXFLAGS= +- fi +-fi +-for ac_declaration in \ +- ''\ +- '#include ' \ +- 'extern "C" void std::exit (int) throw (); using std::exit;' \ +- 'extern "C" void std::exit (int); using std::exit;' \ +- 'extern "C" void exit (int) throw ();' \ +- 'extern "C" void exit (int);' \ +- 'void exit (int);' +-do +- cat >conftest.$ac_ext <<_ACEOF +-#line 6839 "configure" +-#include "confdefs.h" +-#include +-$ac_declaration ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ CXXFLAGS="" ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ + int + main () + { +-exit (42); ++ + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:6852: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:6855: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:6858: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? +- echo "$as_me:6861: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_cxx_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + : + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-continue +-fi +-rm -f conftest.$ac_objext conftest.$ac_ext +- cat >conftest.$ac_ext <<_ACEOF +-#line 6871 "configure" +-#include "confdefs.h" +-$ac_declaration ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cxx_werror_flag=$ac_save_cxx_werror_flag ++ CXXFLAGS="-g" ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ + int + main () + { +-exit (42); ++ + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:6883: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:6886: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:6889: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? +- echo "$as_me:6892: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- break ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_cxx_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_prog_cxx_g=yes + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ + fi +-rm -f conftest.$ac_objext conftest.$ac_ext +-done +-rm -f conftest* +-if test -n "$ac_declaration"; then +- echo '#ifdef __cplusplus' >>confdefs.h +- echo $ac_declaration >>confdefs.h +- echo '#endif' >>confdefs.h ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ ac_cxx_werror_flag=$ac_save_cxx_werror_flag ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 ++echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6; } ++if test "$ac_test_CXXFLAGS" = set; then ++ CXXFLAGS=$ac_save_CXXFLAGS ++elif test $ac_cv_prog_cxx_g = yes; then ++ if test "$GXX" = yes; then ++ CXXFLAGS="-g -O2" ++ else ++ CXXFLAGS="-g" ++ fi ++else ++ if test "$GXX" = yes; then ++ CXXFLAGS="-O2" ++ else ++ CXXFLAGS= ++ fi ++fi + ac_ext=c + ac_cpp='$CPP $CPPFLAGS' + ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +@@ -6913,8 +19811,8 @@ + + depcc="$CXX" am_compiler_list= + +-echo "$as_me:6916: checking dependency style of $depcc" >&5 +-echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 ++echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; } + if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -6929,18 +19827,34 @@ + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir ++ # We will build objects and dependencies in a subdirectory because ++ # it helps to detect inapplicable dependency modes. For instance ++ # both Tru64's cc and ICC support -MD to output dependencies as a ++ # side effect of compilation, but ICC will put the dependencies in ++ # the current directory while Tru64 will put them in the object ++ # directory. ++ mkdir sub + + am_cv_CXX_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + for depmode in $am_compiler_list; do ++ # Setup a source with many dependencies, because some compilers ++ # like to wrap large dependency lists on column 80 (with \), and ++ # we should not choose a depcomp mode which is confused by this. ++ # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. +- echo '#include "conftest.h"' > conftest.c +- echo 'int i;' > conftest.h +- echo "${am__include} ${am__quote}conftest.Po${am__quote}" > confmf ++ : > sub/conftest.c ++ for i in 1 2 3 4 5 6; do ++ echo '#include "conftst'$i'.h"' >> sub/conftest.c ++ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with ++ # Solaris 8's {/usr,}/bin/sh. ++ touch sub/conftst$i.h ++ done ++ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) +@@ -6958,13 +19872,26 @@ + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ +- source=conftest.c object=conftest.o \ +- depfile=conftest.Po tmpdepfile=conftest.TPo \ +- $SHELL ./depcomp $depcc -c conftest.c -o conftest.o >/dev/null 2>&1 && +- grep conftest.h conftest.Po > /dev/null 2>&1 && ++ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ ++ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ ++ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ ++ >/dev/null 2>conftest.err && ++ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && ++ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && ++ grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then +- am_cv_CXX_dependencies_compiler_type=$depmode +- break ++ # icc doesn't choke on unknown options, it will just issue warnings ++ # or remarks (even with -Werror). So we grep stderr for any message ++ # that says an option was ignored or not supported. ++ # When given -MP, icc 7.0 and 7.1 complain thusly: ++ # icc: Command line warning: ignoring option '-M'; no argument required ++ # The diagnosis changed in icc 8.0: ++ # icc: Command line remark: option '-MP' not supported ++ if (grep 'ignoring option' conftest.err || ++ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else ++ am_cv_CXX_dependencies_compiler_type=$depmode ++ break ++ fi + fi + done + +@@ -6975,22 +19902,37 @@ + fi + + fi +-echo "$as_me:6978: result: $am_cv_CXX_dependencies_compiler_type" >&5 +-echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6 +-CXXDEPMODE="depmode=$am_cv_CXX_dependencies_compiler_type" ++{ echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 ++echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6; } ++CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type + +-ac_ext=cc ++ if ++ test "x$enable_dependency_tracking" != xno \ ++ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then ++ am__fastdepCXX_TRUE= ++ am__fastdepCXX_FALSE='#' ++else ++ am__fastdepCXX_TRUE='#' ++ am__fastdepCXX_FALSE= ++fi ++ ++ ++ ++ac_ext=cpp + ac_cpp='$CXXCPP $CPPFLAGS' + ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' + ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' + ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +-echo "$as_me:6988: checking whether $CXX works" >&5 +-echo $ECHO_N "checking whether $CXX works... $ECHO_C" >&6 + ++{ echo "$as_me:$LINENO: checking whether $CXX works" >&5 ++echo $ECHO_N "checking whether $CXX works... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF +-#line 6992 "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + #include + int + main () +@@ -7001,26 +19943,34 @@ + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:7004: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:7007: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:7010: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? +- echo "$as_me:7013: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- echo "$as_me:7015: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_cxx_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + LIBFCGIXX=libfcgi++.la + ECHO_CPP=echo-cpp${EXEEXT} +- echo "$as_me:7019: checking whether cin has a streambuf assignment operator" >&5 +-echo $ECHO_N "checking whether cin has a streambuf assignment operator... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking whether cin has a streambuf assignment operator" >&5 ++echo $ECHO_N "checking whether cin has a streambuf assignment operator... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF +-#line 7022 "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + #include + int + main () +@@ -7031,36 +19981,46 @@ + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:7034: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:7037: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:7040: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? +- echo "$as_me:7043: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- echo "$as_me:7045: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_cxx_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + +-cat >>confdefs.h <<\EOF ++cat >>confdefs.h <<\_ACEOF + #define HAVE_IOSTREAM_WITHASSIGN_STREAMBUF 1 +-EOF ++_ACEOF + + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-echo "$as_me:7055: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +-rm -f conftest.$ac_objext conftest.$ac_ext +- echo "$as_me:7059: checking whether char_type is defined in the context of streambuf" >&5 +-echo $ECHO_N "checking whether char_type is defined in the context of streambuf... $ECHO_C" >&6 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ { echo "$as_me:$LINENO: checking whether char_type is defined in the context of streambuf" >&5 ++echo $ECHO_N "checking whether char_type is defined in the context of streambuf... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF +-#line 7062 "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + #include + int + main () +@@ -7071,38 +20031,49 @@ + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:7074: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:7077: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:7080: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? +- echo "$as_me:7083: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- echo "$as_me:7085: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_cxx_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + +-cat >>confdefs.h <<\EOF ++cat >>confdefs.h <<\_ACEOF + #define HAVE_STREAMBUF_CHAR_TYPE 1 +-EOF ++_ACEOF + + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-echo "$as_me:7095: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi +-rm -f conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-echo "$as_me:7102: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi +-rm -f conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++ + + ac_ext=c + ac_cpp='$CPP $CPPFLAGS' +@@ -7110,169 +20081,289 @@ + ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' + ac_compiler_gnu=$ac_cv_c_compiler_gnu + +-echo "$as_me:7113: checking for gethostbyname in -lnsl" >&5 +-echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6 ++ ++ ++{ echo "$as_me:$LINENO: checking for gethostbyname in -lnsl" >&5 ++echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6; } + if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + ac_check_lib_save_LIBS=$LIBS + LIBS="-lnsl $LIBS" + cat >conftest.$ac_ext <<_ACEOF +-#line 7121 "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char gethostbyname (); + int + main () + { +-gethostbyname (); ++return gethostbyname (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:7140: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:7143: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:7146: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? +- echo "$as_me:7149: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + ac_cv_lib_nsl_gethostbyname=yes + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_cv_lib_nsl_gethostbyname=no ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_nsl_gethostbyname=no + fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-echo "$as_me:7160: result: $ac_cv_lib_nsl_gethostbyname" >&5 +-echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5 ++echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6; } + if test $ac_cv_lib_nsl_gethostbyname = yes; then +- cat >>confdefs.h <>confdefs.h <<_ACEOF + #define HAVE_LIBNSL 1 +-EOF ++_ACEOF + + LIBS="-lnsl $LIBS" + + fi + +-echo "$as_me:7171: checking for socket in -lsocket" >&5 +-echo $ECHO_N "checking for socket in -lsocket... $ECHO_C" >&6 ++ ++{ echo "$as_me:$LINENO: checking for socket in -lsocket" >&5 ++echo $ECHO_N "checking for socket in -lsocket... $ECHO_C" >&6; } + if test "${ac_cv_lib_socket_socket+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + ac_check_lib_save_LIBS=$LIBS + LIBS="-lsocket $LIBS" + cat >conftest.$ac_ext <<_ACEOF +-#line 7179 "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char socket (); + int + main () + { +-socket (); ++return socket (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:7198: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:7201: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:7204: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? +- echo "$as_me:7207: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + ac_cv_lib_socket_socket=yes + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_cv_lib_socket_socket=no ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_socket_socket=no + fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-echo "$as_me:7218: result: $ac_cv_lib_socket_socket" >&5 +-echo "${ECHO_T}$ac_cv_lib_socket_socket" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_socket_socket" >&5 ++echo "${ECHO_T}$ac_cv_lib_socket_socket" >&6; } + if test $ac_cv_lib_socket_socket = yes; then +- cat >>confdefs.h <>confdefs.h <<_ACEOF + #define HAVE_LIBSOCKET 1 +-EOF ++_ACEOF + + LIBS="-lsocket $LIBS" + + fi + ++ ++ ++ + acx_pthread_ok=no + + # First, check if the POSIX threads header, pthread.h, is available. + # If it isn't, don't bother looking for the threads libraries. +-echo "$as_me:7233: checking for pthread.h" >&5 +-echo $ECHO_N "checking for pthread.h... $ECHO_C" >&6 ++if test "${ac_cv_header_pthread_h+set}" = set; then ++ { echo "$as_me:$LINENO: checking for pthread.h" >&5 ++echo $ECHO_N "checking for pthread.h... $ECHO_C" >&6; } + if test "${ac_cv_header_pthread_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_pthread_h" >&5 ++echo "${ECHO_T}$ac_cv_header_pthread_h" >&6; } + else +- cat >conftest.$ac_ext <<_ACEOF +-#line 7239 "configure" +-#include "confdefs.h" ++ # Is the header compilable? ++{ echo "$as_me:$LINENO: checking pthread.h usability" >&5 ++echo $ECHO_N "checking pthread.h usability... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default + #include + _ACEOF +-if { (eval echo "$as_me:7243: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? +- egrep -v '^ *\+' conftest.er1 >conftest.err ++ grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 +- echo "$as_me:7249: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- else +- ac_cpp_err= +- fi ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_header_compiler=yes + else +- ac_cpp_err=yes ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_compiler=no + fi +-if test -z "$ac_cpp_err"; then +- ac_cv_header_pthread_h=yes ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } ++ ++# Is the header present? ++{ echo "$as_me:$LINENO: checking pthread.h presence" >&5 ++echo $ECHO_N "checking pthread.h presence... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++_ACEOF ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ ac_header_preproc=yes + else + echo "$as_me: failed program was:" >&5 +- cat conftest.$ac_ext >&5 +- ac_cv_header_pthread_h=no ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_preproc=no + fi ++ + rm -f conftest.err conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } ++ ++# So? What about this header? ++case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in ++ yes:no: ) ++ { echo "$as_me:$LINENO: WARNING: pthread.h: accepted by the compiler, rejected by the preprocessor!" >&5 ++echo "$as_me: WARNING: pthread.h: accepted by the compiler, rejected by the preprocessor!" >&2;} ++ { echo "$as_me:$LINENO: WARNING: pthread.h: proceeding with the compiler's result" >&5 ++echo "$as_me: WARNING: pthread.h: proceeding with the compiler's result" >&2;} ++ ac_header_preproc=yes ++ ;; ++ no:yes:* ) ++ { echo "$as_me:$LINENO: WARNING: pthread.h: present but cannot be compiled" >&5 ++echo "$as_me: WARNING: pthread.h: present but cannot be compiled" >&2;} ++ { echo "$as_me:$LINENO: WARNING: pthread.h: check for missing prerequisite headers?" >&5 ++echo "$as_me: WARNING: pthread.h: check for missing prerequisite headers?" >&2;} ++ { echo "$as_me:$LINENO: WARNING: pthread.h: see the Autoconf documentation" >&5 ++echo "$as_me: WARNING: pthread.h: see the Autoconf documentation" >&2;} ++ { echo "$as_me:$LINENO: WARNING: pthread.h: section \"Present But Cannot Be Compiled\"" >&5 ++echo "$as_me: WARNING: pthread.h: section \"Present But Cannot Be Compiled\"" >&2;} ++ { echo "$as_me:$LINENO: WARNING: pthread.h: proceeding with the preprocessor's result" >&5 ++echo "$as_me: WARNING: pthread.h: proceeding with the preprocessor's result" >&2;} ++ { echo "$as_me:$LINENO: WARNING: pthread.h: in the future, the compiler will take precedence" >&5 ++echo "$as_me: WARNING: pthread.h: in the future, the compiler will take precedence" >&2;} ++ ++ ;; ++esac ++{ echo "$as_me:$LINENO: checking for pthread.h" >&5 ++echo $ECHO_N "checking for pthread.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_pthread_h+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_cv_header_pthread_h=$ac_header_preproc ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_pthread_h" >&5 ++echo "${ECHO_T}$ac_cv_header_pthread_h" >&6; } ++ + fi +-echo "$as_me:7268: result: $ac_cv_header_pthread_h" >&5 +-echo "${ECHO_T}$ac_cv_header_pthread_h" >&6 + if test $ac_cv_header_pthread_h = yes; then + : + else + acx_pthread_ok=noheader + fi + ++ ++ + # We must check for the threads library under a number of different + # names; the ordering is very important because some systems + # (e.g. DEC) have both -lpthread and -lpthreads, where one of the +@@ -7286,47 +20377,60 @@ + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + save_LIBS="$LIBS" + LIBS="$PTHREAD_LIBS $LIBS" +- echo "$as_me:7289: checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS" >&5 +-echo $ECHO_N "checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS" >&5 ++echo $ECHO_N "checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF +-#line 7292 "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char pthread_join (); + int + main () + { +-pthread_join (); ++return pthread_join (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:7311: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:7314: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:7317: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? +- echo "$as_me:7320: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + acx_pthread_ok=yes + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ + fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +- echo "$as_me:7328: result: $acx_pthread_ok" >&5 +-echo "${ECHO_T}$acx_pthread_ok" >&6 ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++ { echo "$as_me:$LINENO: result: $acx_pthread_ok" >&5 ++echo "${ECHO_T}$acx_pthread_ok" >&6; } + if test x"$acx_pthread_ok" = xno; then + PTHREAD_LIBS="" + PTHREAD_CFLAGS="" +@@ -7379,19 +20483,19 @@ + + case $flag in + none) +- echo "$as_me:7382: checking whether pthreads work without any flags" >&5 +-echo $ECHO_N "checking whether pthreads work without any flags... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking whether pthreads work without any flags" >&5 ++echo $ECHO_N "checking whether pthreads work without any flags... $ECHO_C" >&6; } + ;; + + -*) +- echo "$as_me:7387: checking whether pthreads work with $flag" >&5 +-echo $ECHO_N "checking whether pthreads work with $flag... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking whether pthreads work with $flag" >&5 ++echo $ECHO_N "checking whether pthreads work with $flag... $ECHO_C" >&6; } + PTHREAD_CFLAGS="$flag" + ;; + + *) +- echo "$as_me:7393: checking for the pthreads library -l$flag" >&5 +-echo $ECHO_N "checking for the pthreads library -l$flag... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for the pthreads library -l$flag" >&5 ++echo $ECHO_N "checking for the pthreads library -l$flag... $ECHO_C" >&6; } + PTHREAD_LIBS="-l$flag" + ;; + esac +@@ -7411,8 +20515,11 @@ + # functions on Solaris that doesn't have a non-functional libc stub. + # We try pthread_create on general principles. + cat >conftest.$ac_ext <<_ACEOF +-#line 7414 "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + #include + int + main () +@@ -7425,29 +20532,39 @@ + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:7428: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:7431: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:7434: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? +- echo "$as_me:7437: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + acx_pthread_ok=yes + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ + fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext + + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" + +- echo "$as_me:7449: result: $acx_pthread_ok" >&5 +-echo "${ECHO_T}$acx_pthread_ok" >&6 ++ { echo "$as_me:$LINENO: result: $acx_pthread_ok" >&5 ++echo "${ECHO_T}$acx_pthread_ok" >&6; } + if test "x$acx_pthread_ok" = xyes; then + break; + fi +@@ -7466,11 +20583,14 @@ + + # Detect AIX lossage: threads are created detached by default + # and the JOINABLE attribute has a nonstandard name (UNDETACHED). +- echo "$as_me:7469: checking for joinable pthread attribute" >&5 +-echo $ECHO_N "checking for joinable pthread attribute... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for joinable pthread attribute" >&5 ++echo $ECHO_N "checking for joinable pthread attribute... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF +-#line 7472 "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + #include + int + main () +@@ -7481,28 +20601,40 @@ + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:7484: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:7487: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:7490: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? +- echo "$as_me:7493: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + ok=PTHREAD_CREATE_JOINABLE + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ok=unknown ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ok=unknown + fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext + if test x"$ok" = xunknown; then + cat >conftest.$ac_ext <<_ACEOF +-#line 7504 "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + #include + int + main () +@@ -7513,48 +20645,57 @@ + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:7516: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:7519: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:7522: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? +- echo "$as_me:7525: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + ok=PTHREAD_CREATE_UNDETACHED + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ok=unknown ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ok=unknown + fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext + fi + if test x"$ok" != xPTHREAD_CREATE_JOINABLE; then + +-cat >>confdefs.h <<\EOF ++cat >>confdefs.h <<\_ACEOF + #define PTHREAD_CREATE_JOINABLE $ok +-EOF ++_ACEOF + + fi +- echo "$as_me:7542: result: ${ok}" >&5 +-echo "${ECHO_T}${ok}" >&6 ++ { echo "$as_me:$LINENO: result: ${ok}" >&5 ++echo "${ECHO_T}${ok}" >&6; } + if test x"$ok" = xunknown; then +- { echo "$as_me:7545: WARNING: we do not know how to create joinable pthreads" >&5 ++ { echo "$as_me:$LINENO: WARNING: we do not know how to create joinable pthreads" >&5 + echo "$as_me: WARNING: we do not know how to create joinable pthreads" >&2;} + fi + +- echo "$as_me:7549: checking if more special flags are required for pthreads" >&5 +-echo $ECHO_N "checking if more special flags are required for pthreads... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking if more special flags are required for pthreads" >&5 ++echo $ECHO_N "checking if more special flags are required for pthreads... $ECHO_C" >&6; } + flag=no + case "${host_cpu}-${host_os}" in + *-aix* | *-freebsd*) flag="-D_THREAD_SAFE";; + *solaris* | alpha*-osf*) flag="-D_REENTRANT";; + esac +- echo "$as_me:7556: result: ${flag}" >&5 +-echo "${ECHO_T}${flag}" >&6 ++ { echo "$as_me:$LINENO: result: ${flag}" >&5 ++echo "${ECHO_T}${flag}" >&6; } + if test "x$flag" != xno; then + PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" + fi +@@ -7565,41 +20706,50 @@ + # More AIX lossage: must compile with cc_r + # Extract the first word of "cc_r", so it can be a program name with args. + set dummy cc_r; ac_word=$2 +-echo "$as_me:7568: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_PTHREAD_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + if test -n "$PTHREAD_CC"; then + ac_cv_prog_PTHREAD_CC="$PTHREAD_CC" # Let the user override the test. + else +- ac_save_IFS=$IFS; IFS=$ac_path_separator +-ac_dummy="$PATH" +-for ac_dir in $ac_dummy; do +- IFS=$ac_save_IFS +- test -z "$ac_dir" && ac_dir=. +- $as_executable_p "$ac_dir/$ac_word" || continue +-ac_cv_prog_PTHREAD_CC="cc_r" +-echo "$as_me:7583: found $ac_dir/$ac_word" >&5 +-break ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_PTHREAD_CC="cc_r" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done + done ++IFS=$as_save_IFS + + test -z "$ac_cv_prog_PTHREAD_CC" && ac_cv_prog_PTHREAD_CC="${CC}" + fi + fi + PTHREAD_CC=$ac_cv_prog_PTHREAD_CC + if test -n "$PTHREAD_CC"; then +- echo "$as_me:7592: result: $PTHREAD_CC" >&5 +-echo "${ECHO_T}$PTHREAD_CC" >&6 ++ { echo "$as_me:$LINENO: result: $PTHREAD_CC" >&5 ++echo "${ECHO_T}$PTHREAD_CC" >&6; } + else +- echo "$as_me:7595: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + else + PTHREAD_CC="$CC" + fi + ++ ++ ++ ++ + # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: + if test x"$acx_pthread_ok" = xyes; then + THREADED=threaded${EXEEXT} +@@ -7609,520 +20759,466 @@ + + fi + +-echo "$as_me:7612: checking for ANSI C header files" >&5 +-echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +-if test "${ac_cv_header_stdc+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-#line 7618 "configure" +-#include "confdefs.h" +-#include +-#include +-#include +-#include +- +-_ACEOF +-if { (eval echo "$as_me:7626: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +- ac_status=$? +- egrep -v '^ *\+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:7632: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then +- ac_cv_header_stdc=yes +-else +- echo "$as_me: failed program was:" >&5 +- cat conftest.$ac_ext >&5 +- ac_cv_header_stdc=no +-fi +-rm -f conftest.err conftest.$ac_ext +- +-if test $ac_cv_header_stdc = yes; then +- # SunOS 4.x string.h does not declare mem*, contrary to ANSI. +- cat >conftest.$ac_ext <<_ACEOF +-#line 7654 "configure" +-#include "confdefs.h" +-#include +- +-_ACEOF +-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | +- egrep "memchr" >/dev/null 2>&1; then +- : +-else +- ac_cv_header_stdc=no +-fi +-rm -f conftest* +- +-fi +- +-if test $ac_cv_header_stdc = yes; then +- # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. +- cat >conftest.$ac_ext <<_ACEOF +-#line 7672 "configure" +-#include "confdefs.h" +-#include +- +-_ACEOF +-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | +- egrep "free" >/dev/null 2>&1; then +- : +-else +- ac_cv_header_stdc=no +-fi +-rm -f conftest* +- +-fi +- +-if test $ac_cv_header_stdc = yes; then +- # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. +- if test "$cross_compiling" = yes; then +- : +-else +- cat >conftest.$ac_ext <<_ACEOF +-#line 7693 "configure" +-#include "confdefs.h" +-#include +-#if ((' ' & 0x0FF) == 0x020) +-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +-#else +-# define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \ +- || ('j' <= (c) && (c) <= 'r') \ +- || ('s' <= (c) && (c) <= 'z')) +-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +-#endif +- +-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +-int +-main () +-{ +- int i; +- for (i = 0; i < 256; i++) +- if (XOR (islower (i), ISLOWER (i)) +- || toupper (i) != TOUPPER (i)) +- exit(2); +- exit (0); +-} +-_ACEOF +-rm -f conftest$ac_exeext +-if { (eval echo "$as_me:7719: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:7722: \$? = $ac_status" >&5 +- (exit $ac_status); } && { ac_try='./conftest$ac_exeext' +- { (eval echo "$as_me:7724: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:7727: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- : +-else +- echo "$as_me: program exited with status $ac_status" >&5 +-echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_cv_header_stdc=no +-fi +-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +-fi +-fi +-fi +-echo "$as_me:7740: result: $ac_cv_header_stdc" >&5 +-echo "${ECHO_T}$ac_cv_header_stdc" >&6 +-if test $ac_cv_header_stdc = yes; then +- +-cat >>confdefs.h <<\EOF +-#define STDC_HEADERS 1 +-EOF +- +-fi +- +-# On IRIX 5.3, sys/types and inttypes.h are conflicting. +- +-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ +- inttypes.h stdint.h unistd.h +-do +-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +-echo "$as_me:7756: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-#line 7762 "configure" +-#include "confdefs.h" +-$ac_includes_default +-#include <$ac_header> +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:7768: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:7771: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:7774: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:7777: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- eval "$as_ac_Header=yes" +-else +- echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-eval "$as_ac_Header=no" +-fi +-rm -f conftest.$ac_objext conftest.$ac_ext +-fi +-echo "$as_me:7787: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +-if test `eval echo '${'$as_ac_Header'}'` = yes; then +- cat >>confdefs.h <&5 +-echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +-if test "${ac_cv_prog_cc_stdc+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_cv_prog_cc_stdc=no +-ac_save_CC=$CC +-cat >conftest.$ac_ext <<_ACEOF +-#line 7805 "configure" +-#include "confdefs.h" +-#include +-#include +-#include +-#include +-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +-struct buf { int x; }; +-FILE * (*rcsopen) (struct buf *, struct stat *, int); +-static char *e (p, i) +- char **p; +- int i; +-{ +- return p[i]; +-} +-static char *f (char * (*g) (char **, int), char **p, ...) +-{ +- char *s; +- va_list v; +- va_start (v,p); +- s = g (p, va_arg (v,int)); +- va_end (v); +- return s; +-} +-int test (int i, double x); +-struct s1 {int (*f) (int a);}; +-struct s2 {int (*f) (double a);}; +-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +-int argc; +-char **argv; +-int +-main () +-{ +-return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; +- ; +- return 0; +-} +-_ACEOF +-# Don't try gcc -ansi; that turns off useful extensions and +-# breaks some systems' header files. +-# AIX -qlanglvl=ansi +-# Ultrix and OSF/1 -std1 +-# HP-UX 10.20 and later -Ae +-# HP-UX older versions -Aa -D_HPUX_SOURCE +-# SVR4 -Xc -D__EXTENSIONS__ +-for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +-do +- CC="$ac_save_CC $ac_arg" +- rm -f conftest.$ac_objext +-if { (eval echo "$as_me:7854: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:7857: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:7860: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:7863: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_prog_cc_stdc=$ac_arg +-break +-else +- echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-fi +-rm -f conftest.$ac_objext +-done +-rm -f conftest.$ac_ext conftest.$ac_objext +-CC=$ac_save_CC + +-fi + +-case "x$ac_cv_prog_cc_stdc" in +- x|xno) +- echo "$as_me:7880: result: none needed" >&5 +-echo "${ECHO_T}none needed" >&6 ;; +- *) +- echo "$as_me:7883: result: $ac_cv_prog_cc_stdc" >&5 +-echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 +- CC="$CC $ac_cv_prog_cc_stdc" ;; +-esac + +- echo "$as_me:7888: checking for ssize_t" >&5 +-echo $ECHO_N "checking for ssize_t... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for ssize_t" >&5 ++echo $ECHO_N "checking for ssize_t... $ECHO_C" >&6; } + if test "${ac_cv_type_ssize_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +-#line 7894 "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + $ac_includes_default ++typedef ssize_t ac__type_new_; + int + main () + { +-if ((ssize_t *) 0) ++if ((ac__type_new_ *) 0) + return 0; +-if (sizeof (ssize_t)) ++if (sizeof (ac__type_new_)) + return 0; + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:7909: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:7912: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:7915: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? +- echo "$as_me:7918: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_type_ssize_t=yes + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_cv_type_ssize_t=no ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_type_ssize_t=no + fi +-rm -f conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:7928: result: $ac_cv_type_ssize_t" >&5 +-echo "${ECHO_T}$ac_cv_type_ssize_t" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_type_ssize_t" >&5 ++echo "${ECHO_T}$ac_cv_type_ssize_t" >&6; } + if test $ac_cv_type_ssize_t = yes; then + : + else + +-cat >>confdefs.h <>confdefs.h <<_ACEOF + #define ssize_t int +-EOF ++_ACEOF + + fi + +- echo "$as_me:7940: checking for sun_len in sys/un.h" >&5 +-echo $ECHO_N "checking for sun_len in sys/un.h... $ECHO_C" >&6 ++ ++ { echo "$as_me:$LINENO: checking for sun_len in sys/un.h" >&5 ++echo $ECHO_N "checking for sun_len in sys/un.h... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF +-#line 7943 "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + #include + + _ACEOF + if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | +- egrep "sun_len" >/dev/null 2>&1; then +- echo "$as_me:7950: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++ $EGREP "sun_len" >/dev/null 2>&1; then ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + +-cat >>confdefs.h <<\EOF ++cat >>confdefs.h <<\_ACEOF + #define HAVE_SOCKADDR_UN_SUN_LEN 1 +-EOF ++_ACEOF + + else +- echo "$as_me:7958: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + rm -f conftest* + +- echo "$as_me:7963: checking for fpos_t in stdio.h" >&5 +-echo $ECHO_N "checking for fpos_t in stdio.h... $ECHO_C" >&6 ++ ++ { echo "$as_me:$LINENO: checking for fpos_t in stdio.h" >&5 ++echo $ECHO_N "checking for fpos_t in stdio.h... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF +-#line 7966 "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + #include + + _ACEOF + if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | +- egrep "fpos_t" >/dev/null 2>&1; then +- echo "$as_me:7973: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++ $EGREP "fpos_t" >/dev/null 2>&1; then ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + +-cat >>confdefs.h <<\EOF ++cat >>confdefs.h <<\_ACEOF + #define HAVE_FPOS 1 +-EOF ++_ACEOF + + else +- echo "$as_me:7981: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + rm -f conftest* + ++ ++ ++ ++ ++ + for ac_header in sys/socket.h netdb.h netinet/in.h arpa/inet.h + do + as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +-echo "$as_me:7989: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ { echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-#line 7995 "configure" +-#include "confdefs.h" ++fi ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } ++else ++ # Is the header compilable? ++{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 ++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default + #include <$ac_header> + _ACEOF +-if { (eval echo "$as_me:7999: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? +- egrep -v '^ *\+' conftest.er1 >conftest.err ++ grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 +- echo "$as_me:8005: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- else +- ac_cpp_err= +- fi ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_header_compiler=yes + else +- ac_cpp_err=yes ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_compiler=no + fi +-if test -z "$ac_cpp_err"; then +- eval "$as_ac_Header=yes" ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } ++ ++# Is the header present? ++{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 ++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include <$ac_header> ++_ACEOF ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ ac_header_preproc=yes + else + echo "$as_me: failed program was:" >&5 +- cat conftest.$ac_ext >&5 +- eval "$as_ac_Header=no" ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_preproc=no + fi ++ + rm -f conftest.err conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } ++ ++# So? What about this header? ++case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in ++ yes:no: ) ++ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 ++echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 ++echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ++ ac_header_preproc=yes ++ ;; ++ no:yes:* ) ++ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 ++echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 ++echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 ++echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 ++echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 ++echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 ++echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ++ ++ ;; ++esac ++{ echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ eval "$as_ac_Header=\$ac_header_preproc" ++fi ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } ++ + fi +-echo "$as_me:8024: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + if test `eval echo '${'$as_ac_Header'}'` = yes; then +- cat >>confdefs.h <>confdefs.h <<_ACEOF + #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +-EOF ++_ACEOF + + fi ++ + done + ++ ++ ++ ++ + for ac_header in sys/time.h limits.h sys/param.h unistd.h + do + as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +-echo "$as_me:8037: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ { echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-#line 8043 "configure" +-#include "confdefs.h" ++fi ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } ++else ++ # Is the header compilable? ++{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 ++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default + #include <$ac_header> + _ACEOF +-if { (eval echo "$as_me:8047: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? +- egrep -v '^ *\+' conftest.er1 >conftest.err ++ grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 +- echo "$as_me:8053: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- else +- ac_cpp_err= +- fi ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_header_compiler=yes + else +- ac_cpp_err=yes ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_compiler=no + fi +-if test -z "$ac_cpp_err"; then +- eval "$as_ac_Header=yes" ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } ++ ++# Is the header present? ++{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 ++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include <$ac_header> ++_ACEOF ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ ac_header_preproc=yes + else + echo "$as_me: failed program was:" >&5 +- cat conftest.$ac_ext >&5 +- eval "$as_ac_Header=no" ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_preproc=no + fi ++ + rm -f conftest.err conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } ++ ++# So? What about this header? ++case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in ++ yes:no: ) ++ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 ++echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 ++echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ++ ac_header_preproc=yes ++ ;; ++ no:yes:* ) ++ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 ++echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 ++echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 ++echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 ++echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 ++echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 ++echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ++ ++ ;; ++esac ++{ echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ eval "$as_ac_Header=\$ac_header_preproc" ++fi ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } ++ + fi +-echo "$as_me:8072: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + if test `eval echo '${'$as_ac_Header'}'` = yes; then +- cat >>confdefs.h <>confdefs.h <<_ACEOF + #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +-EOF ++_ACEOF + + fi ++ + done + +- echo "$as_me:8082: checking for a fileno() prototype in stdio.h" >&5 +-echo $ECHO_N "checking for a fileno() prototype in stdio.h... $ECHO_C" >&6 ++ ++ { echo "$as_me:$LINENO: checking for a fileno() prototype in stdio.h" >&5 ++echo $ECHO_N "checking for a fileno() prototype in stdio.h... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF +-#line 8085 "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + #include + + _ACEOF + if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | +- egrep "fileno" >/dev/null 2>&1; then +- echo "$as_me:8092: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++ $EGREP "fileno" >/dev/null 2>&1; then ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + +-cat >>confdefs.h <<\EOF ++cat >>confdefs.h <<\_ACEOF + #define HAVE_FILENO_PROTO 1 +-EOF ++_ACEOF + + else +- echo "$as_me:8100: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + rm -f conftest* + ++ + if test "$HAVE_SYS_SOCKET_H"; then +- echo "$as_me:8106: checking for socklen_t in sys/socket.h" >&5 +-echo $ECHO_N "checking for socklen_t in sys/socket.h... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for socklen_t in sys/socket.h" >&5 ++echo $ECHO_N "checking for socklen_t in sys/socket.h... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF +-#line 8109 "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + #include + + _ACEOF + if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | +- egrep "socklen_t" >/dev/null 2>&1; then +- echo "$as_me:8116: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++ $EGREP "socklen_t" >/dev/null 2>&1; then ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + +-cat >>confdefs.h <<\EOF ++cat >>confdefs.h <<\_ACEOF + #define HAVE_SOCKLEN 1 +-EOF ++_ACEOF + + else +- echo "$as_me:8124: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + rm -f conftest* + +@@ -8131,21 +21227,21 @@ + #-------------------------------------------------------------------- + # Do we need cross-process locking on this platform? + #-------------------------------------------------------------------- +- echo "$as_me:8134: checking whether cross-process locking is required by accept()" >&5 +-echo $ECHO_N "checking whether cross-process locking is required by accept()... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking whether cross-process locking is required by accept()" >&5 ++echo $ECHO_N "checking whether cross-process locking is required by accept()... $ECHO_C" >&6; } + case "`uname -sr`" in + IRIX\ 5.* | SunOS\ 5.* | UNIX_System_V\ 4.0) +- echo "$as_me:8138: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + +-cat >>confdefs.h <<\EOF ++cat >>confdefs.h <<\_ACEOF + #define USE_LOCKING 1 +-EOF ++_ACEOF + + ;; + *) +- echo "$as_me:8147: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + ;; + esac + +@@ -8153,11 +21249,14 @@ + # Does va_arg(arg, long double) crash the compiler? + # hpux 9.04 compiler does and so does Stratus FTX (uses HP's compiler) + #-------------------------------------------------------------------- +- echo "$as_me:8156: checking whether va_arg(arg, long double) crashes the compiler" >&5 +-echo $ECHO_N "checking whether va_arg(arg, long double) crashes the compiler... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking whether va_arg(arg, long double) crashes the compiler" >&5 ++echo $ECHO_N "checking whether va_arg(arg, long double) crashes the compiler... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF +-#line 8159 "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + #include + int + main () +@@ -8168,40 +21267,50 @@ + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:8171: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:8174: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:8177: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? +- echo "$as_me:8180: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- echo "$as_me:8182: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-echo "$as_me:8187: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + +-cat >>confdefs.h <<\EOF ++cat >>confdefs.h <<\_ACEOF + #define HAVE_VA_ARG_LONG_DOUBLE_BUG 1 +-EOF ++_ACEOF + + fi +-rm -f conftest.$ac_objext conftest.$ac_ext + +- echo "$as_me:8197: checking for an ANSI C-conforming const" >&5 +-echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6 ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++ { echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 ++echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6; } + if test "${ac_cv_c_const+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +-#line 8203 "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + + int + main () +@@ -8210,10 +21319,10 @@ + #ifndef __cplusplus + /* Ultrix mips cc rejects this. */ + typedef int charset[2]; +- const charset x; ++ const charset cs; + /* SunOS 4.1.1 cc rejects this. */ +- char const *const *ccp; +- char **p; ++ char const *const *pcpcc; ++ char **ppc; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; +@@ -8222,16 +21331,17 @@ + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; +- ccp = &g + (g ? g-g : 0); ++ pcpcc = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ +- ++ccp; +- p = (char**) ccp; +- ccp = (char const *const *) p; ++ ++pcpcc; ++ ppc = (char**) pcpcc; ++ pcpcc = (char const *const *) ppc; + { /* SCO 3.2v4 cc rejects this. */ + char *t; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; ++ if (s) return 0; + } + { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ + int x[] = {25, 17}; +@@ -8250,7 +21360,9 @@ + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; ++ if (!foo) return 0; + } ++ return !cs[0] && !zero.x; + #endif + + ; +@@ -8258,158 +21370,217 @@ + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:8261: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:8264: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:8267: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? +- echo "$as_me:8270: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_c_const=yes + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_cv_c_const=no ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_c_const=no + fi +-rm -f conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:8280: result: $ac_cv_c_const" >&5 +-echo "${ECHO_T}$ac_cv_c_const" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 ++echo "${ECHO_T}$ac_cv_c_const" >&6; } + if test $ac_cv_c_const = no; then + +-cat >>confdefs.h <<\EOF ++cat >>confdefs.h <<\_ACEOF + #define const +-EOF ++_ACEOF + + fi + ++ ++ ++ + for ac_func in strerror + do + as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +-echo "$as_me:8293: checking for $ac_func" >&5 +-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_var+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_func" >&5 ++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } ++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +-#line 8299 "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++/* Define $ac_func to an innocuous variant, in case declares $ac_func. ++ For example, HP-UX 11i declares gettimeofday. */ ++#define $ac_func innocuous_$ac_func ++ + /* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char $ac_func (); below. */ +-#include +-/* Override any gcc2 internal prototype to avoid an error. */ ++ which can conflict with char $ac_func (); below. ++ Prefer to if __STDC__ is defined, since ++ exists even on freestanding compilers. */ ++ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ ++#undef $ac_func ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char $ac_func (); +-char (*f) (); +- +-int +-main () +-{ + /* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) ++#if defined __stub_$ac_func || defined __stub___$ac_func + choke me +-#else +-f = $ac_func; + #endif + ++int ++main () ++{ ++return $ac_func (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:8330: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:8333: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:8336: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? +- echo "$as_me:8339: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + eval "$as_ac_var=yes" + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-eval "$as_ac_var=no" ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ eval "$as_ac_var=no" + fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:8349: result: `eval echo '${'$as_ac_var'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_var'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + if test `eval echo '${'$as_ac_var'}'` = yes; then +- cat >>confdefs.h <>confdefs.h <<_ACEOF + #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +-EOF ++_ACEOF + + else +- LIBOBJS="$LIBOBJS $ac_func.$ac_objext" ++ case " $LIBOBJS " in ++ *" $ac_func.$ac_objext "* ) ;; ++ *) LIBOBJS="$LIBOBJS $ac_func.$ac_objext" ++ ;; ++esac ++ + fi + done + +-echo "$as_me:8361: checking for inline" >&5 +-echo $ECHO_N "checking for inline... $ECHO_C" >&6 ++ ++ ++{ echo "$as_me:$LINENO: checking for inline" >&5 ++echo $ECHO_N "checking for inline... $ECHO_C" >&6; } + if test "${ac_cv_c_inline+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + ac_cv_c_inline=no + for ac_kw in inline __inline__ __inline; do + cat >conftest.$ac_ext <<_ACEOF +-#line 8369 "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + #ifndef __cplusplus +-static $ac_kw int static_foo () {return 0; } +-$ac_kw int foo () {return 0; } ++typedef int foo_t; ++static $ac_kw foo_t static_foo () {return 0; } ++$ac_kw foo_t foo () {return 0; } + #endif + + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:8378: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:8381: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:8384: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? +- echo "$as_me:8387: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_c_inline=$ac_kw; break ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_c_inline=$ac_kw + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ + fi +-rm -f conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ test "$ac_cv_c_inline" != no && break + done + + fi +-echo "$as_me:8398: result: $ac_cv_c_inline" >&5 +-echo "${ECHO_T}$ac_cv_c_inline" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5 ++echo "${ECHO_T}$ac_cv_c_inline" >&6; } ++ ++ + case $ac_cv_c_inline in + inline | yes) ;; +- no) +-cat >>confdefs.h <<\EOF +-#define inline +-EOF +- ;; +- *) cat >>confdefs.h <>confdefs.h <<_ACEOF ++#ifndef __cplusplus ++#define inline $ac_val ++#endif ++_ACEOF ++ ;; + esac + ++ + #-------------------------------------------------------------------- + # This is a little hokie in that it avoids including config.guess + # and config.sub in the distribution, but its been working so far. +@@ -8418,14 +21589,16 @@ + #-------------------------------------------------------------------- + SYSTEM=unix + ++ ++ + ansi= + if test -z "$ansi"; then + msg="for C compiler warning flags" + else + msg="for C compiler warning and ANSI conformance flags" + fi +- echo "$as_me:8427: checking $msg" >&5 +-echo $ECHO_N "checking $msg... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking $msg" >&5 ++echo $ECHO_N "checking $msg... $ECHO_C" >&6; } + if test "${ac_cv_prog_cc_warnings+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -8496,11 +21669,13 @@ + fi + + fi +-echo "$as_me:8499: result: $ac_cv_prog_cc_warnings" >&5 +-echo "${ECHO_T}$ac_cv_prog_cc_warnings" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_warnings" >&5 ++echo "${ECHO_T}$ac_cv_prog_cc_warnings" >&6; } ++ + + ac_config_files="$ac_config_files Makefile cgi-fcgi/Makefile include/Makefile libfcgi/Makefile examples/Makefile" + ++ + cat >confcache <<\_ACEOF + # This file is a shell script that caches the results of configure + # tests run on this system so they can be shared between configure +@@ -8511,7 +21686,7 @@ + # config.status only pays attention to the cache file if you give it + # the --recheck option to rerun configure. + # +-# `ac_cv_env_foo' variables (set or unset) will be overriden when ++# `ac_cv_env_foo' variables (set or unset) will be overridden when + # loading this file, other *unset* `ac_cv_foo' will be assigned the + # following values. + +@@ -8519,39 +21694,58 @@ + + # The following way of writing the cache mishandles newlines in values, + # but we know of no workaround that is simple, portable, and efficient. +-# So, don't put newlines in cache variables' values. ++# So, we kill variables containing newlines. + # Ultrix sh set writes to stderr and can't be redirected directly, + # and sets the high bit in the cache file unless we assign to the vars. +-{ ++( ++ for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do ++ eval ac_val=\$$ac_var ++ case $ac_val in #( ++ *${as_nl}*) ++ case $ac_var in #( ++ *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 ++echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; ++ esac ++ case $ac_var in #( ++ _ | IFS | as_nl) ;; #( ++ *) $as_unset $ac_var ;; ++ esac ;; ++ esac ++ done ++ + (set) 2>&1 | +- case `(ac_space=' '; set | grep ac_space) 2>&1` in +- *ac_space=\ *) ++ case $as_nl`(ac_space=' '; set) 2>&1` in #( ++ *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \). + sed -n \ +- "s/'/'\\\\''/g; +- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" +- ;; ++ "s/'/'\\\\''/g; ++ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ++ ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. +- sed -n \ +- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ++ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; +- esac; +-} | ++ esac | ++ sort ++) | + sed ' ++ /^ac_cv_env_/b end + t clear +- : clear ++ :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end +- /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ +- : end' >>confcache +-if cmp -s $cache_file confcache; then :; else +- if test -w $cache_file; then +- test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" ++ s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ ++ :end' >>confcache ++if diff "$cache_file" confcache >/dev/null 2>&1; then :; else ++ if test -w "$cache_file"; then ++ test "x$cache_file" != "x/dev/null" && ++ { echo "$as_me:$LINENO: updating cache $cache_file" >&5 ++echo "$as_me: updating cache $cache_file" >&6;} + cat confcache >$cache_file + else +- echo "not updating unwritable cache $cache_file" ++ { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 ++echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi + fi + rm -f confcache +@@ -8560,128 +21754,375 @@ + # Let make expand exec_prefix. + test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +-# VPATH may cause trouble with some makes, so we remove $(srcdir), +-# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +-# trailing colons and then remove the whole line if VPATH becomes empty +-# (actually we leave an empty line to preserve line numbers). +-if test "x$srcdir" = x.; then +- ac_vpsub='/^[ ]*VPATH[ ]*=/{ +-s/:*\$(srcdir):*/:/; +-s/:*\${srcdir}:*/:/; +-s/:*@srcdir@:*/:/; +-s/^\([^=]*=[ ]*\):*/\1/; +-s/:*$//; +-s/^[^=]*=[ ]*$//; +-}' +-fi +- + DEFS=-DHAVE_CONFIG_H + ++ac_libobjs= ++ac_ltlibobjs= ++for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue ++ # 1. Remove the extension, and $U if already installed. ++ ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ++ ac_i=`echo "$ac_i" | sed "$ac_script"` ++ # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR ++ # will be set to the directory where LIBOBJS objects are built. ++ ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" ++ ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' ++done ++LIBOBJS=$ac_libobjs ++ ++LTLIBOBJS=$ac_ltlibobjs ++ ++ ++if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then ++ { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. ++Usually this means the macro was only invoked conditionally." >&5 ++echo "$as_me: error: conditional \"AMDEP\" was never defined. ++Usually this means the macro was only invoked conditionally." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then ++ { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. ++Usually this means the macro was only invoked conditionally." >&5 ++echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. ++Usually this means the macro was only invoked conditionally." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then ++ { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. ++Usually this means the macro was only invoked conditionally." >&5 ++echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. ++Usually this means the macro was only invoked conditionally." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then ++ { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. ++Usually this means the macro was only invoked conditionally." >&5 ++echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. ++Usually this means the macro was only invoked conditionally." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++ + : ${CONFIG_STATUS=./config.status} + ac_clean_files_save=$ac_clean_files + ac_clean_files="$ac_clean_files $CONFIG_STATUS" +-{ echo "$as_me:8583: creating $CONFIG_STATUS" >&5 ++{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 + echo "$as_me: creating $CONFIG_STATUS" >&6;} + cat >$CONFIG_STATUS <<_ACEOF + #! $SHELL +-# Generated automatically by configure. ++# Generated by $as_me. + # Run this file to recreate the current configuration. + # Compiler output produced by configure, useful for debugging + # configure, is in config.log if it exists. + + debug=false ++ac_cs_recheck=false ++ac_cs_silent=false + SHELL=\${CONFIG_SHELL-$SHELL} +-ac_cs_invocation="\$0 \$@" +- + _ACEOF + +-cat >>$CONFIG_STATUS <<\_ACEOF +-# Be Bourne compatible +-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then +- emulate sh +- NULLCMD=: +-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then +- set -o posix ++cat >>$CONFIG_STATUS <<\_ACEOF ++## --------------------- ## ++## M4sh Initialization. ## ++## --------------------- ## ++ ++# Be more Bourne compatible ++DUALCASE=1; export DUALCASE # for MKS sh ++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then ++ emulate sh ++ NULLCMD=: ++ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which ++ # is contrary to our usage. Disable this feature. ++ alias -g '${1+"$@"}'='"$@"' ++ setopt NO_GLOB_SUBST ++else ++ case `(set -o) 2>/dev/null` in ++ *posix*) set -o posix ;; ++esac ++ ++fi ++ ++ ++ ++ ++# PATH needs CR ++# Avoid depending upon Character Ranges. ++as_cr_letters='abcdefghijklmnopqrstuvwxyz' ++as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' ++as_cr_Letters=$as_cr_letters$as_cr_LETTERS ++as_cr_digits='0123456789' ++as_cr_alnum=$as_cr_Letters$as_cr_digits ++ ++# The user is always right. ++if test "${PATH_SEPARATOR+set}" != set; then ++ echo "#! /bin/sh" >conf$$.sh ++ echo "exit 0" >>conf$$.sh ++ chmod +x conf$$.sh ++ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then ++ PATH_SEPARATOR=';' ++ else ++ PATH_SEPARATOR=: ++ fi ++ rm -f conf$$.sh ++fi ++ ++# Support unset when possible. ++if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then ++ as_unset=unset ++else ++ as_unset=false ++fi ++ ++ ++# IFS ++# We need space, tab and new line, in precisely that order. Quoting is ++# there to prevent editors from complaining about space-tab. ++# (If _AS_PATH_WALK were called with IFS unset, it would disable word ++# splitting by setting IFS to empty value.) ++as_nl=' ++' ++IFS=" "" $as_nl" ++ ++# Find who we are. Look in the path if we contain no directory separator. ++case $0 in ++ *[\\/]* ) as_myself=$0 ;; ++ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break ++done ++IFS=$as_save_IFS ++ ++ ;; ++esac ++# We did not find ourselves, most probably we were run as `sh COMMAND' ++# in which case we are not to be found in the path. ++if test "x$as_myself" = x; then ++ as_myself=$0 ++fi ++if test ! -f "$as_myself"; then ++ echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 ++ { (exit 1); exit 1; } ++fi ++ ++# Work around bugs in pre-3.0 UWIN ksh. ++for as_var in ENV MAIL MAILPATH ++do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var ++done ++PS1='$ ' ++PS2='> ' ++PS4='+ ' ++ ++# NLS nuisances. ++for as_var in \ ++ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ ++ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ ++ LC_TELEPHONE LC_TIME ++do ++ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then ++ eval $as_var=C; export $as_var ++ else ++ ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var ++ fi ++done ++ ++# Required to use basename. ++if expr a : '\(a\)' >/dev/null 2>&1 && ++ test "X`expr 00001 : '.*\(...\)'`" = X001; then ++ as_expr=expr ++else ++ as_expr=false ++fi ++ ++if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then ++ as_basename=basename ++else ++ as_basename=false ++fi ++ ++ ++# Name of the executable. ++as_me=`$as_basename -- "$0" || ++$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ ++ X"$0" : 'X\(//\)$' \| \ ++ X"$0" : 'X\(/\)' \| . 2>/dev/null || ++echo X/"$0" | ++ sed '/^.*\/\([^/][^/]*\)\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ ++# CDPATH. ++$as_unset CDPATH ++ ++ ++ ++ as_lineno_1=$LINENO ++ as_lineno_2=$LINENO ++ test "x$as_lineno_1" != "x$as_lineno_2" && ++ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { ++ ++ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO ++ # uniformly replaced by the line number. The first 'sed' inserts a ++ # line-number line after each line using $LINENO; the second 'sed' ++ # does the real work. The second script uses 'N' to pair each ++ # line-number line with the line containing $LINENO, and appends ++ # trailing '-' during substitution so that $LINENO is not a special ++ # case at line end. ++ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the ++ # scripts with optimization help from Paolo Bonzini. Blame Lee ++ # E. McMahon (1931-1989) for sed's syntax. :-) ++ sed -n ' ++ p ++ /[$]LINENO/= ++ ' <$as_myself | ++ sed ' ++ s/[$]LINENO.*/&-/ ++ t lineno ++ b ++ :lineno ++ N ++ :loop ++ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ ++ t loop ++ s/-\n.*// ++ ' >$as_me.lineno && ++ chmod +x "$as_me.lineno" || ++ { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 ++ { (exit 1); exit 1; }; } ++ ++ # Don't try to exec as it changes $[0], causing all sort of problems ++ # (the dirname of $[0] is not the place where we might find the ++ # original and so on. Autoconf is especially sensitive to this). ++ . "./$as_me.lineno" ++ # Exit status is that of the last command. ++ exit ++} ++ ++ ++if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then ++ as_dirname=dirname ++else ++ as_dirname=false + fi + +-# Name of the executable. +-as_me=`echo "$0" |sed 's,.*[\\/],,'` ++ECHO_C= ECHO_N= ECHO_T= ++case `echo -n x` in ++-n*) ++ case `echo 'x\c'` in ++ *c*) ECHO_T=' ';; # ECHO_T is single tab character. ++ *) ECHO_C='\c';; ++ esac;; ++*) ++ ECHO_N='-n';; ++esac + +-if expr a : '\(a\)' >/dev/null 2>&1; then ++if expr a : '\(a\)' >/dev/null 2>&1 && ++ test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr + else + as_expr=false + fi + + rm -f conf$$ conf$$.exe conf$$.file ++if test -d conf$$.dir; then ++ rm -f conf$$.dir/conf$$.file ++else ++ rm -f conf$$.dir ++ mkdir conf$$.dir ++fi + echo >conf$$.file + if ln -s conf$$.file conf$$ 2>/dev/null; then +- # We could just check for DJGPP; but this test a) works b) is more generic +- # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). +- if test -f conf$$.exe; then +- # Don't use ln at all; we don't have any links ++ as_ln_s='ln -s' ++ # ... but there are two gotchas: ++ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. ++ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. ++ # In both cases, we have to default to `cp -p'. ++ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' +- else +- as_ln_s='ln -s' +- fi + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' + fi +-rm -f conf$$ conf$$.exe conf$$.file ++rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file ++rmdir conf$$.dir 2>/dev/null + +-as_executable_p="test -f" ++if mkdir -p . 2>/dev/null; then ++ as_mkdir_p=: ++else ++ test -d ./-p && rmdir ./-p ++ as_mkdir_p=false ++fi + +-# Support unset when possible. +-if (FOO=FOO; unset FOO) >/dev/null 2>&1; then +- as_unset=unset ++if test -x / >/dev/null 2>&1; then ++ as_test_x='test -x' + else +- as_unset=false ++ if ls -dL / >/dev/null 2>&1; then ++ as_ls_L_option=L ++ else ++ as_ls_L_option= ++ fi ++ as_test_x=' ++ eval sh -c '\'' ++ if test -d "$1"; then ++ test -d "$1/."; ++ else ++ case $1 in ++ -*)set "./$1";; ++ esac; ++ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ++ ???[sx]*):;;*)false;;esac;fi ++ '\'' sh ++ ' + fi ++as_executable_p=$as_test_x + +-# NLS nuisances. +-$as_unset LANG || test "${LANG+set}" != set || { LANG=C; export LANG; } +-$as_unset LC_ALL || test "${LC_ALL+set}" != set || { LC_ALL=C; export LC_ALL; } +-$as_unset LC_TIME || test "${LC_TIME+set}" != set || { LC_TIME=C; export LC_TIME; } +-$as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set || { LC_CTYPE=C; export LC_CTYPE; } +-$as_unset LANGUAGE || test "${LANGUAGE+set}" != set || { LANGUAGE=C; export LANGUAGE; } +-$as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set || { LC_COLLATE=C; export LC_COLLATE; } +-$as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set || { LC_NUMERIC=C; export LC_NUMERIC; } +-$as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set || { LC_MESSAGES=C; export LC_MESSAGES; } ++# Sed expression to map a string onto a valid CPP name. ++as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +-# IFS +-# We need space, tab and new line, in precisely that order. +-as_nl=' +-' +-IFS=" $as_nl" ++# Sed expression to map a string onto a valid variable name. ++as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + +-# CDPATH. +-$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=:; export CDPATH; } + + exec 6>&1 + +-_ACEOF ++# Save the log message, to keep $[0] and so on meaningful, and to ++# report actual input values of CONFIG_FILES etc. instead of their ++# values after options handling. ++ac_log=" ++This file was extended by $as_me, which was ++generated by GNU Autoconf 2.61. Invocation command line was + +-# Files that config.status was made for. +-if test -n "$ac_config_files"; then +- echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS +-fi ++ CONFIG_FILES = $CONFIG_FILES ++ CONFIG_HEADERS = $CONFIG_HEADERS ++ CONFIG_LINKS = $CONFIG_LINKS ++ CONFIG_COMMANDS = $CONFIG_COMMANDS ++ $ $0 $@ + +-if test -n "$ac_config_headers"; then +- echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS +-fi ++on `(hostname || uname -n) 2>/dev/null | sed 1q` ++" + +-if test -n "$ac_config_links"; then +- echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS +-fi ++_ACEOF + +-if test -n "$ac_config_commands"; then +- echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS +-fi ++cat >>$CONFIG_STATUS <<_ACEOF ++# Files that config.status was made for. ++config_files="$ac_config_files" ++config_headers="$ac_config_headers" ++config_commands="$ac_config_commands" + +-cat >>$CONFIG_STATUS <<\EOF ++_ACEOF + ++cat >>$CONFIG_STATUS <<\_ACEOF + ac_cs_usage="\ + \`$as_me' instantiates files from templates according to the + current configuration. +@@ -8689,13 +22130,14 @@ + Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit +- -V, --version print version number, then exit ++ -V, --version print version number and configuration settings, then exit ++ -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] +- instantiate the configuration file FILE ++ instantiate the configuration file FILE + --header=FILE[:TEMPLATE] +- instantiate the configuration header FILE ++ instantiate the configuration header FILE + + Configuration files: + $config_files +@@ -8707,23 +22149,25 @@ + $config_commands + + Report bugs to ." +-EOF + +-cat >>$CONFIG_STATUS <>$CONFIG_STATUS <<_ACEOF + ac_cs_version="\\ + config.status +-configured by $0, generated by GNU Autoconf 2.52, +- with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" ++configured by $0, generated by GNU Autoconf 2.61, ++ with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" + +-Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 +-Free Software Foundation, Inc. ++Copyright (C) 2006 Free Software Foundation, Inc. + This config.status script is free software; the Free Software Foundation + gives unlimited permission to copy, distribute and modify it." +-srcdir=$srcdir +-INSTALL="$INSTALL" +-EOF + +-cat >>$CONFIG_STATUS <<\EOF ++ac_pwd='$ac_pwd' ++srcdir='$srcdir' ++INSTALL='$INSTALL' ++MKDIR_P='$MKDIR_P' ++_ACEOF ++ ++cat >>$CONFIG_STATUS <<\_ACEOF + # If no file are specified by the user, then we need to provide default + # value. By we need to know if files were specified by the user. + ac_need_defaults=: +@@ -8731,108 +22175,113 @@ + do + case $1 in + --*=*) +- ac_option=`expr "x$1" : 'x\([^=]*\)='` +- ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` +- shift +- set dummy "$ac_option" "$ac_optarg" ${1+"$@"} +- shift ++ ac_option=`expr "X$1" : 'X\([^=]*\)='` ++ ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ++ ac_shift=: ++ ;; ++ *) ++ ac_option=$1 ++ ac_optarg=$2 ++ ac_shift=shift + ;; +- -*);; +- *) # This is not an option, so the user has probably given explicit +- # arguments. +- ac_need_defaults=false;; + esac + +- case $1 in ++ case $ac_option in + # Handling of the options. +-EOF +-cat >>$CONFIG_STATUS <>$CONFIG_STATUS <<\EOF +- --version | --vers* | -V ) +- echo "$ac_cs_version"; exit 0 ;; +- --he | --h) +- # Conflict between --help and --header +- { { echo "$as_me:8759: error: ambiguous option: $1 +-Try \`$0 --help' for more information." >&5 +-echo "$as_me: error: ambiguous option: $1 +-Try \`$0 --help' for more information." >&2;} +- { (exit 1); exit 1; }; };; +- --help | --hel | -h ) +- echo "$ac_cs_usage"; exit 0 ;; +- --debug | --d* | -d ) ++ ac_cs_recheck=: ;; ++ --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) ++ echo "$ac_cs_version"; exit ;; ++ --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) +- shift +- CONFIG_FILES="$CONFIG_FILES $1" ++ $ac_shift ++ CONFIG_FILES="$CONFIG_FILES $ac_optarg" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) +- shift +- CONFIG_HEADERS="$CONFIG_HEADERS $1" ++ $ac_shift ++ CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + ac_need_defaults=false;; ++ --he | --h) ++ # Conflict between --help and --header ++ { echo "$as_me: error: ambiguous option: $1 ++Try \`$0 --help' for more information." >&2 ++ { (exit 1); exit 1; }; };; ++ --help | --hel | -h ) ++ echo "$ac_cs_usage"; exit ;; ++ -q | -quiet | --quiet | --quie | --qui | --qu | --q \ ++ | -silent | --silent | --silen | --sile | --sil | --si | --s) ++ ac_cs_silent=: ;; + + # This is an error. +- -*) { { echo "$as_me:8778: error: unrecognized option: $1 +-Try \`$0 --help' for more information." >&5 +-echo "$as_me: error: unrecognized option: $1 +-Try \`$0 --help' for more information." >&2;} ++ -*) { echo "$as_me: error: unrecognized option: $1 ++Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } ;; + +- *) ac_config_targets="$ac_config_targets $1" ;; ++ *) ac_config_targets="$ac_config_targets $1" ++ ac_need_defaults=false ;; + + esac + shift + done + +-exec 5>>config.log +-cat >&5 << _ACEOF ++ac_configure_extra_args= + +-## ----------------------- ## +-## Running config.status. ## +-## ----------------------- ## ++if $ac_cs_silent; then ++ exec 6>/dev/null ++ ac_configure_extra_args="$ac_configure_extra_args --silent" ++fi + +-This file was extended by $as_me 2.52, executed with +- CONFIG_FILES = $CONFIG_FILES +- CONFIG_HEADERS = $CONFIG_HEADERS +- CONFIG_LINKS = $CONFIG_LINKS +- CONFIG_COMMANDS = $CONFIG_COMMANDS +- > $ac_cs_invocation +-on `(hostname || uname -n) 2>/dev/null | sed 1q` ++_ACEOF ++cat >>$CONFIG_STATUS <<_ACEOF ++if \$ac_cs_recheck; then ++ echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 ++ CONFIG_SHELL=$SHELL ++ export CONFIG_SHELL ++ exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion ++fi + + _ACEOF +-EOF ++cat >>$CONFIG_STATUS <<\_ACEOF ++exec 5>>config.log ++{ ++ echo ++ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ++## Running $as_me. ## ++_ASBOX ++ echo "$ac_log" ++} >&5 + +-cat >>$CONFIG_STATUS <>$CONFIG_STATUS <<_ACEOF + # +-# INIT-COMMANDS section. ++# INIT-COMMANDS + # ++AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" + +-AMDEP_TRUE="$AMDEP_TRUE" +-ac_aux_dir="$ac_aux_dir" ++_ACEOF + +-EOF ++cat >>$CONFIG_STATUS <<\_ACEOF + +-cat >>$CONFIG_STATUS <<\EOF ++# Handling of arguments. + for ac_config_target in $ac_config_targets + do +- case "$ac_config_target" in +- # Handling of arguments. +- "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; +- "cgi-fcgi/Makefile" ) CONFIG_FILES="$CONFIG_FILES cgi-fcgi/Makefile" ;; +- "include/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/Makefile" ;; +- "libfcgi/Makefile" ) CONFIG_FILES="$CONFIG_FILES libfcgi/Makefile" ;; +- "examples/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;; +- "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; +- "fcgi_config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS fcgi_config.h" ;; +- *) { { echo "$as_me:8830: error: invalid argument: $ac_config_target" >&5 ++ case $ac_config_target in ++ "fcgi_config.h") CONFIG_HEADERS="$CONFIG_HEADERS fcgi_config.h" ;; ++ "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; ++ "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; ++ "cgi-fcgi/Makefile") CONFIG_FILES="$CONFIG_FILES cgi-fcgi/Makefile" ;; ++ "include/Makefile") CONFIG_FILES="$CONFIG_FILES include/Makefile" ;; ++ "libfcgi/Makefile") CONFIG_FILES="$CONFIG_FILES libfcgi/Makefile" ;; ++ "examples/Makefile") CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;; ++ ++ *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 + echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + esac + done + ++ + # If the user did not use the arguments to specify the items to instantiate, + # then the envvar interface is used. Set only those that are not. + # We use the long form for the default assignment because of an extremely +@@ -8843,583 +22292,781 @@ + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands + fi + +-# Create a temporary directory, and hook for its removal unless debugging. ++# Have a temporary directory for convenience. Make it in the build tree ++# simply because there is no reason against having it here, and in addition, ++# creating and moving files from /tmp can sometimes cause problems. ++# Hook for its removal unless debugging. ++# Note that there is a small window in which the directory will not be cleaned: ++# after its creation but before its name has been assigned to `$tmp'. + $debug || + { +- trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 ++ tmp= ++ trap 'exit_status=$? ++ { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status ++' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 + } +- + # Create a (secure) tmp directory for tmp files. +-: ${TMPDIR=/tmp} ++ + { +- tmp=`(umask 077 && mktemp -d -q "$TMPDIR/csXXXXXX") 2>/dev/null` && ++ tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" + } || + { +- tmp=$TMPDIR/cs$$-$RANDOM +- (umask 077 && mkdir $tmp) ++ tmp=./conf$$-$RANDOM ++ (umask 077 && mkdir "$tmp") + } || + { +- echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ++ echo "$me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } + } + +-EOF +- +-cat >>$CONFIG_STATUS <\$tmp/subs.sed <<\\CEOF +-s,@SHELL@,$SHELL,;t t +-s,@exec_prefix@,$exec_prefix,;t t +-s,@prefix@,$prefix,;t t +-s,@program_transform_name@,$program_transform_name,;t t +-s,@bindir@,$bindir,;t t +-s,@sbindir@,$sbindir,;t t +-s,@libexecdir@,$libexecdir,;t t +-s,@datadir@,$datadir,;t t +-s,@sysconfdir@,$sysconfdir,;t t +-s,@sharedstatedir@,$sharedstatedir,;t t +-s,@localstatedir@,$localstatedir,;t t +-s,@libdir@,$libdir,;t t +-s,@includedir@,$includedir,;t t +-s,@oldincludedir@,$oldincludedir,;t t +-s,@infodir@,$infodir,;t t +-s,@mandir@,$mandir,;t t +-s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t +-s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t +-s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t +-s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t +-s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t +-s,@build_alias@,$build_alias,;t t +-s,@host_alias@,$host_alias,;t t +-s,@target_alias@,$target_alias,;t t +-s,@ECHO_C@,$ECHO_C,;t t +-s,@ECHO_N@,$ECHO_N,;t t +-s,@ECHO_T@,$ECHO_T,;t t +-s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t +-s,@DEFS@,$DEFS,;t t +-s,@LIBS@,$LIBS,;t t +-s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t +-s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t +-s,@INSTALL_DATA@,$INSTALL_DATA,;t t +-s,@PACKAGE@,$PACKAGE,;t t +-s,@VERSION@,$VERSION,;t t +-s,@EXEEXT@,$EXEEXT,;t t +-s,@OBJEXT@,$OBJEXT,;t t +-s,@ACLOCAL@,$ACLOCAL,;t t +-s,@AUTOCONF@,$AUTOCONF,;t t +-s,@AUTOMAKE@,$AUTOMAKE,;t t +-s,@AUTOHEADER@,$AUTOHEADER,;t t +-s,@MAKEINFO@,$MAKEINFO,;t t +-s,@AMTAR@,$AMTAR,;t t +-s,@install_sh@,$install_sh,;t t +-s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t +-s,@AWK@,$AWK,;t t +-s,@SET_MAKE@,$SET_MAKE,;t t +-s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t +-s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t +-s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t +-s,@DEPDIR@,$DEPDIR,;t t +-s,@CC@,$CC,;t t +-s,@CFLAGS@,$CFLAGS,;t t +-s,@LDFLAGS@,$LDFLAGS,;t t +-s,@CPPFLAGS@,$CPPFLAGS,;t t +-s,@ac_ct_CC@,$ac_ct_CC,;t t +-s,@am__include@,$am__include,;t t +-s,@am__quote@,$am__quote,;t t +-s,@CCDEPMODE@,$CCDEPMODE,;t t +-s,@CPP@,$CPP,;t t +-s,@build@,$build,;t t +-s,@build_cpu@,$build_cpu,;t t +-s,@build_vendor@,$build_vendor,;t t +-s,@build_os@,$build_os,;t t +-s,@host@,$host,;t t +-s,@host_cpu@,$host_cpu,;t t +-s,@host_vendor@,$host_vendor,;t t +-s,@host_os@,$host_os,;t t +-s,@LN_S@,$LN_S,;t t +-s,@ECHO@,$ECHO,;t t +-s,@RANLIB@,$RANLIB,;t t +-s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t +-s,@STRIP@,$STRIP,;t t +-s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t +-s,@LIBTOOL@,$LIBTOOL,;t t +-s,@CXX@,$CXX,;t t +-s,@CXXFLAGS@,$CXXFLAGS,;t t +-s,@ac_ct_CXX@,$ac_ct_CXX,;t t +-s,@CXXDEPMODE@,$CXXDEPMODE,;t t +-s,@LIBFCGIXX@,$LIBFCGIXX,;t t +-s,@ECHO_CPP@,$ECHO_CPP,;t t +-s,@PTHREAD_CC@,$PTHREAD_CC,;t t +-s,@PTHREAD_LIBS@,$PTHREAD_LIBS,;t t +-s,@PTHREAD_CFLAGS@,$PTHREAD_CFLAGS,;t t +-s,@THREADED@,$THREADED,;t t +-s,@LIBOBJS@,$LIBOBJS,;t t +-s,@SYSTEM@,$SYSTEM,;t t +-CEOF ++if test -n "$CONFIG_FILES"; then + +-EOF ++_ACEOF + +- cat >>$CONFIG_STATUS <<\EOF +- # Split the substitutions into bite-sized pieces for seds with +- # small command number limits, like on Digital OSF/1 and HP-UX. +- ac_max_sed_lines=48 +- ac_sed_frag=1 # Number of current file. +- ac_beg=1 # First line for current file. +- ac_end=$ac_max_sed_lines # Line after last line for current file. +- ac_more_lines=: +- ac_sed_cmds= +- while $ac_more_lines; do +- if test $ac_beg -gt 1; then +- sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag +- else +- sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag +- fi +- if test ! -s $tmp/subs.frag; then +- ac_more_lines=false +- else +- # The purpose of the label and of the branching condition is to +- # speed up the sed processing (if there are no `@' at all, there +- # is no need to browse any of the substitutions). +- # These are the two extra sed commands mentioned above. +- (echo ':t +- /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed +- if test -z "$ac_sed_cmds"; then +- ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" +- else +- ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" +- fi +- ac_sed_frag=`expr $ac_sed_frag + 1` +- ac_beg=$ac_end +- ac_end=`expr $ac_end + $ac_max_sed_lines` +- fi +- done +- if test -z "$ac_sed_cmds"; then +- ac_sed_cmds=cat ++ ++ ++ac_delim='%!_!# ' ++for ac_last_try in false false false false false :; do ++ cat >conf$$subs.sed <<_ACEOF ++SHELL!$SHELL$ac_delim ++PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim ++PACKAGE_NAME!$PACKAGE_NAME$ac_delim ++PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim ++PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim ++PACKAGE_STRING!$PACKAGE_STRING$ac_delim ++PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim ++exec_prefix!$exec_prefix$ac_delim ++prefix!$prefix$ac_delim ++program_transform_name!$program_transform_name$ac_delim ++bindir!$bindir$ac_delim ++sbindir!$sbindir$ac_delim ++libexecdir!$libexecdir$ac_delim ++datarootdir!$datarootdir$ac_delim ++datadir!$datadir$ac_delim ++sysconfdir!$sysconfdir$ac_delim ++sharedstatedir!$sharedstatedir$ac_delim ++localstatedir!$localstatedir$ac_delim ++includedir!$includedir$ac_delim ++oldincludedir!$oldincludedir$ac_delim ++docdir!$docdir$ac_delim ++infodir!$infodir$ac_delim ++htmldir!$htmldir$ac_delim ++dvidir!$dvidir$ac_delim ++pdfdir!$pdfdir$ac_delim ++psdir!$psdir$ac_delim ++libdir!$libdir$ac_delim ++localedir!$localedir$ac_delim ++mandir!$mandir$ac_delim ++DEFS!$DEFS$ac_delim ++ECHO_C!$ECHO_C$ac_delim ++ECHO_N!$ECHO_N$ac_delim ++ECHO_T!$ECHO_T$ac_delim ++LIBS!$LIBS$ac_delim ++build_alias!$build_alias$ac_delim ++host_alias!$host_alias$ac_delim ++target_alias!$target_alias$ac_delim ++INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim ++INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim ++INSTALL_DATA!$INSTALL_DATA$ac_delim ++am__isrc!$am__isrc$ac_delim ++CYGPATH_W!$CYGPATH_W$ac_delim ++PACKAGE!$PACKAGE$ac_delim ++VERSION!$VERSION$ac_delim ++ACLOCAL!$ACLOCAL$ac_delim ++AUTOCONF!$AUTOCONF$ac_delim ++AUTOMAKE!$AUTOMAKE$ac_delim ++AUTOHEADER!$AUTOHEADER$ac_delim ++MAKEINFO!$MAKEINFO$ac_delim ++install_sh!$install_sh$ac_delim ++STRIP!$STRIP$ac_delim ++INSTALL_STRIP_PROGRAM!$INSTALL_STRIP_PROGRAM$ac_delim ++mkdir_p!$mkdir_p$ac_delim ++AWK!$AWK$ac_delim ++SET_MAKE!$SET_MAKE$ac_delim ++am__leading_dot!$am__leading_dot$ac_delim ++AMTAR!$AMTAR$ac_delim ++am__tar!$am__tar$ac_delim ++am__untar!$am__untar$ac_delim ++CC!$CC$ac_delim ++CFLAGS!$CFLAGS$ac_delim ++LDFLAGS!$LDFLAGS$ac_delim ++CPPFLAGS!$CPPFLAGS$ac_delim ++ac_ct_CC!$ac_ct_CC$ac_delim ++EXEEXT!$EXEEXT$ac_delim ++OBJEXT!$OBJEXT$ac_delim ++DEPDIR!$DEPDIR$ac_delim ++am__include!$am__include$ac_delim ++am__quote!$am__quote$ac_delim ++AMDEP_TRUE!$AMDEP_TRUE$ac_delim ++AMDEP_FALSE!$AMDEP_FALSE$ac_delim ++AMDEPBACKSLASH!$AMDEPBACKSLASH$ac_delim ++CCDEPMODE!$CCDEPMODE$ac_delim ++am__fastdepCC_TRUE!$am__fastdepCC_TRUE$ac_delim ++am__fastdepCC_FALSE!$am__fastdepCC_FALSE$ac_delim ++CPP!$CPP$ac_delim ++build!$build$ac_delim ++build_cpu!$build_cpu$ac_delim ++build_vendor!$build_vendor$ac_delim ++build_os!$build_os$ac_delim ++host!$host$ac_delim ++host_cpu!$host_cpu$ac_delim ++host_vendor!$host_vendor$ac_delim ++host_os!$host_os$ac_delim ++SED!$SED$ac_delim ++GREP!$GREP$ac_delim ++EGREP!$EGREP$ac_delim ++LN_S!$LN_S$ac_delim ++ECHO!$ECHO$ac_delim ++AR!$AR$ac_delim ++RANLIB!$RANLIB$ac_delim ++CXX!$CXX$ac_delim ++CXXFLAGS!$CXXFLAGS$ac_delim ++ac_ct_CXX!$ac_ct_CXX$ac_delim ++CXXDEPMODE!$CXXDEPMODE$ac_delim ++am__fastdepCXX_TRUE!$am__fastdepCXX_TRUE$ac_delim ++am__fastdepCXX_FALSE!$am__fastdepCXX_FALSE$ac_delim ++_ACEOF ++ ++ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then ++ break ++ elif $ac_last_try; then ++ { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 ++echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} ++ { (exit 1); exit 1; }; } ++ else ++ ac_delim="$ac_delim!$ac_delim _$ac_delim!! " ++ fi ++done ++ ++ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` ++if test -n "$ac_eof"; then ++ ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` ++ ac_eof=`expr $ac_eof + 1` ++fi ++ ++cat >>$CONFIG_STATUS <<_ACEOF ++cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof ++/@[a-zA-Z_][a-zA-Z_0-9]*@/!b ++_ACEOF ++sed ' ++s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g ++s/^/s,@/; s/!/@,|#_!!_#|/ ++:n ++t n ++s/'"$ac_delim"'$/,g/; t ++s/$/\\/; p ++N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n ++' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF ++CEOF$ac_eof ++_ACEOF ++ ++ ++ac_delim='%!_!# ' ++for ac_last_try in false false false false false :; do ++ cat >conf$$subs.sed <<_ACEOF ++CXXCPP!$CXXCPP$ac_delim ++F77!$F77$ac_delim ++FFLAGS!$FFLAGS$ac_delim ++ac_ct_F77!$ac_ct_F77$ac_delim ++LIBTOOL!$LIBTOOL$ac_delim ++LIBFCGIXX!$LIBFCGIXX$ac_delim ++ECHO_CPP!$ECHO_CPP$ac_delim ++PTHREAD_CC!$PTHREAD_CC$ac_delim ++PTHREAD_LIBS!$PTHREAD_LIBS$ac_delim ++PTHREAD_CFLAGS!$PTHREAD_CFLAGS$ac_delim ++THREADED!$THREADED$ac_delim ++LIBOBJS!$LIBOBJS$ac_delim ++SYSTEM!$SYSTEM$ac_delim ++LTLIBOBJS!$LTLIBOBJS$ac_delim ++_ACEOF ++ ++ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 14; then ++ break ++ elif $ac_last_try; then ++ { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 ++echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} ++ { (exit 1); exit 1; }; } ++ else ++ ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi ++done ++ ++ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` ++if test -n "$ac_eof"; then ++ ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` ++ ac_eof=`expr $ac_eof + 1` ++fi ++ ++cat >>$CONFIG_STATUS <<_ACEOF ++cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof ++/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end ++_ACEOF ++sed ' ++s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g ++s/^/s,@/; s/!/@,|#_!!_#|/ ++:n ++t n ++s/'"$ac_delim"'$/,g/; t ++s/$/\\/; p ++N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n ++' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF ++:end ++s/|#_!!_#|//g ++CEOF$ac_eof ++_ACEOF ++ ++ ++# VPATH may cause trouble with some makes, so we remove $(srcdir), ++# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and ++# trailing colons and then remove the whole line if VPATH becomes empty ++# (actually we leave an empty line to preserve line numbers). ++if test "x$srcdir" = x.; then ++ ac_vpsub='/^[ ]*VPATH[ ]*=/{ ++s/:*\$(srcdir):*/:/ ++s/:*\${srcdir}:*/:/ ++s/:*@srcdir@:*/:/ ++s/^\([^=]*=[ ]*\):*/\1/ ++s/:*$// ++s/^[^=]*=[ ]*$// ++}' ++fi ++ ++cat >>$CONFIG_STATUS <<\_ACEOF + fi # test -n "$CONFIG_FILES" + +-EOF +-cat >>$CONFIG_STATUS <<\EOF +-for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue +- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". +- case $ac_file in +- - | *:- | *:-:* ) # input from stdin +- cat >$tmp/stdin +- ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` +- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; +- *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` +- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; +- * ) ac_file_in=$ac_file.in ;; ++ ++for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS ++do ++ case $ac_tag in ++ :[FHLC]) ac_mode=$ac_tag; continue;; ++ esac ++ case $ac_mode$ac_tag in ++ :[FHL]*:*);; ++ :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 ++echo "$as_me: error: Invalid tag $ac_tag." >&2;} ++ { (exit 1); exit 1; }; };; ++ :[FH]-) ac_tag=-:-;; ++ :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac ++ ac_save_IFS=$IFS ++ IFS=: ++ set x $ac_tag ++ IFS=$ac_save_IFS ++ shift ++ ac_file=$1 ++ shift + +- # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. +- ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$ac_file" : 'X\(//\)[^/]' \| \ +- X"$ac_file" : 'X\(//\)$' \| \ +- X"$ac_file" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || +-echo X"$ac_file" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then +- { case "$ac_dir" in +- [\\/]* | ?:[\\/]* ) as_incr_dir=;; +- *) as_incr_dir=.;; +-esac +-as_dummy="$ac_dir" +-for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do +- case $as_mkdir_dir in +- # Skip DOS drivespec +- ?:) as_incr_dir=$as_mkdir_dir ;; +- *) +- as_incr_dir=$as_incr_dir/$as_mkdir_dir +- test -d "$as_incr_dir" || mkdir "$as_incr_dir" ++ case $ac_mode in ++ :L) ac_source=$1;; ++ :[FH]) ++ ac_file_inputs= ++ for ac_f ++ do ++ case $ac_f in ++ -) ac_f="$tmp/stdin";; ++ *) # Look for the file first in the build tree, then in the source tree ++ # (if the path is not absolute). The absolute path cannot be DOS-style, ++ # because $ac_f cannot contain `:'. ++ test -f "$ac_f" || ++ case $ac_f in ++ [\\/$]*) false;; ++ *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; ++ esac || ++ { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 ++echo "$as_me: error: cannot find input file: $ac_f" >&2;} ++ { (exit 1); exit 1; }; };; ++ esac ++ ac_file_inputs="$ac_file_inputs $ac_f" ++ done ++ ++ # Let's still pretend it is `configure' which instantiates (i.e., don't ++ # use $as_me), people would be surprised to read: ++ # /* config.h. Generated by config.status. */ ++ configure_input="Generated from "`IFS=: ++ echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure." ++ if test x"$ac_file" != x-; then ++ configure_input="$ac_file. $configure_input" ++ { echo "$as_me:$LINENO: creating $ac_file" >&5 ++echo "$as_me: creating $ac_file" >&6;} ++ fi ++ ++ case $ac_tag in ++ *:-:* | *:-) cat >"$tmp/stdin";; ++ esac + ;; + esac +-done; } +- +- ac_dir_suffix="/`echo $ac_dir|sed 's,^\./,,'`" +- # A "../" for each directory in $ac_dir_suffix. +- ac_dots=`echo "$ac_dir_suffix" | sed 's,/[^/]*,../,g'` +- else +- ac_dir_suffix= ac_dots= +- fi + +- case $srcdir in +- .) ac_srcdir=. +- if test -z "$ac_dots"; then +- ac_top_srcdir=. +- else +- ac_top_srcdir=`echo $ac_dots | sed 's,/$,,'` +- fi ;; +- [\\/]* | ?:[\\/]* ) +- ac_srcdir=$srcdir$ac_dir_suffix; +- ac_top_srcdir=$srcdir ;; +- *) # Relative path. +- ac_srcdir=$ac_dots$srcdir$ac_dir_suffix +- ac_top_srcdir=$ac_dots$srcdir ;; ++ ac_dir=`$as_dirname -- "$ac_file" || ++$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$ac_file" : 'X\(//\)[^/]' \| \ ++ X"$ac_file" : 'X\(//\)$' \| \ ++ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || ++echo X"$ac_file" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ { as_dir="$ac_dir" ++ case $as_dir in #( ++ -*) as_dir=./$as_dir;; + esac ++ test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { ++ as_dirs= ++ while :; do ++ case $as_dir in #( ++ *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( ++ *) as_qdir=$as_dir;; ++ esac ++ as_dirs="'$as_qdir' $as_dirs" ++ as_dir=`$as_dirname -- "$as_dir" || ++$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$as_dir" : 'X\(//\)[^/]' \| \ ++ X"$as_dir" : 'X\(//\)$' \| \ ++ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || ++echo X"$as_dir" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ test -d "$as_dir" && break ++ done ++ test -z "$as_dirs" || eval "mkdir $as_dirs" ++ } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 ++echo "$as_me: error: cannot create directory $as_dir" >&2;} ++ { (exit 1); exit 1; }; }; } ++ ac_builddir=. ++ ++case "$ac_dir" in ++.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; ++*) ++ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` ++ # A ".." for each directory in $ac_dir_suffix. ++ ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` ++ case $ac_top_builddir_sub in ++ "") ac_top_builddir_sub=. ac_top_build_prefix= ;; ++ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; ++ esac ;; ++esac ++ac_abs_top_builddir=$ac_pwd ++ac_abs_builddir=$ac_pwd$ac_dir_suffix ++# for backward compatibility: ++ac_top_builddir=$ac_top_build_prefix ++ ++case $srcdir in ++ .) # We are building in place. ++ ac_srcdir=. ++ ac_top_srcdir=$ac_top_builddir_sub ++ ac_abs_top_srcdir=$ac_pwd ;; ++ [\\/]* | ?:[\\/]* ) # Absolute name. ++ ac_srcdir=$srcdir$ac_dir_suffix; ++ ac_top_srcdir=$srcdir ++ ac_abs_top_srcdir=$srcdir ;; ++ *) # Relative name. ++ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ++ ac_top_srcdir=$ac_top_build_prefix$srcdir ++ ac_abs_top_srcdir=$ac_pwd/$srcdir ;; ++esac ++ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix ++ ++ ++ case $ac_mode in ++ :F) ++ # ++ # CONFIG_FILE ++ # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; +- *) ac_INSTALL=$ac_dots$INSTALL ;; ++ *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; ++ esac ++ ac_MKDIR_P=$MKDIR_P ++ case $MKDIR_P in ++ [\\/$]* | ?:[\\/]* ) ;; ++ */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac ++_ACEOF + +- if test x"$ac_file" != x-; then +- { echo "$as_me:9083: creating $ac_file" >&5 +-echo "$as_me: creating $ac_file" >&6;} +- rm -f "$ac_file" +- fi +- # Let's still pretend it is `configure' which instantiates (i.e., don't +- # use $as_me), people would be surprised to read: +- # /* config.h. Generated automatically by config.status. */ +- configure_input="Generated automatically from `echo $ac_file_in | +- sed 's,.*/,,'` by configure." +- +- # First look for the input files in the build tree, otherwise in the +- # src tree. +- ac_file_inputs=`IFS=: +- for f in $ac_file_in; do +- case $f in +- -) echo $tmp/stdin ;; +- [\\/$]*) +- # Absolute (can't be DOS-style, as IFS=:) +- test -f "$f" || { { echo "$as_me:9101: error: cannot find input file: $f" >&5 +-echo "$as_me: error: cannot find input file: $f" >&2;} +- { (exit 1); exit 1; }; } +- echo $f;; +- *) # Relative +- if test -f "$f"; then +- # Build tree +- echo $f +- elif test -f "$srcdir/$f"; then +- # Source tree +- echo $srcdir/$f +- else +- # /dev/null tree +- { { echo "$as_me:9114: error: cannot find input file: $f" >&5 +-echo "$as_me: error: cannot find input file: $f" >&2;} +- { (exit 1); exit 1; }; } +- fi;; +- esac +- done` || { (exit 1); exit 1; } +-EOF +-cat >>$CONFIG_STATUS <>$CONFIG_STATUS <<\_ACEOF ++# If the template does not know about datarootdir, expand it. ++# FIXME: This hack should be removed a few years after 2.60. ++ac_datarootdir_hack=; ac_datarootdir_seen= ++ ++case `sed -n '/datarootdir/ { ++ p ++ q ++} ++/@datadir@/p ++/@docdir@/p ++/@infodir@/p ++/@localedir@/p ++/@mandir@/p ++' $ac_file_inputs` in ++*datarootdir*) ac_datarootdir_seen=yes;; ++*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) ++ { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 ++echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} ++_ACEOF ++cat >>$CONFIG_STATUS <<_ACEOF ++ ac_datarootdir_hack=' ++ s&@datadir@&$datadir&g ++ s&@docdir@&$docdir&g ++ s&@infodir@&$infodir&g ++ s&@localedir@&$localedir&g ++ s&@mandir@&$mandir&g ++ s&\\\${datarootdir}&$datarootdir&g' ;; ++esac ++_ACEOF ++ ++# Neutralize VPATH when `$srcdir' = `.'. ++# Shell code in configure.ac might set extrasub. ++# FIXME: do we really want to maintain this feature? ++cat >>$CONFIG_STATUS <<_ACEOF + sed "$ac_vpsub + $extrasub +-EOF +-cat >>$CONFIG_STATUS <<\EOF ++_ACEOF ++cat >>$CONFIG_STATUS <<\_ACEOF + :t + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b +-s,@configure_input@,$configure_input,;t t +-s,@srcdir@,$ac_srcdir,;t t +-s,@top_srcdir@,$ac_top_srcdir,;t t +-s,@INSTALL@,$ac_INSTALL,;t t +-" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out +- rm -f $tmp/stdin +- if test x"$ac_file" != x-; then +- mv $tmp/out $ac_file +- else +- cat $tmp/out +- rm -f $tmp/out +- fi +- +-done +-EOF +-cat >>$CONFIG_STATUS <<\EOF +- +-# +-# CONFIG_HEADER section. +-# ++s&@configure_input@&$configure_input&;t t ++s&@top_builddir@&$ac_top_builddir_sub&;t t ++s&@srcdir@&$ac_srcdir&;t t ++s&@abs_srcdir@&$ac_abs_srcdir&;t t ++s&@top_srcdir@&$ac_top_srcdir&;t t ++s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t ++s&@builddir@&$ac_builddir&;t t ++s&@abs_builddir@&$ac_abs_builddir&;t t ++s&@abs_top_builddir@&$ac_abs_top_builddir&;t t ++s&@INSTALL@&$ac_INSTALL&;t t ++s&@MKDIR_P@&$ac_MKDIR_P&;t t ++$ac_datarootdir_hack ++" $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" >$tmp/out ++ ++test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && ++ { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && ++ { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && ++ { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' ++which seems to be undefined. Please make sure it is defined." >&5 ++echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' ++which seems to be undefined. Please make sure it is defined." >&2;} + +-# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +-# NAME is the cpp macro being defined and VALUE is the value it is being given. +-# +-# ac_d sets the value in "#define NAME VALUE" lines. +-ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' +-ac_dB='[ ].*$,\1#\2' +-ac_dC=' ' +-ac_dD=',;t' +-# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +-ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +-ac_uB='$,\1#\2define\3' +-ac_uC=' ' +-ac_uD=',;t' +- +-for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue +- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". ++ rm -f "$tmp/stdin" + case $ac_file in +- - | *:- | *:-:* ) # input from stdin +- cat >$tmp/stdin +- ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` +- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; +- *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` +- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; +- * ) ac_file_in=$ac_file.in ;; ++ -) cat "$tmp/out"; rm -f "$tmp/out";; ++ *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;; + esac ++ ;; ++ :H) ++ # ++ # CONFIG_HEADER ++ # ++_ACEOF + +- test x"$ac_file" != x- && { echo "$as_me:9175: creating $ac_file" >&5 +-echo "$as_me: creating $ac_file" >&6;} +- +- # First look for the input files in the build tree, otherwise in the +- # src tree. +- ac_file_inputs=`IFS=: +- for f in $ac_file_in; do +- case $f in +- -) echo $tmp/stdin ;; +- [\\/$]*) +- # Absolute (can't be DOS-style, as IFS=:) +- test -f "$f" || { { echo "$as_me:9186: error: cannot find input file: $f" >&5 +-echo "$as_me: error: cannot find input file: $f" >&2;} +- { (exit 1); exit 1; }; } +- echo $f;; +- *) # Relative +- if test -f "$f"; then +- # Build tree +- echo $f +- elif test -f "$srcdir/$f"; then +- # Source tree +- echo $srcdir/$f +- else +- # /dev/null tree +- { { echo "$as_me:9199: error: cannot find input file: $f" >&5 +-echo "$as_me: error: cannot find input file: $f" >&2;} +- { (exit 1); exit 1; }; } +- fi;; +- esac +- done` || { (exit 1); exit 1; } +- # Remove the trailing spaces. +- sed 's/[ ]*$//' $ac_file_inputs >$tmp/in +- +-EOF ++# Transform confdefs.h into a sed script `conftest.defines', that ++# substitutes the proper values into config.h.in to produce config.h. ++rm -f conftest.defines conftest.tail ++# First, append a space to every undef/define line, to ease matching. ++echo 's/$/ /' >conftest.defines ++# Then, protect against being on the right side of a sed subst, or in ++# an unquoted here document, in config.status. If some macros were ++# called several times there might be several #defines for the same ++# symbol, which is useless. But do not sort them, since the last ++# AC_DEFINE must be honored. ++ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* ++# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where ++# NAME is the cpp macro being defined, VALUE is the value it is being given. ++# PARAMS is the parameter list in the macro definition--in most cases, it's ++# just an empty string. ++ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*' ++ac_dB='\\)[ (].*,\\1define\\2' ++ac_dC=' ' ++ac_dD=' ,' + +-# Transform confdefs.h into two sed scripts, `conftest.defines' and +-# `conftest.undefs', that substitutes the proper values into +-# config.h.in to produce config.h. The first handles `#define' +-# templates, and the second `#undef' templates. +-# And first: Protect against being on the right side of a sed subst in +-# config.status. Protect against being in an unquoted here document +-# in config.status. +-rm -f conftest.defines conftest.undefs +-# Using a here document instead of a string reduces the quoting nightmare. +-# Putting comments in sed scripts is not portable. +-# +-# `end' is used to avoid that the second main sed command (meant for +-# 0-ary CPP macros) applies to n-ary macro definitions. +-# See the Autoconf documentation for `clear'. +-cat >confdef2sed.sed <<\EOF +-s/[\\&,]/\\&/g +-s,[\\$`],\\&,g +-t clear +-: clear +-s,^[ ]*#[ ]*define[ ][ ]*\(\([^ (][^ (]*\)([^)]*)\)[ ]*\(.*\)$,${ac_dA}\2${ac_dB}\1${ac_dC}\3${ac_dD},gp +-t end +-s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp +-: end +-EOF +-# If some macros were called several times there might be several times +-# the same #defines, which is useless. Nevertheless, we may not want to +-# sort them, since we want the *last* AC-DEFINE to be honored. +-uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines +-sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs +-rm -f confdef2sed.sed ++uniq confdefs.h | ++ sed -n ' ++ t rset ++ :rset ++ s/^[ ]*#[ ]*define[ ][ ]*// ++ t ok ++ d ++ :ok ++ s/[\\&,]/\\&/g ++ s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p ++ s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p ++ ' >>conftest.defines + +-# This sed command replaces #undef with comments. This is necessary, for ++# Remove the space that was appended to ease matching. ++# Then replace #undef with comments. This is necessary, for + # example, in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. +-cat >>conftest.undefs <<\EOF +-s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, +-EOF ++# (The regexp can be short, since the line contains either #define or #undef.) ++echo 's/ $// ++s,^[ #]*u.*,/* & */,' >>conftest.defines ++ ++# Break up conftest.defines: ++ac_max_sed_lines=50 ++ ++# First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1" ++# Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2" ++# Third one will be: sed -f defines.sed "$tmp/out2" >"$tmp/out1" ++# et cetera. ++ac_in='$ac_file_inputs' ++ac_out='"$tmp/out1"' ++ac_nxt='"$tmp/out2"' + +-# Break up conftest.defines because some shells have a limit on the size +-# of here documents, and old seds have small limits too (100 cmds). +-echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS +-echo ' if egrep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS +-echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS +-echo ' :' >>$CONFIG_STATUS +-rm -f conftest.tail +-while grep . conftest.defines >/dev/null +-do +- # Write a limited-size here document to $tmp/defines.sed. +- echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS +- # Speed up: don't consider the non `#define' lines. +- echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS +- # Work around the forget-to-reset-the-flag bug. +- echo 't clr' >>$CONFIG_STATUS +- echo ': clr' >>$CONFIG_STATUS +- sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS ++while : ++do ++ # Write a here document: ++ cat >>$CONFIG_STATUS <<_ACEOF ++ # First, check the format of the line: ++ cat >"\$tmp/defines.sed" <<\\CEOF ++/^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def ++/^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def ++b ++:def ++_ACEOF ++ sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS + echo 'CEOF +- sed -f $tmp/defines.sed $tmp/in >$tmp/out +- rm -f $tmp/in +- mv $tmp/out $tmp/in +-' >>$CONFIG_STATUS +- sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail ++ sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS ++ ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in ++ sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail ++ grep . conftest.tail >/dev/null || break + rm -f conftest.defines + mv conftest.tail conftest.defines + done +-rm -f conftest.defines +-echo ' fi # egrep' >>$CONFIG_STATUS +-echo >>$CONFIG_STATUS +- +-# Break up conftest.undefs because some shells have a limit on the size +-# of here documents, and old seds have small limits too (100 cmds). +-echo ' # Handle all the #undef templates' >>$CONFIG_STATUS +-rm -f conftest.tail +-while grep . conftest.undefs >/dev/null +-do +- # Write a limited-size here document to $tmp/undefs.sed. +- echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS +- # Speed up: don't consider the non `#undef' +- echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS +- # Work around the forget-to-reset-the-flag bug. +- echo 't clr' >>$CONFIG_STATUS +- echo ': clr' >>$CONFIG_STATUS +- sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS +- echo 'CEOF +- sed -f $tmp/undefs.sed $tmp/in >$tmp/out +- rm -f $tmp/in +- mv $tmp/out $tmp/in +-' >>$CONFIG_STATUS +- sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail +- rm -f conftest.undefs +- mv conftest.tail conftest.undefs +-done +-rm -f conftest.undefs +- +-cat >>$CONFIG_STATUS <<\EOF +- # Let's still pretend it is `configure' which instantiates (i.e., don't +- # use $as_me), people would be surprised to read: +- # /* config.h. Generated automatically by config.status. */ +- if test x"$ac_file" = x-; then +- echo "/* Generated automatically by configure. */" >$tmp/config.h +- else +- echo "/* $ac_file. Generated automatically by configure. */" >$tmp/config.h +- fi +- cat $tmp/in >>$tmp/config.h +- rm -f $tmp/in ++rm -f conftest.defines conftest.tail ++ ++echo "ac_result=$ac_in" >>$CONFIG_STATUS ++cat >>$CONFIG_STATUS <<\_ACEOF + if test x"$ac_file" != x-; then +- if cmp -s $ac_file $tmp/config.h 2>/dev/null; then +- { echo "$as_me:9316: $ac_file is unchanged" >&5 ++ echo "/* $configure_input */" >"$tmp/config.h" ++ cat "$ac_result" >>"$tmp/config.h" ++ if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then ++ { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 + echo "$as_me: $ac_file is unchanged" >&6;} + else +- ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$ac_file" : 'X\(//\)[^/]' \| \ +- X"$ac_file" : 'X\(//\)$' \| \ +- X"$ac_file" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || +-echo X"$ac_file" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then +- { case "$ac_dir" in +- [\\/]* | ?:[\\/]* ) as_incr_dir=;; +- *) as_incr_dir=.;; +-esac +-as_dummy="$ac_dir" +-for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do +- case $as_mkdir_dir in +- # Skip DOS drivespec +- ?:) as_incr_dir=$as_mkdir_dir ;; +- *) +- as_incr_dir=$as_incr_dir/$as_mkdir_dir +- test -d "$as_incr_dir" || mkdir "$as_incr_dir" +- ;; +- esac +-done; } +- +- fi + rm -f $ac_file +- mv $tmp/config.h $ac_file ++ mv "$tmp/config.h" $ac_file + fi + else +- cat $tmp/config.h +- rm -f $tmp/config.h ++ echo "/* $configure_input */" ++ cat "$ac_result" + fi +- # Run the commands associated with the file. +- case $ac_file in +- fcgi_config.h ) # update the timestamp +-echo timestamp >"./stamp-h1" +- ;; ++ rm -f "$tmp/out12" ++# Compute $ac_file's index in $config_headers. ++_am_stamp_count=1 ++for _am_header in $config_headers :; do ++ case $_am_header in ++ $ac_file | $ac_file:* ) ++ break ;; ++ * ) ++ _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac + done +-EOF +-cat >>$CONFIG_STATUS <<\EOF ++echo "timestamp for $ac_file" >`$as_dirname -- $ac_file || ++$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X$ac_file : 'X\(//\)[^/]' \| \ ++ X$ac_file : 'X\(//\)$' \| \ ++ X$ac_file : 'X\(/\)' \| . 2>/dev/null || ++echo X$ac_file | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'`/stamp-h$_am_stamp_count ++ ;; + +-# +-# CONFIG_COMMANDS section. +-# +-for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue +- ac_dest=`echo "$ac_file" | sed 's,:.*,,'` +- ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` +- +- case $ac_dest in +- default-1 ) +-test x"$AMDEP_TRUE" != x"" || +-for mf in $CONFIG_FILES; do +- case "$mf" in +- Makefile) dirpart=.;; +- */Makefile) dirpart=`echo "$mf" | sed -e 's|/[^/]*$||'`;; +- *) continue;; +- esac +- grep '^DEP_FILES *= *[^ #]' < "$mf" > /dev/null || continue +- # Extract the definition of DEP_FILES from the Makefile without +- # running `make'. +- DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"` ++ :C) { echo "$as_me:$LINENO: executing $ac_file commands" >&5 ++echo "$as_me: executing $ac_file commands" >&6;} ++ ;; ++ esac ++ ++ ++ case $ac_file$ac_mode in ++ "depfiles":C) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do ++ # Strip MF so we end up with the name of the file. ++ mf=`echo "$mf" | sed -e 's/:.*$//'` ++ # Check whether this is an Automake generated Makefile or not. ++ # We used to match only the files named `Makefile.in', but ++ # some people rename them; so instead we look at the file content. ++ # Grep'ing the first line is not enough: some people post-process ++ # each Makefile.in and add a new line on top of each file to say so. ++ # Grep'ing the whole file is not good either: AIX grep has a line ++ # limit of 2048, but all sed's we know have understand at least 4000. ++ if sed 10q "$mf" | grep '^#.*generated by automake' > /dev/null 2>&1; then ++ dirpart=`$as_dirname -- "$mf" || ++$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$mf" : 'X\(//\)[^/]' \| \ ++ X"$mf" : 'X\(//\)$' \| \ ++ X"$mf" : 'X\(/\)' \| . 2>/dev/null || ++echo X"$mf" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ else ++ continue ++ fi ++ # Extract the definition of DEPDIR, am__include, and am__quote ++ # from the Makefile without running `make'. ++ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue ++ am__include=`sed -n 's/^am__include = //p' < "$mf"` ++ test -z "am__include" && continue ++ am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it +- U=`sed -n -e '/^U = / s///p' < "$mf"` +- test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" +- # We invoke sed twice because it is the simplest approach to +- # changing $(DEPDIR) to its actual value in the expansion. +- for file in `sed -n -e ' +- /^DEP_FILES = .*\\\\$/ { +- s/^DEP_FILES = // +- :loop +- s/\\\\$// +- p +- n +- /\\\\$/ b loop +- p +- } +- /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \ ++ U=`sed -n 's/^U = //p' < "$mf"` ++ # Find all dependency output files, they are included files with ++ # $(DEPDIR) in their names. We invoke sed twice because it is the ++ # simplest approach to changing $(DEPDIR) to its actual value in the ++ # expansion. ++ for file in `sed -n " ++ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue +- fdir=`echo "$file" | sed -e 's|/[^/]*$||'` +- $ac_aux_dir/mkinstalldirs "$dirpart/$fdir" > /dev/null 2>&1 ++ fdir=`$as_dirname -- "$file" || ++$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$file" : 'X\(//\)[^/]' \| \ ++ X"$file" : 'X\(//\)$' \| \ ++ X"$file" : 'X\(/\)' \| . 2>/dev/null || ++echo X"$file" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ { as_dir=$dirpart/$fdir ++ case $as_dir in #( ++ -*) as_dir=./$as_dir;; ++ esac ++ test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { ++ as_dirs= ++ while :; do ++ case $as_dir in #( ++ *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( ++ *) as_qdir=$as_dir;; ++ esac ++ as_dirs="'$as_qdir' $as_dirs" ++ as_dir=`$as_dirname -- "$as_dir" || ++$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$as_dir" : 'X\(//\)[^/]' \| \ ++ X"$as_dir" : 'X\(//\)$' \| \ ++ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || ++echo X"$as_dir" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ test -d "$as_dir" && break ++ done ++ test -z "$as_dirs" || eval "mkdir $as_dirs" ++ } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 ++echo "$as_me: error: cannot create directory $as_dir" >&2;} ++ { (exit 1); exit 1; }; }; } + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done + ;; ++ + esac +-done +-EOF ++done # for ac_tag + +-cat >>$CONFIG_STATUS <<\EOF + + { (exit 0); exit 0; } +-EOF ++_ACEOF + chmod +x $CONFIG_STATUS + ac_clean_files=$ac_clean_files_save + ++ + # configure is writing to config.log, and then calls config.status. + # config.status does its own redirection, appending to config.log. + # Unfortunately, on DOS this fails, as config.log is still kept open +@@ -9430,8 +23077,11 @@ + # need to make the FD available again. + if test "$no_create" != yes; then + ac_cs_success=: ++ ac_config_status_args= ++ test "$silent" = yes && ++ ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null +- $SHELL $CONFIG_STATUS || ac_cs_success=false ++ $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. +--- libfcgi-2.4.0.orig/libfcgi/Makefile.in ++++ libfcgi-2.4.0/libfcgi/Makefile.in +@@ -1,7 +1,8 @@ +-# Makefile.in generated automatically by automake 1.5 from Makefile.am. ++# Makefile.in generated by automake 1.10 from Makefile.am. ++# @configure_input@ + +-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +-# Free Software Foundation, Inc. ++# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ++# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, + # with or without modifications, as long as this notice is preserved. +@@ -15,93 +16,205 @@ + + # $Id: Makefile.am,v 1.9 2001/12/22 03:16:20 robs Exp $ + +-SHELL = @SHELL@ +- +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ + VPATH = @srcdir@ +-prefix = @prefix@ +-exec_prefix = @exec_prefix@ +- +-bindir = @bindir@ +-sbindir = @sbindir@ +-libexecdir = @libexecdir@ +-datadir = @datadir@ +-sysconfdir = @sysconfdir@ +-sharedstatedir = @sharedstatedir@ +-localstatedir = @localstatedir@ +-libdir = @libdir@ +-infodir = @infodir@ +-mandir = @mandir@ +-includedir = @includedir@ +-oldincludedir = /usr/include + pkgdatadir = $(datadir)/@PACKAGE@ + pkglibdir = $(libdir)/@PACKAGE@ + pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = .. +- +-ACLOCAL = @ACLOCAL@ +-AUTOCONF = @AUTOCONF@ +-AUTOMAKE = @AUTOMAKE@ +-AUTOHEADER = @AUTOHEADER@ +- +-INSTALL = @INSTALL@ +-INSTALL_PROGRAM = @INSTALL_PROGRAM@ +-INSTALL_DATA = @INSTALL_DATA@ +-INSTALL_SCRIPT = @INSTALL_SCRIPT@ ++am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd ++install_sh_DATA = $(install_sh) -c -m 644 ++install_sh_PROGRAM = $(install_sh) -c ++install_sh_SCRIPT = $(install_sh) -c + INSTALL_HEADER = $(INSTALL_DATA) +-transform = @program_transform_name@ ++transform = $(program_transform_name) + NORMAL_INSTALL = : + PRE_INSTALL = : + POST_INSTALL = : + NORMAL_UNINSTALL = : + PRE_UNINSTALL = : + POST_UNINSTALL = : +-host_alias = @host_alias@ ++build_triplet = @build@ + host_triplet = @host@ ++subdir = libfcgi ++DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ++am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ ++ $(top_srcdir)/configure.in ++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ ++ $(ACLOCAL_M4) ++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ++CONFIG_HEADER = $(top_builddir)/fcgi_config.h ++CONFIG_CLEAN_FILES = ++am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; ++am__vpath_adj = case $$p in \ ++ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ ++ *) f=$$p;; \ ++ esac; ++am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; ++am__installdirs = "$(DESTDIR)$(libdir)" ++libLTLIBRARIES_INSTALL = $(INSTALL) ++LTLIBRARIES = $(lib_LTLIBRARIES) ++libfcgi___la_LIBADD = ++am__objects_1 = ++am_libfcgi___la_OBJECTS = $(am__objects_1) fcgio.lo ++libfcgi___la_OBJECTS = $(am_libfcgi___la_OBJECTS) ++libfcgi___la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ ++ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ ++ $(CXXFLAGS) $(libfcgi___la_LDFLAGS) $(LDFLAGS) -o $@ ++libfcgi_la_LIBADD = ++am_libfcgi_la_OBJECTS = $(am__objects_1) libfcgi_la-fcgiapp.lo \ ++ libfcgi_la-fcgi_stdio.lo libfcgi_la-os_@SYSTEM@.lo ++libfcgi_la_OBJECTS = $(am_libfcgi_la_OBJECTS) ++libfcgi_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ ++ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libfcgi_la_CFLAGS) \ ++ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ ++DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@ ++depcomp = $(SHELL) $(top_srcdir)/depcomp ++am__depfiles_maybe = depfiles ++COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ++ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++CCLD = $(CC) ++LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ ++ $(LDFLAGS) -o $@ ++CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) ++LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) ++CXXLD = $(CXX) ++CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ ++ $(LDFLAGS) -o $@ ++SOURCES = $(libfcgi___la_SOURCES) $(libfcgi_la_SOURCES) ++DIST_SOURCES = $(libfcgi___la_SOURCES) $(libfcgi_la_SOURCES) ++ETAGS = etags ++CTAGS = ctags ++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ++ACLOCAL = @ACLOCAL@ + AMTAR = @AMTAR@ +-AS = @AS@ ++AR = @AR@ ++AUTOCONF = @AUTOCONF@ ++AUTOHEADER = @AUTOHEADER@ ++AUTOMAKE = @AUTOMAKE@ + AWK = @AWK@ + CC = @CC@ ++CCDEPMODE = @CCDEPMODE@ ++CFLAGS = @CFLAGS@ + CPP = @CPP@ ++CPPFLAGS = @CPPFLAGS@ -I$(top_srcdir)/include + CXX = @CXX@ ++CXXCPP = @CXXCPP@ ++CXXDEPMODE = @CXXDEPMODE@ ++CXXFLAGS = @CXXFLAGS@ ++CYGPATH_W = @CYGPATH_W@ ++DEFS = @DEFS@ + DEPDIR = @DEPDIR@ +-DLLTOOL = @DLLTOOL@ + ECHO = @ECHO@ ++ECHO_C = @ECHO_C@ + ECHO_CPP = @ECHO_CPP@ ++ECHO_N = @ECHO_N@ ++ECHO_T = @ECHO_T@ ++EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++F77 = @F77@ ++FFLAGS = @FFLAGS@ ++GREP = @GREP@ ++INSTALL = @INSTALL@ ++INSTALL_DATA = @INSTALL_DATA@ ++INSTALL_PROGRAM = @INSTALL_PROGRAM@ ++INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ ++LDFLAGS = @LDFLAGS@ + LIBFCGIXX = @LIBFCGIXX@ ++LIBOBJS = @LIBOBJS@ ++LIBS = @LIBS@ + LIBTOOL = @LIBTOOL@ + LN_S = @LN_S@ +-OBJDUMP = @OBJDUMP@ ++LTLIBOBJS = @LTLIBOBJS@ ++MAKEINFO = @MAKEINFO@ ++MKDIR_P = @MKDIR_P@ + OBJEXT = @OBJEXT@ + PACKAGE = @PACKAGE@ ++PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ ++PACKAGE_NAME = @PACKAGE_NAME@ ++PACKAGE_STRING = @PACKAGE_STRING@ ++PACKAGE_TARNAME = @PACKAGE_TARNAME@ ++PACKAGE_VERSION = @PACKAGE_VERSION@ ++PATH_SEPARATOR = @PATH_SEPARATOR@ + PTHREAD_CC = @PTHREAD_CC@ + PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ + PTHREAD_LIBS = @PTHREAD_LIBS@ + RANLIB = @RANLIB@ ++SED = @SED@ ++SET_MAKE = @SET_MAKE@ ++SHELL = @SHELL@ + STRIP = @STRIP@ + SYSTEM = @SYSTEM@ + THREADED = @THREADED@ + VERSION = @VERSION@ ++abs_builddir = @abs_builddir@ ++abs_srcdir = @abs_srcdir@ ++abs_top_builddir = @abs_top_builddir@ ++abs_top_srcdir = @abs_top_srcdir@ ++ac_ct_CC = @ac_ct_CC@ ++ac_ct_CXX = @ac_ct_CXX@ ++ac_ct_F77 = @ac_ct_F77@ + am__include = @am__include@ ++am__leading_dot = @am__leading_dot@ + am__quote = @am__quote@ ++am__tar = @am__tar@ ++am__untar = @am__untar@ ++bindir = @bindir@ ++build = @build@ ++build_alias = @build_alias@ ++build_cpu = @build_cpu@ ++build_os = @build_os@ ++build_vendor = @build_vendor@ ++builddir = @builddir@ ++datadir = @datadir@ ++datarootdir = @datarootdir@ ++docdir = @docdir@ ++dvidir = @dvidir@ ++exec_prefix = @exec_prefix@ ++host = @host@ ++host_alias = @host_alias@ ++host_cpu = @host_cpu@ ++host_os = @host_os@ ++host_vendor = @host_vendor@ ++htmldir = @htmldir@ ++includedir = @includedir@ ++infodir = @infodir@ + install_sh = @install_sh@ +- ++libdir = @libdir@ ++libexecdir = @libexecdir@ ++localedir = @localedir@ ++localstatedir = @localstatedir@ ++mandir = @mandir@ ++mkdir_p = @mkdir_p@ ++oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ ++prefix = @prefix@ ++program_transform_name = @program_transform_name@ ++psdir = @psdir@ ++sbindir = @sbindir@ ++sharedstatedir = @sharedstatedir@ ++srcdir = @srcdir@ ++sysconfdir = @sysconfdir@ ++target_alias = @target_alias@ ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ + INCLUDEDIR = ../include +-CPPFLAGS = @CPPFLAGS@ -I$(top_srcdir)/include +- + INCLUDE_FILES = $(INCLUDEDIR)/fastcgi.h \ + $(INCLUDEDIR)/fcgiapp.h \ + $(INCLUDEDIR)/fcgimisc.h \ + $(INCLUDEDIR)/fcgi_stdio.h \ + $(INCLUDEDIR)/fcgios.h + +- + lib_LTLIBRARIES = libfcgi.la @LIBFCGIXX@ + EXTRA_LTLIBRARIES = libfcgi++.la +- + libfcgi_la_SOURCES = $(INCLUDE_FILES) \ + fcgiapp.c \ + fcgi_stdio.c \ +@@ -109,259 +222,225 @@ + + libfcgi_la_CC = @PTHREAD_CC@ + libfcgi_la_CFLAGS = @PTHREAD_CFLAGS@ +- + libfcgi___la_SOURCES = $(INCLUDE_FILES) \ + $(INCLUDEDIR)/fcgio.h \ + fcgio.cpp + + libfcgi___la_CFLAGS = @PTHREAD_CFLAGS@ + libfcgi___la_LDFLAGS = -lfcgi -rpath @libdir@ +-subdir = libfcgi +-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +-CONFIG_HEADER = $(top_builddir)/fcgi_config.h +-CONFIG_CLEAN_FILES = +-LTLIBRARIES = $(lib_LTLIBRARIES) +- +-libfcgi___la_LIBADD = +-am_libfcgi___la_OBJECTS = fcgio.lo +-libfcgi___la_OBJECTS = $(am_libfcgi___la_OBJECTS) +-libfcgi_la_LDFLAGS = +-libfcgi_la_LIBADD = +-am_libfcgi_la_OBJECTS = libfcgi_la-fcgiapp.lo libfcgi_la-fcgi_stdio.lo \ +- libfcgi_la-os_@SYSTEM@.lo +-libfcgi_la_OBJECTS = $(am_libfcgi_la_OBJECTS) +- +-DEFS = @DEFS@ +-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +-LDFLAGS = @LDFLAGS@ +-LIBS = @LIBS@ +-depcomp = $(SHELL) $(top_srcdir)/depcomp +-@AMDEP_TRUE@DEP_FILES = $(DEPDIR)/fcgio.Plo \ +-@AMDEP_TRUE@ $(DEPDIR)/libfcgi_la-fcgi_stdio.Plo \ +-@AMDEP_TRUE@ $(DEPDIR)/libfcgi_la-fcgiapp.Plo \ +-@AMDEP_TRUE@ $(DEPDIR)/libfcgi_la-os_@SYSTEM@.Plo +-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ +- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ +- $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-CCLD = $(CC) +-LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ +- $(AM_LDFLAGS) $(LDFLAGS) -o $@ +-CFLAGS = @CFLAGS@ +-CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ +- $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +-LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) \ +- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ +- $(AM_CXXFLAGS) $(CXXFLAGS) +-CXXLD = $(CXX) +-CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ +- $(AM_LDFLAGS) $(LDFLAGS) -o $@ +-CXXFLAGS = @CXXFLAGS@ +-DIST_SOURCES = $(libfcgi___la_SOURCES) $(libfcgi_la_SOURCES) +-DIST_COMMON = Makefile.am Makefile.in +-SOURCES = $(libfcgi___la_SOURCES) $(libfcgi_la_SOURCES) +- + all: all-am + + .SUFFIXES: + .SUFFIXES: .c .cpp .lo .o .obj +- +-mostlyclean-libtool: +- -rm -f *.lo +- +-clean-libtool: +- -rm -rf .libs _libs +- +-distclean-libtool: +- -rm -f libtool +-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) ++$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) ++ @for dep in $?; do \ ++ case '$(am__configure_deps)' in \ ++ *$$dep*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ ++ && exit 0; \ ++ exit 1;; \ ++ esac; \ ++ done; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libfcgi/Makefile'; \ + cd $(top_srcdir) && \ +- $(AUTOMAKE) --foreign libfcgi/Makefile +-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +- cd $(top_builddir) && \ +- CONFIG_HEADERS= CONFIG_LINKS= \ +- CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status ++ $(AUTOMAKE) --gnu libfcgi/Makefile ++.PRECIOUS: Makefile ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ @case '$?' in \ ++ *config.status*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ ++ *) \ ++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ ++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ ++ esac; ++ ++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++ ++$(top_srcdir)/configure: $(am__configure_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(ACLOCAL_M4): $(am__aclocal_m4_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) +- $(mkinstalldirs) $(DESTDIR)$(libdir) ++ test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ +- echo " $(LIBTOOL) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libdir)/$$p"; \ +- $(LIBTOOL) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libdir)/$$p; \ ++ f=$(am__strip_dir) \ ++ echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \ ++ $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \ + else :; fi; \ + done + + uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ +- echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p"; \ +- $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p; \ ++ p=$(am__strip_dir) \ ++ echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \ ++ $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \ + done + + clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) ++ @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ ++ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ ++ test "$$dir" != "$$p" || dir=.; \ ++ echo "rm -f \"$${dir}/so_locations\""; \ ++ rm -f "$${dir}/so_locations"; \ ++ done + libfcgi++.la: $(libfcgi___la_OBJECTS) $(libfcgi___la_DEPENDENCIES) +- $(CXXLINK) $(libfcgi___la_LDFLAGS) $(libfcgi___la_OBJECTS) $(libfcgi___la_LIBADD) $(LIBS) +-libfcgi_la-fcgiapp.lo: fcgiapp.c +-libfcgi_la-fcgi_stdio.lo: fcgi_stdio.c +-libfcgi_la-os_@SYSTEM@.lo: os_@SYSTEM@.c ++ $(libfcgi___la_LINK) $(libfcgi___la_OBJECTS) $(libfcgi___la_LIBADD) $(LIBS) + libfcgi.la: $(libfcgi_la_OBJECTS) $(libfcgi_la_DEPENDENCIES) +- $(LINK) -rpath $(libdir) $(libfcgi_la_LDFLAGS) $(libfcgi_la_OBJECTS) $(libfcgi_la_LIBADD) $(LIBS) ++ $(libfcgi_la_LINK) -rpath $(libdir) $(libfcgi_la_OBJECTS) $(libfcgi_la_LIBADD) $(LIBS) + + mostlyclean-compile: +- -rm -f *.$(OBJEXT) core *.core ++ -rm -f *.$(OBJEXT) + + distclean-compile: + -rm -f *.tab.c + +-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/fcgio.Plo@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/libfcgi_la-fcgi_stdio.Plo@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/libfcgi_la-fcgiapp.Plo@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/libfcgi_la-os_@SYSTEM@.Plo@am__quote@ +- +-distclean-depend: +- -rm -rf $(DEPDIR) ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcgio.Plo@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libfcgi_la-fcgi_stdio.Plo@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libfcgi_la-fcgiapp.Plo@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libfcgi_la-os_@SYSTEM@.Plo@am__quote@ + + .c.o: +-@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +- $(COMPILE) -c `test -f $< || echo '$(srcdir)/'`$< ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c $< + + .c.obj: +-@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +- $(COMPILE) -c `cygpath -w $<` ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + + .c.lo: +-@AMDEP_TRUE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +- $(LTCOMPILE) -c -o $@ `test -f $< || echo '$(srcdir)/'`$< +- +-libfcgi_la-fcgiapp.o: fcgiapp.c +-@AMDEP_TRUE@ source='fcgiapp.c' object='libfcgi_la-fcgiapp.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ depfile='$(DEPDIR)/libfcgi_la-fcgiapp.Po' tmpdepfile='$(DEPDIR)/libfcgi_la-fcgiapp.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +- $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libfcgi_la_CFLAGS) $(CFLAGS) -c -o libfcgi_la-fcgiapp.o `test -f fcgiapp.c || echo '$(srcdir)/'`fcgiapp.c +- +-libfcgi_la-fcgiapp.obj: fcgiapp.c +-@AMDEP_TRUE@ source='fcgiapp.c' object='libfcgi_la-fcgiapp.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ depfile='$(DEPDIR)/libfcgi_la-fcgiapp.Po' tmpdepfile='$(DEPDIR)/libfcgi_la-fcgiapp.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +- $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libfcgi_la_CFLAGS) $(CFLAGS) -c -o libfcgi_la-fcgiapp.obj `cygpath -w fcgiapp.c` ++@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + + libfcgi_la-fcgiapp.lo: fcgiapp.c +-@AMDEP_TRUE@ source='fcgiapp.c' object='libfcgi_la-fcgiapp.lo' libtool=yes @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ depfile='$(DEPDIR)/libfcgi_la-fcgiapp.Plo' tmpdepfile='$(DEPDIR)/libfcgi_la-fcgiapp.TPlo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +- $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libfcgi_la_CFLAGS) $(CFLAGS) -c -o libfcgi_la-fcgiapp.lo `test -f fcgiapp.c || echo '$(srcdir)/'`fcgiapp.c +- +-libfcgi_la-fcgi_stdio.o: fcgi_stdio.c +-@AMDEP_TRUE@ source='fcgi_stdio.c' object='libfcgi_la-fcgi_stdio.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ depfile='$(DEPDIR)/libfcgi_la-fcgi_stdio.Po' tmpdepfile='$(DEPDIR)/libfcgi_la-fcgi_stdio.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +- $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libfcgi_la_CFLAGS) $(CFLAGS) -c -o libfcgi_la-fcgi_stdio.o `test -f fcgi_stdio.c || echo '$(srcdir)/'`fcgi_stdio.c +- +-libfcgi_la-fcgi_stdio.obj: fcgi_stdio.c +-@AMDEP_TRUE@ source='fcgi_stdio.c' object='libfcgi_la-fcgi_stdio.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ depfile='$(DEPDIR)/libfcgi_la-fcgi_stdio.Po' tmpdepfile='$(DEPDIR)/libfcgi_la-fcgi_stdio.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +- $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libfcgi_la_CFLAGS) $(CFLAGS) -c -o libfcgi_la-fcgi_stdio.obj `cygpath -w fcgi_stdio.c` ++@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libfcgi_la_CFLAGS) $(CFLAGS) -MT libfcgi_la-fcgiapp.lo -MD -MP -MF $(DEPDIR)/libfcgi_la-fcgiapp.Tpo -c -o libfcgi_la-fcgiapp.lo `test -f 'fcgiapp.c' || echo '$(srcdir)/'`fcgiapp.c ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libfcgi_la-fcgiapp.Tpo $(DEPDIR)/libfcgi_la-fcgiapp.Plo ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fcgiapp.c' object='libfcgi_la-fcgiapp.lo' libtool=yes @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libfcgi_la_CFLAGS) $(CFLAGS) -c -o libfcgi_la-fcgiapp.lo `test -f 'fcgiapp.c' || echo '$(srcdir)/'`fcgiapp.c + + libfcgi_la-fcgi_stdio.lo: fcgi_stdio.c +-@AMDEP_TRUE@ source='fcgi_stdio.c' object='libfcgi_la-fcgi_stdio.lo' libtool=yes @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ depfile='$(DEPDIR)/libfcgi_la-fcgi_stdio.Plo' tmpdepfile='$(DEPDIR)/libfcgi_la-fcgi_stdio.TPlo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +- $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libfcgi_la_CFLAGS) $(CFLAGS) -c -o libfcgi_la-fcgi_stdio.lo `test -f fcgi_stdio.c || echo '$(srcdir)/'`fcgi_stdio.c +- +-libfcgi_la-os_@SYSTEM@.o: os_@SYSTEM@.c +-@AMDEP_TRUE@ source='os_@SYSTEM@.c' object='libfcgi_la-os_@SYSTEM@.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ depfile='$(DEPDIR)/libfcgi_la-os_@SYSTEM@.Po' tmpdepfile='$(DEPDIR)/libfcgi_la-os_@SYSTEM@.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +- $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libfcgi_la_CFLAGS) $(CFLAGS) -c -o libfcgi_la-os_@SYSTEM@.o `test -f os_@SYSTEM@.c || echo '$(srcdir)/'`os_@SYSTEM@.c +- +-libfcgi_la-os_@SYSTEM@.obj: os_@SYSTEM@.c +-@AMDEP_TRUE@ source='os_@SYSTEM@.c' object='libfcgi_la-os_@SYSTEM@.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ depfile='$(DEPDIR)/libfcgi_la-os_@SYSTEM@.Po' tmpdepfile='$(DEPDIR)/libfcgi_la-os_@SYSTEM@.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +- $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libfcgi_la_CFLAGS) $(CFLAGS) -c -o libfcgi_la-os_@SYSTEM@.obj `cygpath -w os_@SYSTEM@.c` ++@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libfcgi_la_CFLAGS) $(CFLAGS) -MT libfcgi_la-fcgi_stdio.lo -MD -MP -MF $(DEPDIR)/libfcgi_la-fcgi_stdio.Tpo -c -o libfcgi_la-fcgi_stdio.lo `test -f 'fcgi_stdio.c' || echo '$(srcdir)/'`fcgi_stdio.c ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libfcgi_la-fcgi_stdio.Tpo $(DEPDIR)/libfcgi_la-fcgi_stdio.Plo ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fcgi_stdio.c' object='libfcgi_la-fcgi_stdio.lo' libtool=yes @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libfcgi_la_CFLAGS) $(CFLAGS) -c -o libfcgi_la-fcgi_stdio.lo `test -f 'fcgi_stdio.c' || echo '$(srcdir)/'`fcgi_stdio.c + + libfcgi_la-os_@SYSTEM@.lo: os_@SYSTEM@.c +-@AMDEP_TRUE@ source='os_@SYSTEM@.c' object='libfcgi_la-os_@SYSTEM@.lo' libtool=yes @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ depfile='$(DEPDIR)/libfcgi_la-os_@SYSTEM@.Plo' tmpdepfile='$(DEPDIR)/libfcgi_la-os_@SYSTEM@.TPlo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +- $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libfcgi_la_CFLAGS) $(CFLAGS) -c -o libfcgi_la-os_@SYSTEM@.lo `test -f os_@SYSTEM@.c || echo '$(srcdir)/'`os_@SYSTEM@.c +-CCDEPMODE = @CCDEPMODE@ ++@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libfcgi_la_CFLAGS) $(CFLAGS) -MT libfcgi_la-os_@SYSTEM@.lo -MD -MP -MF $(DEPDIR)/libfcgi_la-os_@SYSTEM@.Tpo -c -o libfcgi_la-os_@SYSTEM@.lo `test -f 'os_@SYSTEM@.c' || echo '$(srcdir)/'`os_@SYSTEM@.c ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libfcgi_la-os_@SYSTEM@.Tpo $(DEPDIR)/libfcgi_la-os_@SYSTEM@.Plo ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='os_@SYSTEM@.c' object='libfcgi_la-os_@SYSTEM@.lo' libtool=yes @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libfcgi_la_CFLAGS) $(CFLAGS) -c -o libfcgi_la-os_@SYSTEM@.lo `test -f 'os_@SYSTEM@.c' || echo '$(srcdir)/'`os_@SYSTEM@.c + + .cpp.o: +-@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +- $(CXXCOMPILE) -c -o $@ `test -f $< || echo '$(srcdir)/'`$< ++@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< + + .cpp.obj: +-@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +- $(CXXCOMPILE) -c -o $@ `cygpath -w $<` ++@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + + .cpp.lo: +-@AMDEP_TRUE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +- $(LTCXXCOMPILE) -c -o $@ `test -f $< || echo '$(srcdir)/'`$< +-CXXDEPMODE = @CXXDEPMODE@ +-uninstall-info-am: ++@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< + +-tags: TAGS ++mostlyclean-libtool: ++ -rm -f *.lo ++ ++clean-libtool: ++ -rm -rf .libs _libs + + ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) +- list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ +- mkid -fID $$unique $(LISP) ++ mkid -fID $$unique ++tags: TAGS + + TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ +- list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ++ unique=`for i in $$list; do \ ++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ++ done | \ ++ $(AWK) ' { files[$$0] = 1; } \ ++ END { for (i in files) print i; }'`; \ ++ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ ++ test -n "$$unique" || unique=$$empty_fix; \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ $$tags $$unique; \ ++ fi ++ctags: CTAGS ++CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ++ $(TAGS_FILES) $(LISP) ++ tags=; \ ++ here=`pwd`; \ ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ +- test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ +- || etags $(ETAGS_ARGS) $$tags $$unique $(LISP) ++ test -z "$(CTAGS_ARGS)$$tags$$unique" \ ++ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ++ $$tags $$unique + + GTAGS: +- here=`CDPATH=: && cd $(top_builddir) && pwd` \ ++ here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + + distclean-tags: +- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH +- +-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +- +-top_distdir = .. +-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) ++ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + + distdir: $(DISTFILES) +- @for file in $(DISTFILES); do \ +- if test -f $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- $(mkinstalldirs) "$(distdir)/$$dir"; \ +- fi; \ ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ ++ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ +- cp -pR $$d/$$file $(distdir) \ +- || exit 1; \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ ++ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ++ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ ++ fi; \ ++ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ +@@ -371,10 +450,10 @@ + check-am: all-am + check: check-am + all-am: Makefile $(LTLIBRARIES) +- + installdirs: +- $(mkinstalldirs) $(DESTDIR)$(libdir) +- ++ for dir in "$(DESTDIR)$(libdir)"; do \ ++ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ ++ done + install: install-am + install-exec: install-exec-am + install-data: install-data-am +@@ -386,6 +465,7 @@ + installcheck: installcheck-am + install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ ++ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install + mostlyclean-generic: +@@ -393,7 +473,7 @@ + clean-generic: + + distclean-generic: +- -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* ++ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + + maintainer-clean-generic: + @echo "This command is intended for maintainers to use" +@@ -404,30 +484,42 @@ + mostlyclean-am + + distclean: distclean-am +- +-distclean-am: clean-am distclean-compile distclean-depend \ +- distclean-generic distclean-libtool distclean-tags ++ -rm -rf ./$(DEPDIR) ++ -rm -f Makefile ++distclean-am: clean-am distclean-compile distclean-generic \ ++ distclean-tags + + dvi: dvi-am + + dvi-am: + ++html: html-am ++ + info: info-am + + info-am: + + install-data-am: + ++install-dvi: install-dvi-am ++ + install-exec-am: install-libLTLIBRARIES + ++install-html: install-html-am ++ + install-info: install-info-am + + install-man: + ++install-pdf: install-pdf-am ++ ++install-ps: install-ps-am ++ + installcheck-am: + + maintainer-clean: maintainer-clean-am +- ++ -rm -rf ./$(DEPDIR) ++ -rm -f Makefile + maintainer-clean-am: distclean-am maintainer-clean-generic + + mostlyclean: mostlyclean-am +@@ -435,19 +527,31 @@ + mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +-uninstall-am: uninstall-info-am uninstall-libLTLIBRARIES ++pdf: pdf-am ++ ++pdf-am: ++ ++ps: ps-am ++ ++ps-am: ++ ++uninstall-am: uninstall-libLTLIBRARIES ++ ++.MAKE: install-am install-strip + +-.PHONY: GTAGS all all-am check check-am clean clean-generic \ +- clean-libLTLIBRARIES clean-libtool distclean distclean-compile \ +- distclean-depend distclean-generic distclean-libtool \ +- distclean-tags distdir dvi dvi-am info info-am install \ +- install-am install-data install-data-am install-exec \ +- install-exec-am install-info install-info-am \ +- install-libLTLIBRARIES install-man install-strip installcheck \ ++.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ ++ clean-libLTLIBRARIES clean-libtool ctags distclean \ ++ distclean-compile distclean-generic distclean-libtool \ ++ distclean-tags distdir dvi dvi-am html html-am info info-am \ ++ install install-am install-data install-data-am install-dvi \ ++ install-dvi-am install-exec install-exec-am install-html \ ++ install-html-am install-info install-info-am \ ++ install-libLTLIBRARIES install-man install-pdf install-pdf-am \ ++ install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ +- mostlyclean-generic mostlyclean-libtool tags uninstall \ +- uninstall-am uninstall-info-am uninstall-libLTLIBRARIES ++ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ ++ tags uninstall uninstall-am uninstall-libLTLIBRARIES + + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. +--- libfcgi-2.4.0.orig/config.guess ++++ libfcgi-2.4.0/config.guess +@@ -1,9 +1,10 @@ + #! /bin/sh + # Attempt to guess a canonical system name. +-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +-# Free Software Foundation, Inc. ++# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, ++# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, ++# Inc. + +-timestamp='2001-07-30' ++timestamp='2007-07-22' + + # This file is free software; you can redistribute it and/or modify it + # under the terms of the GNU General Public License as published by +@@ -17,15 +18,18 @@ + # + # You should have received a copy of the GNU General Public License + # along with this program; if not, write to the Free Software +-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA ++# 02110-1301, USA. + # + # As a special exception to the GNU General Public License, if you + # distribute this file as part of a program that contains a + # configuration script generated by Autoconf, you may include it under + # the same distribution terms that you use for the rest of that program. + +-# Written by Per Bothner . +-# Please send patches to . ++ ++# Originally written by Per Bothner . ++# Please send patches to . Submit a context ++# diff and a properly formatted ChangeLog entry. + # + # This script attempts to guess a canonical system name similar to + # config.sub. If it succeeds, it prints the system name on stdout, and +@@ -52,7 +56,7 @@ + GNU config.guess ($timestamp) + + Originally written by Per Bothner. +-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 ++Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 + Free Software Foundation, Inc. + + This is free software; see the source for copying conditions. There is NO +@@ -65,11 +69,11 @@ + while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) +- echo "$timestamp" ; exit 0 ;; ++ echo "$timestamp" ; exit ;; + --version | -v ) +- echo "$version" ; exit 0 ;; ++ echo "$version" ; exit ;; + --help | --h* | -h ) +- echo "$usage"; exit 0 ;; ++ echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. +@@ -87,30 +91,42 @@ + exit 1 + fi + ++trap 'exit 1' 1 2 15 + +-dummy=dummy-$$ +-trap 'rm -f $dummy.c $dummy.o $dummy.rel $dummy; exit 1' 1 2 15 ++# CC_FOR_BUILD -- compiler used by this script. Note that the use of a ++# compiler to aid in system detection is discouraged as it requires ++# temporary files to be created and, as you can see below, it is a ++# headache to deal with in a portable fashion. + +-# CC_FOR_BUILD -- compiler used by this script. + # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still + # use `HOST_CC' if defined, but it is deprecated. + +-set_cc_for_build='case $CC_FOR_BUILD,$HOST_CC,$CC in +- ,,) echo "int dummy(){}" > $dummy.c ; +- for c in cc gcc c89 ; do +- ($c $dummy.c -c -o $dummy.o) >/dev/null 2>&1 ; +- if test $? = 0 ; then ++# Portable tmp directory creation inspired by the Autoconf team. ++ ++set_cc_for_build=' ++trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; ++trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; ++: ${TMPDIR=/tmp} ; ++ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || ++ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || ++ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || ++ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; ++dummy=$tmp/dummy ; ++tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; ++case $CC_FOR_BUILD,$HOST_CC,$CC in ++ ,,) echo "int x;" > $dummy.c ; ++ for c in cc gcc c89 c99 ; do ++ if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; +- rm -f $dummy.c $dummy.o $dummy.rel ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +-esac' ++esac ; set_cc_for_build= ;' + + # This is needed to find uname on a Pyramid OSx when run in the BSD universe. + # (ghazi@noc.rutgers.edu 1994-08-24) +@@ -127,29 +143,31 @@ + + case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) +- # Netbsd (nbsd) targets should (where applicable) match one or ++ # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. +- # Determine the machine/vendor (is the vendor relevant). +- case "${UNAME_MACHINE}" in +- amiga) machine=m68k-unknown ;; +- arm32) machine=arm-unknown ;; +- atari*) machine=m68k-atari ;; +- sun3*) machine=m68k-sun ;; +- mac68k) machine=m68k-apple ;; +- macppc) machine=powerpc-apple ;; +- hp3[0-9][05]) machine=m68k-hp ;; +- ibmrt|romp-ibm) machine=romp-ibm ;; +- *) machine=${UNAME_MACHINE}-unknown ;; ++ # ++ # Note: NetBSD doesn't particularly care about the vendor ++ # portion of the name. We always set it to "unknown". ++ sysctl="sysctl -n hw.machine_arch" ++ UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ ++ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` ++ case "${UNAME_MACHINE_ARCH}" in ++ armeb) machine=armeb-unknown ;; ++ arm*) machine=arm-unknown ;; ++ sh3el) machine=shl-unknown ;; ++ sh3eb) machine=sh-unknown ;; ++ sh5el) machine=sh5le-unknown ;; ++ *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. +- case "${UNAME_MACHINE}" in +- i386|sparc|amiga|arm*|hp300|mvme68k|vax|atari|luna68k|mac68k|news68k|next68k|pc532|sun3*|x68k) ++ case "${UNAME_MACHINE_ARCH}" in ++ arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep __ELF__ >/dev/null +@@ -166,117 +184,128 @@ + ;; + esac + # The OS release +- release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ++ # Debian GNU/NetBSD machines have a different userland, and ++ # thus, need a distinct triplet. However, they do not need ++ # kernel version information, so it can be replaced with a ++ # suitable tag, in the style of linux-gnu. ++ case "${UNAME_VERSION}" in ++ Debian*) ++ release='-gnu' ++ ;; ++ *) ++ release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ++ ;; ++ esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}" +- exit 0 ;; ++ exit ;; ++ *:OpenBSD:*:*) ++ UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` ++ echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} ++ exit ;; ++ *:ekkoBSD:*:*) ++ echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} ++ exit ;; ++ *:SolidBSD:*:*) ++ echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} ++ exit ;; ++ macppc:MirBSD:*:*) ++ echo powerpc-unknown-mirbsd${UNAME_RELEASE} ++ exit ;; ++ *:MirBSD:*:*) ++ echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} ++ exit ;; + alpha:OSF1:*:*) +- if test $UNAME_RELEASE = "V4.0"; then ++ case $UNAME_RELEASE in ++ *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` +- fi ++ ;; ++ *5.*) ++ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ++ ;; ++ esac ++ # According to Compaq, /usr/sbin/psrinfo has been available on ++ # OSF/1 and Tru64 systems produced since 1995. I hope that ++ # covers most systems running today. This code pipes the CPU ++ # types through head -n 1, so we only detect the type of CPU 0. ++ ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` ++ case "$ALPHA_CPU_TYPE" in ++ "EV4 (21064)") ++ UNAME_MACHINE="alpha" ;; ++ "EV4.5 (21064)") ++ UNAME_MACHINE="alpha" ;; ++ "LCA4 (21066/21068)") ++ UNAME_MACHINE="alpha" ;; ++ "EV5 (21164)") ++ UNAME_MACHINE="alphaev5" ;; ++ "EV5.6 (21164A)") ++ UNAME_MACHINE="alphaev56" ;; ++ "EV5.6 (21164PC)") ++ UNAME_MACHINE="alphapca56" ;; ++ "EV5.7 (21164PC)") ++ UNAME_MACHINE="alphapca57" ;; ++ "EV6 (21264)") ++ UNAME_MACHINE="alphaev6" ;; ++ "EV6.7 (21264A)") ++ UNAME_MACHINE="alphaev67" ;; ++ "EV6.8CB (21264C)") ++ UNAME_MACHINE="alphaev68" ;; ++ "EV6.8AL (21264B)") ++ UNAME_MACHINE="alphaev68" ;; ++ "EV6.8CX (21264D)") ++ UNAME_MACHINE="alphaev68" ;; ++ "EV6.9A (21264/EV69A)") ++ UNAME_MACHINE="alphaev69" ;; ++ "EV7 (21364)") ++ UNAME_MACHINE="alphaev7" ;; ++ "EV7.9 (21364A)") ++ UNAME_MACHINE="alphaev79" ;; ++ esac ++ # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. +- cat <$dummy.s +- .data +-\$Lformat: +- .byte 37,100,45,37,120,10,0 # "%d-%x\n" +- +- .text +- .globl main +- .align 4 +- .ent main +-main: +- .frame \$30,16,\$26,0 +- ldgp \$29,0(\$27) +- .prologue 1 +- .long 0x47e03d80 # implver \$0 +- lda \$2,-1 +- .long 0x47e20c21 # amask \$2,\$1 +- lda \$16,\$Lformat +- mov \$0,\$17 +- not \$1,\$18 +- jsr \$26,printf +- ldgp \$29,0(\$26) +- mov 0,\$16 +- jsr \$26,exit +- .end main +-EOF +- eval $set_cc_for_build +- $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null +- if test "$?" = 0 ; then +- case `./$dummy` in +- 0-0) +- UNAME_MACHINE="alpha" +- ;; +- 1-0) +- UNAME_MACHINE="alphaev5" +- ;; +- 1-1) +- UNAME_MACHINE="alphaev56" +- ;; +- 1-101) +- UNAME_MACHINE="alphapca56" +- ;; +- 2-303) +- UNAME_MACHINE="alphaev6" +- ;; +- 2-307) +- UNAME_MACHINE="alphaev67" +- ;; +- esac +- fi +- rm -f $dummy.s $dummy +- echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` +- exit 0 ;; ++ echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` ++ exit ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix +- exit 0 ;; ++ exit ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 +- exit 0 ;; ++ exit ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 +- exit 0;; +- amiga:OpenBSD:*:*) +- echo m68k-unknown-openbsd${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos +- exit 0 ;; +- arc64:OpenBSD:*:*) +- echo mips64el-unknown-openbsd${UNAME_RELEASE} +- exit 0 ;; +- arc:OpenBSD:*:*) +- echo mipsel-unknown-openbsd${UNAME_RELEASE} +- exit 0 ;; +- hkmips:OpenBSD:*:*) +- echo mips-unknown-openbsd${UNAME_RELEASE} +- exit 0 ;; +- pmax:OpenBSD:*:*) +- echo mipsel-unknown-openbsd${UNAME_RELEASE} +- exit 0 ;; +- sgi:OpenBSD:*:*) +- echo mips-unknown-openbsd${UNAME_RELEASE} +- exit 0 ;; +- wgrisc:OpenBSD:*:*) +- echo mipsel-unknown-openbsd${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; ++ *:[Mm]orph[Oo][Ss]:*:*) ++ echo ${UNAME_MACHINE}-unknown-morphos ++ exit ;; + *:OS/390:*:*) + echo i370-ibm-openedition +- exit 0 ;; ++ exit ;; ++ *:z/VM:*:*) ++ echo s390-ibm-zvmoe ++ exit ;; ++ *:OS400:*:*) ++ echo powerpc-ibm-os400 ++ exit ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} +- exit 0;; ++ exit ;; ++ arm:riscos:*:*|arm:RISCOS:*:*) ++ echo arm-unknown-riscos ++ exit ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp +- exit 0;; ++ exit ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then +@@ -284,25 +313,32 @@ + else + echo pyramid-pyramid-bsd + fi +- exit 0 ;; ++ exit ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 +- exit 0 ;; ++ exit ;; ++ DRS?6000:unix:4.0:6*) ++ echo sparc-icl-nx6 ++ exit ;; ++ DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) ++ case `/usr/bin/uname -p` in ++ sparc) echo sparc-icl-nx7; exit ;; ++ esac ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` +- exit 0 ;; ++ exit ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` +- exit 0 ;; +- i86pc:SunOS:5.*:*) ++ exit ;; ++ i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) + echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` +- exit 0 ;; ++ exit ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` +- exit 0 ;; ++ exit ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) +@@ -311,12 +347,12 @@ + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` +- exit 0 ;; ++ exit ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + sun*:*:4.2BSD:*) +- UNAME_RELEASE=`(head -1 /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` ++ UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) +@@ -326,13 +362,10 @@ + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac +- exit 0 ;; ++ exit ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} +- exit 0 ;; +- atari*:OpenBSD:*:*) +- echo m68k-unknown-openbsd${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor +@@ -343,50 +376,42 @@ + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} +- exit 0 ;; +- sun3*:OpenBSD:*:*) +- echo m68k-unknown-openbsd${UNAME_RELEASE} +- exit 0 ;; +- mac68k:OpenBSD:*:*) +- echo m68k-unknown-openbsd${UNAME_RELEASE} +- exit 0 ;; +- mvme68k:OpenBSD:*:*) +- echo m68k-unknown-openbsd${UNAME_RELEASE} +- exit 0 ;; +- mvme88k:OpenBSD:*:*) +- echo m88k-unknown-openbsd${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; ++ m68k:machten:*:*) ++ echo m68k-apple-machten${UNAME_RELEASE} ++ exit ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 +- exit 0 ;; ++ exit ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + mips:*:*:UMIPS | mips:*:*:RISCos) ++ eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #ifdef __cplusplus + #include /* for printf() prototype */ +@@ -408,28 +433,33 @@ + exit (-1); + } + EOF +- eval $set_cc_for_build +- $CC_FOR_BUILD $dummy.c -o $dummy \ +- && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ +- && rm -f $dummy.c $dummy && exit 0 +- rm -f $dummy.c $dummy ++ $CC_FOR_BUILD -o $dummy $dummy.c && ++ dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && ++ SYSTEM_NAME=`$dummy $dummyarg` && ++ { echo "$SYSTEM_NAME"; exit; } + echo mips-mips-riscos${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax +- exit 0 ;; ++ exit ;; ++ Motorola:*:4.3:PL8-*) ++ echo powerpc-harris-powermax ++ exit ;; ++ Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) ++ echo powerpc-harris-powermax ++ exit ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix +- exit 0 ;; ++ exit ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 +- exit 0 ;; ++ exit ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 +- exit 0 ;; ++ exit ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 +- exit 0 ;; ++ exit ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` +@@ -445,29 +475,29 @@ + else + echo i586-dg-dgux${UNAME_RELEASE} + fi +- exit 0 ;; ++ exit ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 +- exit 0 ;; ++ exit ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 +- exit 0 ;; ++ exit ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 +- exit 0 ;; ++ exit ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd +- exit 0 ;; ++ exit ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` +- exit 0 ;; ++ exit ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. +- echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id +- exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' ++ echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id ++ exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix +- exit 0 ;; ++ exit ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` +@@ -475,9 +505,10 @@ + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} +- exit 0 ;; ++ exit ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then ++ eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + +@@ -489,18 +520,20 @@ + exit(0); + } + EOF +- eval $set_cc_for_build +- $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0 +- rm -f $dummy.c $dummy +- echo rs6000-ibm-aix3.2.5 ++ if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` ++ then ++ echo "$SYSTEM_NAME" ++ else ++ echo rs6000-ibm-aix3.2.5 ++ fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi +- exit 0 ;; ++ exit ;; + *:AIX:*:[45]) +- IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | head -1 | awk '{ print $1 }'` ++ IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else +@@ -512,38 +545,36 @@ + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} +- exit 0 ;; ++ exit ;; + *:AIX:*:*) + echo rs6000-ibm-aix +- exit 0 ;; ++ exit ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 +- exit 0 ;; ++ exit ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to +- exit 0 ;; # report: romp-ibm BSD 4.3 ++ exit ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx +- exit 0 ;; ++ exit ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 +- exit 0 ;; ++ exit ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd +- exit 0 ;; ++ exit ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 +- exit 0 ;; ++ exit ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) +- case "${HPUX_REV}" in +- 11.[0-9][0-9]) +- if [ -x /usr/bin/getconf ]; then +- sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` ++ if [ -x /usr/bin/getconf ]; then ++ sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 +@@ -552,12 +583,13 @@ + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; ++ '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + esac ;; + esac +- fi ;; +- esac +- if [ "${HP_ARCH}" = "" ]; then +- sed 's/^ //' << EOF >$dummy.c ++ fi ++ if [ "${HP_ARCH}" = "" ]; then ++ eval $set_cc_for_build ++ sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include +@@ -590,19 +622,39 @@ + exit (0); + } + EOF +- eval $set_cc_for_build +- (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy` +- if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi +- rm -f $dummy.c $dummy +- fi ;; ++ (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` ++ test -z "$HP_ARCH" && HP_ARCH=hppa ++ fi ;; + esac ++ if [ ${HP_ARCH} = "hppa2.0w" ] ++ then ++ eval $set_cc_for_build ++ ++ # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating ++ # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler ++ # generating 64-bit code. GNU and HP use different nomenclature: ++ # ++ # $ CC_FOR_BUILD=cc ./config.guess ++ # => hppa2.0w-hp-hpux11.23 ++ # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess ++ # => hppa64-hp-hpux11.23 ++ ++ if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | ++ grep __LP64__ >/dev/null ++ then ++ HP_ARCH="hppa2.0w" ++ else ++ HP_ARCH="hppa64" ++ fi ++ fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} +- exit 0 ;; ++ exit ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} +- exit 0 ;; ++ exit ;; + 3050*:HI-UX:*:*) ++ eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + int +@@ -628,159 +680,237 @@ + exit (0); + } + EOF +- eval $set_cc_for_build +- $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0 +- rm -f $dummy.c $dummy ++ $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && ++ { echo "$SYSTEM_NAME"; exit; } + echo unknown-hitachi-hiuxwe2 +- exit 0 ;; ++ exit ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd +- exit 0 ;; ++ exit ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd +- exit 0 ;; ++ exit ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix +- exit 0 ;; ++ exit ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf +- exit 0 ;; ++ exit ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf +- exit 0 ;; ++ exit ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi +- exit 0 ;; ++ exit ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites +- exit 0 ;; +- hppa*:OpenBSD:*:*) +- echo hppa-unknown-openbsd +- exit 0 ;; ++ exit ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd +- exit 0 ;; ++ exit ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi +- exit 0 ;; ++ exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd +- exit 0 ;; ++ exit ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd +- exit 0 ;; ++ exit ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd +- exit 0 ;; +- CRAY*X-MP:*:*:*) +- echo xmp-cray-unicos +- exit 0 ;; ++ exit ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' +- exit 0 ;; ++ exit ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' +- exit 0 ;; ++ exit ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' +- exit 0 ;; +- CRAY*T3D:*:*:*) +- echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' +- exit 0 ;; ++ exit ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' +- exit 0 ;; ++ exit ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' +- exit 0 ;; +- CRAY-2:*:*:*) +- echo cray2-cray-unicos +- exit 0 ;; ++ exit ;; ++ *:UNICOS/mp:*:*) ++ echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' ++ exit ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" +- exit 0 ;; +- hp300:OpenBSD:*:*) +- echo m68k-unknown-openbsd${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; ++ 5000:UNIX_System_V:4.*:*) ++ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` ++ FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` ++ echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" ++ exit ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + *:FreeBSD:*:*) +- echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` +- exit 0 ;; +- *:OpenBSD:*:*) +- echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` +- exit 0 ;; ++ case ${UNAME_MACHINE} in ++ pc98) ++ echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; ++ amd64) ++ echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; ++ *) ++ echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; ++ esac ++ exit ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin +- exit 0 ;; +- i*:MINGW*:*) ++ exit ;; ++ *:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 +- exit 0 ;; ++ exit ;; ++ i*:windows32*:*) ++ # uname -m includes "-pc" on this system. ++ echo ${UNAME_MACHINE}-mingw32 ++ exit ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 +- exit 0 ;; ++ exit ;; ++ *:Interix*:[3456]*) ++ case ${UNAME_MACHINE} in ++ x86) ++ echo i586-pc-interix${UNAME_RELEASE} ++ exit ;; ++ EM64T | authenticamd) ++ echo x86_64-unknown-interix${UNAME_RELEASE} ++ exit ;; ++ esac ;; ++ [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) ++ echo i${UNAME_MACHINE}-pc-mks ++ exit ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? +- echo i386-pc-interix +- exit 0 ;; ++ echo i586-pc-interix ++ exit ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin +- exit 0 ;; ++ exit ;; ++ amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) ++ echo x86_64-unknown-cygwin ++ exit ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin +- exit 0 ;; ++ exit ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` +- exit 0 ;; ++ exit ;; + *:GNU:*:*) ++ # the GNU system + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` +- exit 0 ;; ++ exit ;; ++ *:GNU/*:*:*) ++ # other systems with GNU libc and userland ++ echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu ++ exit ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix +- exit 0 ;; ++ exit ;; + arm*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu +- exit 0 ;; ++ exit ;; ++ avr32*:Linux:*:*) ++ echo ${UNAME_MACHINE}-unknown-linux-gnu ++ exit ;; ++ cris:Linux:*:*) ++ echo cris-axis-linux-gnu ++ exit ;; ++ crisv32:Linux:*:*) ++ echo crisv32-axis-linux-gnu ++ exit ;; ++ frv:Linux:*:*) ++ echo frv-unknown-linux-gnu ++ exit ;; + ia64:Linux:*:*) +- echo ${UNAME_MACHINE}-unknown-linux +- exit 0 ;; ++ echo ${UNAME_MACHINE}-unknown-linux-gnu ++ exit ;; ++ m32r*:Linux:*:*) ++ echo ${UNAME_MACHINE}-unknown-linux-gnu ++ exit ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu +- exit 0 ;; ++ exit ;; + mips:Linux:*:*) +- case `sed -n '/^byte/s/^.*: \(.*\) endian/\1/p' < /proc/cpuinfo` in +- big) echo mips-unknown-linux-gnu && exit 0 ;; +- little) echo mipsel-unknown-linux-gnu && exit 0 ;; +- esac ++ eval $set_cc_for_build ++ sed 's/^ //' << EOF >$dummy.c ++ #undef CPU ++ #undef mips ++ #undef mipsel ++ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) ++ CPU=mipsel ++ #else ++ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) ++ CPU=mips ++ #else ++ CPU= ++ #endif ++ #endif ++EOF ++ eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' ++ /^CPU/{ ++ s: ::g ++ p ++ }'`" ++ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ++ ;; ++ mips64:Linux:*:*) ++ eval $set_cc_for_build ++ sed 's/^ //' << EOF >$dummy.c ++ #undef CPU ++ #undef mips64 ++ #undef mips64el ++ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) ++ CPU=mips64el ++ #else ++ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) ++ CPU=mips64 ++ #else ++ CPU= ++ #endif ++ #endif ++EOF ++ eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' ++ /^CPU/{ ++ s: ::g ++ p ++ }'`" ++ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } + ;; ++ or32:Linux:*:*) ++ echo or32-unknown-linux-gnu ++ exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-gnu +- exit 0 ;; ++ exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu +- exit 0 ;; ++ exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; +@@ -789,12 +919,12 @@ + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; +- EV68*) UNAME_MACHINE=alphaev67 ;; ++ EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null + if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} +- exit 0 ;; ++ exit ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in +@@ -802,27 +932,37 @@ + PA8*) echo hppa2.0-unknown-linux-gnu ;; + *) echo hppa-unknown-linux-gnu ;; + esac +- exit 0 ;; ++ exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu +- exit 0 ;; ++ exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux +- exit 0 ;; ++ exit ;; ++ sh64*:Linux:*:*) ++ echo ${UNAME_MACHINE}-unknown-linux-gnu ++ exit ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu +- exit 0 ;; ++ exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu +- exit 0 ;; ++ exit ;; ++ vax:Linux:*:*) ++ echo ${UNAME_MACHINE}-dec-linux-gnu ++ exit ;; + x86_64:Linux:*:*) + echo x86_64-unknown-linux-gnu +- exit 0 ;; ++ exit ;; ++ xtensa:Linux:*:*) ++ echo xtensa-unknown-linux-gnu ++ exit ;; + i*86:Linux:*:*) + # The BFD linker knows what the default object file format is, so + # first see if it will tell us. cd to the root directory to prevent + # problems with other programs or directories called `ld' in the path. +- ld_supported_targets=`cd /; ld --help 2>&1 \ ++ # Set LC_ALL=C to ensure ld outputs messages in English. ++ ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ + | sed -ne '/supported targets:/!d + s/[ ][ ]*/ /g + s/.*supported targets: *// +@@ -834,52 +974,58 @@ + ;; + a.out-i386-linux) + echo "${UNAME_MACHINE}-pc-linux-gnuaout" +- exit 0 ;; ++ exit ;; + coff-i386) + echo "${UNAME_MACHINE}-pc-linux-gnucoff" +- exit 0 ;; ++ exit ;; + "") + # Either a pre-BFD a.out linker (linux-gnuoldld) or + # one that does not give us useful --help. + echo "${UNAME_MACHINE}-pc-linux-gnuoldld" +- exit 0 ;; ++ exit ;; + esac + # Determine whether the default compiler is a.out or elf +- cat >$dummy.c < +-#ifdef __cplusplus +-#include /* for printf() prototype */ +- int main (int argc, char *argv[]) { +-#else +- int main (argc, argv) int argc; char *argv[]; { +-#endif +-#ifdef __ELF__ +-# ifdef __GLIBC__ +-# if __GLIBC__ >= 2 +- printf ("%s-pc-linux-gnu\n", argv[1]); +-# else +- printf ("%s-pc-linux-gnulibc1\n", argv[1]); +-# endif +-# else +- printf ("%s-pc-linux-gnulibc1\n", argv[1]); +-# endif +-#else +- printf ("%s-pc-linux-gnuaout\n", argv[1]); +-#endif +- return 0; +-} +-EOF + eval $set_cc_for_build +- $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm -f $dummy.c $dummy && exit 0 +- rm -f $dummy.c $dummy +- test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 ++ sed 's/^ //' << EOF >$dummy.c ++ #include ++ #ifdef __ELF__ ++ # ifdef __GLIBC__ ++ # if __GLIBC__ >= 2 ++ LIBC=gnu ++ # else ++ LIBC=gnulibc1 ++ # endif ++ # else ++ LIBC=gnulibc1 ++ # endif ++ #else ++ #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) ++ LIBC=gnu ++ #else ++ LIBC=gnuaout ++ #endif ++ #endif ++ #ifdef __dietlibc__ ++ LIBC=dietlibc ++ #endif ++EOF ++ eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' ++ /^LIBC/{ ++ s: ::g ++ p ++ }'`" ++ test x"${LIBC}" != x && { ++ echo "${UNAME_MACHINE}-pc-linux-${LIBC}" ++ exit ++ } ++ test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; } + ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 +- exit 0 ;; ++ exit ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... +@@ -887,7 +1033,27 @@ + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} +- exit 0 ;; ++ exit ;; ++ i*86:OS/2:*:*) ++ # If we were able to find `uname', then EMX Unix compatibility ++ # is probably installed. ++ echo ${UNAME_MACHINE}-pc-os2-emx ++ exit ;; ++ i*86:XTS-300:*:STOP) ++ echo ${UNAME_MACHINE}-unknown-stop ++ exit ;; ++ i*86:atheos:*:*) ++ echo ${UNAME_MACHINE}-unknown-atheos ++ exit ;; ++ i*86:syllable:*:*) ++ echo ${UNAME_MACHINE}-pc-syllable ++ exit ;; ++ i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) ++ echo i386-unknown-lynxos${UNAME_RELEASE} ++ exit ;; ++ i*86:*DOS:*:*) ++ echo ${UNAME_MACHINE}-pc-msdosdjgpp ++ exit ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then +@@ -895,99 +1061,100 @@ + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi +- exit 0 ;; +- i*86:*:5:[78]*) ++ exit ;; ++ i*86:*:5:[678]*) ++ # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} +- exit 0 ;; ++ exit ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then +- UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')` +- (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486 +- (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \ ++ UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` ++ (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 ++ (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 +- (/bin/uname -X|egrep '^Machine.*Pent ?II' >/dev/null) \ ++ (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 +- (/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) \ ++ (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi +- exit 0 ;; +- i*86:*DOS:*:*) +- echo ${UNAME_MACHINE}-pc-msdosdjgpp +- exit 0 ;; ++ exit ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i386. + echo i386-pc-msdosdjgpp +- exit 0 ;; ++ exit ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 +- exit 0 ;; ++ exit ;; + paragon:*:*:*) + echo i860-intel-osf1 +- exit 0 ;; ++ exit ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi +- exit 0 ;; ++ exit ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv +- exit 0 ;; +- M68*:*:R3V[567]*:*) +- test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; +- 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0) ++ exit ;; ++ mc68k:UNIX:SYSTEM5:3.51m) ++ echo m68k-convergent-sysv ++ exit ;; ++ M680?0:D-NIX:5.3:*) ++ echo m68k-diab-dnix ++ exit ;; ++ M68*:*:R3V[5678]*:*) ++ test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; ++ 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ +- && echo i486-ncr-sysv4.3${OS_REL} && exit 0 ++ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ +- && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; ++ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ +- && echo i486-ncr-sysv4 && exit 0 ;; ++ && { echo i486-ncr-sysv4; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 +- exit 0 ;; +- i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) +- echo i386-unknown-lynxos${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 +- exit 0 ;; ++ exit ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 +- exit 0 ;; ++ exit ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` +@@ -995,78 +1162,107 @@ + else + echo ns32k-sni-sysv + fi +- exit 0 ;; +- PENTIUM:CPunix:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort +- # says ++ exit ;; ++ PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort ++ # says + echo i586-unisys-sysv4 +- exit 0 ;; ++ exit ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 +- exit 0 ;; ++ exit ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 +- exit 0 ;; ++ exit ;; ++ i*86:VOS:*:*) ++ # From Paul.Green@stratus.com. ++ echo ${UNAME_MACHINE}-stratus-vos ++ exit ;; ++ *:VOS:*:*) ++ # From Paul.Green@stratus.com. ++ echo hppa1.1-stratus-vos ++ exit ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 +- exit 0 ;; ++ exit ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi +- exit 0 ;; ++ exit ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos +- exit 0 ;; ++ exit ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos +- exit 0 ;; ++ exit ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos +- exit 0 ;; ++ exit ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; ++ SX-6:SUPER-UX:*:*) ++ echo sx6-nec-superux${UNAME_RELEASE} ++ exit ;; ++ SX-7:SUPER-UX:*:*) ++ echo sx7-nec-superux${UNAME_RELEASE} ++ exit ;; ++ SX-8:SUPER-UX:*:*) ++ echo sx8-nec-superux${UNAME_RELEASE} ++ exit ;; ++ SX-8R:SUPER-UX:*:*) ++ echo sx8r-nec-superux${UNAME_RELEASE} ++ exit ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + *:Darwin:*:*) +- echo `uname -p`-apple-darwin${UNAME_RELEASE} +- exit 0 ;; ++ UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown ++ case $UNAME_PROCESSOR in ++ unknown) UNAME_PROCESSOR=powerpc ;; ++ esac ++ echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} ++ exit ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) +- if test "${UNAME_MACHINE}" = "x86pc"; then ++ UNAME_PROCESSOR=`uname -p` ++ if test "$UNAME_PROCESSOR" = "x86"; then ++ UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi +- echo `uname -p`-${UNAME_MACHINE}-nto-qnx +- exit 0 ;; ++ echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} ++ exit ;; + *:QNX:*:4*) + echo i386-pc-qnx +- exit 0 ;; +- NSR-[KW]:NONSTOP_KERNEL:*:*) ++ exit ;; ++ NSE-?:NONSTOP_KERNEL:*:*) ++ echo nse-tandem-nsk${UNAME_RELEASE} ++ exit ;; ++ NSR-?:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux +- exit 0 ;; ++ exit ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv +- exit 0 ;; ++ exit ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 +@@ -1077,38 +1273,53 @@ + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 +- exit 0 ;; +- i*86:OS/2:*:*) +- # If we were able to find `uname', then EMX Unix compatibility +- # is probably installed. +- echo ${UNAME_MACHINE}-pc-os2-emx +- exit 0 ;; ++ exit ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 +- exit 0 ;; ++ exit ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex +- exit 0 ;; ++ exit ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 +- exit 0 ;; ++ exit ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 +- exit 0 ;; ++ exit ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 +- exit 0 ;; ++ exit ;; + *:ITS:*:*) + echo pdp10-unknown-its +- exit 0 ;; +- i*86:XTS-300:*:STOP) +- echo ${UNAME_MACHINE}-unknown-stop +- exit 0 ;; ++ exit ;; ++ SEI:*:*:SEIUX) ++ echo mips-sei-seiux${UNAME_RELEASE} ++ exit ;; ++ *:DragonFly:*:*) ++ echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ++ exit ;; ++ *:*VMS:*:*) ++ UNAME_MACHINE=`(uname -p) 2>/dev/null` ++ case "${UNAME_MACHINE}" in ++ A*) echo alpha-dec-vms ; exit ;; ++ I*) echo ia64-dec-vms ; exit ;; ++ V*) echo vax-dec-vms ; exit ;; ++ esac ;; ++ *:XENIX:*:SysV) ++ echo i386-pc-xenix ++ exit ;; ++ i*86:skyos:*:*) ++ echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' ++ exit ;; ++ i*86:rdos:*:*) ++ echo ${UNAME_MACHINE}-pc-rdos ++ exit ;; + esac + + #echo '(No uname command or uname output not recognized.)' 1>&2 + #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + ++eval $set_cc_for_build + cat >$dummy.c < +@@ -1134,7 +1345,7 @@ + #endif + + #if defined (__arm) && defined (__acorn) && defined (__unix) +- printf ("arm-acorn-riscix"); exit (0); ++ printf ("arm-acorn-riscix\n"); exit (0); + #endif + + #if defined (hp300) && !defined (hpux) +@@ -1223,13 +1434,12 @@ + } + EOF + +-eval $set_cc_for_build +-$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm -f $dummy.c $dummy && exit 0 +-rm -f $dummy.c $dummy ++$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && ++ { echo "$SYSTEM_NAME"; exit; } + + # Apollos put the system type in the environment. + +-test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } ++test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } + + # Convex versions that predate uname can use getsysinfo(1) + +@@ -1238,22 +1448,22 @@ + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd +- exit 0 ;; ++ exit ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi +- exit 0 ;; ++ exit ;; + c34*) + echo c34-convex-bsd +- exit 0 ;; ++ exit ;; + c38*) + echo c38-convex-bsd +- exit 0 ;; ++ exit ;; + c4*) + echo c4-convex-bsd +- exit 0 ;; ++ exit ;; + esac + fi + +@@ -1264,7 +1474,9 @@ + the operating system you are using. It is advised that you + download the most up to date version of the config scripts from + +- ftp://ftp.gnu.org/pub/gnu/config/ ++ http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess ++and ++ http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub + + If the version you run ($0) is already up to date, please + send the following data and any information you think might be +--- libfcgi-2.4.0.orig/install-sh ++++ libfcgi-2.4.0/install-sh +@@ -1,36 +1,62 @@ + #!/bin/sh +-# + # install - install a program, script, or datafile +-# This comes from X11R5 (mit/util/scripts/install.sh). ++ ++scriptversion=2006-10-14.15 ++ ++# This originates from X11R5 (mit/util/scripts/install.sh), which was ++# later released in X11R6 (xc/config/util/install.sh) with the ++# following copyright and license. ++# ++# Copyright (C) 1994 X Consortium ++# ++# Permission is hereby granted, free of charge, to any person obtaining a copy ++# of this software and associated documentation files (the "Software"), to ++# deal in the Software without restriction, including without limitation the ++# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or ++# sell copies of the Software, and to permit persons to whom the Software is ++# furnished to do so, subject to the following conditions: + # +-# Copyright 1991 by the Massachusetts Institute of Technology ++# The above copyright notice and this permission notice shall be included in ++# all copies or substantial portions of the Software. + # +-# Permission to use, copy, modify, distribute, and sell this software and its +-# documentation for any purpose is hereby granted without fee, provided that +-# the above copyright notice appear in all copies and that both that +-# copyright notice and this permission notice appear in supporting +-# documentation, and that the name of M.I.T. not be used in advertising or +-# publicity pertaining to distribution of the software without specific, +-# written prior permission. M.I.T. makes no representations about the +-# suitability of this software for any purpose. It is provided "as is" +-# without express or implied warranty. ++# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ++# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE ++# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN ++# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- ++# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ++# ++# Except as contained in this notice, the name of the X Consortium shall not ++# be used in advertising or otherwise to promote the sale, use or other deal- ++# ings in this Software without prior written authorization from the X Consor- ++# tium. ++# ++# ++# FSF changes to this file are in the public domain. + # + # Calling this script install-sh is preferred over install.sh, to prevent + # `make' implicit rules from creating a file called install from it + # when there is no Makefile. + # + # This script is compatible with the BSD install script, but was written +-# from scratch. It can only install one file at a time, a restriction +-# shared with many OS's install programs. ++# from scratch. + ++nl=' ++' ++IFS=" "" $nl" + + # set DOITPROG to echo to test this script + + # Don't use :- since 4.3BSD and earlier shells don't like it. + doit="${DOITPROG-}" ++if test -z "$doit"; then ++ doit_exec=exec ++else ++ doit_exec=$doit ++fi + +- +-# put in absolute paths if you don't have them in your path; or use env. vars. ++# Put in absolute file names if you don't have them in your path; ++# or use environment vars. + + mvprog="${MVPROG-mv}" + cpprog="${CPPROG-cp}" +@@ -41,211 +67,441 @@ + rmprog="${RMPROG-rm}" + mkdirprog="${MKDIRPROG-mkdir}" + +-transformbasename="" +-transform_arg="" +-instcmd="$mvprog" +-chmodcmd="$chmodprog 0755" +-chowncmd="" +-chgrpcmd="" +-stripcmd="" +-rmcmd="$rmprog -f" +-mvcmd="$mvprog" +-src="" +-dst="" +-dir_arg="" +- +-while [ x"$1" != x ]; do +- case $1 in +- -c) instcmd="$cpprog" +- shift +- continue;; +- +- -d) dir_arg=true +- shift +- continue;; +- +- -m) chmodcmd="$chmodprog $2" +- shift +- shift +- continue;; +- +- -o) chowncmd="$chownprog $2" +- shift +- shift +- continue;; +- +- -g) chgrpcmd="$chgrpprog $2" +- shift +- shift +- continue;; +- +- -s) stripcmd="$stripprog" +- shift +- continue;; +- +- -t=*) transformarg=`echo $1 | sed 's/-t=//'` +- shift +- continue;; +- +- -b=*) transformbasename=`echo $1 | sed 's/-b=//'` +- shift +- continue;; +- +- *) if [ x"$src" = x ] +- then +- src=$1 +- else +- # this colon is to work around a 386BSD /bin/sh bug +- : +- dst=$1 +- fi +- shift +- continue;; +- esac +-done +- +-if [ x"$src" = x ] +-then +- echo "install: no input file specified" +- exit 1 +-else +- true +-fi ++posix_glob= ++posix_mkdir= + +-if [ x"$dir_arg" != x ]; then +- dst=$src +- src="" +- +- if [ -d $dst ]; then +- instcmd=: +- chmodcmd="" +- else +- instcmd=mkdir +- fi +-else ++# Desired mode of installed file. ++mode=0755 + +-# Waiting for this to be detected by the "$instcmd $src $dsttmp" command +-# might cause directories to be created, which would be especially bad +-# if $src (and thus $dsttmp) contains '*'. +- +- if [ -f $src -o -d $src ] +- then +- true +- else +- echo "install: $src does not exist" +- exit 1 +- fi +- +- if [ x"$dst" = x ] +- then +- echo "install: no destination specified" +- exit 1 +- else +- true +- fi ++chmodcmd=$chmodprog ++chowncmd= ++chgrpcmd= ++stripcmd= ++rmcmd="$rmprog -f" ++mvcmd="$mvprog" ++src= ++dst= ++dir_arg= ++dstarg= ++no_target_directory= ++ ++usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE ++ or: $0 [OPTION]... SRCFILES... DIRECTORY ++ or: $0 [OPTION]... -t DIRECTORY SRCFILES... ++ or: $0 [OPTION]... -d DIRECTORIES... ++ ++In the 1st form, copy SRCFILE to DSTFILE. ++In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. ++In the 4th, create DIRECTORIES. ++ ++Options: ++-c (ignored) ++-d create directories instead of installing files. ++-g GROUP $chgrpprog installed files to GROUP. ++-m MODE $chmodprog installed files to MODE. ++-o USER $chownprog installed files to USER. ++-s $stripprog installed files. ++-t DIRECTORY install into DIRECTORY. ++-T report an error if DSTFILE is a directory. ++--help display this help and exit. ++--version display version info and exit. ++ ++Environment variables override the default commands: ++ CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG ++" ++ ++while test $# -ne 0; do ++ case $1 in ++ -c) shift ++ continue;; ++ ++ -d) dir_arg=true ++ shift ++ continue;; ++ ++ -g) chgrpcmd="$chgrpprog $2" ++ shift ++ shift ++ continue;; ++ ++ --help) echo "$usage"; exit $?;; ++ ++ -m) mode=$2 ++ shift ++ shift ++ case $mode in ++ *' '* | *' '* | *' ++'* | *'*'* | *'?'* | *'['*) ++ echo "$0: invalid mode: $mode" >&2 ++ exit 1;; ++ esac ++ continue;; ++ ++ -o) chowncmd="$chownprog $2" ++ shift ++ shift ++ continue;; ++ ++ -s) stripcmd=$stripprog ++ shift ++ continue;; + +-# If destination is a directory, append the input filename; if your system +-# does not like double slashes in filenames, you may need to add some logic ++ -t) dstarg=$2 ++ shift ++ shift ++ continue;; + +- if [ -d $dst ] +- then +- dst="$dst"/`basename $src` +- else +- true +- fi +-fi ++ -T) no_target_directory=true ++ shift ++ continue;; + +-## this sed command emulates the dirname command +-dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` ++ --version) echo "$0 $scriptversion"; exit $?;; + +-# Make sure that the destination directory exists. +-# this part is taken from Noah Friedman's mkinstalldirs script ++ --) shift ++ break;; + +-# Skip lots of stat calls in the usual case. +-if [ ! -d "$dstdir" ]; then +-defaultIFS=' +-' +-IFS="${IFS-${defaultIFS}}" ++ -*) echo "$0: invalid option: $1" >&2 ++ exit 1;; + +-oIFS="${IFS}" +-# Some sh's can't handle IFS=/ for some reason. +-IFS='%' +-set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` +-IFS="${oIFS}" ++ *) break;; ++ esac ++done + +-pathcomp='' ++if test $# -ne 0 && test -z "$dir_arg$dstarg"; then ++ # When -d is used, all remaining arguments are directories to create. ++ # When -t is used, the destination is already specified. ++ # Otherwise, the last argument is the destination. Remove it from $@. ++ for arg ++ do ++ if test -n "$dstarg"; then ++ # $@ is not empty: it contains at least $arg. ++ set fnord "$@" "$dstarg" ++ shift # fnord ++ fi ++ shift # arg ++ dstarg=$arg ++ done ++fi + +-while [ $# -ne 0 ] ; do +- pathcomp="${pathcomp}${1}" +- shift ++if test $# -eq 0; then ++ if test -z "$dir_arg"; then ++ echo "$0: no input file specified." >&2 ++ exit 1 ++ fi ++ # It's OK to call `install-sh -d' without argument. ++ # This can happen when creating conditional directories. ++ exit 0 ++fi + +- if [ ! -d "${pathcomp}" ] ; +- then +- $mkdirprog "${pathcomp}" +- else +- true +- fi ++if test -z "$dir_arg"; then ++ trap '(exit $?); exit' 1 2 13 15 + +- pathcomp="${pathcomp}/" +-done ++ # Set umask so as not to create temps with too-generous modes. ++ # However, 'strip' requires both read and write access to temps. ++ case $mode in ++ # Optimize common cases. ++ *644) cp_umask=133;; ++ *755) cp_umask=22;; ++ ++ *[0-7]) ++ if test -z "$stripcmd"; then ++ u_plus_rw= ++ else ++ u_plus_rw='% 200' ++ fi ++ cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; ++ *) ++ if test -z "$stripcmd"; then ++ u_plus_rw= ++ else ++ u_plus_rw=,u+rw ++ fi ++ cp_umask=$mode$u_plus_rw;; ++ esac + fi + +-if [ x"$dir_arg" != x ] +-then +- $doit $instcmd $dst && +- +- if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && +- if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && +- if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && +- if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi +-else +- +-# If we're going to rename the final executable, determine the name now. ++for src ++do ++ # Protect names starting with `-'. ++ case $src in ++ -*) src=./$src ;; ++ esac ++ ++ if test -n "$dir_arg"; then ++ dst=$src ++ dstdir=$dst ++ test -d "$dstdir" ++ dstdir_status=$? ++ else ++ ++ # Waiting for this to be detected by the "$cpprog $src $dsttmp" command ++ # might cause directories to be created, which would be especially bad ++ # if $src (and thus $dsttmp) contains '*'. ++ if test ! -f "$src" && test ! -d "$src"; then ++ echo "$0: $src does not exist." >&2 ++ exit 1 ++ fi ++ ++ if test -z "$dstarg"; then ++ echo "$0: no destination specified." >&2 ++ exit 1 ++ fi ++ ++ dst=$dstarg ++ # Protect names starting with `-'. ++ case $dst in ++ -*) dst=./$dst ;; ++ esac + +- if [ x"$transformarg" = x ] +- then +- dstfile=`basename $dst` ++ # If destination is a directory, append the input filename; won't work ++ # if double slashes aren't ignored. ++ if test -d "$dst"; then ++ if test -n "$no_target_directory"; then ++ echo "$0: $dstarg: Is a directory" >&2 ++ exit 1 ++ fi ++ dstdir=$dst ++ dst=$dstdir/`basename "$src"` ++ dstdir_status=0 ++ else ++ # Prefer dirname, but fall back on a substitute if dirname fails. ++ dstdir=` ++ (dirname "$dst") 2>/dev/null || ++ expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$dst" : 'X\(//\)[^/]' \| \ ++ X"$dst" : 'X\(//\)$' \| \ ++ X"$dst" : 'X\(/\)' \| . 2>/dev/null || ++ echo X"$dst" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q' ++ ` ++ ++ test -d "$dstdir" ++ dstdir_status=$? ++ fi ++ fi ++ ++ obsolete_mkdir_used=false ++ ++ if test $dstdir_status != 0; then ++ case $posix_mkdir in ++ '') ++ # Create intermediate dirs using mode 755 as modified by the umask. ++ # This is like FreeBSD 'install' as of 1997-10-28. ++ umask=`umask` ++ case $stripcmd.$umask in ++ # Optimize common cases. ++ *[2367][2367]) mkdir_umask=$umask;; ++ .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; ++ ++ *[0-7]) ++ mkdir_umask=`expr $umask + 22 \ ++ - $umask % 100 % 40 + $umask % 20 \ ++ - $umask % 10 % 4 + $umask % 2 ++ `;; ++ *) mkdir_umask=$umask,go-w;; ++ esac ++ ++ # With -d, create the new directory with the user-specified mode. ++ # Otherwise, rely on $mkdir_umask. ++ if test -n "$dir_arg"; then ++ mkdir_mode=-m$mode + else +- dstfile=`basename $dst $transformbasename | +- sed $transformarg`$transformbasename ++ mkdir_mode= + fi + +-# don't allow the sed command to completely eliminate the filename ++ posix_mkdir=false ++ case $umask in ++ *[123567][0-7][0-7]) ++ # POSIX mkdir -p sets u+wx bits regardless of umask, which ++ # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ++ ;; ++ *) ++ tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ ++ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 + +- if [ x"$dstfile" = x ] +- then +- dstfile=`basename $dst` ++ if (umask $mkdir_umask && ++ exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 ++ then ++ if test -z "$dir_arg" || { ++ # Check for POSIX incompatibilities with -m. ++ # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or ++ # other-writeable bit of parent directory when it shouldn't. ++ # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. ++ ls_ld_tmpdir=`ls -ld "$tmpdir"` ++ case $ls_ld_tmpdir in ++ d????-?r-*) different_mode=700;; ++ d????-?--*) different_mode=755;; ++ *) false;; ++ esac && ++ $mkdirprog -m$different_mode -p -- "$tmpdir" && { ++ ls_ld_tmpdir_1=`ls -ld "$tmpdir"` ++ test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" ++ } ++ } ++ then posix_mkdir=: ++ fi ++ rmdir "$tmpdir/d" "$tmpdir" ++ else ++ # Remove any dirs left behind by ancient mkdir implementations. ++ rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null ++ fi ++ trap '' 0;; ++ esac;; ++ esac ++ ++ if ++ $posix_mkdir && ( ++ umask $mkdir_umask && ++ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ++ ) ++ then : ++ else ++ ++ # The umask is ridiculous, or mkdir does not conform to POSIX, ++ # or it failed possibly due to a race condition. Create the ++ # directory the slow way, step by step, checking for races as we go. ++ ++ case $dstdir in ++ /*) prefix=/ ;; ++ -*) prefix=./ ;; ++ *) prefix= ;; ++ esac ++ ++ case $posix_glob in ++ '') ++ if (set -f) 2>/dev/null; then ++ posix_glob=true ++ else ++ posix_glob=false ++ fi ;; ++ esac ++ ++ oIFS=$IFS ++ IFS=/ ++ $posix_glob && set -f ++ set fnord $dstdir ++ shift ++ $posix_glob && set +f ++ IFS=$oIFS ++ ++ prefixes= ++ ++ for d ++ do ++ test -z "$d" && continue ++ ++ prefix=$prefix$d ++ if test -d "$prefix"; then ++ prefixes= + else +- true ++ if $posix_mkdir; then ++ (umask=$mkdir_umask && ++ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break ++ # Don't fail if two instances are running concurrently. ++ test -d "$prefix" || exit 1 ++ else ++ case $prefix in ++ *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; ++ *) qprefix=$prefix;; ++ esac ++ prefixes="$prefixes '$qprefix'" ++ fi + fi ++ prefix=$prefix/ ++ done + +-# Make a temp file name in the proper directory. +- +- dsttmp=$dstdir/#inst.$$# +- +-# Move or copy the file name to the temp name +- +- $doit $instcmd $src $dsttmp && +- +- trap "rm -f ${dsttmp}" 0 && +- +-# and set any options; do chmod last to preserve setuid bits +- +-# If any of these fail, we abort the whole thing. If we want to +-# ignore errors from any of these, just make sure not to ignore +-# errors from the above "$doit $instcmd $src $dsttmp" command. +- +- if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && +- if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && +- if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && +- if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && +- +-# Now rename the file to the real destination. +- +- $doit $rmcmd -f $dstdir/$dstfile && +- $doit $mvcmd $dsttmp $dstdir/$dstfile +- +-fi && ++ if test -n "$prefixes"; then ++ # Don't fail if two instances are running concurrently. ++ (umask $mkdir_umask && ++ eval "\$doit_exec \$mkdirprog $prefixes") || ++ test -d "$dstdir" || exit 1 ++ obsolete_mkdir_used=true ++ fi ++ fi ++ fi ++ ++ if test -n "$dir_arg"; then ++ { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && ++ { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && ++ { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || ++ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 ++ else ++ ++ # Make a couple of temp file names in the proper directory. ++ dsttmp=$dstdir/_inst.$$_ ++ rmtmp=$dstdir/_rm.$$_ ++ ++ # Trap to clean up those temp files at exit. ++ trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 ++ ++ # Copy the file name to the temp name. ++ (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && ++ ++ # and set any options; do chmod last to preserve setuid bits. ++ # ++ # If any of these fail, we abort the whole thing. If we want to ++ # ignore errors from any of these, just make sure not to ignore ++ # errors from the above "$doit $cpprog $src $dsttmp" command. ++ # ++ { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \ ++ && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \ ++ && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \ ++ && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && ++ ++ # Now rename the file to the real destination. ++ { $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null \ ++ || { ++ # The rename failed, perhaps because mv can't rename something else ++ # to itself, or perhaps because mv is so ancient that it does not ++ # support -f. ++ ++ # Now remove or move aside any old file at destination location. ++ # We try this two ways since rm can't unlink itself on some ++ # systems and the destination file might be busy for other ++ # reasons. In this case, the final cleanup might fail but the new ++ # file should still install successfully. ++ { ++ if test -f "$dst"; then ++ $doit $rmcmd -f "$dst" 2>/dev/null \ ++ || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null \ ++ && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }; }\ ++ || { ++ echo "$0: cannot unlink or rename $dst" >&2 ++ (exit 1); exit 1 ++ } ++ else ++ : ++ fi ++ } && ++ ++ # Now rename the file to the real destination. ++ $doit $mvcmd "$dsttmp" "$dst" ++ } ++ } || exit 1 + ++ trap '' 0 ++ fi ++done + +-exit 0 ++# Local variables: ++# eval: (add-hook 'write-file-hooks 'time-stamp) ++# time-stamp-start: "scriptversion=" ++# time-stamp-format: "%:y-%02m-%02d.%02H" ++# time-stamp-end: "$" ++# End: +--- libfcgi-2.4.0.orig/config.sub ++++ libfcgi-2.4.0/config.sub +@@ -1,9 +1,10 @@ + #! /bin/sh + # Configuration validation subroutine script. +-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +-# Free Software Foundation, Inc. ++# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, ++# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, ++# Inc. + +-timestamp='2001-07-27' ++timestamp='2007-06-28' + + # This file is (in principle) common to ALL GNU software. + # The presence of a machine in this file suggests that SOME GNU software +@@ -21,15 +22,17 @@ + # + # You should have received a copy of the GNU General Public License + # along with this program; if not, write to the Free Software +-# Foundation, Inc., 59 Temple Place - Suite 330, +-# Boston, MA 02111-1307, USA. +- ++# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA ++# 02110-1301, USA. ++# + # As a special exception to the GNU General Public License, if you + # distribute this file as part of a program that contains a + # configuration script generated by Autoconf, you may include it under + # the same distribution terms that you use for the rest of that program. + +-# Please send patches to . ++ ++# Please send patches to . Submit a context ++# diff and a properly formatted ChangeLog entry. + # + # Configuration subroutine to validate and canonicalize a configuration type. + # Supply the specified configuration type as an argument. +@@ -69,7 +72,7 @@ + version="\ + GNU config.sub ($timestamp) + +-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 ++Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 + Free Software Foundation, Inc. + + This is free software; see the source for copying conditions. There is NO +@@ -82,11 +85,11 @@ + while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) +- echo "$timestamp" ; exit 0 ;; ++ echo "$timestamp" ; exit ;; + --version | -v ) +- echo "$version" ; exit 0 ;; ++ echo "$version" ; exit ;; + --help | --h* | -h ) +- echo "$usage"; exit 0 ;; ++ echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. +@@ -98,7 +101,7 @@ + *local*) + # First pass through any local machine types. + echo $1 +- exit 0;; ++ exit ;; + + * ) + break ;; +@@ -117,7 +120,9 @@ + # Here we must recognize all the valid KERNEL-OS combinations. + maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` + case $maybe_os in +- nto-qnx* | linux-gnu* | storm-chaos* | os2-emx* | windows32-*) ++ nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ ++ uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ ++ storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; +@@ -143,7 +148,7 @@ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ +- -apple | -axis) ++ -apple | -axis | -knuth | -cray) + os= + basic_machine=$1 + ;; +@@ -168,6 +173,10 @@ + -hiux*) + os=-hiuxwe2 + ;; ++ -sco6) ++ os=-sco5v6 ++ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ++ ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` +@@ -184,6 +193,10 @@ + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; ++ -sco5v6*) ++ # Don't forget version if it is 3.2v4 or newer. ++ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ++ ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` +@@ -223,26 +236,57 @@ + case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. +- tahoe | i860 | ia64 | m32r | m68k | m68000 | m88k | ns32k | arc \ +- | arm | arme[lb] | arm[bl]e | armv[2345] | armv[345][lb] | strongarm | xscale \ +- | pyramid | mn10200 | mn10300 | tron | a29k \ +- | 580 | i960 | h8300 \ +- | x86 | ppcbe | mipsbe | mipsle | shbe | shle \ +- | hppa | hppa1.0 | hppa1.1 | hppa2.0 | hppa2.0w | hppa2.0n \ +- | hppa64 \ +- | alpha | alphaev[4-8] | alphaev56 | alphapca5[67] \ +- | alphaev6[78] \ +- | we32k | ns16k | clipper | i370 | sh | sh[34] | sh[34]eb \ +- | powerpc | powerpcle \ +- | 1750a | dsp16xx | pdp10 | pdp11 \ +- | mips16 | mips64 | mipsel | mips64el \ +- | mips64orion | mips64orionel | mipstx39 | mipstx39el \ +- | mips64vr4300 | mips64vr4300el | mips64vr4100 | mips64vr4100el \ +- | mips64vr5000 | mips64vr5000el | mcore | s390 | s390x \ +- | sparc | sparclet | sparclite | sparc64 | sparcv9 | sparcv9b \ +- | v850 | c4x \ +- | thumb | d10v | d30v | fr30 | avr | openrisc | tic80 \ +- | pj | pjl | h8500 | z8k) ++ 1750a | 580 \ ++ | a29k \ ++ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ ++ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ ++ | am33_2.0 \ ++ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ ++ | bfin \ ++ | c4x | clipper \ ++ | d10v | d30v | dlx | dsp16xx \ ++ | fido | fr30 | frv \ ++ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ ++ | i370 | i860 | i960 | ia64 \ ++ | ip2k | iq2000 \ ++ | m32c | m32r | m32rle | m68000 | m68k | m88k \ ++ | maxq | mb | microblaze | mcore | mep \ ++ | mips | mipsbe | mipseb | mipsel | mipsle \ ++ | mips16 \ ++ | mips64 | mips64el \ ++ | mips64vr | mips64vrel \ ++ | mips64orion | mips64orionel \ ++ | mips64vr4100 | mips64vr4100el \ ++ | mips64vr4300 | mips64vr4300el \ ++ | mips64vr5000 | mips64vr5000el \ ++ | mips64vr5900 | mips64vr5900el \ ++ | mipsisa32 | mipsisa32el \ ++ | mipsisa32r2 | mipsisa32r2el \ ++ | mipsisa64 | mipsisa64el \ ++ | mipsisa64r2 | mipsisa64r2el \ ++ | mipsisa64sb1 | mipsisa64sb1el \ ++ | mipsisa64sr71k | mipsisa64sr71kel \ ++ | mipstx39 | mipstx39el \ ++ | mn10200 | mn10300 \ ++ | mt \ ++ | msp430 \ ++ | nios | nios2 \ ++ | ns16k | ns32k \ ++ | or32 \ ++ | pdp10 | pdp11 | pj | pjl \ ++ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ ++ | pyramid \ ++ | score \ ++ | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ ++ | sh64 | sh64le \ ++ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ ++ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ ++ | spu | strongarm \ ++ | tahoe | thumb | tic4x | tic80 | tron \ ++ | v850 | v850e \ ++ | we32k \ ++ | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ ++ | z8k) + basic_machine=$basic_machine-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12) +@@ -252,6 +296,9 @@ + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; ++ ms1) ++ basic_machine=mt-unknown ++ ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and +@@ -265,31 +312,66 @@ + exit 1 + ;; + # Recognize the basic CPU types with company name. +- # FIXME: clean up the formatting here. +- vax-* | tahoe-* | i*86-* | i860-* | ia64-* | m32r-* | m68k-* | m68000-* \ +- | m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | c[123]* \ +- | arm-* | armbe-* | armle-* | armv*-* | strongarm-* | xscale-* \ +- | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \ +- | power-* | none-* | 580-* | cray2-* | h8300-* | h8500-* | i960-* \ +- | xmp-* | ymp-* \ +- | x86-* | ppcbe-* | mipsbe-* | mipsle-* | shbe-* | shle-* \ +- | hppa-* | hppa1.0-* | hppa1.1-* | hppa2.0-* | hppa2.0w-* \ +- | hppa2.0n-* | hppa64-* \ +- | alpha-* | alphaev[4-8]-* | alphaev56-* | alphapca5[67]-* \ +- | alphaev6[78]-* \ +- | we32k-* | cydra-* | ns16k-* | pn-* | np1-* | xps100-* \ +- | clipper-* | orion-* \ +- | sparclite-* | pdp10-* | pdp11-* | sh-* | sh[34]-* | sh[34]eb-* \ +- | powerpc-* | powerpcle-* | sparc64-* | sparcv9-* | sparcv9b-* | sparc86x-* \ +- | mips16-* | mips64-* | mipsel-* \ +- | mips64el-* | mips64orion-* | mips64orionel-* \ +- | mips64vr4100-* | mips64vr4100el-* | mips64vr4300-* | mips64vr4300el-* \ +- | mipstx39-* | mipstx39el-* | mcore-* \ +- | f30[01]-* | f700-* | s390-* | s390x-* | sv1-* | t3e-* \ +- | [cjt]90-* \ +- | m88110-* | m680[01234]0-* | m683?2-* | m68360-* | z8k-* | d10v-* \ +- | thumb-* | v850-* | d30v-* | tic30-* | tic80-* | c30-* | fr30-* \ +- | bs2000-* | tic54x-* | c54x-* | x86_64-* | pj-* | pjl-*) ++ 580-* \ ++ | a29k-* \ ++ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ ++ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ ++ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ ++ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ ++ | avr-* | avr32-* \ ++ | bfin-* | bs2000-* \ ++ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ ++ | clipper-* | craynv-* | cydra-* \ ++ | d10v-* | d30v-* | dlx-* \ ++ | elxsi-* \ ++ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ ++ | h8300-* | h8500-* \ ++ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ ++ | i*86-* | i860-* | i960-* | ia64-* \ ++ | ip2k-* | iq2000-* \ ++ | m32c-* | m32r-* | m32rle-* \ ++ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ ++ | m88110-* | m88k-* | maxq-* | mcore-* \ ++ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ ++ | mips16-* \ ++ | mips64-* | mips64el-* \ ++ | mips64vr-* | mips64vrel-* \ ++ | mips64orion-* | mips64orionel-* \ ++ | mips64vr4100-* | mips64vr4100el-* \ ++ | mips64vr4300-* | mips64vr4300el-* \ ++ | mips64vr5000-* | mips64vr5000el-* \ ++ | mips64vr5900-* | mips64vr5900el-* \ ++ | mipsisa32-* | mipsisa32el-* \ ++ | mipsisa32r2-* | mipsisa32r2el-* \ ++ | mipsisa64-* | mipsisa64el-* \ ++ | mipsisa64r2-* | mipsisa64r2el-* \ ++ | mipsisa64sb1-* | mipsisa64sb1el-* \ ++ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ ++ | mipstx39-* | mipstx39el-* \ ++ | mmix-* \ ++ | mt-* \ ++ | msp430-* \ ++ | nios-* | nios2-* \ ++ | none-* | np1-* | ns16k-* | ns32k-* \ ++ | orion-* \ ++ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ ++ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ ++ | pyramid-* \ ++ | romp-* | rs6000-* \ ++ | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ ++ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ ++ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ ++ | sparclite-* \ ++ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ ++ | tahoe-* | thumb-* \ ++ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ ++ | tron-* \ ++ | v850-* | v850e-* | vax-* \ ++ | we32k-* \ ++ | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ ++ | xstormy16-* | xtensa-* \ ++ | ymp-* \ ++ | z8k-*) + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. +@@ -307,6 +389,9 @@ + basic_machine=a29k-amd + os=-udi + ;; ++ abacus) ++ basic_machine=abacus-unknown ++ ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout +@@ -321,6 +406,12 @@ + basic_machine=a29k-none + os=-bsd + ;; ++ amd64) ++ basic_machine=x86_64-pc ++ ;; ++ amd64-*) ++ basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ++ ;; + amdahl) + basic_machine=580-amdahl + os=-sysv +@@ -352,6 +443,10 @@ + basic_machine=ns32k-sequent + os=-dynix + ;; ++ c90) ++ basic_machine=c90-cray ++ os=-unicos ++ ;; + convex-c1) + basic_machine=c1-convex + os=-bsd +@@ -372,30 +467,45 @@ + basic_machine=c38-convex + os=-bsd + ;; +- cray | ymp) +- basic_machine=ymp-cray ++ cray | j90) ++ basic_machine=j90-cray + os=-unicos + ;; +- cray2) +- basic_machine=cray2-cray +- os=-unicos ++ craynv) ++ basic_machine=craynv-cray ++ os=-unicosmp + ;; +- [cjt]90) +- basic_machine=${basic_machine}-cray +- os=-unicos ++ cr16) ++ basic_machine=cr16-unknown ++ os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; ++ crisv32 | crisv32-* | etraxfs*) ++ basic_machine=crisv32-axis ++ ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; ++ crx) ++ basic_machine=crx-unknown ++ os=-elf ++ ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; ++ decsystem10* | dec10*) ++ basic_machine=pdp10-dec ++ os=-tops10 ++ ;; ++ decsystem20* | dec20*) ++ basic_machine=pdp10-dec ++ os=-tops20 ++ ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola +@@ -404,6 +514,10 @@ + basic_machine=m88k-motorola + os=-sysv3 + ;; ++ djgpp) ++ basic_machine=i586-pc ++ os=-msdosdjgpp ++ ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx +@@ -569,6 +683,10 @@ + basic_machine=i386-pc + os=-mingw32 + ;; ++ mingw32ce) ++ basic_machine=arm-unknown ++ os=-mingw32ce ++ ;; + miniframe) + basic_machine=m68000-convergent + ;; +@@ -576,32 +694,27 @@ + basic_machine=m68k-atari + os=-mint + ;; +- mipsel*-linux*) +- basic_machine=mipsel-unknown +- os=-linux-gnu +- ;; +- mips*-linux*) +- basic_machine=mips-unknown +- os=-linux-gnu +- ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; +- mmix*) +- basic_machine=mmix-knuth +- os=-mmixware +- ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; ++ morphos) ++ basic_machine=powerpc-unknown ++ os=-morphos ++ ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; ++ ms1-*) ++ basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ++ ;; + mvs) + basic_machine=i370-ibm + os=-mvs +@@ -677,6 +790,13 @@ + basic_machine=hppa1.1-oki + os=-proelf + ;; ++ openrisc | openrisc-*) ++ basic_machine=or32-unknown ++ ;; ++ os400) ++ basic_machine=powerpc-ibm ++ os=-os400 ++ ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose +@@ -699,42 +819,64 @@ + pbb) + basic_machine=m68k-tti + ;; +- pc532 | pc532-*) ++ pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; +- pentium | p5 | k5 | k6 | nexgen) ++ pc98) ++ basic_machine=i386-pc ++ ;; ++ pc98-*) ++ basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ++ ;; ++ pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; +- pentiumpro | p6 | 6x86 | athlon) ++ pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; +- pentiumii | pentium2) ++ pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; +- pentium-* | p5-* | k5-* | k6-* | nexgen-*) ++ pentium4) ++ basic_machine=i786-pc ++ ;; ++ pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; +- pentiumii-* | pentium2-*) ++ pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; ++ pentium4-*) ++ basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ++ ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc) basic_machine=powerpc-unknown +- ;; ++ ;; + ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown +- ;; ++ ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; ++ ppc64) basic_machine=powerpc64-unknown ++ ;; ++ ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ++ ;; ++ ppc64le | powerpc64little | ppc64-le | powerpc64-little) ++ basic_machine=powerpc64le-unknown ++ ;; ++ ppc64le-* | powerpc64little-*) ++ basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ++ ;; + ps2) + basic_machine=i386-ibm + ;; +@@ -742,6 +884,10 @@ + basic_machine=i586-unknown + os=-pw32 + ;; ++ rdos) ++ basic_machine=i386-pc ++ os=-rdos ++ ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff +@@ -752,10 +898,30 @@ + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; ++ s390 | s390-*) ++ basic_machine=s390-ibm ++ ;; ++ s390x | s390x-*) ++ basic_machine=s390x-ibm ++ ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; ++ sb1) ++ basic_machine=mipsisa64sb1-unknown ++ ;; ++ sb1el) ++ basic_machine=mipsisa64sb1el-unknown ++ ;; ++ sde) ++ basic_machine=mipsisa32-sde ++ os=-elf ++ ;; ++ sei) ++ basic_machine=mips-sei ++ os=-seiux ++ ;; + sequent) + basic_machine=i386-sequent + ;; +@@ -763,7 +929,13 @@ + basic_machine=sh-hitachi + os=-hms + ;; +- sparclite-wrs) ++ sh5el) ++ basic_machine=sh5le-unknown ++ ;; ++ sh64) ++ basic_machine=sh64-unknown ++ ;; ++ sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; +@@ -830,22 +1002,42 @@ + os=-dynix + ;; + t3e) +- basic_machine=t3e-cray ++ basic_machine=alphaev5-cray ++ os=-unicos ++ ;; ++ t90) ++ basic_machine=t90-cray + os=-unicos + ;; + tic54x | c54x*) + basic_machine=tic54x-unknown + os=-coff + ;; ++ tic55x | c55x*) ++ basic_machine=tic55x-unknown ++ os=-coff ++ ;; ++ tic6x | c6x*) ++ basic_machine=tic6x-unknown ++ os=-coff ++ ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; ++ toad1) ++ basic_machine=pdp10-xkl ++ os=-tops20 ++ ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; ++ tpf) ++ basic_machine=s390x-ibm ++ os=-tpf ++ ;; + udi29k) + basic_machine=a29k-amd + os=-udi +@@ -867,8 +1059,8 @@ + os=-vms + ;; + vpp*|vx|vx-*) +- basic_machine=f301-fujitsu +- ;; ++ basic_machine=f301-fujitsu ++ ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks +@@ -889,17 +1081,17 @@ + basic_machine=hppa1.1-winbond + os=-proelf + ;; +- windows32) +- basic_machine=i386-pc +- os=-windows32-msvcrt +- ;; +- xmp) +- basic_machine=xmp-cray +- os=-unicos ++ xbox) ++ basic_machine=i686-pc ++ os=-mingw32 + ;; +- xps | xps100) ++ xps | xps100) + basic_machine=xps100-honeywell + ;; ++ ymp) ++ basic_machine=ymp-cray ++ os=-unicos ++ ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim +@@ -920,16 +1112,12 @@ + op60c) + basic_machine=hppa1.1-oki + ;; +- mips) +- if [ x$os = x-linux-gnu ]; then +- basic_machine=mips-unknown +- else +- basic_machine=mips-mips +- fi +- ;; + romp) + basic_machine=romp-ibm + ;; ++ mmix) ++ basic_machine=mmix-knuth ++ ;; + rs6000) + basic_machine=rs6000-ibm + ;; +@@ -946,13 +1134,13 @@ + we32k) + basic_machine=we32k-att + ;; +- sh3 | sh4 | sh3eb | sh4eb) ++ sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; +- sparc | sparcv9 | sparcv9b) ++ sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) + basic_machine=sparc-sun + ;; +- cydra) ++ cydra) + basic_machine=cydra-cydrome + ;; + orion) +@@ -967,10 +1155,6 @@ + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; +- c4x*) +- basic_machine=c4x-none +- os=-coff +- ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; +@@ -1026,16 +1210,23 @@ + | -aos* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ +- | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ +- | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ ++ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ ++ | -openbsd* | -solidbsd* \ ++ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ ++ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ +- | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ +- | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \ ++ | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ ++ | -uxpv* | -beos* | -mpeix* | -udk* \ ++ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ +- | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* | -os2*) ++ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ ++ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ ++ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ ++ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ ++ | -skyos* | -haiku* | -rdos* | -toppers* | -drops*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) +@@ -1047,16 +1238,21 @@ + ;; + esac + ;; ++ -nto-qnx*) ++ ;; + -nto*) +- os=-nto-qnx ++ os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ +- | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ ++ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; ++ -linux-dietlibc) ++ os=-linux-dietlibc ++ ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; +@@ -1069,6 +1265,9 @@ + -opened*) + os=-openedition + ;; ++ -os400*) ++ os=-os400 ++ ;; + -wince*) + os=-wince + ;; +@@ -1087,14 +1286,23 @@ + -acis*) + os=-aos + ;; ++ -atheos*) ++ os=-atheos ++ ;; ++ -syllable*) ++ os=-syllable ++ ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; ++ -nova*) ++ os=-rtmk-nova ++ ;; + -ns2 ) +- os=-nextstep2 ++ os=-nextstep2 + ;; + -nsk*) + os=-nsk +@@ -1106,6 +1314,9 @@ + -sinix*) + os=-sysv4 + ;; ++ -tpf*) ++ os=-tpf ++ ;; + -triton*) + os=-sysv3 + ;; +@@ -1133,8 +1344,17 @@ + -xenix) + os=-xenix + ;; +- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) +- os=-mint ++ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) ++ os=-mint ++ ;; ++ -aros*) ++ os=-aros ++ ;; ++ -kaos*) ++ os=-kaos ++ ;; ++ -zvmoe) ++ os=-zvmoe + ;; + -none) + ;; +@@ -1158,6 +1378,12 @@ + # system, and we'll never get to this point. + + case $basic_machine in ++ score-*) ++ os=-elf ++ ;; ++ spu-*) ++ os=-elf ++ ;; + *-acorn) + os=-riscix1.2 + ;; +@@ -1167,10 +1393,14 @@ + arm*-semi) + os=-aout + ;; ++ c4x-* | tic4x-*) ++ os=-coff ++ ;; ++ # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; +- pdp11-*) ++ pdp11-*) + os=-none + ;; + *-dec | vax-*) +@@ -1191,12 +1421,18 @@ + m68*-cisco) + os=-aout + ;; ++ mep-*) ++ os=-elf ++ ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; ++ or32-*) ++ os=-coff ++ ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; +@@ -1206,9 +1442,15 @@ + *-be) + os=-beos + ;; ++ *-haiku) ++ os=-haiku ++ ;; + *-ibm) + os=-aix + ;; ++ *-knuth) ++ os=-mmixware ++ ;; + *-wec) + os=-proelf + ;; +@@ -1260,19 +1502,19 @@ + *-next) + os=-nextstep3 + ;; +- *-gould) ++ *-gould) + os=-sysv + ;; +- *-highlevel) ++ *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; +- *-sgi) ++ *-sgi) + os=-irix + ;; +- *-siemens) ++ *-siemens) + os=-sysv4 + ;; + *-masscomp) +@@ -1341,10 +1583,16 @@ + -mvs* | -opened*) + vendor=ibm + ;; ++ -os400*) ++ vendor=ibm ++ ;; + -ptx*) + vendor=sequent + ;; +- -vxsim* | -vxworks*) ++ -tpf*) ++ vendor=ibm ++ ;; ++ -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) +@@ -1359,13 +1607,16 @@ + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; ++ -vos*) ++ vendor=stratus ++ ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; + esac + + echo $basic_machine$os +-exit 0 ++exit + + # Local variables: + # eval: (add-hook 'write-file-hooks 'time-stamp) +--- libfcgi-2.4.0.orig/missing ++++ libfcgi-2.4.0/missing +@@ -1,6 +1,10 @@ + #! /bin/sh + # Common stub for a few missing GNU programs while installing. +-# Copyright 1996, 1997, 1999, 2000 Free Software Foundation, Inc. ++ ++scriptversion=2006-05-10.23 ++ ++# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006 ++# Free Software Foundation, Inc. + # Originally by Fran,cois Pinard , 1996. + + # This program is free software; you can redistribute it and/or modify +@@ -15,8 +19,8 @@ + + # You should have received a copy of the GNU General Public License + # along with this program; if not, write to the Free Software +-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +-# 02111-1307, USA. ++# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA ++# 02110-1301, USA. + + # As a special exception to the GNU General Public License, if you + # distribute this file as part of a program that contains a +@@ -29,6 +33,8 @@ + fi + + run=: ++sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' ++sed_minuso='s/.* -o \([^ ]*\).*/\1/p' + + # In the cases where this matters, `missing' is being run in the + # srcdir already. +@@ -38,18 +44,24 @@ + configure_ac=configure.in + fi + +-case "$1" in ++msg="missing on your system" ++ ++case $1 in + --run) + # Try to run requested program, and just exit if it succeeds. + run= + shift + "$@" && exit 0 ++ # Exit code 63 means version mismatch. This often happens ++ # when the user try to use an ancient version of a tool on ++ # a file that requires a minimum version. In this case we ++ # we should proceed has if the program had been absent, or ++ # if --run hadn't been passed. ++ if test $? = 63; then ++ run=: ++ msg="probably too old" ++ fi + ;; +-esac +- +-# If it does not exist, or fails to run (possibly an outdated version), +-# try to emulate it. +-case "$1" in + + -h|--h|--he|--hel|--help) + echo "\ +@@ -67,6 +79,7 @@ + aclocal touch file \`aclocal.m4' + autoconf touch file \`configure' + autoheader touch file \`config.h.in' ++ autom4te touch the output file, or create a stub one + automake touch all \`Makefile.in' files + bison create \`y.tab.[ch]', if possible, from existing .[ch] + flex create \`lex.yy.c', if possible, from existing .c +@@ -74,11 +87,15 @@ + lex create \`lex.yy.c', if possible, from existing .c + makeinfo touch the output file + tar try tar, gnutar, gtar, then tar without non-portable flags +- yacc create \`y.tab.[ch]', if possible, from existing .[ch]" ++ yacc create \`y.tab.[ch]', if possible, from existing .[ch] ++ ++Send bug reports to ." ++ exit $? + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) +- echo "missing 0.3 - GNU automake" ++ echo "missing $scriptversion (GNU Automake)" ++ exit $? + ;; + + -*) +@@ -87,9 +104,44 @@ + exit 1 + ;; + +- aclocal) ++esac ++ ++# Now exit if we have it, but it failed. Also exit now if we ++# don't have it and --version was passed (most likely to detect ++# the program). ++case $1 in ++ lex|yacc) ++ # Not GNU programs, they don't have --version. ++ ;; ++ ++ tar) ++ if test -n "$run"; then ++ echo 1>&2 "ERROR: \`tar' requires --run" ++ exit 1 ++ elif test "x$2" = "x--version" || test "x$2" = "x--help"; then ++ exit 1 ++ fi ++ ;; ++ ++ *) ++ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then ++ # We have it, but it failed. ++ exit 1 ++ elif test "x$2" = "x--version" || test "x$2" = "x--help"; then ++ # Could not run --version or --help. This is probably someone ++ # running `$TOOL --version' or `$TOOL --help' to check whether ++ # $TOOL exists and not knowing $TOOL uses missing. ++ exit 1 ++ fi ++ ;; ++esac ++ ++# If it does not exist, or fails to run (possibly an outdated version), ++# try to emulate it. ++case $1 in ++ aclocal*) + echo 1>&2 "\ +-WARNING: \`$1' is missing on your system. You should only need it if ++WARNING: \`$1' is $msg. You should only need it if + you modified \`acinclude.m4' or \`${configure_ac}'. You might want + to install the \`Automake' and \`Perl' packages. Grab them from + any GNU archive site." +@@ -98,7 +150,7 @@ + + autoconf) + echo 1>&2 "\ +-WARNING: \`$1' is missing on your system. You should only need it if ++WARNING: \`$1' is $msg. You should only need it if + you modified \`${configure_ac}'. You might want to install the + \`Autoconf' and \`GNU m4' packages. Grab them from any GNU + archive site." +@@ -107,7 +159,7 @@ + + autoheader) + echo 1>&2 "\ +-WARNING: \`$1' is missing on your system. You should only need it if ++WARNING: \`$1' is $msg. You should only need it if + you modified \`acconfig.h' or \`${configure_ac}'. You might want + to install the \`Autoconf' and \`GNU m4' packages. Grab them + from any GNU archive site." +@@ -115,7 +167,7 @@ + test -z "$files" && files="config.h" + touch_files= + for f in $files; do +- case "$f" in ++ case $f in + *:*) touch_files="$touch_files "`echo "$f" | + sed -e 's/^[^:]*://' -e 's/:.*//'`;; + *) touch_files="$touch_files $f.in";; +@@ -124,9 +176,9 @@ + touch $touch_files + ;; + +- automake) ++ automake*) + echo 1>&2 "\ +-WARNING: \`$1' is missing on your system. You should only need it if ++WARNING: \`$1' is $msg. You should only need it if + you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. + You might want to install the \`Automake' and \`Perl' packages. + Grab them from any GNU archive site." +@@ -135,71 +187,92 @@ + while read f; do touch "$f"; done + ;; + ++ autom4te) ++ echo 1>&2 "\ ++WARNING: \`$1' is needed, but is $msg. ++ You might have modified some files without having the ++ proper tools for further handling them. ++ You can get \`$1' as part of \`Autoconf' from any GNU ++ archive site." ++ ++ file=`echo "$*" | sed -n "$sed_output"` ++ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` ++ if test -f "$file"; then ++ touch $file ++ else ++ test -z "$file" || exec >$file ++ echo "#! /bin/sh" ++ echo "# Created by GNU Automake missing as a replacement of" ++ echo "# $ $@" ++ echo "exit 0" ++ chmod +x $file ++ exit 1 ++ fi ++ ;; ++ + bison|yacc) + echo 1>&2 "\ +-WARNING: \`$1' is missing on your system. You should only need it if ++WARNING: \`$1' $msg. You should only need it if + you modified a \`.y' file. You may need the \`Bison' package + in order for those modifications to take effect. You can get + \`Bison' from any GNU archive site." + rm -f y.tab.c y.tab.h +- if [ $# -ne 1 ]; then ++ if test $# -ne 1; then + eval LASTARG="\${$#}" +- case "$LASTARG" in ++ case $LASTARG in + *.y) + SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` +- if [ -f "$SRCFILE" ]; then ++ if test -f "$SRCFILE"; then + cp "$SRCFILE" y.tab.c + fi + SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` +- if [ -f "$SRCFILE" ]; then ++ if test -f "$SRCFILE"; then + cp "$SRCFILE" y.tab.h + fi + ;; + esac + fi +- if [ ! -f y.tab.h ]; then ++ if test ! -f y.tab.h; then + echo >y.tab.h + fi +- if [ ! -f y.tab.c ]; then ++ if test ! -f y.tab.c; then + echo 'main() { return 0; }' >y.tab.c + fi + ;; + + lex|flex) + echo 1>&2 "\ +-WARNING: \`$1' is missing on your system. You should only need it if ++WARNING: \`$1' is $msg. You should only need it if + you modified a \`.l' file. You may need the \`Flex' package + in order for those modifications to take effect. You can get + \`Flex' from any GNU archive site." + rm -f lex.yy.c +- if [ $# -ne 1 ]; then ++ if test $# -ne 1; then + eval LASTARG="\${$#}" +- case "$LASTARG" in ++ case $LASTARG in + *.l) + SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` +- if [ -f "$SRCFILE" ]; then ++ if test -f "$SRCFILE"; then + cp "$SRCFILE" lex.yy.c + fi + ;; + esac + fi +- if [ ! -f lex.yy.c ]; then ++ if test ! -f lex.yy.c; then + echo 'main() { return 0; }' >lex.yy.c + fi + ;; + + help2man) + echo 1>&2 "\ +-WARNING: \`$1' is missing on your system. You should only need it if ++WARNING: \`$1' is $msg. You should only need it if + you modified a dependency of a manual page. You may need the + \`Help2man' package in order for those modifications to take + effect. You can get \`Help2man' from any GNU archive site." + +- file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` +- if test -z "$file"; then +- file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` +- fi +- if [ -f "$file" ]; then ++ file=`echo "$*" | sed -n "$sed_output"` ++ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` ++ if test -f "$file"; then + touch $file + else + test -z "$file" || exec >$file +@@ -209,54 +282,58 @@ + ;; + + makeinfo) +- if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then +- # We have makeinfo, but it failed. +- exit 1 +- fi +- + echo 1>&2 "\ +-WARNING: \`$1' is missing on your system. You should only need it if ++WARNING: \`$1' is $msg. You should only need it if + you modified a \`.texi' or \`.texinfo' file, or any other file + indirectly affecting the aspect of the manual. The spurious + call might also be the consequence of using a buggy \`make' (AIX, + DU, IRIX). You might want to install the \`Texinfo' package or + the \`GNU make' package. Grab either from any GNU archive site." +- file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` ++ # The file to touch is that specified with -o ... ++ file=`echo "$*" | sed -n "$sed_output"` ++ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` + if test -z "$file"; then +- file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` +- file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` +- fi ++ # ... or it is the one specified with @setfilename ... ++ infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` ++ file=`sed -n ' ++ /^@setfilename/{ ++ s/.* \([^ ]*\) *$/\1/ ++ p ++ q ++ }' $infile` ++ # ... or it is derived from the source name (dir/f.texi becomes f.info) ++ test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info ++ fi ++ # If the file does not exist, the user really needs makeinfo; ++ # let's fail without touching anything. ++ test -f $file || exit 1 + touch $file + ;; + + tar) + shift +- if test -n "$run"; then +- echo 1>&2 "ERROR: \`tar' requires --run" +- exit 1 +- fi + + # We have already tried tar in the generic part. + # Look for gnutar/gtar before invocation to avoid ugly error + # messages. + if (gnutar --version > /dev/null 2>&1); then +- gnutar ${1+"$@"} && exit 0 ++ gnutar "$@" && exit 0 + fi + if (gtar --version > /dev/null 2>&1); then +- gtar ${1+"$@"} && exit 0 ++ gtar "$@" && exit 0 + fi + firstarg="$1" + if shift; then +- case "$firstarg" in ++ case $firstarg in + *o*) + firstarg=`echo "$firstarg" | sed s/o//` +- tar "$firstarg" ${1+"$@"} && exit 0 ++ tar "$firstarg" "$@" && exit 0 + ;; + esac +- case "$firstarg" in ++ case $firstarg in + *h*) + firstarg=`echo "$firstarg" | sed s/h//` +- tar "$firstarg" ${1+"$@"} && exit 0 ++ tar "$firstarg" "$@" && exit 0 + ;; + esac + fi +@@ -270,10 +347,10 @@ + + *) + echo 1>&2 "\ +-WARNING: \`$1' is needed, and you do not seem to have it handy on your +- system. You might have modified some files without having the ++WARNING: \`$1' is needed, and is $msg. ++ You might have modified some files without having the + proper tools for further handling them. Check the \`README' file, +- it often tells you about the needed prerequirements for installing ++ it often tells you about the needed prerequisites for installing + this package. You may also peek at any GNU archive site, in case + some other package would contain this missing \`$1' program." + exit 1 +@@ -281,3 +358,10 @@ + esac + + exit 0 ++ ++# Local variables: ++# eval: (add-hook 'write-file-hooks 'time-stamp) ++# time-stamp-start: "scriptversion=" ++# time-stamp-format: "%:y-%02m-%02d.%02H" ++# time-stamp-end: "$" ++# End: +--- libfcgi-2.4.0.orig/stamp-h ++++ libfcgi-2.4.0/stamp-h +@@ -0,0 +1 @@ ++timestamp +--- libfcgi-2.4.0.orig/debian/dirs ++++ libfcgi-2.4.0/debian/dirs +@@ -0,0 +1 @@ ++lib +--- libfcgi-2.4.0.orig/debian/control ++++ libfcgi-2.4.0/debian/control +@@ -0,0 +1,26 @@ ++Source: libfcgi ++Priority: optional ++Maintainer: Tatsuki Sugiura ++Build-Depends: debhelper (>> 4.0.0) ++Standards-Version: 3.7.2 ++ ++Package: libfcgi-dev ++Section: libdevel ++Architecture: any ++Depends: libfcgi0ldbl (= ${binary:Version}) ++Description: Header files of FastCGI ++ FastCGI is a language independent, scalable, open extension ++ to CGI that provides high performance without the limitations ++ of server specific APIs. ++ ++Package: libfcgi0ldbl ++Provides: libfcgi ++Section: libs ++Architecture: any ++Depends: ${shlibs:Depends} ++Conflicts: libfcgi0, libfcgi0c2 ++Replaces: libfcgi0, libfcgi0c2 ++Description: Shared library of FastCGI ++ FastCGI is a language independent, scalable, open extension ++ to CGI that provides high performance without the limitations ++ of server specific APIs. +--- libfcgi-2.4.0.orig/debian/rules ++++ libfcgi-2.4.0/debian/rules +@@ -0,0 +1,114 @@ ++#!/usr/bin/make -f ++# Sample debian/rules that uses debhelper. ++# GNU copyright 1997 to 1999 by Joey Hess. ++ ++# Uncomment this to turn on verbose mode. ++#export DH_VERBOSE=1 ++ ++ ++# These are used for cross-compiling and for saving the configure script ++# from having to guess our platform (since we know it already) ++DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) ++DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) ++ ++ ++CFLAGS = -Wall -g ++ ++ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) ++ CFLAGS += -O0 ++else ++ CFLAGS += -O2 ++endif ++ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS))) ++ INSTALL_PROGRAM += -s ++endif ++ ++# shared library versions, option 1 ++version=2.0.5 ++major=2 ++# option 2, assuming the library is created as src/.libs/libfoo.so.2.0.5 or so ++#version=`ls src/.libs/lib*.so.* | \ ++# awk '{if (match($$0,/[0-9]+\.[0-9]+\.[0-9]+$$/)) print substr($$0,RSTART)}'` ++#major=`ls src/.libs/lib*.so.* | \ ++# awk '{if (match($$0,/\.so\.[0-9]+$$/)) print substr($$0,RSTART+4)}'` ++ ++config.status: configure ++ dh_testdir ++ # Add here commands to configure the package. ++ ./configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) --prefix=/usr --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info ++ ++ ++build: build-stamp ++build-stamp: config.status ++ dh_testdir ++ ++ # Add here commands to compile the package. ++ $(MAKE) ++ ++ touch build-stamp ++ ++clean: ++ dh_testdir ++ dh_testroot ++ rm -f build-stamp ++ ++ # Add here commands to clean up after the build process. ++ test ! -f Makefile || $(MAKE) distclean ++ifneq "$(wildcard /usr/share/misc/config.sub)" "" ++ cp -f /usr/share/misc/config.sub config.sub ++endif ++ifneq "$(wildcard /usr/share/misc/config.guess)" "" ++ cp -f /usr/share/misc/config.guess config.guess ++endif ++ ++ ++ dh_clean ++ ++install: build ++ dh_testdir ++ dh_testroot ++ dh_clean -k ++ dh_installdirs ++ ++ # Add here commands to install the package into debian/tmp ++ $(MAKE) install DESTDIR=$(CURDIR)/debian/tmp ++ dh_movefiles ++ ++ ++# Build architecture-independent files here. ++binary-indep: build install ++# We have nothing to do by default. ++ ++# Build architecture-dependent files here. ++binary-arch: build install ++ dh_testdir ++ dh_testroot ++ dh_installchangelogs ++ dh_installdocs ++ dh_installexamples ++# dh_install ++# dh_installmenu ++# dh_installdebconf ++# dh_installlogrotate ++# dh_installemacsen ++# dh_installpam ++# dh_installmime ++# dh_installinit ++# dh_installcron ++# dh_installinfo ++ dh_installman -p libfcgi0ldbl debian/cgi-fcgi.1 ++ dh_link ++ dh_strip ++ dh_compress ++ dh_fixperms ++# dh_perl ++# d_python ++ dh_makeshlibs ++ dh_installdeb ++ dh_shlibdeps ++ dh_gencontrol ++ dh_md5sums ++ dh_builddeb ++ ++binary: binary-indep binary-arch ++.PHONY: build clean binary-indep binary-arch binary install +--- libfcgi-2.4.0.orig/debian/watch ++++ libfcgi-2.4.0/debian/watch +@@ -0,0 +1,6 @@ ++# Example watch control file for uscan ++# Rename this file to "watch" and then you can run the "uscan" command ++# to check for upstream updates and more. ++# Site Directory Pattern Version Script ++version=2 ++http://www.fastcgi.com/dist/ fcgi-([0-9\.-]*)\.tar\.gz debian uupdate +--- libfcgi-2.4.0.orig/debian/shlibs.local ++++ libfcgi-2.4.0/debian/shlibs.local +@@ -0,0 +1 @@ ++liblibfcgi 0.0.0 libfcgi0c0 (>> 2.4.0-0), libfcgi0c0 (<< 2.4.0-99) +--- libfcgi-2.4.0.orig/debian/changelog ++++ libfcgi-2.4.0/debian/changelog +@@ -0,0 +1,43 @@ ++libfcgi (2.4.0-7) unstable; urgency=low ++ ++ * rebuild for long double 128bit transition. (Closes: #430250) ++ * update autotools scripts ++ ++ -- Tatsuki Sugiura Tue, 5 Sep 2006 18:11:06 +0900 ++ ++libfcgi (2.4.0-6) unstable; urgency=low ++ ++ * rebuild for new libstdc++ ++ ++ -- Tatsuki Sugiura Tue, 5 Sep 2006 08:19:25 +0900 ++ ++libfcgi (2.4.0-5) unstable; urgency=low ++ ++ * fixed: package description (Closes: #226030) ++ ++ -- Tatsuki Sugiura Mon, 5 Jan 2004 18:40:30 +0900 ++ ++libfcgi (2.4.0-4) unstable; urgency=low ++ ++ * re-libtoolize for mips and mipsel (Closes: #213951) ++ ++ -- Tatsuki Sugiura Tue, 18 Nov 2003 05:39:33 +0900 ++ ++libfcgi (2.4.0-3) unstable; urgency=low ++ ++ * upload official debian archive agein (Closes: #203590) ++ ++ -- Tatsuki Sugiura Sun, 21 Sep 2003 04:45:12 +0900 ++ ++libfcgi (2.4.0-2) unstable; urgency=low ++ ++ * upload official debian archive (Closes: #203590) ++ ++ -- Tatsuki Sugiura Mon, 8 Sep 2003 16:11:52 +0900 ++ ++libfcgi (2.4.0-1) unstable; urgency=low ++ ++ * Initial Release. ++ ++ -- Tatsuki Sugiura Tue, 8 Jul 2003 13:58:36 +0900 ++ +--- libfcgi-2.4.0.orig/debian/libfcgi0ldbl.files ++++ libfcgi-2.4.0/debian/libfcgi0ldbl.files +@@ -0,0 +1,2 @@ ++usr/bin/* ++usr/lib/lib*.so.* +--- libfcgi-2.4.0.orig/debian/compat ++++ libfcgi-2.4.0/debian/compat +@@ -0,0 +1 @@ ++4 +--- libfcgi-2.4.0.orig/debian/libfcgi0ldbl.docs ++++ libfcgi-2.4.0/debian/libfcgi0ldbl.docs +@@ -0,0 +1,4 @@ ++README ++doc/fastcgi-prog-guide/* ++doc/fastcgi-whitepaper/* ++doc/* +--- libfcgi-2.4.0.orig/debian/cgi-fcgi.1 ++++ libfcgi-2.4.0/debian/cgi-fcgi.1 +@@ -0,0 +1,135 @@ ++.\" Hey, EMACS: -*- nroff -*- ++.\" First parameter, NAME, should be all caps ++.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection ++.\" other parameters are allowed: see man(7), man(1) ++.TH cgi-fcgi 1 1997-09-17 ++.\" Please adjust this date whenever revising the manpage. ++.\" ++.\" Some roff macros, for reference: ++.\" .nh disable hyphenation ++.\" .hy enable hyphenation ++.\" .ad l left justify ++.\" .ad b justify to both left and right margins ++.\" .nf disable filling ++.\" .fi enable filling ++.\" .br insert line break ++.\" .sp insert n+1 empty lines ++.\" for manpage-specific macros, see man(7) ++.SH NAME ++cgi-fcgi \- bridge from CGI to FastCGI ++.SH SYNOPSIS ++.B cgi-fcgi ++-f cmdPath ++.br ++.B cgi-fcgi ++-bind -connect connName ++.br ++.B cgi-fcgi ++-start -connect connName appPath [nServers] ++.br ++.B cgi-fcgi ++-connect connName appPath [nServers] ++.SH DESCRIPTION ++.PP ++cgi-fcgi is a CGI/1.1 program that communicates with an ++already-running FastCGI application in order to respond to an ++HTTP request. cgi-fcgi is also capable of starting a FastCGI ++application. ++.PP ++When you invoke cgi-fcgi as ++.IP ++.B cgi-fcgi ++-f cmdPath ++.PP ++then cgi-fcgi opens the file at cmdPath and reads its ++arguments from that file. cgi-fcgi will skip lines ++that begin with the comment character #. The first ++non-comment line should contain valid arguments in ++one of the other three forms. ++.PP ++The -f form of cgi-fcgi is designed for Unix systems ++whose exec(2) family of system calls supports the execution of ++command interpreter files. For instance, if a file with ++execute permission contains the text ++.IP ++#! /bin/cgi-fcgi -f ++.br ++-connect /httpd/root/sock/app /httpd/root/bin/app ++.PP ++the effect is the same as executing ++.IP ++/usr/bin/cgi-fcgi -connect /httpd/root/sock/app /httpd/root/bin/app ++.PP ++When you invoke cgi-fcgi as ++.IP ++cgi-fcgi -bind -connect connName ++.PP ++the connName argument is either the path name of a Unix domain ++listening socket or a host:port pair. If connName contains ++a colon, it is assumed to be host:port. cgi-fcgi performs ++a connect(2) using connName. If the connect succeeds, cgi-fcgi ++forwards the CGI environment variables and stdin data to the ++FastCGI application, and forwards the stdout and stderr data from ++the application to cgi-fcgi's stdout (most likely connected to ++a Web server). When the FastCGI application signals the end of ++its response, cgi-fcgi flushes its buffers and ++exits, and the Web server completes the http response. ++.PP ++When you invoke cgi-fcgi as ++.IP ++cgi-fcgi -start -connect connName appPath [nServers] ++.PP ++then cgi-fcgi performs the function of starting one or more ++FastCGI application processes. The connName argument specifies ++either the path name of the Unix domain listening socket that ++cgi-fcgi will create, or is "localhost:NNN" where NNN is the port ++number of the TCP/IP listening socket that cgi-fcgi will create ++on the local machine. (cgi-fcgi will not create processes ++on remote machines.) After cgi-fcgi creates the listening socket, ++it forks nServers copies of a process running the executable file ++appPath. If nServers is omitted, the effect is as if the value "1" ++had been specified. The processes share the single listening socket. ++.PP ++When you invoke cgi-fcgi as ++.IP ++cgi-fcgi -connect connName appPath [nServers] ++.PP ++cgi-fcgi performs -bind and then, if necssary, performs -start ++and repeats the -bind. That is, cgi-fcgi first operates as if ++the command had been ++.IP ++cgi-fcgi -bind -connect connName ++.PP ++If the connect fails, cgi-fcgi tries ++.IP ++cgi-fcgi -start -connect connName appPath [nServers] ++.PP ++and finally retries ++.IP ++cgi-fcgi -bind -connect connName ++.PP ++In this form, cgi-fcgi does not support TCP/IP connections. ++.SH ENVIRONMENT VARIABLES ++The usual CGI ones, but they are not interpreted by cgi-fcgi. ++.SH SEE ALSO ++.BR FGCI_accept (3). ++ (in Debian, /usr/share/doc/libfcgi?/*) ++.SH BUGS ++cgi-fcgi doesn't generate useful HTTP responses in case of error, ++and it generates no response at all when run as start-fcgi. ++.PP ++On Digital UNIX 3.0 systems the implementation of Unix Domain ++sockets does not work when such sockets are stored on NFS file ++systems. Symptom: cgi-fcgi may core dump or may exit with ++status 38. Work-around: store sockets in local file systems ++(/tmp often works) or use TCP/IP. ++.PP ++On AIX systems the implementation of listening sockets ++does not support socket sharing, and the standard FastCGI ++application libraries can't synchronize access to AIX listening ++sockets. Work-around: Don't use the nServers argument on AIX. ++.SH HISTORY ++Copyright (c) 1996 Open Market, Inc. ++See the file "LICENSE.TERMS" for information on usage and redistribution ++of this file, and for a DISCLAIMER OF ALL WARRANTIES. ++$Id: cgi-fcgi.1,v 1.1.1.1 1997/09/16 15:36:26 stanleyg Exp $ +--- libfcgi-2.4.0.orig/debian/copyright ++++ libfcgi-2.4.0/debian/copyright +@@ -0,0 +1,37 @@ ++This package was debianized by Tatsuki Sugiura on ++Tue, 8 Jul 2003 13:58:36 +0900. ++ ++It was downloaded from http://www.fastcgi.com/#TheDevKit ++ ++Upstream Author: Open Market, Inc. ++ ++Copyright: ++ ++This FastCGI application library source and object code (the ++"Software") and its documentation (the "Documentation") are ++copyrighted by Open Market, Inc ("Open Market"). The following terms ++apply to all files associated with the Software and Documentation ++unless explicitly disclaimed in individual files. ++ ++Open Market permits you to use, copy, modify, distribute, and license ++this Software and the Documentation for any purpose, provided that ++existing copyright notices are retained in all copies and that this ++notice is included verbatim in any distributions. No written ++agreement, license, or royalty fee is required for any of the ++authorized uses. Modifications to this Software and Documentation may ++be copyrighted by their authors and need not follow the licensing ++terms described here. If modifications to this Software and ++Documentation have new licensing terms, the new terms must be clearly ++indicated on the first page of each file where they apply. ++ ++OPEN MARKET MAKES NO EXPRESS OR IMPLIED WARRANTY WITH RESPECT TO THE ++SOFTWARE OR THE DOCUMENTATION, INCLUDING WITHOUT LIMITATION ANY ++WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. IN ++NO EVENT SHALL OPEN MARKET BE LIABLE TO YOU OR ANY THIRD PARTY FOR ANY ++DAMAGES ARISING FROM OR RELATING TO THIS SOFTWARE OR THE ++DOCUMENTATION, INCLUDING, WITHOUT LIMITATION, ANY INDIRECT, SPECIAL OR ++CONSEQUENTIAL DAMAGES OR SIMILAR DAMAGES, INCLUDING LOST PROFITS OR ++LOST DATA, EVEN IF OPEN MARKET HAS BEEN ADVISED OF THE POSSIBILITY OF ++SUCH DAMAGES. THE SOFTWARE AND DOCUMENTATION ARE PROVIDED "AS IS". ++OPEN MARKET HAS NO LIABILITY IN CONTRACT, TORT, NEGLIGENCE OR ++OTHERWISE ARISING OUT OF THIS SOFTWARE OR THE DOCUMENTATION. +--- libfcgi-2.4.0.orig/debian/libfcgi-dev.files ++++ libfcgi-2.4.0/debian/libfcgi-dev.files +@@ -0,0 +1,5 @@ ++usr/include/* ++usr/lib/lib*.a ++usr/lib/lib*.so ++usr/lib/pkgconfig/* ++/usr/lib/*.la +--- libfcgi-2.4.0.orig/mkinstalldirs ++++ libfcgi-2.4.0/mkinstalldirs +@@ -1,40 +1,161 @@ + #! /bin/sh + # mkinstalldirs --- make directory hierarchy +-# Author: Noah Friedman +-# Created: 1993-05-16 +-# Public domain + +-# $Id: mkinstalldirs,v 1.1 2001/09/21 15:05:21 skimo Exp $ ++scriptversion=2006-05-11.19 + ++# Original author: Noah Friedman ++# Created: 1993-05-16 ++# Public domain. ++# ++# This file is maintained in Automake, please report ++# bugs to or send patches to ++# . ++ ++nl=' ++' ++IFS=" "" $nl" + errstatus=0 ++dirmode= ++ ++usage="\ ++Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ... ++ ++Create each directory DIR (with mode MODE, if specified), including all ++leading file name components. ++ ++Report bugs to ." ++ ++# process command line arguments ++while test $# -gt 0 ; do ++ case $1 in ++ -h | --help | --h*) # -h for help ++ echo "$usage" ++ exit $? ++ ;; ++ -m) # -m PERM arg ++ shift ++ test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } ++ dirmode=$1 ++ shift ++ ;; ++ --version) ++ echo "$0 $scriptversion" ++ exit $? ++ ;; ++ --) # stop option processing ++ shift ++ break ++ ;; ++ -*) # unknown option ++ echo "$usage" 1>&2 ++ exit 1 ++ ;; ++ *) # first non-opt arg ++ break ++ ;; ++ esac ++done + + for file + do +- set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` +- shift ++ if test -d "$file"; then ++ shift ++ else ++ break ++ fi ++done ++ ++case $# in ++ 0) exit 0 ;; ++esac ++ ++# Solaris 8's mkdir -p isn't thread-safe. If you mkdir -p a/b and ++# mkdir -p a/c at the same time, both will detect that a is missing, ++# one will create a, then the other will try to create a and die with ++# a "File exists" error. This is a problem when calling mkinstalldirs ++# from a parallel make. We use --version in the probe to restrict ++# ourselves to GNU mkdir, which is thread-safe. ++case $dirmode in ++ '') ++ if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then ++ echo "mkdir -p -- $*" ++ exec mkdir -p -- "$@" ++ else ++ # On NextStep and OpenStep, the `mkdir' command does not ++ # recognize any option. It will interpret all options as ++ # directories to create, and then abort because `.' already ++ # exists. ++ test -d ./-p && rmdir ./-p ++ test -d ./--version && rmdir ./--version ++ fi ++ ;; ++ *) ++ if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 && ++ test ! -d ./--version; then ++ echo "mkdir -m $dirmode -p -- $*" ++ exec mkdir -m "$dirmode" -p -- "$@" ++ else ++ # Clean up after NextStep and OpenStep mkdir. ++ for d in ./-m ./-p ./--version "./$dirmode"; ++ do ++ test -d $d && rmdir $d ++ done ++ fi ++ ;; ++esac + +- pathcomp= +- for d +- do +- pathcomp="$pathcomp$d" +- case "$pathcomp" in +- -* ) pathcomp=./$pathcomp ;; +- esac +- +- if test ! -d "$pathcomp"; then +- echo "mkdir $pathcomp" +- +- mkdir "$pathcomp" || lasterr=$? +- +- if test ! -d "$pathcomp"; then +- errstatus=$lasterr +- fi +- fi ++for file ++do ++ case $file in ++ /*) pathcomp=/ ;; ++ *) pathcomp= ;; ++ esac ++ oIFS=$IFS ++ IFS=/ ++ set fnord $file ++ shift ++ IFS=$oIFS ++ ++ for d ++ do ++ test "x$d" = x && continue ++ ++ pathcomp=$pathcomp$d ++ case $pathcomp in ++ -*) pathcomp=./$pathcomp ;; ++ esac ++ ++ if test ! -d "$pathcomp"; then ++ echo "mkdir $pathcomp" ++ ++ mkdir "$pathcomp" || lasterr=$? ++ ++ if test ! -d "$pathcomp"; then ++ errstatus=$lasterr ++ else ++ if test ! -z "$dirmode"; then ++ echo "chmod $dirmode $pathcomp" ++ lasterr= ++ chmod "$dirmode" "$pathcomp" || lasterr=$? ++ ++ if test ! -z "$lasterr"; then ++ errstatus=$lasterr ++ fi ++ fi ++ fi ++ fi + +- pathcomp="$pathcomp/" +- done ++ pathcomp=$pathcomp/ ++ done + done + + exit $errstatus + +-# mkinstalldirs ends here ++# Local Variables: ++# mode: shell-script ++# sh-indentation: 2 ++# eval: (add-hook 'write-file-hooks 'time-stamp) ++# time-stamp-start: "scriptversion=" ++# time-stamp-format: "%:y-%02m-%02d.%02H" ++# time-stamp-end: "$" ++# End: +--- libfcgi-2.4.0.orig/Makefile.in ++++ libfcgi-2.4.0/Makefile.in +@@ -1,6 +1,7 @@ +-# Makefile.in generated automatically by automake 1.5 from Makefile.am. ++# Makefile.in generated by automake 1.6.3 from Makefile.am. ++# @configure_input@ + +-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 ++# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 + # Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -18,7 +19,6 @@ + # + # $Id: Makefile.am,v 1.7 2001/12/22 13:05:39 robs Exp $ + # +- + SHELL = @SHELL@ + + srcdir = @srcdir@ +@@ -49,9 +49,13 @@ + AUTOMAKE = @AUTOMAKE@ + AUTOHEADER = @AUTOHEADER@ + ++am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd + INSTALL = @INSTALL@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_DATA = @INSTALL_DATA@ ++install_sh_DATA = $(install_sh) -c -m 644 ++install_sh_PROGRAM = $(install_sh) -c ++install_sh_SCRIPT = $(install_sh) -c + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_HEADER = $(INSTALL_DATA) + transform = @program_transform_name@ +@@ -63,6 +67,10 @@ + POST_UNINSTALL = : + host_alias = @host_alias@ + host_triplet = @host@ ++ ++EXEEXT = @EXEEXT@ ++OBJEXT = @OBJEXT@ ++PATH_SEPARATOR = @PATH_SEPARATOR@ + AMTAR = @AMTAR@ + AS = @AS@ + AWK = @AWK@ +@@ -73,13 +81,11 @@ + DLLTOOL = @DLLTOOL@ + ECHO = @ECHO@ + ECHO_CPP = @ECHO_CPP@ +-EXEEXT = @EXEEXT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LIBFCGIXX = @LIBFCGIXX@ + LIBTOOL = @LIBTOOL@ + LN_S = @LN_S@ + OBJDUMP = @OBJDUMP@ +-OBJEXT = @OBJEXT@ + PACKAGE = @PACKAGE@ + PTHREAD_CC = @PTHREAD_CC@ + PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ +@@ -191,31 +197,23 @@ + uninstall-info-recursive all-recursive install-data-recursive \ + install-exec-recursive installdirs-recursive install-recursive \ + uninstall-recursive check-recursive installcheck-recursive +-DIST_COMMON = README $(include_HEADERS) ./stamp-h.in Makefile.am \ +- Makefile.in acinclude.m4 aclocal.m4 compile config.guess \ +- config.sub configure configure.in depcomp fcgi_config.h.in \ +- install-sh ltmain.sh missing mkinstalldirs ++DIST_COMMON = README $(include_HEADERS) Makefile.am Makefile.in \ ++ acinclude.m4 aclocal.m4 compile config.guess config.sub \ ++ configure configure.in depcomp fcgi_config.h.in install-sh \ ++ ltmain.sh missing mkinstalldirs + DIST_SUBDIRS = $(SUBDIRS) + all: fcgi_config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + + .SUFFIXES: + +-mostlyclean-libtool: +- -rm -f *.lo +- +-clean-libtool: +- -rm -rf .libs _libs +- +-distclean-libtool: +- -rm -f libtool ++am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ ++ configure.lineno + $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ +- $(AUTOMAKE) --foreign Makefile ++ $(AUTOMAKE) --gnu Makefile + Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +- cd $(top_builddir) && \ +- CONFIG_HEADERS= CONFIG_LINKS= \ +- CONFIG_FILES=$@ $(SHELL) ./config.status ++ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe) + + $(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck +@@ -224,40 +222,42 @@ + + $(ACLOCAL_M4): configure.in acinclude.m4 + cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +-fcgi_config.h: stamp-h +- @if test ! -f $@; then \ +- rm -f stamp-h; \ +- $(MAKE) stamp-h; \ +- else :; fi +-stamp-h: $(srcdir)/fcgi_config.h.in $(top_builddir)/config.status +- @rm -f stamp-h stamp-hT +- @echo timestamp > stamp-hT 2> /dev/null +- cd $(top_builddir) \ +- && CONFIG_FILES= CONFIG_HEADERS=fcgi_config.h \ +- $(SHELL) ./config.status +- @mv stamp-hT stamp-h +-$(srcdir)/fcgi_config.h.in: $(srcdir)/./stamp-h.in ++ ++fcgi_config.h: stamp-h1 + @if test ! -f $@; then \ +- rm -f $(srcdir)/./stamp-h.in; \ +- $(MAKE) $(srcdir)/./stamp-h.in; \ ++ rm -f stamp-h1; \ ++ $(MAKE) stamp-h1; \ + else :; fi +-$(srcdir)/./stamp-h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) +- @rm -f $(srcdir)/./stamp-h.in $(srcdir)/./stamp-h.inT +- @echo timestamp > $(srcdir)/./stamp-h.inT 2> /dev/null ++ ++stamp-h1: $(srcdir)/fcgi_config.h.in $(top_builddir)/config.status ++ @rm -f stamp-h1 ++ cd $(top_builddir) && $(SHELL) ./config.status fcgi_config.h ++ ++$(srcdir)/fcgi_config.h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOHEADER) +- @mv $(srcdir)/./stamp-h.inT $(srcdir)/./stamp-h.in ++ touch $(srcdir)/fcgi_config.h.in + + distclean-hdr: +- -rm -f fcgi_config.h ++ -rm -f fcgi_config.h stamp-h1 ++ ++mostlyclean-libtool: ++ -rm -f *.lo ++ ++clean-libtool: ++ -rm -rf .libs _libs ++ ++distclean-libtool: ++ -rm -f libtool + uninstall-info-am: ++includeHEADERS_INSTALL = $(INSTALL_HEADER) + install-includeHEADERS: $(include_HEADERS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(includedir) + @list='$(include_HEADERS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ +- echo " $(INSTALL_HEADER) $$d$$p $(DESTDIR)$(includedir)/$$f"; \ +- $(INSTALL_HEADER) $$d$$p $(DESTDIR)$(includedir)/$$f; \ ++ echo " $(includeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(includedir)/$$f"; \ ++ $(includeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(includedir)/$$f; \ + done + + uninstall-includeHEADERS: +@@ -275,7 +275,7 @@ + # (which will cause the Makefiles to be regenerated when you run `make'); + # (2) otherwise, pass the desired values on the `make' command line. + $(RECURSIVE_TARGETS): +- @set fnord $(MAKEFLAGS); amf=$$2; \ ++ @set fnord $$MAKEFLAGS; amf=$$2; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ +@@ -295,7 +295,7 @@ + + mostlyclean-recursive clean-recursive distclean-recursive \ + maintainer-clean-recursive: +- @set fnord $(MAKEFLAGS); amf=$$2; \ ++ @set fnord $$MAKEFLAGS; amf=$$2; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ +@@ -323,16 +323,19 @@ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done + ++ETAGS = etags ++ETAGSFLAGS = ++ + tags: TAGS + + ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) +- list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ +- mkid -fID $$unique $(LISP) ++ mkid -fID $$unique + + TAGS: tags-recursive $(HEADERS) $(SOURCES) fcgi_config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) +@@ -343,51 +346,61 @@ + test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ + fi; \ + done; \ +- list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ ++ list='$(SOURCES) $(HEADERS) fcgi_config.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ +- test -z "$(ETAGS_ARGS)fcgi_config.h.in$$unique$(LISP)$$tags" \ +- || etags $(ETAGS_ARGS) $$tags fcgi_config.h.in $$unique $(LISP) ++ test -z "$(ETAGS_ARGS)$$tags$$unique" \ ++ || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ $$tags $$unique + + GTAGS: +- here=`CDPATH=: && cd $(top_builddir) && pwd` \ ++ here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + + distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH +- + DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + + top_distdir = . +-# Avoid unsightly `./'. + distdir = $(PACKAGE)-$(VERSION) + ++am__remove_distdir = \ ++ { test ! -d $(distdir) \ ++ || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ ++ && rm -fr $(distdir); }; } ++ + GZIP_ENV = --best ++distcleancheck_listfiles = find . -type f -print + + distdir: $(DISTFILES) +- -chmod -R a+w $(distdir) >/dev/null 2>&1; rm -rf $(distdir) ++ $(am__remove_distdir) + mkdir $(distdir) + $(mkinstalldirs) $(distdir)/Win32 $(distdir)/cgi-fcgi $(distdir)/doc $(distdir)/doc/fastcgi-prog-guide $(distdir)/doc/fastcgi-whitepaper $(distdir)/examples $(distdir)/images $(distdir)/include $(distdir)/java $(distdir)/libfcgi $(distdir)/perl +- @for file in $(DISTFILES); do \ +- if test -f $$file; then d=.; else d=$(srcdir); fi; \ ++ @list='$(DISTFILES)'; for file in $$list; do \ ++ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- $(mkinstalldirs) "$(distdir)/$$dir"; \ ++ dir="/$$dir"; \ ++ $(mkinstalldirs) "$(distdir)$$dir"; \ ++ else \ ++ dir=''; \ + fi; \ + if test -d $$d/$$file; then \ +- cp -pR $$d/$$file $(distdir) \ +- || exit 1; \ ++ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ++ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ ++ fi; \ ++ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +- for subdir in $(SUBDIRS); do \ ++ list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d $(distdir)/$$subdir \ + || mkdir $(distdir)/$$subdir \ +@@ -405,23 +418,28 @@ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r $(distdir) +-dist: distdir ++dist-gzip: distdir + $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz +- -chmod -R a+w $(distdir) >/dev/null 2>&1; rm -rf $(distdir) ++ $(am__remove_distdir) ++ ++dist dist-all: distdir ++ $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz ++ $(am__remove_distdir) + + # This target untars the dist file and tries a VPATH configuration. Then + # it guarantees that the distribution is self-contained by making another + # tarfile. + distcheck: dist +- -chmod -R a+w $(distdir) > /dev/null 2>&1; rm -rf $(distdir) ++ $(am__remove_distdir) + GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf - + chmod -R a-w $(distdir); chmod a+w $(distdir) + mkdir $(distdir)/=build + mkdir $(distdir)/=inst + chmod a-w $(distdir) +- dc_install_base=`CDPATH=: && cd $(distdir)/=inst && pwd` \ ++ dc_install_base=`$(am__cd) $(distdir)/=inst && pwd` \ + && cd $(distdir)/=build \ + && ../configure --srcdir=.. --prefix=$$dc_install_base \ ++ $(DISTCHECK_CONFIGURE_FLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ +@@ -429,17 +447,24 @@ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && (test `find $$dc_install_base -type f -print | wc -l` -le 1 \ +- || (echo "Error: files left after uninstall" 1>&2; \ +- exit 1) ) \ +- && $(MAKE) $(AM_MAKEFLAGS) dist \ +- && $(MAKE) $(AM_MAKEFLAGS) distclean \ ++ || { echo "ERROR: files left after uninstall:" ; \ ++ find $$dc_install_base -type f -print ; \ ++ exit 1; } >&2 ) \ ++ && $(MAKE) $(AM_MAKEFLAGS) dist-gzip \ + && rm -f $(distdir).tar.gz \ +- && (test `find . -type f -print | wc -l` -eq 0 \ +- || (echo "Error: files left after distclean" 1>&2; \ +- exit 1) ) +- -chmod -R a+w $(distdir) > /dev/null 2>&1; rm -rf $(distdir) ++ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck ++ $(am__remove_distdir) + @echo "$(distdir).tar.gz is ready for distribution" | \ + sed 'h;s/./=/g;p;x;p;x' ++distcleancheck: distclean ++ if test '$(srcdir)' = . ; then \ ++ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ ++ exit 1 ; \ ++ fi ++ test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ ++ || { echo "ERROR: files left after distclean:" ; \ ++ $(distcleancheck_listfiles) ; \ ++ exit 1; } >&2 + check-am: all-am + check: check-recursive + all-am: Makefile $(HEADERS) fcgi_config.h +@@ -458,6 +483,7 @@ + installcheck: installcheck-recursive + install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ ++ INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install + mostlyclean-generic: +@@ -465,7 +491,7 @@ + clean-generic: + + distclean-generic: +- -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* ++ -rm -f Makefile $(CONFIG_CLEAN_FILES) + + maintainer-clean-generic: + @echo "This command is intended for maintainers to use" +@@ -474,11 +500,8 @@ + + clean-am: clean-generic clean-libtool mostlyclean-am + +-dist-all: distdir +- $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz +- -chmod -R a+w $(distdir) >/dev/null 2>&1; rm -rf $(distdir) + distclean: distclean-recursive +- -rm -f config.status config.cache config.log ++ -rm -f $(am__CONFIG_DISTCLEAN_FILES) + distclean-am: clean-am distclean-generic distclean-hdr distclean-libtool \ + distclean-tags + +@@ -501,7 +524,8 @@ + installcheck-am: + + maintainer-clean: maintainer-clean-recursive +- ++ -rm -f $(am__CONFIG_DISTCLEAN_FILES) ++ -rm -rf autom4te.cache + maintainer-clean-am: distclean-am maintainer-clean-generic + + mostlyclean: mostlyclean-recursive +@@ -514,20 +538,20 @@ + + .PHONY: $(RECURSIVE_TARGETS) GTAGS all all-am check check-am clean \ + clean-generic clean-libtool clean-recursive dist dist-all \ +- distcheck distclean distclean-generic distclean-hdr \ +- distclean-libtool distclean-recursive distclean-tags distdir \ +- dvi dvi-am dvi-recursive info info-am info-recursive install \ +- install-am install-data install-data-am install-data-recursive \ +- install-exec install-exec-am install-exec-recursive \ +- install-includeHEADERS install-info install-info-am \ +- install-info-recursive install-man install-recursive \ +- install-strip installcheck installcheck-am installdirs \ +- installdirs-am installdirs-recursive maintainer-clean \ +- maintainer-clean-generic maintainer-clean-recursive mostlyclean \ +- mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \ +- tags tags-recursive uninstall uninstall-am \ +- uninstall-includeHEADERS uninstall-info-am \ +- uninstall-info-recursive uninstall-recursive ++ dist-gzip distcheck distclean distclean-generic distclean-hdr \ ++ distclean-libtool distclean-recursive distclean-tags \ ++ distcleancheck distdir dvi dvi-am dvi-recursive info info-am \ ++ info-recursive install install-am install-data install-data-am \ ++ install-data-recursive install-exec install-exec-am \ ++ install-exec-recursive install-includeHEADERS install-info \ ++ install-info-am install-info-recursive install-man \ ++ install-recursive install-strip installcheck installcheck-am \ ++ installdirs installdirs-am installdirs-recursive \ ++ maintainer-clean maintainer-clean-generic \ ++ maintainer-clean-recursive mostlyclean mostlyclean-generic \ ++ mostlyclean-libtool mostlyclean-recursive tags tags-recursive \ ++ uninstall uninstall-am uninstall-includeHEADERS \ ++ uninstall-info-am uninstall-info-recursive uninstall-recursive + + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. +--- libfcgi-2.4.0.orig/examples/Makefile.in ++++ libfcgi-2.4.0/examples/Makefile.in +@@ -1,7 +1,8 @@ +-# Makefile.in generated automatically by automake 1.5 from Makefile.am. ++# Makefile.in generated by automake 1.10 from Makefile.am. ++# @configure_input@ + +-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +-# Free Software Foundation, Inc. ++# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ++# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, + # with or without modifications, as long as this notice is preserved. +@@ -15,359 +16,437 @@ + + # $Id: Makefile.am,v 1.8 2001/12/22 03:16:21 robs Exp $ + +-SHELL = @SHELL@ +- +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ + VPATH = @srcdir@ +-prefix = @prefix@ +-exec_prefix = @exec_prefix@ +- +-bindir = @bindir@ +-sbindir = @sbindir@ +-libexecdir = @libexecdir@ +-datadir = @datadir@ +-sysconfdir = @sysconfdir@ +-sharedstatedir = @sharedstatedir@ +-localstatedir = @localstatedir@ +-libdir = @libdir@ +-infodir = @infodir@ +-mandir = @mandir@ +-includedir = @includedir@ +-oldincludedir = /usr/include + pkgdatadir = $(datadir)/@PACKAGE@ + pkglibdir = $(libdir)/@PACKAGE@ + pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = .. +- +-ACLOCAL = @ACLOCAL@ +-AUTOCONF = @AUTOCONF@ +-AUTOMAKE = @AUTOMAKE@ +-AUTOHEADER = @AUTOHEADER@ +- +-INSTALL = @INSTALL@ +-INSTALL_PROGRAM = @INSTALL_PROGRAM@ +-INSTALL_DATA = @INSTALL_DATA@ +-INSTALL_SCRIPT = @INSTALL_SCRIPT@ ++am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd ++install_sh_DATA = $(install_sh) -c -m 644 ++install_sh_PROGRAM = $(install_sh) -c ++install_sh_SCRIPT = $(install_sh) -c + INSTALL_HEADER = $(INSTALL_DATA) +-transform = @program_transform_name@ ++transform = $(program_transform_name) + NORMAL_INSTALL = : + PRE_INSTALL = : + POST_INSTALL = : + NORMAL_UNINSTALL = : + PRE_UNINSTALL = : + POST_UNINSTALL = : +-host_alias = @host_alias@ ++build_triplet = @build@ + host_triplet = @host@ ++noinst_PROGRAMS = authorizer$(EXEEXT) echo$(EXEEXT) echo-x$(EXEEXT) \ ++ log-dump$(EXEEXT) size$(EXEEXT) @THREADED@ @ECHO_CPP@ ++EXTRA_PROGRAMS = threaded$(EXEEXT) echo-cpp$(EXEEXT) ++subdir = examples ++DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ++am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ ++ $(top_srcdir)/configure.in ++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ ++ $(ACLOCAL_M4) ++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ++CONFIG_HEADER = $(top_builddir)/fcgi_config.h ++CONFIG_CLEAN_FILES = ++PROGRAMS = $(noinst_PROGRAMS) ++am__objects_1 = ++am_authorizer_OBJECTS = $(am__objects_1) authorizer.$(OBJEXT) ++authorizer_OBJECTS = $(am_authorizer_OBJECTS) ++authorizer_LDADD = $(LDADD) ++authorizer_DEPENDENCIES = $(LIBFCGI) ++am_echo_OBJECTS = $(am__objects_1) echo.$(OBJEXT) ++echo_OBJECTS = $(am_echo_OBJECTS) ++echo_LDADD = $(LDADD) ++echo_DEPENDENCIES = $(LIBFCGI) ++am_echo_cpp_OBJECTS = $(am__objects_1) echo-cpp.$(OBJEXT) ++echo_cpp_OBJECTS = $(am_echo_cpp_OBJECTS) ++echo_cpp_DEPENDENCIES = $(LIBDIR)/libfcgi++.la ++am_echo_x_OBJECTS = $(am__objects_1) echo-x.$(OBJEXT) ++echo_x_OBJECTS = $(am_echo_x_OBJECTS) ++echo_x_LDADD = $(LDADD) ++echo_x_DEPENDENCIES = $(LIBFCGI) ++am_log_dump_OBJECTS = $(am__objects_1) log-dump.$(OBJEXT) ++log_dump_OBJECTS = $(am_log_dump_OBJECTS) ++log_dump_LDADD = $(LDADD) ++log_dump_DEPENDENCIES = $(LIBFCGI) ++size_SOURCES = size.c ++size_OBJECTS = size.$(OBJEXT) ++size_LDADD = $(LDADD) ++size_DEPENDENCIES = $(LIBFCGI) ++am_threaded_OBJECTS = $(am__objects_1) threaded-threaded.$(OBJEXT) ++threaded_OBJECTS = $(am_threaded_OBJECTS) ++threaded_LDADD = $(LDADD) ++threaded_DEPENDENCIES = $(LIBFCGI) ++threaded_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CCLD) $(threaded_CFLAGS) $(CFLAGS) \ ++ $(threaded_LDFLAGS) $(LDFLAGS) -o $@ ++DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@ ++depcomp = $(SHELL) $(top_srcdir)/depcomp ++am__depfiles_maybe = depfiles ++COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ++ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++CCLD = $(CC) ++LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ ++ $(LDFLAGS) -o $@ ++CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) ++LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) ++CXXLD = $(CXX) ++CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ ++ $(LDFLAGS) -o $@ ++SOURCES = $(authorizer_SOURCES) $(echo_SOURCES) $(echo_cpp_SOURCES) \ ++ $(echo_x_SOURCES) $(log_dump_SOURCES) size.c \ ++ $(threaded_SOURCES) ++DIST_SOURCES = $(authorizer_SOURCES) $(echo_SOURCES) \ ++ $(echo_cpp_SOURCES) $(echo_x_SOURCES) $(log_dump_SOURCES) \ ++ size.c $(threaded_SOURCES) ++ETAGS = etags ++CTAGS = ctags ++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ++ACLOCAL = @ACLOCAL@ + AMTAR = @AMTAR@ +-AS = @AS@ ++AR = @AR@ ++AUTOCONF = @AUTOCONF@ ++AUTOHEADER = @AUTOHEADER@ ++AUTOMAKE = @AUTOMAKE@ + AWK = @AWK@ + CC = @CC@ ++CCDEPMODE = @CCDEPMODE@ ++CFLAGS = @CFLAGS@ + CPP = @CPP@ ++CPPFLAGS = @CPPFLAGS@ -I$(top_srcdir)/include + CXX = @CXX@ ++CXXCPP = @CXXCPP@ ++CXXDEPMODE = @CXXDEPMODE@ ++CXXFLAGS = @CXXFLAGS@ ++CYGPATH_W = @CYGPATH_W@ ++DEFS = @DEFS@ + DEPDIR = @DEPDIR@ +-DLLTOOL = @DLLTOOL@ + ECHO = @ECHO@ ++ECHO_C = @ECHO_C@ + ECHO_CPP = @ECHO_CPP@ ++ECHO_N = @ECHO_N@ ++ECHO_T = @ECHO_T@ ++EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++F77 = @F77@ ++FFLAGS = @FFLAGS@ ++GREP = @GREP@ ++INSTALL = @INSTALL@ ++INSTALL_DATA = @INSTALL_DATA@ ++INSTALL_PROGRAM = @INSTALL_PROGRAM@ ++INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ ++LDFLAGS = @LDFLAGS@ + LIBFCGIXX = @LIBFCGIXX@ ++LIBOBJS = @LIBOBJS@ ++LIBS = @LIBS@ + LIBTOOL = @LIBTOOL@ + LN_S = @LN_S@ +-OBJDUMP = @OBJDUMP@ ++LTLIBOBJS = @LTLIBOBJS@ ++MAKEINFO = @MAKEINFO@ ++MKDIR_P = @MKDIR_P@ + OBJEXT = @OBJEXT@ + PACKAGE = @PACKAGE@ ++PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ ++PACKAGE_NAME = @PACKAGE_NAME@ ++PACKAGE_STRING = @PACKAGE_STRING@ ++PACKAGE_TARNAME = @PACKAGE_TARNAME@ ++PACKAGE_VERSION = @PACKAGE_VERSION@ ++PATH_SEPARATOR = @PATH_SEPARATOR@ + PTHREAD_CC = @PTHREAD_CC@ + PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ + PTHREAD_LIBS = @PTHREAD_LIBS@ + RANLIB = @RANLIB@ ++SED = @SED@ ++SET_MAKE = @SET_MAKE@ ++SHELL = @SHELL@ + STRIP = @STRIP@ + SYSTEM = @SYSTEM@ + THREADED = @THREADED@ + VERSION = @VERSION@ ++abs_builddir = @abs_builddir@ ++abs_srcdir = @abs_srcdir@ ++abs_top_builddir = @abs_top_builddir@ ++abs_top_srcdir = @abs_top_srcdir@ ++ac_ct_CC = @ac_ct_CC@ ++ac_ct_CXX = @ac_ct_CXX@ ++ac_ct_F77 = @ac_ct_F77@ + am__include = @am__include@ ++am__leading_dot = @am__leading_dot@ + am__quote = @am__quote@ ++am__tar = @am__tar@ ++am__untar = @am__untar@ ++bindir = @bindir@ ++build = @build@ ++build_alias = @build_alias@ ++build_cpu = @build_cpu@ ++build_os = @build_os@ ++build_vendor = @build_vendor@ ++builddir = @builddir@ ++datadir = @datadir@ ++datarootdir = @datarootdir@ ++docdir = @docdir@ ++dvidir = @dvidir@ ++exec_prefix = @exec_prefix@ ++host = @host@ ++host_alias = @host_alias@ ++host_cpu = @host_cpu@ ++host_os = @host_os@ ++host_vendor = @host_vendor@ ++htmldir = @htmldir@ ++includedir = @includedir@ ++infodir = @infodir@ + install_sh = @install_sh@ +- +-noinst_PROGRAMS = authorizer \ +- echo \ +- echo-x \ +- log-dump \ +- size \ +- @THREADED@ \ +- @ECHO_CPP@ +- +- +-EXTRA_PROGRAMS = threaded echo-cpp +- ++libdir = @libdir@ ++libexecdir = @libexecdir@ ++localedir = @localedir@ ++localstatedir = @localstatedir@ ++mandir = @mandir@ ++mkdir_p = @mkdir_p@ ++oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ ++prefix = @prefix@ ++program_transform_name = @program_transform_name@ ++psdir = @psdir@ ++sbindir = @sbindir@ ++sharedstatedir = @sharedstatedir@ ++srcdir = @srcdir@ ++sysconfdir = @sysconfdir@ ++target_alias = @target_alias@ ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ + INCLUDEDIR = ../include +-CPPFLAGS = @CPPFLAGS@ -I$(top_srcdir)/include +- + INCLUDE_FILES = $(INCLUDEDIR)/fastcgi.h \ + $(INCLUDEDIR)/fcgiapp.h \ + $(INCLUDEDIR)/fcgimisc.h \ + $(INCLUDEDIR)/fcgi_stdio.h + +- + LIBDIR = ../libfcgi + LIBFCGI = $(LIBDIR)/libfcgi.la +- + LDADD = $(LIBFCGI) +- + echo_SOURCES = $(INCLUDE_FILES) echo.c + echo_x_SOURCES = $(INCLUDE_FILES) echo-x.c + log_dump_SOURCES = $(INCLUDE_FILES) log-dump.c + authorizer_SOURCES = $(INCLUDE_FILES) authorizer.c +- + threaded_SOURCES = $(INCLUDE_FILES) threaded.c + threaded_CC = @PTHREAD_CC@ + threaded_CFLAGS = @PTHREAD_CFLAGS@ + threaded_LDFLAGS = @PTHREAD_CFLAGS@ @PTHREAD_LIBS@ +- + echo_cpp_SOURCES = $(INCLUDE_FILES) $(INCLUDEDIR)/fcgio.h echo-cpp.cpp + echo_cpp_LDADD = $(LIBDIR)/libfcgi++.la +-subdir = examples +-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +-CONFIG_HEADER = $(top_builddir)/fcgi_config.h +-CONFIG_CLEAN_FILES = +-EXTRA_PROGRAMS = threaded$(EXEEXT) echo-cpp$(EXEEXT) +-noinst_PROGRAMS = authorizer$(EXEEXT) echo$(EXEEXT) echo-x$(EXEEXT) \ +- log-dump$(EXEEXT) size$(EXEEXT) @THREADED@ @ECHO_CPP@ +-PROGRAMS = $(noinst_PROGRAMS) +- +-am_authorizer_OBJECTS = authorizer.$(OBJEXT) +-authorizer_OBJECTS = $(am_authorizer_OBJECTS) +-authorizer_LDADD = $(LDADD) +-authorizer_DEPENDENCIES = $(LIBDIR)/libfcgi.la +-authorizer_LDFLAGS = +-am_echo_OBJECTS = echo.$(OBJEXT) +-echo_OBJECTS = $(am_echo_OBJECTS) +-echo_LDADD = $(LDADD) +-echo_DEPENDENCIES = $(LIBDIR)/libfcgi.la +-echo_LDFLAGS = +-am_echo_cpp_OBJECTS = echo-cpp.$(OBJEXT) +-echo_cpp_OBJECTS = $(am_echo_cpp_OBJECTS) +-echo_cpp_DEPENDENCIES = $(LIBDIR)/libfcgi++.la +-echo_cpp_LDFLAGS = +-am_echo_x_OBJECTS = echo-x.$(OBJEXT) +-echo_x_OBJECTS = $(am_echo_x_OBJECTS) +-echo_x_LDADD = $(LDADD) +-echo_x_DEPENDENCIES = $(LIBDIR)/libfcgi.la +-echo_x_LDFLAGS = +-am_log_dump_OBJECTS = log-dump.$(OBJEXT) +-log_dump_OBJECTS = $(am_log_dump_OBJECTS) +-log_dump_LDADD = $(LDADD) +-log_dump_DEPENDENCIES = $(LIBDIR)/libfcgi.la +-log_dump_LDFLAGS = +-size_SOURCES = size.c +-size_OBJECTS = size.$(OBJEXT) +-size_LDADD = $(LDADD) +-size_DEPENDENCIES = $(LIBDIR)/libfcgi.la +-size_LDFLAGS = +-am_threaded_OBJECTS = threaded-threaded.$(OBJEXT) +-threaded_OBJECTS = $(am_threaded_OBJECTS) +-threaded_LDADD = $(LDADD) +-threaded_DEPENDENCIES = $(LIBDIR)/libfcgi.la +- +-DEFS = @DEFS@ +-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +-LDFLAGS = @LDFLAGS@ +-LIBS = @LIBS@ +-depcomp = $(SHELL) $(top_srcdir)/depcomp +-@AMDEP_TRUE@DEP_FILES = $(DEPDIR)/authorizer.Po $(DEPDIR)/echo-cpp.Po \ +-@AMDEP_TRUE@ $(DEPDIR)/echo-x.Po $(DEPDIR)/echo.Po \ +-@AMDEP_TRUE@ $(DEPDIR)/log-dump.Po $(DEPDIR)/size.Po \ +-@AMDEP_TRUE@ $(DEPDIR)/threaded-threaded.Po +-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ +- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ +- $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-CCLD = $(CC) +-LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ +- $(AM_LDFLAGS) $(LDFLAGS) -o $@ +-CFLAGS = @CFLAGS@ +-CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ +- $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +-LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) \ +- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ +- $(AM_CXXFLAGS) $(CXXFLAGS) +-CXXLD = $(CXX) +-CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ +- $(AM_LDFLAGS) $(LDFLAGS) -o $@ +-CXXFLAGS = @CXXFLAGS@ +-DIST_SOURCES = $(authorizer_SOURCES) $(echo_SOURCES) $(echo_cpp_SOURCES) \ +- $(echo_x_SOURCES) $(log_dump_SOURCES) size.c \ +- $(threaded_SOURCES) +-DIST_COMMON = Makefile.am Makefile.in +-SOURCES = $(authorizer_SOURCES) $(echo_SOURCES) $(echo_cpp_SOURCES) $(echo_x_SOURCES) $(log_dump_SOURCES) size.c $(threaded_SOURCES) +- + all: all-am + + .SUFFIXES: + .SUFFIXES: .c .cpp .lo .o .obj +- +-mostlyclean-libtool: +- -rm -f *.lo +- +-clean-libtool: +- -rm -rf .libs _libs +- +-distclean-libtool: +- -rm -f libtool +-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) ++$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) ++ @for dep in $?; do \ ++ case '$(am__configure_deps)' in \ ++ *$$dep*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ ++ && exit 0; \ ++ exit 1;; \ ++ esac; \ ++ done; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu examples/Makefile'; \ + cd $(top_srcdir) && \ +- $(AUTOMAKE) --foreign examples/Makefile +-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +- cd $(top_builddir) && \ +- CONFIG_HEADERS= CONFIG_LINKS= \ +- CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status ++ $(AUTOMAKE) --gnu examples/Makefile ++.PRECIOUS: Makefile ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ @case '$?' in \ ++ *config.status*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ ++ *) \ ++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ ++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ ++ esac; ++ ++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++ ++$(top_srcdir)/configure: $(am__configure_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(ACLOCAL_M4): $(am__aclocal_m4_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + + clean-noinstPROGRAMS: +- -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) ++ @list='$(noinst_PROGRAMS)'; for p in $$list; do \ ++ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ ++ echo " rm -f $$p $$f"; \ ++ rm -f $$p $$f ; \ ++ done + authorizer$(EXEEXT): $(authorizer_OBJECTS) $(authorizer_DEPENDENCIES) + @rm -f authorizer$(EXEEXT) +- $(LINK) $(authorizer_LDFLAGS) $(authorizer_OBJECTS) $(authorizer_LDADD) $(LIBS) ++ $(LINK) $(authorizer_OBJECTS) $(authorizer_LDADD) $(LIBS) + echo$(EXEEXT): $(echo_OBJECTS) $(echo_DEPENDENCIES) + @rm -f echo$(EXEEXT) +- $(LINK) $(echo_LDFLAGS) $(echo_OBJECTS) $(echo_LDADD) $(LIBS) ++ $(LINK) $(echo_OBJECTS) $(echo_LDADD) $(LIBS) + echo-cpp$(EXEEXT): $(echo_cpp_OBJECTS) $(echo_cpp_DEPENDENCIES) + @rm -f echo-cpp$(EXEEXT) +- $(CXXLINK) $(echo_cpp_LDFLAGS) $(echo_cpp_OBJECTS) $(echo_cpp_LDADD) $(LIBS) ++ $(CXXLINK) $(echo_cpp_OBJECTS) $(echo_cpp_LDADD) $(LIBS) + echo-x$(EXEEXT): $(echo_x_OBJECTS) $(echo_x_DEPENDENCIES) + @rm -f echo-x$(EXEEXT) +- $(LINK) $(echo_x_LDFLAGS) $(echo_x_OBJECTS) $(echo_x_LDADD) $(LIBS) ++ $(LINK) $(echo_x_OBJECTS) $(echo_x_LDADD) $(LIBS) + log-dump$(EXEEXT): $(log_dump_OBJECTS) $(log_dump_DEPENDENCIES) + @rm -f log-dump$(EXEEXT) +- $(LINK) $(log_dump_LDFLAGS) $(log_dump_OBJECTS) $(log_dump_LDADD) $(LIBS) ++ $(LINK) $(log_dump_OBJECTS) $(log_dump_LDADD) $(LIBS) + size$(EXEEXT): $(size_OBJECTS) $(size_DEPENDENCIES) + @rm -f size$(EXEEXT) +- $(LINK) $(size_LDFLAGS) $(size_OBJECTS) $(size_LDADD) $(LIBS) +-threaded-threaded.$(OBJEXT): threaded.c ++ $(LINK) $(size_OBJECTS) $(size_LDADD) $(LIBS) + threaded$(EXEEXT): $(threaded_OBJECTS) $(threaded_DEPENDENCIES) + @rm -f threaded$(EXEEXT) +- $(LINK) $(threaded_LDFLAGS) $(threaded_OBJECTS) $(threaded_LDADD) $(LIBS) ++ $(threaded_LINK) $(threaded_OBJECTS) $(threaded_LDADD) $(LIBS) + + mostlyclean-compile: +- -rm -f *.$(OBJEXT) core *.core ++ -rm -f *.$(OBJEXT) + + distclean-compile: + -rm -f *.tab.c + +-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/authorizer.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/echo-cpp.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/echo-x.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/echo.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/log-dump.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/size.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/threaded-threaded.Po@am__quote@ +- +-distclean-depend: +- -rm -rf $(DEPDIR) ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/authorizer.Po@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/echo-cpp.Po@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/echo-x.Po@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/echo.Po@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/log-dump.Po@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/size.Po@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/threaded-threaded.Po@am__quote@ + + .c.o: +-@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +- $(COMPILE) -c `test -f $< || echo '$(srcdir)/'`$< ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c $< + + .c.obj: +-@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +- $(COMPILE) -c `cygpath -w $<` ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + + .c.lo: +-@AMDEP_TRUE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +- $(LTCOMPILE) -c -o $@ `test -f $< || echo '$(srcdir)/'`$< ++@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + + threaded-threaded.o: threaded.c +-@AMDEP_TRUE@ source='threaded.c' object='threaded-threaded.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ depfile='$(DEPDIR)/threaded-threaded.Po' tmpdepfile='$(DEPDIR)/threaded-threaded.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +- $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(threaded_CFLAGS) $(CFLAGS) -c -o threaded-threaded.o `test -f threaded.c || echo '$(srcdir)/'`threaded.c ++@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(threaded_CFLAGS) $(CFLAGS) -MT threaded-threaded.o -MD -MP -MF $(DEPDIR)/threaded-threaded.Tpo -c -o threaded-threaded.o `test -f 'threaded.c' || echo '$(srcdir)/'`threaded.c ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/threaded-threaded.Tpo $(DEPDIR)/threaded-threaded.Po ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='threaded.c' object='threaded-threaded.o' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(threaded_CFLAGS) $(CFLAGS) -c -o threaded-threaded.o `test -f 'threaded.c' || echo '$(srcdir)/'`threaded.c + + threaded-threaded.obj: threaded.c +-@AMDEP_TRUE@ source='threaded.c' object='threaded-threaded.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ depfile='$(DEPDIR)/threaded-threaded.Po' tmpdepfile='$(DEPDIR)/threaded-threaded.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +- $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(threaded_CFLAGS) $(CFLAGS) -c -o threaded-threaded.obj `cygpath -w threaded.c` +- +-threaded-threaded.lo: threaded.c +-@AMDEP_TRUE@ source='threaded.c' object='threaded-threaded.lo' libtool=yes @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ depfile='$(DEPDIR)/threaded-threaded.Plo' tmpdepfile='$(DEPDIR)/threaded-threaded.TPlo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +- $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(threaded_CFLAGS) $(CFLAGS) -c -o threaded-threaded.lo `test -f threaded.c || echo '$(srcdir)/'`threaded.c +-CCDEPMODE = @CCDEPMODE@ ++@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(threaded_CFLAGS) $(CFLAGS) -MT threaded-threaded.obj -MD -MP -MF $(DEPDIR)/threaded-threaded.Tpo -c -o threaded-threaded.obj `if test -f 'threaded.c'; then $(CYGPATH_W) 'threaded.c'; else $(CYGPATH_W) '$(srcdir)/threaded.c'; fi` ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/threaded-threaded.Tpo $(DEPDIR)/threaded-threaded.Po ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='threaded.c' object='threaded-threaded.obj' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(threaded_CFLAGS) $(CFLAGS) -c -o threaded-threaded.obj `if test -f 'threaded.c'; then $(CYGPATH_W) 'threaded.c'; else $(CYGPATH_W) '$(srcdir)/threaded.c'; fi` + + .cpp.o: +-@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +- $(CXXCOMPILE) -c -o $@ `test -f $< || echo '$(srcdir)/'`$< ++@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< + + .cpp.obj: +-@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +- $(CXXCOMPILE) -c -o $@ `cygpath -w $<` ++@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + + .cpp.lo: +-@AMDEP_TRUE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +- $(LTCXXCOMPILE) -c -o $@ `test -f $< || echo '$(srcdir)/'`$< +-CXXDEPMODE = @CXXDEPMODE@ +-uninstall-info-am: ++@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< + +-tags: TAGS ++mostlyclean-libtool: ++ -rm -f *.lo ++ ++clean-libtool: ++ -rm -rf .libs _libs + + ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) +- list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ +- mkid -fID $$unique $(LISP) ++ mkid -fID $$unique ++tags: TAGS + + TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ +- list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ++ unique=`for i in $$list; do \ ++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ++ done | \ ++ $(AWK) ' { files[$$0] = 1; } \ ++ END { for (i in files) print i; }'`; \ ++ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ ++ test -n "$$unique" || unique=$$empty_fix; \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ $$tags $$unique; \ ++ fi ++ctags: CTAGS ++CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ++ $(TAGS_FILES) $(LISP) ++ tags=; \ ++ here=`pwd`; \ ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ +- test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ +- || etags $(ETAGS_ARGS) $$tags $$unique $(LISP) ++ test -z "$(CTAGS_ARGS)$$tags$$unique" \ ++ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ++ $$tags $$unique + + GTAGS: +- here=`CDPATH=: && cd $(top_builddir) && pwd` \ ++ here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + + distclean-tags: +- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH +- +-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +- +-top_distdir = .. +-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) ++ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + + distdir: $(DISTFILES) +- @for file in $(DISTFILES); do \ +- if test -f $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- $(mkinstalldirs) "$(distdir)/$$dir"; \ +- fi; \ ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ ++ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ +- cp -pR $$d/$$file $(distdir) \ +- || exit 1; \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ ++ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ++ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ ++ fi; \ ++ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ +@@ -377,9 +456,7 @@ + check-am: all-am + check: check-am + all-am: Makefile $(PROGRAMS) +- + installdirs: +- + install: install-am + install-exec: install-exec-am + install-data: install-data-am +@@ -391,6 +468,7 @@ + installcheck: installcheck-am + install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ ++ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install + mostlyclean-generic: +@@ -398,7 +476,7 @@ + clean-generic: + + distclean-generic: +- -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* ++ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + + maintainer-clean-generic: + @echo "This command is intended for maintainers to use" +@@ -409,30 +487,42 @@ + mostlyclean-am + + distclean: distclean-am +- +-distclean-am: clean-am distclean-compile distclean-depend \ +- distclean-generic distclean-libtool distclean-tags ++ -rm -rf ./$(DEPDIR) ++ -rm -f Makefile ++distclean-am: clean-am distclean-compile distclean-generic \ ++ distclean-tags + + dvi: dvi-am + + dvi-am: + ++html: html-am ++ + info: info-am + + info-am: + + install-data-am: + ++install-dvi: install-dvi-am ++ + install-exec-am: + ++install-html: install-html-am ++ + install-info: install-info-am + + install-man: + ++install-pdf: install-pdf-am ++ ++install-ps: install-ps-am ++ + installcheck-am: + + maintainer-clean: maintainer-clean-am +- ++ -rm -rf ./$(DEPDIR) ++ -rm -f Makefile + maintainer-clean-am: distclean-am maintainer-clean-generic + + mostlyclean: mostlyclean-am +@@ -440,18 +530,30 @@ + mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +-uninstall-am: uninstall-info-am ++pdf: pdf-am ++ ++pdf-am: ++ ++ps: ps-am ++ ++ps-am: ++ ++uninstall-am: ++ ++.MAKE: install-am install-strip + +-.PHONY: GTAGS all all-am check check-am clean clean-generic \ +- clean-libtool clean-noinstPROGRAMS distclean distclean-compile \ +- distclean-depend distclean-generic distclean-libtool \ +- distclean-tags distdir dvi dvi-am info info-am install \ +- install-am install-data install-data-am install-exec \ +- install-exec-am install-info install-info-am install-man \ ++.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ ++ clean-libtool clean-noinstPROGRAMS ctags distclean \ ++ distclean-compile distclean-generic distclean-libtool \ ++ distclean-tags distdir dvi dvi-am html html-am info info-am \ ++ install install-am install-data install-data-am install-dvi \ ++ install-dvi-am install-exec install-exec-am install-html \ ++ install-html-am install-info install-info-am install-man \ ++ install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ +- tags uninstall uninstall-am uninstall-info-am ++ pdf pdf-am ps ps-am tags uninstall uninstall-am + + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. +--- libfcgi-2.4.0.orig/fcgi_config.h.in ++++ libfcgi-2.4.0/fcgi_config.h.in +@@ -1,9 +1,9 @@ +-/* fcgi_config.h.in. Generated automatically from configure.in by autoheader. */ ++/* fcgi_config.h.in. Generated from configure.in by autoheader. */ + +-/* Define if you have the header file. */ ++/* Define to 1 if you have the header file. */ + #undef HAVE_ARPA_INET_H + +-/* Define if you have the header file. */ ++/* Define to 1 if you have the header file. */ + #undef HAVE_DLFCN_H + + /* Define if there's a fileno() prototype in stdio.h */ +@@ -12,28 +12,28 @@ + /* Define if the fpos_t typedef is in stdio.h */ + #undef HAVE_FPOS + +-/* Define if you have the header file. */ ++/* Define to 1 if you have the header file. */ + #undef HAVE_INTTYPES_H + + /* Define if cin/cout/cerr has a streambuf assignment operator */ + #undef HAVE_IOSTREAM_WITHASSIGN_STREAMBUF + +-/* Define if you have the `nsl' library (-lnsl). */ ++/* Define to 1 if you have the `nsl' library (-lnsl). */ + #undef HAVE_LIBNSL + +-/* Define if you have the `socket' library (-lsocket). */ ++/* Define to 1 if you have the `socket' library (-lsocket). */ + #undef HAVE_LIBSOCKET + +-/* Define if you have the header file. */ ++/* Define to 1 if you have the header file. */ + #undef HAVE_LIMITS_H + +-/* Define if you have the header file. */ ++/* Define to 1 if you have the header file. */ + #undef HAVE_MEMORY_H + +-/* Define if you have the header file. */ ++/* Define to 1 if you have the header file. */ + #undef HAVE_NETDB_H + +-/* Define if you have the header file. */ ++/* Define to 1 if you have the header file. */ + #undef HAVE_NETINET_IN_H + + /* Define if you have POSIX threads libraries and header files. */ +@@ -45,40 +45,40 @@ + /* Define if the socklen_t typedef is in sys/socket.h */ + #undef HAVE_SOCKLEN + +-/* Define if you have the header file. */ ++/* Define to 1 if you have the header file. */ + #undef HAVE_STDINT_H + +-/* Define if you have the header file. */ ++/* Define to 1 if you have the header file. */ + #undef HAVE_STDLIB_H + + /* Define if char_type is defined in the context of streambuf */ + #undef HAVE_STREAMBUF_CHAR_TYPE + +-/* Define if you have the `strerror' function. */ ++/* Define to 1 if you have the `strerror' function. */ + #undef HAVE_STRERROR + +-/* Define if you have the header file. */ ++/* Define to 1 if you have the header file. */ + #undef HAVE_STRINGS_H + +-/* Define if you have the header file. */ ++/* Define to 1 if you have the header file. */ + #undef HAVE_STRING_H + +-/* Define if you have the header file. */ ++/* Define to 1 if you have the header file. */ + #undef HAVE_SYS_PARAM_H + +-/* Define if you have the header file. */ ++/* Define to 1 if you have the header file. */ + #undef HAVE_SYS_SOCKET_H + +-/* Define if you have the header file. */ ++/* Define to 1 if you have the header file. */ + #undef HAVE_SYS_STAT_H + +-/* Define if you have the header file. */ ++/* Define to 1 if you have the header file. */ + #undef HAVE_SYS_TIME_H + +-/* Define if you have the header file. */ ++/* Define to 1 if you have the header file. */ + #undef HAVE_SYS_TYPES_H + +-/* Define if you have the header file. */ ++/* Define to 1 if you have the header file. */ + #undef HAVE_UNISTD_H + + /* Define if va_arg(arg, long double) crashes the compiler */ +@@ -87,11 +87,26 @@ + /* Name of package */ + #undef PACKAGE + ++/* Define to the address where bug reports for this package should be sent. */ ++#undef PACKAGE_BUGREPORT ++ ++/* Define to the full name of this package. */ ++#undef PACKAGE_NAME ++ ++/* Define to the full name and version of this package. */ ++#undef PACKAGE_STRING ++ ++/* Define to the one symbol short name of this package. */ ++#undef PACKAGE_TARNAME ++ ++/* Define to the version of this package. */ ++#undef PACKAGE_VERSION ++ + /* Define to the necessary symbol if this constant uses a non-standard name on + your system. */ + #undef PTHREAD_CREATE_JOINABLE + +-/* Define if you have the ANSI C header files. */ ++/* Define to 1 if you have the ANSI C header files. */ + #undef STDC_HEADERS + + /* Define if cross-process locking is required by accept() */ +@@ -103,9 +118,11 @@ + /* Define to empty if `const' does not conform to ANSI C. */ + #undef const + +-/* Define as `__inline' if that's what the C compiler calls it, or to nothing +- if it is not supported. */ ++/* Define to `__inline__' or `__inline' if that's what the C compiler ++ calls it, or to nothing if 'inline' is not supported under any name. */ ++#ifndef __cplusplus + #undef inline ++#endif + + /* Define to `int' if does not define. */ + #undef ssize_t +--- libfcgi-2.4.0.orig/include/Makefile.in ++++ libfcgi-2.4.0/include/Makefile.in +@@ -1,7 +1,8 @@ +-# Makefile.in generated automatically by automake 1.5 from Makefile.am. ++# Makefile.in generated by automake 1.10 from Makefile.am. ++# @configure_input@ + +-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +-# Free Software Foundation, Inc. ++# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ++# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, + # with or without modifications, as long as this notice is preserved. +@@ -13,82 +14,164 @@ + + @SET_MAKE@ + +-# $Id: Makefile.am,v 1.2 2001/09/24 18:03:05 skimo Exp $ +- +-SHELL = @SHELL@ +- +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ + VPATH = @srcdir@ +-prefix = @prefix@ +-exec_prefix = @exec_prefix@ +- +-bindir = @bindir@ +-sbindir = @sbindir@ +-libexecdir = @libexecdir@ +-datadir = @datadir@ +-sysconfdir = @sysconfdir@ +-sharedstatedir = @sharedstatedir@ +-localstatedir = @localstatedir@ +-libdir = @libdir@ +-infodir = @infodir@ +-mandir = @mandir@ +-includedir = @includedir@ +-oldincludedir = /usr/include + pkgdatadir = $(datadir)/@PACKAGE@ + pkglibdir = $(libdir)/@PACKAGE@ + pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = .. +- +-ACLOCAL = @ACLOCAL@ +-AUTOCONF = @AUTOCONF@ +-AUTOMAKE = @AUTOMAKE@ +-AUTOHEADER = @AUTOHEADER@ +- +-INSTALL = @INSTALL@ +-INSTALL_PROGRAM = @INSTALL_PROGRAM@ +-INSTALL_DATA = @INSTALL_DATA@ +-INSTALL_SCRIPT = @INSTALL_SCRIPT@ ++am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd ++install_sh_DATA = $(install_sh) -c -m 644 ++install_sh_PROGRAM = $(install_sh) -c ++install_sh_SCRIPT = $(install_sh) -c + INSTALL_HEADER = $(INSTALL_DATA) +-transform = @program_transform_name@ ++transform = $(program_transform_name) + NORMAL_INSTALL = : + PRE_INSTALL = : + POST_INSTALL = : + NORMAL_UNINSTALL = : + PRE_UNINSTALL = : + POST_UNINSTALL = : +-host_alias = @host_alias@ ++build_triplet = @build@ + host_triplet = @host@ ++subdir = include ++DIST_COMMON = $(include_HEADERS) $(srcdir)/Makefile.am \ ++ $(srcdir)/Makefile.in ++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ++am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ ++ $(top_srcdir)/configure.in ++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ ++ $(ACLOCAL_M4) ++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ++CONFIG_HEADER = $(top_builddir)/fcgi_config.h ++CONFIG_CLEAN_FILES = ++SOURCES = ++DIST_SOURCES = ++am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; ++am__vpath_adj = case $$p in \ ++ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ ++ *) f=$$p;; \ ++ esac; ++am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; ++am__installdirs = "$(DESTDIR)$(includedir)" ++includeHEADERS_INSTALL = $(INSTALL_HEADER) ++HEADERS = $(include_HEADERS) ++ETAGS = etags ++CTAGS = ctags ++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ++ACLOCAL = @ACLOCAL@ + AMTAR = @AMTAR@ +-AS = @AS@ ++AR = @AR@ ++AUTOCONF = @AUTOCONF@ ++AUTOHEADER = @AUTOHEADER@ ++AUTOMAKE = @AUTOMAKE@ + AWK = @AWK@ + CC = @CC@ ++CCDEPMODE = @CCDEPMODE@ ++CFLAGS = @CFLAGS@ + CPP = @CPP@ ++CPPFLAGS = @CPPFLAGS@ + CXX = @CXX@ ++CXXCPP = @CXXCPP@ ++CXXDEPMODE = @CXXDEPMODE@ ++CXXFLAGS = @CXXFLAGS@ ++CYGPATH_W = @CYGPATH_W@ ++DEFS = @DEFS@ + DEPDIR = @DEPDIR@ +-DLLTOOL = @DLLTOOL@ + ECHO = @ECHO@ ++ECHO_C = @ECHO_C@ + ECHO_CPP = @ECHO_CPP@ ++ECHO_N = @ECHO_N@ ++ECHO_T = @ECHO_T@ ++EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++F77 = @F77@ ++FFLAGS = @FFLAGS@ ++GREP = @GREP@ ++INSTALL = @INSTALL@ ++INSTALL_DATA = @INSTALL_DATA@ ++INSTALL_PROGRAM = @INSTALL_PROGRAM@ ++INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ ++LDFLAGS = @LDFLAGS@ + LIBFCGIXX = @LIBFCGIXX@ ++LIBOBJS = @LIBOBJS@ ++LIBS = @LIBS@ + LIBTOOL = @LIBTOOL@ + LN_S = @LN_S@ +-OBJDUMP = @OBJDUMP@ ++LTLIBOBJS = @LTLIBOBJS@ ++MAKEINFO = @MAKEINFO@ ++MKDIR_P = @MKDIR_P@ + OBJEXT = @OBJEXT@ + PACKAGE = @PACKAGE@ ++PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ ++PACKAGE_NAME = @PACKAGE_NAME@ ++PACKAGE_STRING = @PACKAGE_STRING@ ++PACKAGE_TARNAME = @PACKAGE_TARNAME@ ++PACKAGE_VERSION = @PACKAGE_VERSION@ ++PATH_SEPARATOR = @PATH_SEPARATOR@ + PTHREAD_CC = @PTHREAD_CC@ + PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ + PTHREAD_LIBS = @PTHREAD_LIBS@ + RANLIB = @RANLIB@ ++SED = @SED@ ++SET_MAKE = @SET_MAKE@ ++SHELL = @SHELL@ + STRIP = @STRIP@ + SYSTEM = @SYSTEM@ + THREADED = @THREADED@ + VERSION = @VERSION@ ++abs_builddir = @abs_builddir@ ++abs_srcdir = @abs_srcdir@ ++abs_top_builddir = @abs_top_builddir@ ++abs_top_srcdir = @abs_top_srcdir@ ++ac_ct_CC = @ac_ct_CC@ ++ac_ct_CXX = @ac_ct_CXX@ ++ac_ct_F77 = @ac_ct_F77@ + am__include = @am__include@ ++am__leading_dot = @am__leading_dot@ + am__quote = @am__quote@ ++am__tar = @am__tar@ ++am__untar = @am__untar@ ++bindir = @bindir@ ++build = @build@ ++build_alias = @build_alias@ ++build_cpu = @build_cpu@ ++build_os = @build_os@ ++build_vendor = @build_vendor@ ++builddir = @builddir@ ++datadir = @datadir@ ++datarootdir = @datarootdir@ ++docdir = @docdir@ ++dvidir = @dvidir@ ++exec_prefix = @exec_prefix@ ++host = @host@ ++host_alias = @host_alias@ ++host_cpu = @host_cpu@ ++host_os = @host_os@ ++host_vendor = @host_vendor@ ++htmldir = @htmldir@ ++includedir = @includedir@ ++infodir = @infodir@ + install_sh = @install_sh@ ++libdir = @libdir@ ++libexecdir = @libexecdir@ ++localedir = @localedir@ ++localstatedir = @localstatedir@ ++mandir = @mandir@ ++mkdir_p = @mkdir_p@ ++oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ ++prefix = @prefix@ ++program_transform_name = @program_transform_name@ ++psdir = @psdir@ ++sbindir = @sbindir@ ++sharedstatedir = @sharedstatedir@ ++srcdir = @srcdir@ ++sysconfdir = @sysconfdir@ ++target_alias = @target_alias@ ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ + ++# $Id: Makefile.am,v 1.2 2001/09/24 18:03:05 skimo Exp $ + include_HEADERS = \ + fastcgi.h \ + fcgi_stdio.h \ +@@ -97,99 +180,130 @@ + fcgio.h \ + fcgios.h + +-subdir = include +-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +-CONFIG_HEADER = $(top_builddir)/fcgi_config.h +-CONFIG_CLEAN_FILES = +-DIST_SOURCES = +-HEADERS = $(include_HEADERS) +- +-DIST_COMMON = $(include_HEADERS) Makefile.am Makefile.in + all: all-am + + .SUFFIXES: ++$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) ++ @for dep in $?; do \ ++ case '$(am__configure_deps)' in \ ++ *$$dep*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ ++ && exit 0; \ ++ exit 1;; \ ++ esac; \ ++ done; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/Makefile'; \ ++ cd $(top_srcdir) && \ ++ $(AUTOMAKE) --gnu include/Makefile ++.PRECIOUS: Makefile ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ @case '$?' in \ ++ *config.status*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ ++ *) \ ++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ ++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ ++ esac; ++ ++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++ ++$(top_srcdir)/configure: $(am__configure_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(ACLOCAL_M4): $(am__aclocal_m4_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + + mostlyclean-libtool: + -rm -f *.lo + + clean-libtool: + -rm -rf .libs _libs +- +-distclean-libtool: +- -rm -f libtool +-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) +- cd $(top_srcdir) && \ +- $(AUTOMAKE) --foreign include/Makefile +-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +- cd $(top_builddir) && \ +- CONFIG_HEADERS= CONFIG_LINKS= \ +- CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status +-uninstall-info-am: + install-includeHEADERS: $(include_HEADERS) + @$(NORMAL_INSTALL) +- $(mkinstalldirs) $(DESTDIR)$(includedir) ++ test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)" + @list='$(include_HEADERS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ +- f="`echo $$p | sed -e 's|^.*/||'`"; \ +- echo " $(INSTALL_HEADER) $$d$$p $(DESTDIR)$(includedir)/$$f"; \ +- $(INSTALL_HEADER) $$d$$p $(DESTDIR)$(includedir)/$$f; \ ++ f=$(am__strip_dir) \ ++ echo " $(includeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(includedir)/$$f'"; \ ++ $(includeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(includedir)/$$f"; \ + done + + uninstall-includeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(include_HEADERS)'; for p in $$list; do \ +- f="`echo $$p | sed -e 's|^.*/||'`"; \ +- echo " rm -f $(DESTDIR)$(includedir)/$$f"; \ +- rm -f $(DESTDIR)$(includedir)/$$f; \ ++ f=$(am__strip_dir) \ ++ echo " rm -f '$(DESTDIR)$(includedir)/$$f'"; \ ++ rm -f "$(DESTDIR)$(includedir)/$$f"; \ + done + +-tags: TAGS +- + ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) +- list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ +- mkid -fID $$unique $(LISP) ++ mkid -fID $$unique ++tags: TAGS + + TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ +- list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ +- test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ +- || etags $(ETAGS_ARGS) $$tags $$unique $(LISP) ++ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ ++ test -n "$$unique" || unique=$$empty_fix; \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ $$tags $$unique; \ ++ fi ++ctags: CTAGS ++CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ++ $(TAGS_FILES) $(LISP) ++ tags=; \ ++ here=`pwd`; \ ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ++ unique=`for i in $$list; do \ ++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ++ done | \ ++ $(AWK) ' { files[$$0] = 1; } \ ++ END { for (i in files) print i; }'`; \ ++ test -z "$(CTAGS_ARGS)$$tags$$unique" \ ++ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ++ $$tags $$unique + + GTAGS: +- here=`CDPATH=: && cd $(top_builddir) && pwd` \ ++ here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + + distclean-tags: +- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH +- +-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +- +-top_distdir = .. +-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) ++ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + + distdir: $(DISTFILES) +- @for file in $(DISTFILES); do \ +- if test -f $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- $(mkinstalldirs) "$(distdir)/$$dir"; \ +- fi; \ ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ ++ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ +- cp -pR $$d/$$file $(distdir) \ +- || exit 1; \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ ++ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ++ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ ++ fi; \ ++ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ +@@ -199,10 +313,10 @@ + check-am: all-am + check: check-am + all-am: Makefile $(HEADERS) +- + installdirs: +- $(mkinstalldirs) $(DESTDIR)$(includedir) +- ++ for dir in "$(DESTDIR)$(includedir)"; do \ ++ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ ++ done + install: install-am + install-exec: install-exec-am + install-data: install-data-am +@@ -214,6 +328,7 @@ + installcheck: installcheck-am + install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ ++ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install + mostlyclean-generic: +@@ -221,7 +336,7 @@ + clean-generic: + + distclean-generic: +- -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* ++ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + + maintainer-clean-generic: + @echo "This command is intended for maintainers to use" +@@ -231,48 +346,69 @@ + clean-am: clean-generic clean-libtool mostlyclean-am + + distclean: distclean-am +- +-distclean-am: clean-am distclean-generic distclean-libtool \ +- distclean-tags ++ -rm -f Makefile ++distclean-am: clean-am distclean-generic distclean-tags + + dvi: dvi-am + + dvi-am: + ++html: html-am ++ + info: info-am + + info-am: + + install-data-am: install-includeHEADERS + ++install-dvi: install-dvi-am ++ + install-exec-am: + ++install-html: install-html-am ++ + install-info: install-info-am + + install-man: + ++install-pdf: install-pdf-am ++ ++install-ps: install-ps-am ++ + installcheck-am: + + maintainer-clean: maintainer-clean-am +- ++ -rm -f Makefile + maintainer-clean-am: distclean-am maintainer-clean-generic + + mostlyclean: mostlyclean-am + + mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +-uninstall-am: uninstall-includeHEADERS uninstall-info-am ++pdf: pdf-am ++ ++pdf-am: ++ ++ps: ps-am ++ ++ps-am: + +-.PHONY: GTAGS all all-am check check-am clean clean-generic \ +- clean-libtool distclean distclean-generic distclean-libtool \ +- distclean-tags distdir dvi dvi-am info info-am install \ +- install-am install-data install-data-am install-exec \ +- install-exec-am install-includeHEADERS install-info \ +- install-info-am install-man install-strip installcheck \ +- installcheck-am installdirs maintainer-clean \ +- maintainer-clean-generic mostlyclean mostlyclean-generic \ +- mostlyclean-libtool tags uninstall uninstall-am \ +- uninstall-includeHEADERS uninstall-info-am ++uninstall-am: uninstall-includeHEADERS ++ ++.MAKE: install-am install-strip ++ ++.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ ++ clean-libtool ctags distclean distclean-generic \ ++ distclean-libtool distclean-tags distdir dvi dvi-am html \ ++ html-am info info-am install install-am install-data \ ++ install-data-am install-dvi install-dvi-am install-exec \ ++ install-exec-am install-html install-html-am \ ++ install-includeHEADERS install-info install-info-am \ ++ install-man install-pdf install-pdf-am install-ps \ ++ install-ps-am install-strip installcheck installcheck-am \ ++ installdirs maintainer-clean maintainer-clean-generic \ ++ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ++ ps ps-am tags uninstall uninstall-am uninstall-includeHEADERS + + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. diff --git a/abs/core-testing/lighttpd/PKGBUILD b/abs/core-testing/lighttpd/PKGBUILD new file mode 100644 index 0000000..2c0132b --- /dev/null +++ b/abs/core-testing/lighttpd/PKGBUILD @@ -0,0 +1,71 @@ +# $Id: PKGBUILD 13948 2008-09-30 12:03:07Z douglas $ +# Maintainer: Pierre Schmitz + +pkgname=lighttpd +pkgver=1.4.20 +pkgrel=1 +pkgdesc='a secure, fast, compliant and very flexible web-server' +license=('custom') +arch=('i686' 'x86_64') +url="http://www.lighttpd.net/" +#depends=('pcre' 'openssl' 'zlib' 'bzip2' 'attr' 'libldap') +depends=('pcre' 'openssl' 'zlib' 'bzip2' 'attr' ) +makedepends=('fcgi' 'libmysqlclient' 'libxml2' 'e2fsprogs' 'sqlite3' 'gdbm' 'pkgconfig') +optdepends=('libxml2: mod_webdav' \ + 'e2fsprogs: mod_webdav' \ + 'lua: mod_cml/mod_magnet' \ + 'libmysqlclient: mod_mysql_vhost' \ + 'sqlite3: mod_webdav' \ + 'gdbm: mod_trigger_b4_dl' \ + ) +backup=('etc/lighttpd/lighttpd.conf' 'etc/logrotate.d/lighttpd') +options=('!libtool' 'emptydirs') +install='lighttpd.install' +source=("http://www.lighttpd.net/download/lighttpd-${pkgver}.tar.bz2" \ + 'lighttpd.rc.d' 'lighttpd.logrotate.d') + +md5sums=('ed6ee0bb714f393219a32768d86984d8' + 'bd690eee0d9e51857448770a151023b0' + '857e174643fd7761a2f0d8431a679f6c') + +build() { + cd $srcdir/$pkgname-$pkgver + ./configure --prefix=/usr \ + --libexecdir=/usr/lib/lighttpd/modules \ + --sysconfdir=/etc/lighttpd \ + --sharedstatedir=/usr/var \ + --localstatedir=/var \ + --libdir=/usr/lib/lighttpd \ + --includedir=/usr/include/lighttpd \ + --with-mysql --without-sqlite3 \ + --without-ldap \ + --with-attr \ + --with-openssl \ + --with-kerberos5 \ + --without-fam \ + --with-webdav-props \ + --with-webdav-locks \ + --with-gdbm \ + --with-memcache \ + --without-lua || return 1 + make || return 1 + make DESTDIR=$pkgdir install || return 1 + + install -D -m755 ../lighttpd.rc.d $pkgdir/etc/rc.d/lighttpd + install -D -m644 ../lighttpd.logrotate.d $pkgdir/etc/logrotate.d/lighttpd + install -d -m755 $pkgdir/var/run/lighttpd/ + install -d -m755 -o http -g http $pkgdir/var/log/lighttpd/ + + install -D -m644 doc/lighttpd.conf $pkgdir/etc/lighttpd/lighttpd.conf + + # set sane defaults + sed -e 's|/srv/www/htdocs/|/srv/http/|' \ + -e 's|/srv/www/|/srv/http/|' \ + -e 's|#server.username = "wwwrun"|server.username = "http"|' \ + -e 's|#server.groupname = "wwwrun"|server.groupname = "http"|' \ + -e 's|#server.pid-file = "/var/run/lighttpd.pid"|server.pid-file = "/var/run/lighttpd/lighttpd.pid"|' \ + -e 's|/usr/local/bin/php-cgi|/usr/bin/php-cgi|' \ + -i ${pkgdir}/etc/lighttpd/lighttpd.conf || return 1 + + install -D -m644 COPYING $pkgdir/usr/share/licenses/$pkgname/COPYING +} diff --git a/abs/core-testing/lighttpd/lighttpd.install b/abs/core-testing/lighttpd/lighttpd.install new file mode 100644 index 0000000..9d98d41 --- /dev/null +++ b/abs/core-testing/lighttpd/lighttpd.install @@ -0,0 +1,16 @@ +post_upgrade() { + if [ $(vercmp '1.4.19-1' $2) -ge 0 ]; then + echo ' + ==> New default DocumentRoot + + lighttpd uses /srv/http as default DocumentRoot. + You can still use your current DocumentRoot + + ==> New default user and group + + Instead of "nobody" lighttpd runs as user/group "http" by default now. You might + want to adjust your lighttpd.conf according to this change. But you can still + run lighttpd as nobody. + ' + fi +} diff --git a/abs/core-testing/lighttpd/lighttpd.logrotate.d b/abs/core-testing/lighttpd/lighttpd.logrotate.d new file mode 100644 index 0000000..15cacc9 --- /dev/null +++ b/abs/core-testing/lighttpd/lighttpd.logrotate.d @@ -0,0 +1,5 @@ +/var/log/lighttpd/*log { + postrotate + /bin/kill -HUP `cat /var/run/lighttpd/lighttpd.pid 2>/dev/null` 2> /dev/null || true + endscript +} diff --git a/abs/core-testing/lighttpd/lighttpd.rc.d b/abs/core-testing/lighttpd/lighttpd.rc.d new file mode 100644 index 0000000..97c315f --- /dev/null +++ b/abs/core-testing/lighttpd/lighttpd.rc.d @@ -0,0 +1,38 @@ +#!/bin/bash + +# general config +. /etc/rc.conf +. /etc/rc.d/functions + +PID=`pidof -o %PPID /usr/sbin/lighttpd` + +case "$1" in + start) + stat_busy "Starting lighttpd Daemon" + [ -z "$PID" ] && /usr/sbin/lighttpd -f /etc/lighttpd/lighttpd.conf 2>&1 + if [ $? -gt 0 ]; then + stat_fail + else + add_daemon lighttpd + stat_done + fi + ;; + stop) + stat_busy "Stopping lighttpd Daemon" + [ ! -z "$PID" ] && kill $PID &>/dev/null + if [ $? -gt 0 ]; then + stat_fail + else + rm_daemon lighttpd + rm -f /var/run/lighttpd/lighttpd.pid + stat_done + fi + ;; + restart) + $0 stop + sleep 1 + $0 start + ;; + *) + echo "usage: $0 {start|stop|restart}" +esac diff --git a/abs/core-testing/local-website/PKGBUILD b/abs/core-testing/local-website/PKGBUILD new file mode 100644 index 0000000..fd5f2f6 --- /dev/null +++ b/abs/core-testing/local-website/PKGBUILD @@ -0,0 +1,21 @@ +pkgname=local-website +pkgver=2 +pkgrel=1 +pkgdesc="Contents of http://localhost" +arch=(i686 x86_64) +license=('GPL') +url="http://localhost" +#install=filesystem.install +depends=('lighttpd') +source=() + +build() +{ + cd $startdir/pkg + mkdir -p srv/http + cp -rp $startdir/htdocs/* $startdir/pkg/srv/http + chown -R http:users $startdir/pkg/srv/http + chmod -R 655 $startdir/pkg/srv/http + +} + diff --git a/abs/core-testing/local-website/htdocs/KnoppMyth.css b/abs/core-testing/local-website/htdocs/KnoppMyth.css new file mode 100644 index 0000000..7c5c8cf --- /dev/null +++ b/abs/core-testing/local-website/htdocs/KnoppMyth.css @@ -0,0 +1,24 @@ +/* KnoppMyth Style Sheet */ + .headerimage { + border: thin solid #000000; + font-size: 18px; + background-color: #000080; + color: #FFFFFF; + } + table { + width: 725px; + text-align: left; + margin-left: auto; + margin-right: auto; + } + td { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 13px; + border: thin solid #000000; + background-color: #CCCCCC; + color: #000000; + } + a, a:link, a:active, a:visited, a:hover { + font-size: 16px; + } +/* End of KnoppMyth Style Sheet */ diff --git a/abs/core-testing/local-website/htdocs/favicon.ico b/abs/core-testing/local-website/htdocs/favicon.ico new file mode 100644 index 0000000..6a99443 Binary files /dev/null and b/abs/core-testing/local-website/htdocs/favicon.ico differ diff --git a/abs/core-testing/local-website/htdocs/header.png b/abs/core-testing/local-website/htdocs/header.png new file mode 100644 index 0000000..55beba6 Binary files /dev/null and b/abs/core-testing/local-website/htdocs/header.png differ diff --git a/abs/core-testing/local-website/htdocs/index.html b/abs/core-testing/local-website/htdocs/index.html new file mode 100644 index 0000000..0184380 --- /dev/null +++ b/abs/core-testing/local-website/htdocs/index.html @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + KnoppMyth R5.5 + + + + + +

+ Tux with a Remote +

+ + + + + + + + + + + + + + + + + + +
+ +

KnoppMyth R5.5

+ + +

MythWeb:
+ +     The MythWeb allows you to use a web page to control + aspects of your MythTV system. MythWeb is a separate application, + but it is dependent upon MythTV being installed and operational." +

+ + +

MythTV Web Virtual Remote:
+ +     A web based virtual remote control for MythTV. +  In order for this to work, you must enable + "Network Remote Control interface".   See: + Utilities/Setup -> Setup -> General -> Fourth Page. +

+ + +

MythTV Documentation:
+ +     The MythTV Installation / User's Guide. +

+ + +

MythTV Keybindings:
+ +     The keybindings for the normal MythTV interface. +

+ + +

LinHES:
+ +     Describes how "The Project Leader" setup multiple systems + to form a Linux Home Entertainment System. +

+ + +

My Folding Status:
+ +     Status of the folding@home work for the local user. +

+ + +

Folding@home:
+ +     KnoppMyth Team status for the folding@home effort. +

+ + +

iPod Feeds
+ +     Transcodes ready for the ipod (if any).

+XviD Feed dir
+     Any programs you transcodes to XviD.

+

FUPPES
+    FUPPES - Free UPnP Entertainment Service.  A +UPnP to be used inplace of the UPnP server that comes with MythTV. + If the UPnP that comes with MythTV doesn't work for you, you can +try FUPPES.  Edit /etc/init.d/mythtv-backend, comment +EXTRA_ARGS="" and uncomment #EXTRA_ARGS="--noupnp".  Then restart +the backend and start FUPPES.

+

/etc/init.d/mythtv-backend restart
+/etc/init.d/fuppes start

+

If you want FUPPES to start on boot:

+

update-rc.d fuppes defaults 80

+

+ + +

Motion:
+ +     Motion is a software motion detector. The configuration file for + motion is /etc/motion/motion.conf. All you should have to do is edit + "videodevice" to point to your webcam or capture device. You'll also + need to change the IP in /var/www/motion/index.html to the IP of your + backend. +
+ + For further detail on configuring Motion, please read the + Motion Guide. +
+ +     As root: /etc/init.d/motion start will start motion. + To have it start automatically, update-rc.d motion defaults 80. + Images and video are stored in /myth/motion. + Symlinks to /myth/gallery and /myth/video exist.
+ +     Hover on the left side of the video feed in your web browser. +

+ + +

RRDTool:
+ +     Hardware status graphs. +

+ + +

VLC HTTP Interface:
+ +     Web interface for VideoLan Client. +

+ + Tip: +  If you seem to be stuck in a + loop when trying to select a video to stream from MythWeb + (MythStreamTV), go back to the main + MythWeb page and select  "StreamTV" again. + +

KnoppMyth Radio:
+ +     Your music must be encoded as MP3 in MythMusic for this to work.

+ +
+ + + diff --git a/abs/core-testing/local-website/htdocs/layout.css b/abs/core-testing/local-website/htdocs/layout.css new file mode 100644 index 0000000..a91a651 --- /dev/null +++ b/abs/core-testing/local-website/htdocs/layout.css @@ -0,0 +1,29 @@ +/* Layout Stylesheet - Colors taken from MythWeb - arranged by md10md*/ + +.style2 {color: #FFFFFF} +.style3 {color: #FFFFFF} +.header { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 10px; + background-color: #CCCCCC; + border: solid thin #000000; +} +a, a:link { color: #E0E0FF; text-decoration: none; font-size: 14px; } +a:active { color: #990033; text-decoration: none; font-size: 14px; } +a:visited { color: #E0E0FF; text-decoration: none; font-size: 14px; } +a:hover { color: #F0F000; text-decoration: underline; font-size: 14px; } +body,td,th { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 10px; + background-color: #002650; +} +td,th { + border: thin solid #000000; + background-color: #265990; +} +.headerimage { + background-color: #335555; + border: solid thin #000000; + font-size: 18px; + color: #FFFFFF; +} diff --git a/abs/core-testing/local-website/htdocs/linhes.html b/abs/core-testing/local-website/htdocs/linhes.html new file mode 100644 index 0000000..6cfebeb --- /dev/null +++ b/abs/core-testing/local-website/htdocs/linhes.html @@ -0,0 +1,392 @@ + + + + + + + + + + My Settop Box + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
LinHES
+ + + Linux Home +Entertainment System
+ + +
+ + +
+ + +
Introduction:
+ + +
+ + +     LinHES is what I called my home entertainment +system.  LinHES is of course based on KnoppMyth, but the setup I +describe can be accomplished with any Linux distro and MythTV.  My +setup consists of a master and slave backend.  My master backend is +in my bedroom and it is used to store all recorded programs.  My +slave backend is in my living room.  It's primary function is to +entertainment visitors.  Both backends are hooked up to a TV via, +TV out(SVIDEO).  SBE is also hooked to a Kenwood receiver w/ +surround(works w/o additional tweaking!). NFS is used to share the files +between the systems.
+ + +
+ + +MBE hardware:
+ + +Chaintech 7NIF2 w/ Athlon XP 2400+
+ + +512 megabytes of RAM
+ + +120 gigabyte hard drive
+ + + Hauppauge +PVR 350
+ + + Hauppauge +PVR 250
+ + +DVD-ROM drive
+ + +
+ + +SBE hardware:
+ + +Asus A7N266 w/ Athlon XP 1800+
+ + +512 megabytes of RAM
+ + +160 gigabyte hard drive
+ + +nVidia Geforce 4-440mx w/ TV out
+ + +Hauppauge WinTV model 401
+ + +AverMedia M179
+ + +DVD-ROM drive
+ + +2 Logitech Wingman Wireless rumblepad
+ + + RadioShack +15-2116 universal remote
+ + +
+ + + Installation:
+ + +
+ + +     I performed an auto install on MBE, while SBE +was installed manual (I wanted /cache no larger than 5 gigs).  Both +systems installed w/o issue all hardware was seen and worked w/o +additional configuration.  MBE was recently changed to R5 +Alpha(auto upgrade and not ready +for the average user), while SBE is running R4V3.  Both are of +course running MythTV 0.15.1.
+ + +
+ + + Customization:
+ + +
+ + +MBE:
+ + +/etc/hosts:
+ + +127.0.0.1       mbe.mysettopbox.tv +localhost
+ + +192.168.1.91 sbe
+ + +
+ + +Added the following to /etc/fstab:
+ + + sbe:/myth /mnt/sbe nfs rsize=8192,wsize=8192,soft,nfsvers=3
+ + +
+ + +/etc/exports:
+ + +/myth   *(rw)
+ + +update-rc.d nfs-kernel-server defaults
+ + +
+ + +Made a directory under /mnt called sbe and symlinked music and video to +sbe/music and sbe/video.
+ + +mkdir /mnt/sbe
+ + +cd /mnt
+ + +ln -s sbe/music music(Setup-Music Settings-General Settings, change the +directory to hold music to /mnt/music)
+ + +ln -s sbe/video video(Setup-Video Settings-General Settings change +directory to hold videos to /mnt/video)
+ + +
+ + +Ran mythtv-setup and change both IPs from 127.0.0.1 to my actual +IP.  Modified /etc/mysql/my.cnf, commented bind-address and +restarted mysql.  Finally as the user mythtv:
+ + +cd ~/.mythtv
+ + +rm -fr MythVideo
+ + +ln -s /mnt/sbe/image_cache/MythVideo/ MythVideo
+ + +
+ + +
+ + +SBE:
+ + +/etc/hosts
+ + +127.0.0.1       localhost
+ + +192.168.1.91 sbe.mysettopbox.tv sbe
+ + +192.168.1.92 mbe.mysettopbox.tv mbe
+ + +
+ + +Added the following to /etc/fstab:
+ + + mbe:/myth /mnt/mbe nfs rsize=8192,wsize=8192,soft,nfsvers=3
+ + +
+ + +
/etc/exports:
+ + +/myth   *(rw)
+ + +update-rc.d nfs-kernel-server defaults
+ + +update-rc.d -f mysql remove
+ + +update-rc.d -f apache remove
+ + +rm -fr /etc/cron.daily/mythtv-backend
+ + +
+ + +Made a directory under /mnt called mbe and symlinked tv to mbe/tv, +music is symlinked to /myth/music and video is symlinked to /myth/video.
+ + +mkdir /mnt/mbe
+ + +cd /mnt
+ + +ln -s mbe/tv tv(mythtv-setup 2nd screen, directory to hold  +recordings, change to /mnt/tv)
+ + +
+ + +Run mythtv-setup and change the first IP to the IP for SBE and the +second to MBE's IP.  Configure capture cards and bind input to +source(configured during MBE setup).  Finally as the user mythtv:
+ + +cd ~/.mythtv
+ + +rm -fr MythVideo
+ + +ln -s /myth/image_cache/MythVideo/ MythVideo
+ + +vi mysql.txt
+ + +
+ + +DBHostName=mbe
+ + +DBUserName=mythtv
+ + +DBPassword=mythtv
+ + +DBName=mythconverg
+ + +LocalHostName=sbe
+ + +
+ + +At this point, one can reboot boot systems or:
+ + +MBE:/etc/init.d/nfs-kernel-server start
+ + +SBE:/etc/init.d/nfs-kernel-server start
+ + +MBE:mount /mnt/sbe
+ + +SBE:mount /mnt/mbe
+ + +M/SBE:/etc/init.d/mythtv-backend restart
+ + +
+ +Tips  :
+ + +
+ + +     In Setup-TV Settings-Playback-2nd screen, +"Action on playback exit", set this to "Save position on exit".  +This way you can migrate watching a recorded show from one system to the +next.
+ + +
+ + +
+ + +
+ + +
+ + + + diff --git a/abs/core-testing/local-website/htdocs/mythtv-doc/BlockDiagramofavideocapturedevice.eps b/abs/core-testing/local-website/htdocs/mythtv-doc/BlockDiagramofavideocapturedevice.eps new file mode 100644 index 0000000..ce5d92d --- /dev/null +++ b/abs/core-testing/local-website/htdocs/mythtv-doc/BlockDiagramofavideocapturedevice.eps @@ -0,0 +1,331 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: jpeg2ps V1.9 by Thomas Merz +%%Title: Block Diagram of a video capture device.jpg +%%CreationDate: Fri Jan 5 11:03:30 2007 +%%BoundingBox: 20 20 336 229 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%EndComments +%%BeginProlog +%%EndProlog +%%Page: 1 1 +/languagelevel where {pop languagelevel 2 lt}{true} ifelse { + (JPEG file 'Block Diagram of a video capture device.jpg' needs PostScript Level 2!\n) dup print flush + /Helvetica findfont 20 scalefont setfont 100 100 moveto show showpage stop +} if +save +/RawData currentfile /ASCII85Decode filter def +/Data RawData << >> /DCTDecode filter def +20 20 translate +315.75 208.50 scale +/DeviceRGB setcolorspace +{ << /ImageType 1 + /Width 421 + /Height 278 + /ImageMatrix [ 421 0 0 -278 0 278 ] + /DataSource Data + /BitsPerComponent 8 + /Decode [0 1 0 1 0 1] + >> image + Data closefile + RawData flushfile + showpage + restore +} exec +s4IA0!"_al8O`[\!;#6tJ?#m^kH'FbHY$Odmc'+Yc +t)BU"@)B9_>,VCGe+tOrY*%3`p/2/e81c-:%3B]>W4>&EH1B6)/6NIK"#n.1M(_$ +ok1*IV\1,:U?1,:U?1,:U?1,:U?1,:U?1,:U?1,:U?1,:U?1,:U?1,:U?1,:U?1, +:U?1,AmF!"fJ;('166!?qLF&HMtG!WU(<*rl9A"T\W)!10ZOeE%*6F"? +A;UOtZ1LbBV#mqFa(`=5<-7:2j.Ps"@2`NfY6UX@47n?3D;cHat='/U/@q9._B4u +!oF*)PJGBeCZK7nr5LPUeEP*;,qQC!u,R\HRQV5C/hWN*81['d?O\@K2f_o0O6a2 +lBFdaQ^rf%8R-g>V&OjQ5OekiqC&o(2MHp@n@XqZ"J6*ru?D!%;)SAnPdkC3+K>G'A1VH@gd&KnbA=M2II[Pa.Q$R$jD;USO``Vl6SpZEp +pG[^WcW]#)A'`Q#s>ai`&\eCE.%f\,!*&r5LsX.H +iF)';PoSYrr?V$\g0`%m"mprkK1^\N)0aVU%jYs?@01kK'q4Tc'8X^au^D;2"Mnc>eq3cQ]H+_ESK +E;3(jbBl5bsg$W:#F!tmfK+t*oIVn6K\t%fL!;1*iXZU0mh:si!hY%57kLa1PRN+ +h=0P=9.+HeuE[RgI=mp))X\i$&AK^LreGk9a+P3fg8FOD,OG(km9+O;;EVfrt**V +!9QBUUb=+,=_]Kd0__8N\c?b.qg+>_!.+#Mi^7Vut\NY9:M::#PD[`&AL<8)h^=X ++Z=hb6];ZALeHC\]3&!%Cj:[5..).Dkc.ThD0Ql?Sk[6X>38Bl(]$)[R+Mc#DV"p +O7&'85Wq<9U@CF<2i?beij>=qL*&F4>Ts!?W&`siFZ@E/;.s.(`*NPpoj)C$k=mr +h0$=Y76t)IFldi`08)cU+%bZ*4D&*;<)s5`>-'%W)`X)hj5;14?&J-\,rQ5-68u? +`80s(m0c2Rc=2Wj>Kg3AZt>j&"`d_,;:9X+%6V;l?\M.X8T#iV)gP'79?2QFV^!. +YpUF6l'U4r07TVUJU4k3EZT1gIi?8M])]N"5"kZ1q-#Y>JUliQ//H\F@51D0;[DF ++#5=kDrK3id:>H9T(0F?8i?h8\u'uMEEtt6iR,l=,&h+k1ot:CE6.eRcN6aArWsP +7PY:ic)2EChlQm)r>"B,l&abHDoUMTZJ>H[B^*+1gK@:\%Lp.hXo]$i%-K`n%P$( +gNLm&Lpl197;otn@`iV.oWB:K'`]`7r)CZr%K=I&-^cYEuWmOrj'V9*D#O%Kj&i? +pf@0=UrSg%2$VchbM2u;39JPi&0r59#8I;./ERXN/QfdF&5QJ6\ +7-/hm!`0*mD0q=DJl>#,h!D6'.9UAU^6;9Mgmun].=p6YlULQ0L%tq=i!;K)B4^. +OeCY-1e.:QG^Q&W=FeNR"ojR!0s(!onrMfSMM$YJqLFCS_eaLd^E+"8GEc6r_f(@ +^-Fn6A=#d)\,XE[YL-kX".T]MZcY6Lh*EbI*Ie<0!=jd^e\9&^((hZILP%&PY.MV +6nW@11Fn,NYt[n!49A.I77MRe0f/H=m:+!:>":_nX*s">cK4EApfa.)c-^ZFR'lZ +jGjTuG`kK$lB*QN:qJt8%R;!7l,=gpC^dc#Rk&D4eTT]VPduHW(dj@K@u`%h'ELh +\7agYlA\GM#CuDmk5%O1KWpcOi?nuIrYd95@4)""(80_O,'#k!R"1SmsJ90"aH)h +WU"b3aZLhDM0OEjn9bqaQSCk]Hd)!%:aW2J&8];t/aXu+lnD^-)lM',i]IZ-`b?( +uioJd?4$81ih](h4L_37KFVoDih[8gp>6MC>,!MC>,!MC>,!MC>,!MC>,!MC>,!M +C>,!MC>,!MC>,!MC>,!MC>,!MC>,!MC>,!MC>,!MC>,!MC>,!MC>,!MC>,!MC>,! +MC>,!MC>,!MC>,.3q9o-4rTd4\8`:PW9Q8W"jc"^Gj_7Yrr@I:]=tP\mp0:Tm:I, +tC3PfIGM88ZU-rn(-8?Kin.YjEp5:!b=3!5gguoODcOrjBg:D7Wl]KHQ+T@%T`k" +bB.&)S!.&)S!.&)S!.&)S!.&)S!.&)S!.&)S!.&)S!.&)S!.&)S!.&)S!.&)S!.& +)S!.&)S!.&)S!.&)S!.&)S!.&)S!.&)S!.&)S!.&)S!.&)S!.&)S!.&)S!.&)S!. +&)S!kPSpYkZ6c+!7c2N8cJdofP@.YDQRdED4]JLhCFC-(jMlBlGMBu%:]>;_CV"& +2MnBhBmAkL5FZT`nt.'qZ>H6EJr8ajhr64LMsW,;8g437/bIZIrr>t+LQB:(qc0[ +-''VHBa4Xn5&`."Edbu)^JG&Kg#04G45T8-L70"$!70"$!70"$!70"$!70"$!70" +$!70"$!70"$!70"$!70"$!70"$!70"$!70"$!70"$!70"$!70"$!70"$!70"$!70 +"$!70"$!70"$!70"$!<9D_ImI+*$8P$@.Qp?UO]Wb^p+2I'l.6Rh7>b\R-2;L%>> +-u]?]2[94eXdV$P#q]U3Q;:keFSVMC8J)\,'ZjX)I][6I+HU*9Ul&LB.10oKMq_ZLs7il$90,jgm^pQ4@#nH-(4L8CX/R_k`I/7>t:riP +"*GgED!ucMk`3FT-BAEaosND5etp:VlTI+&^AUTFQR2kPkP@+MY/@=jZSG;: +amFS%-3Z!^ZhdHsh9OVOac%g:Sb<3qhFp']G!K#24J2m!Xin>b[*(!2>?!!2>?!! +2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?! +!2>?!!2>?!!2>?!!3GM"#>;e\@FQp2UR(<\L,iHu?%eL@M`9g&1le9WOgBcZ3&mQ +A*n7(;p!hRj8#L$eQVSXgEbSU;aUgjteVH1cE9'%NZ3'S:Ffp7$rrBo?j*N2Voiq +35Mld"5eiQNjLpIt<#qBs$#FljQ4Y^6uQ'JeKAIY3#.1Np>&ie6G-l#NQnEuF7bo +F/-&R2neQk6-D=Nd$\4gu&;"4++:jj^L3$ubU<-_;jE6JTj=*]A!SS>o?43?\AM^ +H&CjooBdDBp8=H.'KDU9@j5ZF_IMUN%CefQ\;RC?u71e`16"eH@=+ooP;WP/Zpqo +A;1JH\VWlSP-JUM4UE[sSO3;enGJ`ceQYYT2hjUQHlOtqUQs-QgjS0n,6m7W5@?.9N*Um6m7?DCJK`ekPkOg2=3Jr2cs;:LJ*%m14G-:!5n*Ek)] +:/T$*+38\EOBeoY9+>Q&cC8rn0rY(DN2Y@W,pW7roKNRSau2r0c;"0)2g'k4H:Hn +V;PgpQ%mNOA(p]!INlPl4_j/3TIIg8k19`4BkF\+\O_,Q:hQVire4rJYSX6Qb>R* +HH=o`sb +;*Y]L>c!^MpJM2E$uI3ml9H6InuN49IpTapL?:,t'-,*!/oTbT"Cu\X?$lQ>m8*_ +p-3!tl%2ocTMqVhBH:@i6TF(\Frn$ZVrm]X0DZF`!:kS'n?.A#!9a +@^[JWJn!(+I":WNGKIr"h;re5k"T9&n#TV?rsrrDG9&V&02rrA8Qrr@`pgAW;r!2 +3d"!%6h,!".p)Jr0QkrrBJ)7K3?S^]%$LrY0itpl#-*J,Gq"r%"G7 +J3!W0m=,^td'*HLPO\YQKcf%J,6%Y:?iL*Rj8T)dkU<)6J,lK!9F'-iCEU +VLqi.TrrC19rrBpI$7H"Krn$ZVrm]X0DZF`!:kS'n?.A#!9WIrFo- +N2-^2FQA85DTIigp2HWK6^g1hOK[HqYNQOtLCXjdOTN;dr@XoAADC[_,oPQ(VK2. ++7.ng`lGp#Q_`J1(LtMC>,!MC>,!MC>,!MC>,!MC>,!MC>,!MC>,!MC>,!MC>,!M +C>,!MC>,!MC>,!MC>,!MC>,"W55Pq]HsDBT&R_#ddEXnBsd[uS]B9FI#`^5;d5J_ +#=#]9qJY2:4_=`JrrCHL1%cDS5Cs5aIP0)ZO^ZbjI3Nho$)jbfV"tAu0sUFQ-F]t +[7Ztd=aGT3!"^#:ImO/1*]^\IPX'>@_8@,s#0=:Uh'?-P^A'X&u3Pcr6r$u8CrrA +1.9`G*r8AFct?;R6s/bCJFp%7bplJ='j8k#O)!Z\0c2Z2GUjC?WO?U=\lOaBe%!3 +\r.oDq2pqM1'C5GdXDC"HFh[r;L+`g5&pZZ+"-.Anm4&=uE^ptm29,pk6@;5lMg0(qQQ^1hWIA@]O-4[?/,89keWf@N57BY?XEj)R +9h/06mbqhQ95?R_$@,'!'?8F`S@3M'5TTQ^j3J0MRZ)QAS#L]-;?Bi\M&/,h4L0O +b=%?Bh9)+KR5PE=49AAh/7@\BKm`=_)LrM7IpK?]U&P,>"TW:772,`!72,`!72,`!72,`!72,`!72,`!72,`!72,`!72,`!7 +2,`!72,`!72,`!72,`!72,`!72,`!72,cpYCFX,WW)tMUqca,UI"n[OaBe%!3\r. +oDqFprr=8:VuHa'P5bOG#)rle7I;o1]d!IVcijDBDl-[kl5,fV^_5r(BA+WQq=Y4 +M*Y&nO[kY?mTL-.)Z4<7L(0@3R)5C?$BQeGfO7dU2q +Qd@gL>aM"I#f;)dM!2Em#!0MV,rrB5oJ+Nh4KDtoqp6kp\?BKa$!e<:X%6DhR5!8 +?clSb('LJMS8XWY,>,/Y?f*3`[$oG8:K0hl;mWCAL)i#ZB +ANQ"C=qr(= +OM((u@ooshDVR2RqriXNM7.\Ke`!2#U@.quA;G4>uefm/%pQAoPo,A+ +rq21O3Y.gJufU1,`;$`44p^)nT=jVREWl5ZQ--r$N-`DmD&f< +!K2$Y:D-dalWRtV48hZEP1qp=p;H)"Z^Eq;fk*LOnqQ=gHDN!Gk.1!RY:\n%XGD! +l(f\2D`?K5g!A["!Fb.Y8#Fp-B8tH?qq_d9#J#H"iFZaj\l39ZjDia='_X%WBiHF +7F_9F.m7@`As9De&0bI`V5VO$@3)R8iTHti_]:nZu2)*'h+#:45jl@'\\nNGZo&D +TDI+o<5d/L51r1;l,5XBCc@n:@/lo3EGlHpajhl]^S";Fu:S/c>D4NghVl(bc.P< +u<\Rd^Ae2:GsCp7+QOF@.&*s74A--lV0-2 +MS^$97(/&rhgaVh0SWdgLou`^'gnKq%FCpLOoGEg-X<50fJj!&X`*u$oM=m^J)JK4rrA'Vi/d[J +/:[&bretU@eMV+O(?H>lOfob!4h +md6G0irr@[%TDgiOZu6WArZGp=9t_1_#R3hf)EAKQKVO(M5.JRI:^95b!!lnfrQF +[-)-m1An]F)T$dh2LIK';"/"cf$>.S=DB<5h;?g70=m:FSb!$aHK*Y1D"U;p3=eG +dqj3Q/[ESZSd),@l^lbKm%S!+gYs(SZD"qu6X#=$QV'O8)'6:[VS>i6(6_!01,H> +dgEt+2W=mr74s'Y_M-Ro%a]eS2[<3i;ODkBDrIU'Dn-RpbKD[!99;n_AAqrEr5k: +#$4%eEi%0r?_M^rE<_h[-]k)o'ZB7$;?8"]*=ED'[%C1&O&:g2BntF(NMT0r,j\D +0A*>\`F4W5LOoGCe?A\X(n,+&.rrDT35N*!t5Il4B!.ueor]+#eT+^Ae+#'joGTi +5X9Q;O=No4Cm.KXQE3QHHPV/#jU[ph!IgSD?0Z!GQ'=EO`f62!Ff#&!iWH7/G?^[ +PfUrrC(frr@^*7/lrZpuQD<1fj+f1t!Xh7]"qsJ5oE$8LL/G"jWlWBr4J$9 +e[?&`TK(N()nuun]Bh>J22W5$dh2LIK';"/"cf$8,ONV-hf:/n7?\@!66TMIO]Ro +T4$6$DE.MMg#o:&=(=K8rrDs?H7/G?^[PfUrrC(frr@^*7/lrZpuQT3:^95 +b!!lnfrQF[-)-m1An]F)T$dh2LIK';"/"cf$f2Y'UrrDs?H7/G?^[PfUrrC(frr@^*7/lrZpuQT3:^7H1G[F.Rf5 +qCFNV^V8E@OYsg,C*5&A%u;rBNT$D#XLP(SZD"qu6X#=$QV'NH>(g?OVG9gu%s(- +$0h%ci4!^(SZD"qu6X#=$QV'O8)'6:[VS>i6(6_!01,H70%E/!:Y^+TA70\!5XrH +rr=%6rXcaVqj6481:dDbj-@tg5TKe(r#pA6pFj;NATRkOa"&CR4ohn'n?/a)VT!Z +/dp"ju,h-HW]T+`baN)lDH7/m5Hp@*Ee&/aseuc&h10nWKgIUkRC@*!XYu`"4 +H:-\/`^$hPE$J:GUF@U]kL>B4&cWYS.;IJR.*Hm8KTCTFWeCYG(27G=]6EJsq<3`@93Jge:1i/Ju$2C\\]l&Wi74S&8lEVrbpDtm +$JbS=6o`V.Epq0B%`pUMWl\AWIo*eHjQGi=p,G>RlD?PQ3Li##7oTciVT` +'ED!!'ED!!'ED!!'ED!!'EM!1rrA-b7KQh(gZ]oWtQR)UiaE1k.A;__R_(U[j'8:1N^5VH'tOD=.bbGa +X)3pB,oHK56Q4S`d:j]YWcp!LUME:Oj#'P0SPn]>S8rT&#U*BkM@/ +=hJGam3DKEQjaV'QR4L"69b.f:3tuI;e"8L.smc102>0aC-F)\=dmUqN`)hnD2Ra +H;GK7*M$=b#Y_>?XdYVeC%m(8#I*$"(oARG$Fdl'?K=R,A"eWNUF09grGo\ +4!%tP2\/e)e;=$DESF/F5AcA@bOV7&QN"9LAcKAiamc/FX;0/csQCkmD?\[`Tt +I0OXRJ>fPs-_b>EhF.U.iHZN/E77GN4H\Q]Kq+@9"S&"'=7j`qdmql\Yd'#'CBu+ +@0$Ua9:KAb8TFQ0ArrA4aY5\LS.a.hl7Sd,F=#uWH!/GqjicWlAD!pr=Mm^%'7Ss +;(!tZ)9cOO/t,kLVd@uBmqo]o&U3OKQS$b>7fA="YpLfgUr:('#D=dNG)cnBMH^: +;XWk)n4d=3PY(Y.Y_5#@j>1/.Y$3*6ji)]MIN-I;UpsrAklgXX/]0Bsr9r,U&()+ +#(bu*]iA.FZpDf/iCBLBf_g5JN_8`8E:0`,^nY8=OWi/Fl@L5OLNTH.aQY4qk+Lccm3?l:nC +\eM!8o^V)J`BF(\$S%"kjp?:9!(F4kY(+O9iK*j4S,WI[jK=)b3WB*S9_=VM!*pYFDL;3Uj6E1$tK$tkhLV2ZeN:p'eEL84f60YjLdCo)\_P&!9`3h2 +sS*TotHil?!lF%bA14OBjVb3M?tXP5\hJ@&A8s2eI=k&g>>l?Lk"HJ$H)D#KW^f\ +]"C()UTNd/qR_OdQ/ILiJl5/D3$3r:U'?\Iq3+`F&;8M>RV.nT>>3 +]-c?Dqi7"etM%s@`Vo=$sJ@>Tl0!Ub*e6AW=6=<*B+)HH +=%-VK?DSR>AjpTM;c4Z\%K3!RQ$3R45W[(?9%-UPV6u[]f!?<@ +L=-E"!$lSJ#j8*C?i,=Gqf&kXC1fIiAD.cSo6,D51Q5it-_Y@do_BDY8p +QGjMhT36`^b7cA?)V![K,ZtC@"9Qa7a4\*DUSe-IKFhH5s.;..p$lNT=)5Un/7bS ++EU4>>+h+#jg=;pU9&>!FAN0$g!*8st[;c]s@c+V])iQho,Nq6MgRca3BZBe^/,[ +Vf4R""E6&!WtcK:eCk1maZ/M)>h2buWa!mH"i>FfiOg.nPj +([W"sb468a%"Gnp@!_f/!P(W5:]X!!:]X!!:]X!!:]X!!:^'!dr]o)mp$X:-Jni& +T^Z8DC5O6H6r;]iW>Q-n>ht?Fcrdnn"L;2eLdQd'?+8l19#,N#25TKe(Jj8m?WrrA1.9`G*r8AFct5SUVU#A>%;o%r9giU55SH1 +=Ms3F>+o^le;l4ZcEFdVNBuYdTSKg*)-00n;D_\L3PeeZ(#!L9%(`g>"ALWEQ.BE +(mUXYFGi&i:5Eui:5&bFf/DLgfdKn#a/CP9[GL>CiZ@nq(WlceZ(#"!-g$3bBtrI +R\EfP>bD]n`0;rmlC$A-8BDt_o:4mihKUiop\KQ0f/drbd^m*/b]+WH^N@+rluFd +Dn3&:JM?(WG4=?k=2eM@ObC%Nc3?9Djr6u^?IACd$Sf8o<>4G$$&>V#"Z,IW86pZ +?rDu^!5VpRa5'N%+!'N%+!'N%+!'N%+!'N%+0ol'X.?[p\?TDAkorYke:O]P*R!3 +[f#oDquMDtsKBJ(M?*q?a2$)ZKf"=%N>kY:+nm!C.Qf;+1I!;+1I!;+1I!;+1I!; ++1I?8YUuYRjocFL"sISi1<.5:Z-!$eu>S"g+D.:rN3c>j)!/fW/[B<(n=T3G7Gn,(B2J!iSH"qL1W"HZSiVEM$?=$aTM=*$KJOt&F*=X:Q"d;S*BCDS&=gR76 +T4nCuc%gKEWN>U_%U.`6\anDI'l`%Cj])`[R!F(!HtH&u;bQToqt!19`nI,H.asD +Y;g$rr>`seFa)#U"*P=2Fdb.m*[.Jr`00i63@^Ck]>IgSIrCk(p#U](gC$\-M-a8Z#EkB),Z<&!!0kjVcaUTOKi +=-d(AD32P<#l[icNn0%PaQQ?.l$b4onC=,,"lZ_=;q*ouFW.[;j_`rW("nLf/'n= +54,6E.m_@]bn@/>rCk(p#U](gC$\-M-a8Z#EkH01WaSL&Gc7CUJ!4+25dPNRdS0ft&WH"/hiSF'>P\dXZ`H(YY6rX`uUJ'\D?rr!0gi_%"6;@@?^]FH!,_bQ0.25POA=rr<<`KtlgRA,c +OXKk/n^Y?b7PI8a%JZ&_N-jb>1XL/r$UbeNGdPOc1Z%P`q:`H+T^4p6MYS*"R4h5 +oaLS^-;3NJ8Ec"Z@C5H=V?K#C$1J#WIIPkQ>>p!.KVDn:PsirdZmkpZP[E70%E/! +:YVc>Q0.25POA=rr<<`KtlgRA,cOXKle#*#&U4>7di,'k=*d\Zcn`HEb\WZogc-&e6'Rfc7N!o\?#'f4YF*I +pb]6i4LYOsEVmqc?,SlqpqZqNd$!C0O;`W5:FP?h0&!RKEn6H[UD/nDT.]Qdn!/O +e1*`NhE*-NfM3)k/F1N786nCBuN!f^(9!)[WnK;.gWg[&PBr7n%jK!#/:!!#/:!!#/:!!#/:!!#/:! +!#/:!!#/:!!#/:!!#/:!!#8./Z$fP?]s*OWm-Sj%_rh3Y;fKPqA93B)BV5bS:W&5 +N`J*H:Ge.bRN(jFk@ImuB>8`Ea+H_pe0Lc>LR!]&h]s3kdDI;dBe7@'<^1\5JGn; +3o9]2T^i":u'GiuH.J2")f5TKG[PZ+[0p5:',j)(?Sd +J1V8(.&(e0MR$/be#&ApD+,\NXK7\`4)pp\TJBO_ibNNud$!noUrKTnI +4BlM+<`rhtP-Pb(W5TGcmK.`Ab0%0>rH^uZ[R3f8Lq_Ft#a8W/3+?qPd3\':p3M^ +!aa9l%!CHq_Al#n]2:CmN\KDC',RH?[4!&cau[VN(@J-m^!J-m^!J-m^!J-m^!J- +m^!J-m^!J-m^!J-m^!J-m^!J-m^!J-m^!J-m^!J-m^!J-m^!J-m^!J-m^!J-m^!J +-m^!J-q<^$s)r?\B5t'T4(Vs=";O31+:=$0E^2H!Ts+42Xrn9(=TohH?:%l/qaXL +Xi-'8I+D+/$"=8Oh(d2:=%s3_dN*\Qf(tTbgM-LFgG6un$1e_5h9RH.!!1ssRe*Q +j$cW,G#Z[1]A`-eI0,-on)CDC+NXmUY#%]QFh10NlAG#=pg:rDcWI.:?C,"@53^n +OphBHpRCIh9Y'm%AaEWPS3!-ZpW.a^*ZmbSo@T4:YPj_c;f)C-GebcUsSJ9f-o23 +"^4qSGH+C:DnRkr%k!\@>(I@$3[q8-+=H;TmBdj/4bkiXI,3nX[[rI:oD&CDuGHe +i<-J7+X1#dSd\uOLRWfC^e&uACZ_UbGb3:5h2O5nC?;Gp'6OPFUFqa6KggWN1@$O +,kT.uBEPf+;mVrmT1t2^pNGc+9T#YA@D;0iMuni)`fG_NeFRKeWIQQ#l +(B772K]o#>)Wuk,5.km]tX4d]pKo^2OIG@u1h!r[6#8]7Z-o93. +5M9)+X>_W^iUop]Xp!+ju!)S$K+`NXC#Yl-uj4F"&/Z&;kkejc-CWbL$np+(jg)V +S:gi#JrX)d,^?P'UW?CZ"p%7FJ"D?JZbe@M;?V\!Bl0TAj^FFq296**4GgB\L4Wl +o\4K5*\",f/b^%\p]g%VIs8(fpjK@$SbH^F7SqRS#b7YP3RA$Rp'Rk*Q>[*A2MBd +=QfY0"OAeAJIR`n7MKj4cj+-3ilr!.q_5Oo"PgoX`$(-&-852Y63Do(mi2jaK&al +m)n)uX^6_boZebpFm'4/?FtctN!$pKbgY\[,>Jn>X!5j#Hd^G9ZIk:FBNO4f%R/H +8Q,?J0RXM\d-,jso^2$\_LDJikO:&L!V:<.niU%iWin!j#o&d@]VcAIAns"Yl2Uslj" +EJb]Xp;mkGDJ+.42bI=(_LL@\Y1^\@3M%. +1>0j[;6bg,8RM.l/_rr=i1,6Q!Rb(pY=-nu1T/p`XLC8072m'pMPgW?Lt^c#eOce +[[_&GNM$n&7"uA&OMDUm`H/N=^=VP!&P/VH4rr?$<."D +Qm;u'FqH7Q*Z`S,6d'2Q-f/Rl)UdR`be4HL@i@3VmQ%aCmkngFRSLqIeI#D_\"F? +>;UHeYs9N`WZT3An`%NN1c(-2Ue=!57nS[JF(82oQ,[e@U6M$.r@?g#ngg4DFbk1aG+^]1jd26 +IM7\8L9B>i3UG,ns:@dIh$H`(Nc8^Bj0?2p@^ETf+8+"@@@KGO]A`?[F?09*c[(I +QhI_"1?n*Qqcm""Y7UmXN(=@?7T>C2.uEblNhF*I]@k.E"*ej(!;N@%1(jbt:/o?sX)j-r2)`Hk"=V96*[G6IM2AV*J."UIthE#DT?k6 +)cDCS(& +r$Ei7a'.DC%0KIKiVbh2e&8tLSNJPd>[0b +,;#*KI7_qZ88E!&u4H\3mD(et/!QEu(m#/9d=]RGpM.ZO +Fa#re5n`U2,[dXIe<=3;%^W:,B%%\s^9TKgRN4P%\Tk_t30m-_&#>QQ#juD%sQ]p_$2f@J@&7$5Pe,`'_V+EGMm[RY*#]P"3Ll/!)BimLbB +4H`&BSi4'>,`trrSj#uhrY,C;FW3WH/sp5mChQPYM[(R__+SF=;?u5_X3EL--LdX +bmr*(9$b]#34?%J(**8;[*Ecp3p#,3b\$DGr?f2lM56RhAMK,Y&t$dHj!@Jgo&PgE"/MZK-ig!!-ig!!-ig!!-ig! +!-ig!!-ig!!-ig!!-ig!!-ig!!-ig!!-ig!!-ig!!-ig!!-ig!!-ig!!-ig!!-ig +!!-ig!!-ig!!-j#F.UY'?_bAVk8RY]rk+k[_MFCf#,Pk')&Ffb?,B8>QRK$`.e80 +quFOX?2:%`8_3BOKn`eMI!mWO''^6s>GXb+7"n07'h,=qD-1%RI>a,Z\[gD!LM&C'.:&)8b@QGBu_ +U@JlkncE=HFtqg>>iakL3NJGe*n%F+D<8(0=C0k>g;H?5gC[i4Gs7l>.%gpRpbTh +^3fKEsC!+mt.a9@S30$KG__bcfA&./X>5+>+g4c'JQZ,GX[)c-9Ug0t"l3O,A!6i +o>.ACN8/TYW;M:s;1V3Y2JN+An999MpFUB@1VeC-8##A>#=m!!V6G`GmkQ6"DcX< +G02eVOU)p-@Yq.%h"WD'm9O;SCRsm?TiGh4JAF':C`e/q/H$W(Z(i%UD-@^tEOUb +i9c:U@?D4]34C>1ge=`pj`:LijlOc;-Qo\Z>R= +QXcdmV3[`iQM0N6#eB#[P"@d!:F)N+'MntU.&)5!.&)5!.&)5Vs4I~> +%%EOF diff --git a/abs/core-testing/local-website/htdocs/mythtv-doc/BlockDiagramofavideocapturedevice.png b/abs/core-testing/local-website/htdocs/mythtv-doc/BlockDiagramofavideocapturedevice.png new file mode 100644 index 0000000..a01ae3d Binary files /dev/null and b/abs/core-testing/local-website/htdocs/mythtv-doc/BlockDiagramofavideocapturedevice.png differ diff --git a/abs/core-testing/local-website/htdocs/mythtv-doc/Card1 HDTV Card2 Cable.png b/abs/core-testing/local-website/htdocs/mythtv-doc/Card1 HDTV Card2 Cable.png new file mode 100644 index 0000000..013856e Binary files /dev/null and b/abs/core-testing/local-website/htdocs/mythtv-doc/Card1 HDTV Card2 Cable.png differ diff --git a/abs/core-testing/local-website/htdocs/mythtv-doc/Card1 Pri 0 Card2 Pri -1-TDS.png b/abs/core-testing/local-website/htdocs/mythtv-doc/Card1 Pri 0 Card2 Pri -1-TDS.png new file mode 100644 index 0000000..344095a Binary files /dev/null and b/abs/core-testing/local-website/htdocs/mythtv-doc/Card1 Pri 0 Card2 Pri -1-TDS.png differ diff --git a/abs/core-testing/local-website/htdocs/mythtv-doc/Card1 Pri 0 Card2 Pri -1.png b/abs/core-testing/local-website/htdocs/mythtv-doc/Card1 Pri 0 Card2 Pri -1.png new file mode 100644 index 0000000..3dfb909 Binary files /dev/null and b/abs/core-testing/local-website/htdocs/mythtv-doc/Card1 Pri 0 Card2 Pri -1.png differ diff --git a/abs/core-testing/local-website/htdocs/mythtv-doc/Card1 Pri 0 Card2 Pri 0.png b/abs/core-testing/local-website/htdocs/mythtv-doc/Card1 Pri 0 Card2 Pri 0.png new file mode 100644 index 0000000..7eb25aa Binary files /dev/null and b/abs/core-testing/local-website/htdocs/mythtv-doc/Card1 Pri 0 Card2 Pri 0.png differ diff --git a/abs/core-testing/local-website/htdocs/mythtv-doc/Makefile b/abs/core-testing/local-website/htdocs/mythtv-doc/Makefile new file mode 100644 index 0000000..0368fd2 --- /dev/null +++ b/abs/core-testing/local-website/htdocs/mythtv-doc/Makefile @@ -0,0 +1,42 @@ +# To build this stuff, you need the linuxdoc tools and htmldoc. On Debian, +# this means: linuxdoc-tools linuxdoc-tools-text htmldoc +# +# - mdz + +TARGETS = mythtv-HOWTO.txt mythtv-HOWTO.html mythtv-HOWTO-singlehtml.html mythtv-HOWTO.pdf index.html +LINUXDOC_HTML_SPLIT := 1 + +all: $(TARGETS) +clean: + rm -f $(TARGETS) $(patsubst %.html,%-[0-9]*.html,$(filter %.html,$(TARGETS))) + rm -Rf doxygen-dev-docs doxygen-warnings.txt + +distclean: clean + +validate: mythtv-HOWTO.sgml + linuxdoc -B check $< + +%.txt: %.sgml + linuxdoc -B txt $< + +# Generate PDF via LaTeX using linuxdoc +#%.pdf: %.sgml +# linuxdoc -B latex -o pdf $< + +# Generate PDF via HTML using htmldoc +%.pdf: %-singlehtml.html + # htmldoc exits unsuccessfully for no good reason -mdz + htmldoc --book --quiet --outfile $@ $< || true + +%.html: %.sgml + linuxdoc -B html --split=$(LINUXDOC_HTML_SPLIT) --toc=2 $< + +%-singlehtml.html: LINUXDOC_HTML_SPLIT=0 +%-singlehtml.sgml: %.sgml + cp $< $@ + +index.html: mythtv-HOWTO.html + cp $< $@ + +devdocs: + doxygen doxygen-create-developer-docs.cfg diff --git a/abs/core-testing/local-website/htdocs/mythtv-doc/add.eps b/abs/core-testing/local-website/htdocs/mythtv-doc/add.eps new file mode 100644 index 0000000..5a6bfb7 --- /dev/null +++ b/abs/core-testing/local-website/htdocs/mythtv-doc/add.eps @@ -0,0 +1,27 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%BoundingBox: 0 0 16 16 +% +% created by bmeps 1.2.7 (SCCS=1.78) +% +/pstr + 16 string +def +/inputf + currentfile + /ASCII85Decode filter + /RunLengthDecode filter +def +gsave +0 16 translate +16 16 scale +16 16 8 [16 0 0 -16 0 0] +{ inputf pstr readstring pop } +image +mJdF^dB'"3UWN!$rs@Ya]@u6"bb(3Qr;R/`V9S;S_naFJWJB%'s"j5Gb3-LGZ+7BO +cCTm[s8UHNjM8:-s8T6tVp'V$s8T.Cb-.n=s8S.NR^fMRs8S\=\ubf/$(%F'EW?'- +b-A#Es"g"7_/95PU:%M-SrE^LQ^=,IVgACCaGnB:S=T][Q^*rZDQs0@n!'EcSXPn1 +Q'fUPEU!K&$eL*#ag@\2[)e8?b5D8Ge:i1K]tC4YDp%qV#OK!PEGg',kjAB +~> +grestore +currentdict /inputf undef +currentdict /pstr undef diff --git a/abs/core-testing/local-website/htdocs/mythtv-doc/add.png b/abs/core-testing/local-website/htdocs/mythtv-doc/add.png new file mode 100644 index 0000000..6332fef Binary files /dev/null and b/abs/core-testing/local-website/htdocs/mythtv-doc/add.png differ diff --git a/abs/core-testing/local-website/htdocs/mythtv-doc/doxygen-architecture-document.cpp b/abs/core-testing/local-website/htdocs/mythtv-doc/doxygen-architecture-document.cpp new file mode 100644 index 0000000..16ad56d --- /dev/null +++ b/abs/core-testing/local-website/htdocs/mythtv-doc/doxygen-architecture-document.cpp @@ -0,0 +1,787 @@ +/** +\mainpage MythTV Architecture + +\section intro Introduction + +Over the last couple years %MythTV has grown into a rather large +application. The purpose of these pages is to provide a portal +into the code for developers to get their heads around it. +This is intended for both those new to %MythTV and experienced +with it to get familiar with different aspects of the code base. + +If you are just looking for the code formatting standards, +see the official %MythTV wiki article + +coding standards. If you are looking for the +bug tracker, +it can be found on the official pages. +If you haven't already, you should subscribe to +the +developer mailing list and the SVN commits mailing list + +If you just stumbled onto the developer pages +by accident, maybe you want to go to the official +%MythTV +Installation page. There is also a good unofficial +Fedora %MythTV installation page, +and a +Gentoo %MythTV installation page. + +If you are new to Qt programming it is essential that you keep in mind +that almost all Qt objects are not thread-safe, including QString. +Almost all Qt container objects, including QString, make shallow copies +on assignment, the two copies of the object must only be used in one +thread unless you use a lock on the object. You can use the +QDeepCopy +template on most Qt containers to make a copy you can use in another +thread. + +There are also special dangers when +\ref qobject_dangers "using QObject" outside the Qt event thread. + +The is also short HOWTO on \ref profiling_mythtv available in addition +to documentation on the code itself. + +\section libs Libraries + +%MythTV is divided up into eleven libraries: +
+
libmyth
Core %MythTV library. Used by the Plugins. + The \ref database_subsystem "database", + \ref audio_subsystem "audio", + \ref lcd_subsystem "LCD", + \ref osd_subsystem "OSD", + \ref lirc_subsystem "LIRC", and the + \ref myth_network_protocol "myth network protocol" are supported by libmyth. +
libmythtv
%MythTV %TV functionality library. + The + \ref recorder_subsystem "recorders", \ref video_subsystem "video" and + \ref av_player_subsystem "A/V players" are supported by libmythtv. +
libmythui
Main user interface rendering library +
libavcodec/libavformat/libavutil +
This is the ffmpeg A/V decoding library (aka avlib). + Documented Externally. +
libmythmpeg2
Alternate MPEG-1/2 A/V decoding library. + External Website. +
libmythsamplerate
Audio resampling library + Documented Externally. + We use this to support a different output sample rates than the sample + rate used in the audio streams we play. +
libmythsoundtouch
Pitch preserving audio resampling library. + External Website. + We use this for the time-stretch feature. +
libmythdvdnav +
Used for navigating DVD menus when using the internal player +
libmythfreemheg
UK interactive %TV viewer +
libmythlivemedia
Support for the FreeBox recorder device +
libmythupnp
Initial uPnP (universal Plug and Play) support +
+Two libraries libmythmpeg2 and libmythsamplerate appear redundant, but +libmpeg2 decodes MPEG-2 more quickly than ffmpeg on some systems, and +libmythsamplerate resamples audio with better quality when we only need +to match the hardware sample rate to the A/V streams audio sample rate. + +\section db Database Schema +The database schema is documented here \ref db_schema. + +\section apps Applications +%MythTV contains 14 applications: + +
+
mythbackend
This is the backend which runs the recorders. +
mythfrontend +
This is the frontend which is the main application + for viewing programs and using the %MythTV plugins. +
mythtv-setup
This is the program which sets up the database + to use a machine as a backend server. +
mythtv
This was an "External Player" used to play videos + from within mythfrontend. Setting the player command + to "internal" does the same thing now. This is handy + for testing the audio and videoout code, though. +
mythtvosd +
This is used externally by programs that want to pop-up an + on screen display in %MythTV while one is watching a recording. +
mythfilldatabase +
This is used both internally and externally to fetch program listings. + Tribune Media provides + listings in exchange for demographic information in the USA, + and Australia uses a + + community-driven TV guide originally developed for OzTiVo. + Other markets are served by the + XMLTV + web spiders. +
mythtranscode
This is used both internally and externally to + transcode videos from one format to another. + This is used to shrink HDTV programs to lower + quality recordings that match the hardware the + user has. +
mythjobqueue
This is used internally by mythfrontend to schedule + jobs such as commercial flagging and transcoding. +
mythcommflag
This is used internally by mythfrontend to flag + commercials. +
mythepg
This is used internally by mythfrontend to find + upcoming programs to record based on the channel + and time. +
mythprogfind
This is used internally by mythfrontend to find + programs to record based on the first letter of + the program name. +
mythuitest
This is a test program for libmythui development. +
mythlcdserver
This is an interface between a number of Myth + clients and a small text display (LCDProc server). +
mythwelcome/mythshutdown +
These programs manage Power Saving (shutdown/wakeup) on your Myth PCs. +
+ +\section fe_plugins Frontend Plugins +
+
mytharchive
Creates themed Video DVDs from recordings + (and other video files). +
mythbrowser
Provides a simple web browser. +
mythcontrols
Editor for Myth Key bindings, \e et \e c. +
mythflix
+
mythgallery
A simple picture viewer for your %TV. +
mythgame
Launches the xmame classic game system emulator. +
mythmovies
+
mythmusic
A simple music player for your %TV. +
mythnews
Browses RSS news feeds. +
mythphone
SIP based video phone. +
mythvideo
Launch DVD players, and a Video Browser for other files + (non-%MythTV recordings). +
mythweather
Presents your local weather report. +
mythzoneminder
+
+ +\section be_plugins Backend Plugins +
+
mythweb
Provides a PHP based web pages to control mythbackend. +
+ +\section spt_scripts Support Scripts +These tools are in the contrib directory of the source tree: +
+
osx-packager.pl
Downloads and builds all dependencies, then the + source, of %MythTV and all the official plugins, + on Mac OS 10.3 thru 10.5 +
win32-packager.pl
Similar tool for Windows XP +
+ */ + +/** \defgroup database_subsystem Database Subsystem + \todo No one is working on documenting the database subsystem. + +There are a few classes that deal directly with the database: +MythContext, MSqlDatabase, DBStorage, MDBManager, SimpleDBStorage. + +And one function UpgradeTVDatabaseSchema() located in dbcheck.cpp. + +MythTV's Configurable widgets also do save and restore their values +from the database automagically when used in %MythTV's window classes. + */ + +/** \defgroup audio_subsystem Audio Subsystem + \todo Ed W will be documenting the audio subsystem. + */ + +/** \defgroup lcd_subsystem LCD Subsystem + \todo No one is working on documenting the LCD Subsystem + */ + +/** \defgroup osd_subsystem OSD Subsystem + \todo No one is working on documenting the OSD Subsystem + */ + +/** \defgroup lirc_subsystem LIRC Subsystem + \todo No one is working on documenting the LIRC Subsystem + */ + +/** \defgroup video_subsystem Video Subsystem + \todo No one is working on documenting the video subsystem + */ + +/** \defgroup recorder_subsystem Recorder Subsystem +This line is filler that is ignored by Doxygen. + +TVRec is the main class for handling recording. +It is passed a ProgramInfo for the current and next recordings, +and in turn creates three main worker classes: +
+
RecorderBase
Recordings from device into RingBuffer. +
ChannelBase
Changes the channel and other recording device attributes. Optional. +
RingBuffer
Handles A/V file I/O, including streaming. +
+ +%TVRec also presents the public face of a recordings to the +\ref myth_network_protocol, and hence the rest of %MythTV. This +means that any call to the %RecorderBase, %RingBuffer, or +%ChannelBase is marshalled via methods in the %TVRec. + +RecorderBase contains classes for recording %MythTV's +specialized Nuppel Video files, as well as classes for +handling various hardware encoding devices such as MPEG2, +HDTV, DVB and Firewire recorders. +ChannelBase meanwhile only contains three subclasses, %Channel +for handling v4l and v4l2 devices, and %DVBChannel and +%FirewireChannel, for handling DVB and Firewire respectively. +Other channel changing hardware use ChannelBase's external +channel changing program support. +Finally, RingBuffer does all reading and writing of A/V files +for both TV (playback) and %TVRec, including streaming +over network connections to the frontend's %RingBuffer. + +%TVRec has four active states, the first three of which +correspond to the same states in %TV: kState_WatchingLiveTV, +kState_WatchingPreRecorded, kState_WatchingRecording, and +kState_RecordingOnly. +When watching "Live TV" the recorder records whatever the +frontend requests and streams it out using the %RingBuffer, +this may be to disk or over the network. +When watching pre-recorded programs %TVRec simply streams a +file on disk out using the %RingBuffer. +When just watching a recording, %TVRec continues a recording +started as recording-only while simultaneously streaming out +using the %RingBuffer. +Finally, when in the recording-only mode the recording +is only saved to disk using %RingBuffer and no streaming +to the frontend is performed. + +%TVRec also has three additional states: kState_Error, +kState_None, kState_ChangingState. The error state allows +%MythTV to know when something has gone wrong. The null or +none state means the recorder is not doing anything and +is ready for commands. Finally, the "ChangingState" state +tells us that a state change request is pending, so other +state changing commands should not be issued. + +\todo Check if the TVRec is actually still passed a ProgramInfo for the current and next recordings + +\todo Document the massive changes Daniel has made in the Vid and MultiRec branches + */ + +/** \defgroup av_player_subsystem A/V Player Subsystem +This line is filler that is ignored by Doxygen. + +TV is the main class for handling playback. +It instantiates several important classes: +
+
NuppelVideoPlayer
Decodes audio and video from the RingBuffer, then plays and displays them, resp. +
RemoteEncoder
Communicates with TVRec on the backend. +
OSD
Creates on-screen-display for NuppelVideoPlayer to display. +
RingBuffer
Handles A/V file I/O, including streaming. +
+ +NuppelVideoPlayer is a bit of a misnomer. This class plays all video formats +that %MythTV can handle. It creates AudioOutput to handle the audio, a FilterChain +to perform post-processing on the video, a DecoderBase class to do the actual +video decoding, and a VideoOutput class to do the actual video output. See +that class for more on what it does. + +%TV has three active states that correspond to the same states in TVRec: +kState_WatchingLiveTV, kState_WatchingPreRecorded, kState_WatchingRecording. +When watching "LiveTV" the %TVRec via RemoteEncoder responds to channel +changing and other commands from %TV while streaming the recording to +%TV's %RingBuffer. +When watching a pre-recorded stream, a recording is streamed from TVRec's +%RingBuffer to %TV's %RingBuffer, but no channel changing commands can be +sent to TVRec. +When watching an 'in-progress' recording things work pretty much as when +watching a pre-recorded stream, except %TV must be prevented from seeking +too far ahead in the program, and keyframe and commercial flags must be +synced from the recorder periodically. + +%TV also has three additional states: kState_Error, +kState_None, kState_ChangingState. The error state allows +%MythTV to know when something has gone wrong. The null or +none state means the player is not doing anything and +is ready for commands. Finally, the "ChangingState" state +tells us that a state change request is pending, so other +state changing commands should not be issued. + + */ + +/** \defgroup plugin_arch Plugin Architecture +This line is filler that is ignored by Doxygen. + +MythPlugins are shared object files (i.e. libraries) which are loaded +from a specific directory (%e.g. /usr/local/lib/mythtv/plugins). +Currently, all plugins are written in the C++ language, but there is nothing +preventing other languages being used (the functions are in the C name space). + +int mythplugin_init(const char *libversion); is invoked whenever mythfrontend +is started. This typically handles upgrading any database records - it will be +the first method called after a new version of the plugin has been installed. + +int mythplugin_run(); is invoked when the action attribute of a menu item +requests it via the PLUGIN directive. This is when the user chooses to enter +the plugin from the main menu or the appropriate submenu. + +int mythplugin_config(); is invoked when the action attribute of a menu item +requests it via the CONFIGPLUGIN directive. This should be when the users +wishes to change the plugin's settings (in the main Setup menu). + +Other plugin functions are listed in the file \link mythpluginapi.h \endlink +(see also the \link MythPlugin \endlink + and \link MythPluginManager \endlink classes.) + +*/ + +/** \defgroup mtd MTD (the Myth Transcoding Daemon) +This line is filler that is ignored by Doxygen. + +The %MTD is a simple program that is used by the MythVideo plugin. + +It currently \b only transcodes tracks from DVDs, but could in the +future also rip CD/VCD tracks, transcode %TV recordings, \e et \e cetera. + +The DVD Rip screen will offer to start %MTD if it is not running. +It does \b not currently shut it down afterwards, though. + +By default, the %MTD listens on port 2442, for commands of this format: + +\verbatim +halt +quit +shutdown +\endverbatim +- Tells the %MTD to wait for all jobs to finish, stop listening, and exit. + +\verbatim +hello +\endverbatim +- Send a trivial response if the %MTD is listening. + +\verbatim +status +\endverbatim +\verbatim +status dvd summary 1 +status dvd job 0 overall 0.0262568 ISO copy of UNTITLED +status dvd job 0 subjob 0.0262568 Ripping to file ~ 00:08/05:04 +status dvd complete +\endverbatim +- Sends a response listing the status of all jobs. + +\verbatim +media +\endverbatim +\verbatim +media dvd summary 1 UNTITLED +media dvd title 1 1 1 0 5 27 8 +media dvd title-audio 1 1 2 nl ac3 2Ch +media dvd complete +\endverbatim +- Sends a detailed list of titles/tracks on the current disk. + +\verbatim +job dvd TITLE AUDIOTRK QUALITY AC3 SUBTITLETRK DESTPATH +\endverbatim +\verbatim +e.g. job dvd 1 1 -1 0 -1 /myth/video/UNTITLED +\endverbatim +- Starts a transcoding job. TITLE, AUDIOTRK and SUBTITLETRK are integers + to select the track details. AC3 is 0 or 1. DESTPATH is the output file. + QUALITY is one of enum \ref RIP_QUALITIES (-1, 0 or 1). + +\verbatim +abort dvd job NNNN +\endverbatim +- Stops the job identified by the job number NNNN. + +\verbatim +use dvd PATH +\endverbatim +- Check dvd PATH is usable, and if so set the current drive to it. + +\verbatim +no dvd +\endverbatim +- Forget about the current dvd path, ending any jobs that are trying to read it. + +\verbatim +no dvd PATH +\endverbatim +- End any jobs that are reading from dvd PATH, and if it is the current drive, + forget about it. + */ + +/** \defgroup myth_media Myth Media Manager +This line is filler that is ignored by Doxygen. + +The Myth Media Manager is a thread in the frontend which looks for any +changes to removable media, and sends events to any Frontend Plugins +which are interested in that media. + +At startup, it creates a list of MythMediaDevice objects (currently +MythHDD or MythCDROM and its subclasses) for each removable device +configured on the system. A runtime loop then monitors each of these +via its checkMedia() method. + +When any of these devices change status, a MediaEvent object is created. +If the device has a status which is usable, the window jumps to the main menu +(to allow the registered jump to work correctly), and the event is dispatched +to the relevant plugin's registered media handler. If the device status is +unusable (%e.g. ejected), the plugin's media handler is called directly +(so it can "forget" about this device). + +The following tables show +typical status transitions for CD/DVD and USB flash drive devices: + +\verbatim + CD/DVD USB/FireWire HDD +State Action State Action +-------------------------------------------------- +NODISK NODISK + eject attach +OPEN USEABLE + insert disk, close detach +USEABLE UNPLUGGED + mount +MOUNTED + unmount +NOTMOUNTED +-------------------------------------------------- +\endverbatim + */ + +/** \defgroup myth_network_protocol Myth Network Protocol +This line is filler that is ignored by Doxygen. + +The MythTV backend process currently opens sockets for three different types +of commands; a custom protocol (by default at port 6543), +an HTML server (by default +http://127.0.0.1:6544 + for the status, and other services under that, like +< HREF="http://127.0.0.1:6544/Myth/GetMusic?Id=1"> +http://127.0.0.1:6544/Myth/GetMusic?Id=1 +), and a UPnP media server (several ports that I cannot +remember right now that throw around lots of little bits of XML :-) + +The custom protocol is an ASCII encoded length and command string. +Command sequences can be easily sent to the backend using telnet. +%e.g. \verbatim telnet 127.0.0.1 5432 +Trying 127.0.0.1... +Connected to localhost. +Escape character is '^]'.\endverbatim +\verbatim21 MYTH_PROTO_VERSION 36 23 ANN Playback hostname 1 10 QUERY_LOAD 4DONE\endverbatim +\verbatim13 ACCEPT[]:[]362 OK34 0.919922[]:[]0.908203[]:[]0.856445Connection closed by foreign host.\endverbatim +The command string is prefixed by 8 characters, containing the length +of the forthcoming command. This can be justified in any way +(as the above example shows) + +The backend responds with a length, and the response to the command. +This can be numbers (up to 32 bit, represented in ASCII), +a single string, or an ASCII encoding of a QStringList. +The 5 byte sequence "[]:[]" seperates items in the stringlist. +Any 64 bit numbers are represented as a stringlist of two 32bit words +(MSB first). + +\section commands Commands + +There are three main types of networking interactions in MythTV; +identification commands (which tell the backend about this client), +query commands that are sent to the master backend +(%e.g. listing recordings or viewing guide data), and +file streaming commands (when a frontend is watching or editing a recording). + +Until a client is identified to the backend (via the ANN commands), +any of the query or file streaming commands will silently fail. + +The following summarises some of these commands. +For a full understanding of all the commands, either read the source code +(programs/mythbackend/mainserver.cpp), or look on the Wiki +(http://www.mythtv.org/wiki/index.php/Myth_Protocol_Command_List). + + */ + +/** \defgroup qobject_dangers QObject is dangerous for your health +This line is filler that is ignored by Doxygen. + +QObject derived classes can be quite useful, they can send and receive +signals, get keyboard events, translate strings into another language +and use QTimers. + +But they also can't be \ref qobject_delete "deleted" easily, they +are not \ref qobject_threadsafe "thread-safe", can't participate +as equals in multiple \ref qobject_inheritence "inheritence", can +not be used at all in virtual \ref qobject_inheritence "inheritence". + +\section qobject_delete Deleting QObjects + +The problem with deleting QObjects has to do with signals, and events. +These can arrive from any thread, and often arrive from the Qt event +thread even if you have not explicitly requested them. + +If you have not explicitly connected any signals or slots, and the +only events you might get are dispatched with qApp->postEvent(), +not qApp->sendEvent(), then it is safe to delete the QObject in the +Qt event thread. If your QObject is a GUI object you've passed +given to Qt for it to delete all is good. If your object is only +deleted in response to a posted event or a signal from the Qt event +thread (say from a QTimer()) then you are OK as well. + +If your class may be deleted outside a Qt thread, but it does not +explicitly connect any signals or slots, and the only events it +might get are dispatched with qApp->postEvent(), then you can +safely use deleteLater() to queue your object up for deletion +in the event thread. + +%MythTV is a very much a multithreaded program so you may need to have +a QObject that may get events from another thread if you send signals +but do not get any signals and or events from outside the Qt event +thread, then you can use deleteLater() or delete depending on whether +you are deleteing the QObject in the event thread, see above. But +if you are not in the Qt event thread then you need to call disconnect() +in the thread that is sending the signals, before calling deleteLater(). +This prevents your object from sending events after you consider it +deleted (and begin to delete other QObjects that may still be getting +signals from your object.) + +What about if you are getting events via qApp->sendEvent() or a signal +from another thread? In this case things get complicated, so we highly +discourage this in %MythTV and prefer that you use callbacks if at all +possible. But in say you need to do this, then you need to disconnect +all the signals being sent to your QObject. But disconnect() itself +is not atomic. That is you may still get a signal after you disconnect +it. What you need to is disconnect the signal from your slot in the +thread that is sending the signal. This prevents the signal from +being emitted while you are disconnecting. Doing this gracefully is +left as an excersize for the reader. + +Ok, so the above is not entirely complete, for instance you could wrap +every signal emit in an instance lock and reimplement a disconnect +that uses that instance lock. But if you've figured this or another +solution out already all you need to know is that almost all Qt +objects are reenterant but not thread-safe, and that QObjects recieve +events and signals from the Qt event thread and from other threads +if you use qApp->sendEvent() or send signals to it from another thread. + +\section qobject_threadsafe QObject thread-safety + +The only thread-safe classes in Qt are QThread and the mutex classes. +when you call any non-static QObject method you must have a lock on +it or make sure only thread ever calls that function. + +QObject itself is pretty safe because when you assign one QObject to +another you make a copy. Qt's container classes, including QString +do not make a copy but rather pass a reference counted pointer to +the data when you assign one to another. This reference counter is +not protected by a mutex so you can not use regular assignment when +passing a QString or other Qt container from one thread to another. + +In order to use these classes safely you must use +QDeepCopy +when passing them from one thread to another. This is thankfully quite +easy to use. + +\code + QString original = "hello world"; + QString unsafe = original; + QString safe = QDeepCopy(original); +\endcode + +In this case safe and original can be used by two seperate +threads, while unsafe can only be used in the same thread +as originalStr. + +The QDeepCopy template will work on the most popular Qt containers, +for the ones it doesn't support you will have to copy manually. + +\section qobject_inheritence QObject inheritence + +You can not inherit more than one QObject derived class. +This is because of how signals and slots are implemented. What +happens is that each slot is transformed into an integer that +is used to find the right function pointer quickly when a signal +is sent. But if you have more than one QObject in the inheritence +tree the integers will alias so that signals intended for the +second slot in parent class B might get sent to the second slot +in parent class A instead. Badness ensues. + +For the similar reason you can not inherit a QObject derived +class virtually, in this case the badness is a little more +complicated. The result is the same however, signals arrive +at the wrong slot. Usually, what happens is that the developer +tries to inherit two QObject derived classes but gets linking +errors, so they make one or more of the classes virtual, or +inherit a QObject non-virtually but then also inherit one +or more QObject derived classes virtually. The linker doesn't +complain, but strange unexplainable behaviour ensues when +the application is run and signals start showing up on the +wrong slots. + +*/ + +/** \defgroup profiling_mythtv Profiling MythTV +This line is filler that is ignored by Doxygen. + +You can use any sampling profiler to profile %MythTV, the most +popular GPL one is OProfile and this section tells you how to +use it to profile %MythTV. For Intel also makes VTune, AMD +makes CodeAnalyst, and Apple makes Shark. These all work +similarly to oprofile, so the %MythTV portions are the same. + +This do not describe how to install oprofile. There are a +few cotchas on installation: You must have APIC enabled to +use performance counters. This is usually the default, but +you may want to check this in your kernel configuration. You +also need the oprofile module, this is part of the kernel +config in Linux 2.6+, but must be compiled seperately for +earlier kernels. Finally, some RedHat kernels does not work +with the standard oprofile, so you must use the RedHat +version of oprofile, or compile your own kernel. + + +\section prof_compile Compiling MythTV for profiling + +The first thing you need to do is compile with profiling in +mind. %MythTV has three compile types "release", "debug" and +"profile". The "release" type enables optimizations that +make debugging practically impossible, while "debug" has so +few optimizations that profiling it usually won't tell you +where the real performance problems are. The "profile" compile +type enables the all the optimizations in "release" but also +enables debugging symbols, so that you know which functions +are the CPU hogs. + +So we configure thusly: +\code + make distclean + ./configure --compile-type=profile --enable-proc-opt [+your normal opts] +\endcode + +The "make distclean" clears out all your old binaries and the the configure +sets the compile type approriately. You may not want the "--enable-proc-opt" +if you plan on making a package for other CPUs. This only makes about a +10% difference in playback speed because MMX and CMOV are enabled for +CPUs that support them regardless of this option. + +Next, you compile and install %MythTV as you normally would. +\code + qmake; make -j2 -k + su + make install +\endcode + + +\section prof_init Initializing profiler + +Most sampling profilers, OProfile included, require a kernel module so +this module must be loaded. In oprofile's case the module gets confused +when it has been loaded a long time, so it is best to begin each session +by shutting down the OProfile server and reloading the module: + +\code + opcontrol --deinit + opcontrol --init +\endcode + +You also will want to tell the profiler whether to profile the +kernel as well, if you want the kernel profiled, and assuming +your compiled kernel is in /usr/src/linux, issue this command: +\code + opcontrol --vmlinux=/usr/src/linux/vmlinux +\endcode +If you don't want it in your profile report, use this command: +\code + opcontrol --no-vmlinux +\endcode +Normally, you don't need it when profiling %MythTV, but there are +times when the kernel is a bottleneck. For example when writing +streams to disk is taking too long. + +Now all CPU's are not profiled the same way. In the days of olde, +a sampling profiler would hook into the clock interupt and record +the instuction pointer's location at the instant the interrupt was +triggered. But the wall clock timer still ticks as often as it did +when CPU's ran at 5 Mhz, and now they run almost a thousand times +faster. Such a profile would now take a thousand times longer than +it did in 1985. + +So modern processors include explicit support for profiling. For, +example the Pentium Pro has the INST_RETIRED counter, the Pentium 4 +has the INSTR_RETIRED counter, the AMD64 has the RETIRED_INSNS +counter, etc. For a full list see the +OProfile documentation. +You need to find a performance counter you can use for your CPU, +after you've run "opcontrol --init" you can run the following command: +\code + opcontrol --list-events +\endcode +And it will list all the performance counters available with your +CPU. You need to pick the best one for what you want to measure, +for overall performance you want something line INSTR_RETIRED. + +For an Intel Pentium 4, the following will work +\code + opcontrol -e INSTR_RETIRED:6000:0x0f:0:1 +\endcode + +This tells OProfile to schedule an interrupt on every 6000th +instruction that finishes and matches the flag 0x0f. You +could also count cycles when not in idle for the same type of +measurements. The last two numbers tell OProfile it should not +profile the kernel and should profile userspace, if you want +to profile the kernel as well you need to replace the zero with +a one. + +It is possible to profile in oprofile the old fashioned way, by +using the real-time-clock. But you must compile your Linux kernel +WITHOUT RTC support, and run %MythTV significantly longer to get +enough samples for a good report. + + +\section prof_run Running Profiler + +Normally, oprofile will tell you about everything running in +its reports. You can limit what information is collected by +running a opcontrol command such as: +\code + opcontrol --image=/usr/local/bin/mythfrontend +\endcode +This tells OProfile to only profile the frontend. + +Now you want to start %MythTV as usual: + +Then begin doing whatever you want to profile, then issue these +commands: +\code + opcontrol --reset ; opcontrol --start +\endcode + +After a few seconds/minutes your should have collected enough data. +Then you want to issue the following commands: +\code + opcontrol --shutdown + opreport --merge tgid -l --image-path=/usr/local/bin > report.txt +\endcode + +Now you can peruse the report at your pleasure. + +This should be enough to get you started with finding and fixing +performance problems in %MythTV, but there is more information +available from the +OProfile manual. +This includes information on constructing callgraphs, producing +an annotated versions of the code, and saving results. + +*/ + +// The file ac3.h in ffmpeg contains no Doxygen markup, +// but for some reason generates the following modules: +// * Coded elements +// * Derived values +// +// They add nothing useful to this programmer doco, so I camouflage these +// by manually defining the block here. Same thing for the few modules +// in ffmpeg that are documented; Macroblock and VC9 bitplanes from vc1.c, +// Monkey Audio from apedec.c, multithreaded slicing from h264.h, + +/** + @defgroup coded . + @defgroup derived . + @defgroup block . + @defgroup std_mb . + @defgroup rangecoder . + @defgroup multithreading . + @defgroup bitplane . + */ diff --git a/abs/core-testing/local-website/htdocs/mythtv-doc/doxygen-create-developer-docs.cfg b/abs/core-testing/local-website/htdocs/mythtv-doc/doxygen-create-developer-docs.cfg new file mode 100644 index 0000000..c00b3cf --- /dev/null +++ b/abs/core-testing/local-website/htdocs/mythtv-doc/doxygen-create-developer-docs.cfg @@ -0,0 +1,1142 @@ +# Doxyfile 1.3.7 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project +# +# All text after a hash (#) is considered a comment and will be ignored +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" ") + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded +# by quotes) that should identify the project. + +PROJECT_NAME = MythTV + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = 0.21 + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = doxygen-dev-docs + +# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create +# 2 levels of 10 sub-directories under the output directory of each output +# format and will distribute the generated files over these directories. +# Enabling this option can be useful when feeding doxygen a huge amount of source +# files, where putting all generated files in the same directory would otherwise +# cause performance problems for the file system. + +CREATE_SUBDIRS = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, +# Finnish, French, German, Greek, Hungarian, Italian, Japanese, Japanese-en +# (Japanese with English messages), Korean, Korean-en, Norwegian, Polish, Portuguese, +# Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian. + +OUTPUT_LANGUAGE = English + +# This tag can be used to specify the encoding used in the generated output. +# The encoding is not always determined by the language that is chosen, +# but also whether or not the output is meant for Windows or non-Windows users. +# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES +# forces the Windows encoding (this is the default for the Windows binary), +# whereas setting the tag to NO uses a Unix-style encoding (the default for +# all platforms other than Windows). + +USE_WINDOWS_ENCODING = NO + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator +# that is used to form the text in various listings. Each string +# in this list, if found as the leading text of the brief description, will be +# stripped from the text and the result after processing the whole list, is used +# as the annotated text. Otherwise, the brief description is used as-is. If left +# blank, the following values are used ("$name" is automatically replaced with the +# name of the entity): "The $name class" "The $name widget" "The $name file" +# "is" "provides" "specifies" "contains" "represents" "a" "an" "the" + +ABBREVIATE_BRIEF = + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = YES + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all inherited +# members of a class in the documentation of that class as if those members were +# ordinary class members. Constructors, destructors and assignment operators of +# the base classes will not be shown. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = NO + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user-defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the +# path to strip. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of +# the path mentioned in the documentation of a class, which tells +# the reader which header file to include in order to use a class. +# If left blank only the name of the header file containing the class +# definition is used. Otherwise one should specify the include paths that +# are normally passed to the compiler using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter +# (but less readable) file names. This can be useful is your file systems +# doesn't support long names like on DOS, Mac, or CD-ROM. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like the Qt-style comments (thus requiring an +# explicit @brief command for a brief description. + +JAVADOC_AUTOBRIEF = YES + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen +# treat a multi-line C++ special comment block (i.e. a block of //! or /// +# comments) as a brief description. This used to be the default behaviour. +# The new default is to treat a multi-line C++ comment block as a detailed +# description. Set this tag to YES if you prefer the old behaviour instead. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the DETAILS_AT_TOP tag is set to YES then Doxygen +# will output the detailed description near the top, like JavaDoc. +# If set to NO, the detailed description appears after the member +# documentation. + +DETAILS_AT_TOP = YES + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# re-implements. + +INHERIT_DOCS = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 8 + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user-defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES = "sideeffect=\par Side Effects:\n" + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources +# only. Doxygen will then generate output that is more tailored for C. +# For instance, some of the names that are used will be different. The list +# of all members will be omitted, etc. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources +# only. Doxygen will then generate output that is more tailored for Java. +# For instance, namespaces will be presented as packages, qualified scopes +# will look different, etc. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of +# the same type (for instance a group of public functions) to be put as a +# subgroup of that type (e.g. under the Public Functions section). Set it to +# NO to prevent subgrouping. Alternatively, this can be done per class using +# the \nosubgrouping command. + +SUBGROUPING = YES + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = YES + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = YES + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = YES + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +# defined locally in source files will be included in the documentation. +# If set to NO only classes defined in header files are included. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. When set to YES local +# methods, which are defined in the implementation section but not in +# the interface are included in the documentation. +# If set to NO (the default) only methods in the interface are included. + +EXTRACT_LOCAL_METHODS = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these classes will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all +# friend (class|struct|union) declarations. +# If set to NO (the default) these declarations will be included in the +# documentation. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any +# documentation blocks found inside the body of a function. +# If set to NO (the default) these blocks will be appended to the +# function's detailed documentation block. + +HIDE_IN_BODY_DOCS = YES + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower-case letters. If set to YES upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# users are advised to set this option to NO. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = NO + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put a list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = YES + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = NO + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the +# brief documentation of file, namespace and class members alphabetically +# by member name. If set to NO (the default) the members will appear in +# declaration order. + +SORT_BRIEF_DOCS = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be +# sorted by fully-qualified names, including namespaces. If set to +# NO (the default), the class list will be sorted only by class name, +# not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the +# alphabetical list. + +SORT_BY_SCOPE_NAME = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug +# commands in the documentation. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +# disable (NO) the deprecated list. This list is created by putting +# \deprecated commands in the documentation. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or define consists of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and defines in the +# documentation can be controlled using \showinitializer or \hideinitializer +# command in the documentation regardless of this setting. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated +# at the bottom of the documentation of classes and structs. If set to YES the +# list will mention the files that were used to generate the documentation. + +SHOW_USED_FILES = YES + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = YES + +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some +# parameters in a documented function, or documenting parameters that +# don't exist or using markup commands wrongly. + +WARN_IF_DOC_ERROR = YES + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = doxygen-warnings.txt + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = doxygen-architecture-document.cpp ../contrib ../filters ../libs ../programs ../../mythplugins + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank the following patterns are tested: +# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx *.hpp +# *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm + +FILE_PATTERNS = *.cpp *.c *.h *.mm *.pl *.pm *.sh *.py *.php *.css + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. + +EXCLUDE = ../libs/libmythsamplerate + +# The EXCLUDE_SYMLINKS tag can be used select whether or not files or directories +# that are symbolic links (a Unix filesystem feature) are excluded from the input. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. + +EXCLUDE_PATTERNS = moc_*.cpp moc_*.h + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude +# commands irrespective of the value of the RECURSIVE tag. +# Possible values are YES and NO. If left blank NO is used. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command , where +# is the value of the INPUT_FILTER tag, and is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. + +INPUT_FILTER = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse (i.e. when SOURCE_BROWSER is set to YES). + +FILTER_SOURCE_FILES = NO + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. +# Note: To get rid of all source code in the generated output, make sure also +# VERBATIM_HEADERS is set to NO. + +SOURCE_BROWSER = YES + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C and C++ comments will always remain visible. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES (the default) +# then for each documented function all documented +# functions referencing it will be listed. + +REFERENCED_BY_RELATION = YES + +# If the REFERENCES_RELATION tag is set to YES (the default) +# then for each documented function all documented entities +# called/used by that function will be listed. + +REFERENCES_RELATION = NO + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = YES + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = YES + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 3 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank +# doxygen will generate files with .html extension. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet. Note that doxygen will try to copy +# the style sheet file to the HTML output directory, so don't put your own +# stylesheet in the HTML output directory as well, or it will be erased! + +HTML_STYLESHEET = + +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +# files or namespaces will be aligned in HTML using tables. If set to +# NO a bullet list will be used. + +HTML_ALIGN_MEMBERS = YES + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can +# be used to specify the file name of the resulting .chm file. You +# can add a path in front of the file if the result should not be +# written to the html output directory. + +CHM_FILE = + +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can +# be used to specify the location (absolute path including file name) of +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run +# the HTML help compiler on the generated index.hhp. + +HHC_LOCATION = + +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +# controls if a separate .chi index file is generated (YES) or that +# it should be included in the master .chm file (NO). + +GENERATE_CHI = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +# controls whether a binary table of contents is generated (YES) or a +# normal table of contents (NO) in the .chm file. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members +# to the contents of the HTML help documentation and to the tree view. + +TOC_EXPAND = NO + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at +# top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. + +DISABLE_INDEX = NO + +# This tag can be used to set the number of enum values (range [1..20]) +# that doxygen will group on one line in the generated HTML documentation. + +ENUM_VALUES_PER_LINE = 4 + +# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be +# generated containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, +# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are +# probably better off using the HTML help feature. + +GENERATE_TREEVIEW = NO + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 250 + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = NO + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. If left blank `latex' will be used as the default command name. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +# generate index for LaTeX. If left blank `makeindex' will be used as the +# default command name. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, a4wide, letter, legal and +# executive. If left blank a4wide will be used. + +PAPER_TYPE = a4wide + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = NO + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = NO + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = NO + +# If LATEX_HIDE_INDICES is set to YES then doxygen will not +# include the index chapters (such as File Index, Compound Index, etc.) +# in the output. + +LATEX_HIDE_INDICES = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimized for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using WORD or other +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assignments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an rtf document. +# Syntax is similar to doxygen's config file. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command +# would be unable to find the correct page. The default is NO. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. + +GENERATE_XML = NO + +# The XML_OUTPUT tag is used to specify where the XML pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `xml' will be used as the default path. + +XML_OUTPUT = xml + +# The XML_SCHEMA tag can be used to specify an XML schema, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_SCHEMA = + +# The XML_DTD tag can be used to specify an XML DTD, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_DTD = + +# If the XML_PROGRAMLISTING tag is set to YES Doxygen will +# dump the program listings (including syntax highlighting +# and cross-referencing information) to the XML output. Note that +# enabling this will significantly increase the size of the XML output. + +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +# generate an AutoGen Definitions (see autogen.sf.net) file +# that captures the structure of the code including all +# documentation. Note that this feature is still experimental +# and incomplete at the moment. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES Doxygen will +# generate a Perl module file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_PERLMOD = NO + +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate +# the necessary Makefile rules, Perl scripts and LaTeX code to be able +# to generate PDF and DVI output from the Perl module output. + +PERLMOD_LATEX = NO + +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be +# nicely formatted so it can be parsed by a human reader. This is useful +# if you want to understand what is going on. On the other hand, if this +# tag is set to NO the size of the Perl module output will be much smaller +# and Perl will parse it just the same. + +PERLMOD_PRETTY = YES + +# The names of the make variables in the generated doxyrules.make file +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. +# This is useful so different doxyrules.make files included by the same +# Makefile don't overwrite each other's variables. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = NO + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = NO + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_PREDEFINED tags. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# in the INCLUDE_PATH (see below) will be search if a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. + +PREDEFINED = USING_XVMC_VLD USING_XVMCW USING_XVMC USING_XV USING_IVTV MMX USING_FIREWIRE USING_DVB USING_DVB_EIT USING_XRANDR USING_DIRECTX USING_DIRECTFB USING_OPENGL_VSYNC Q_OS_MACX + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all function-like macros that are alone +# on a line, have an all uppercase name, and do not end with a semicolon. Such +# function macros are typically used for boiler-plate code, and will confuse the +# parser if not removed. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES option can be used to specify one or more tagfiles. +# Optionally an initial location of the external documentation +# can be added for each tagfile. The format of a tag file without +# this location is as follows: +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where "loc1" and "loc2" can be relative or absolute paths or +# URLs. If a location is present for each tag, the installdox tool +# does not have to be run to correct the links. +# Note that each tag file must have a unique name +# (where the name does NOT include the path) +# If a tag file is not located in the directory in which doxygen +# is run, you must also specify the path to the tagfile here. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will +# be listed. + +EXTERNAL_GROUPS = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base or +# super classes. Setting the tag to NO turns the diagrams off. Note that this +# option is superseded by the HAVE_DOT option below. This is only a fallback. It is +# recommended to install and use dot, since it yields more powerful graphs. + +CLASS_DIAGRAMS = YES + +# If set to YES, the inheritance and collaboration graphs will hide +# inheritance and usage relations if the target is undocumented +# or is not a class. + +HIDE_UNDOC_RELATIONS = YES + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = NO + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# the CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = YES + +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and +# collaboration diagrams in a style similar to the OMG's Unified Modeling +# Language. + +UML_LOOK = NO + +# If set to YES, the inheritance and collaboration graphs will show the +# relations between templates and their instances. + +TEMPLATE_RELATIONS = NO + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +# tags are set to YES then doxygen will generate a graph for each documented +# file showing the direct and indirect include dependencies of the file with +# other documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or +# indirectly include this file. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will +# generate a call dependency graph for every global function or class method. +# Note that enabling this option will significantly increase the time of a run. +# So in most cases it will be better to enable call graphs for selected +# functions only using the \callgraph command. + +CALL_GRAPH = NO + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. Possible values are png, jpg, or gif +# If left blank png will be used. + +DOT_IMAGE_FORMAT = png + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found on the path. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the +# \dotfile command). + +DOTFILE_DIRS = + +# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width +# (in pixels) of the graphs generated by dot. If a graph becomes larger than +# this value, doxygen will try to truncate the graph, so that it fits within +# the specified constraint. Beware that most browsers cannot cope with very +# large images. + +MAX_DOT_GRAPH_WIDTH = 1024 + +# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height +# (in pixels) of the graphs generated by dot. If a graph becomes larger than +# this value, doxygen will try to truncate the graph, so that it fits within +# the specified constraint. Beware that most browsers cannot cope with very +# large images. + +MAX_DOT_GRAPH_HEIGHT = 1024 + +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the +# graphs generated by dot. A depth value of 3 means that only nodes reachable +# from the root by following a path via at most 3 edges will be shown. Nodes that +# lay further from the root node will be omitted. Note that setting this option to +# 1 or 2 may greatly reduce the computation time needed for large code bases. Also +# note that a graph may be further truncated if the graph's image dimensions are +# not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH and MAX_DOT_GRAPH_HEIGHT). +# If 0 is used for the depth value (the default), the graph is not depth-constrained. + +MAX_DOT_GRAPH_DEPTH = 0 + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermediate dot files that are used to generate +# the various graphs. + +DOT_CLEANUP = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- + +# The SEARCHENGINE tag specifies whether or not a search engine should be +# used. If set to NO the values of all tags below this one will be ignored. + +SEARCHENGINE = YES diff --git a/abs/core-testing/local-website/htdocs/mythtv-doc/doxygen.perl.patch b/abs/core-testing/local-website/htdocs/mythtv-doc/doxygen.perl.patch new file mode 100644 index 0000000..c7288b6 --- /dev/null +++ b/abs/core-testing/local-website/htdocs/mythtv-doc/doxygen.perl.patch @@ -0,0 +1,141 @@ +diff -ru doxygen-1.5.4.orig/src/scanner.l doxygen-1.5.4/src/scanner.l +--- doxygen-1.5.4.orig/src/scanner.l 2007-10-26 21:52:35.000000000 +1000 ++++ doxygen-1.5.4/src/scanner.l 2008-01-09 13:19:14.000000000 +1100 +@@ -115,6 +115,7 @@ + static bool insideObjC = FALSE; //!< processing Objective C code? + static bool insideCli = FALSE; //!< processing C++/CLI code? + static bool insideJS = FALSE; //!< processing JavaScript code? ++static bool insidePerl = FALSE; //!< processing Perl code? + + static bool insideCppQuote = FALSE; + static bool insideProtocolList = FALSE; +@@ -332,13 +333,15 @@ + insidePHP = langExt==SrcLangExt_PHP; + insideObjC = langExt==SrcLangExt_ObjC; + insideJS = langExt==SrcLangExt_JS; ++ insidePerl = langExt==SrcLangExt_Perl; + if ( insidePHP ) + { + useOverrideCommands = TRUE; + } + //printf("setContext(%s) insideIDL=%d insideJava=%d insideCS=%d " +- // "insideD=%d insidePHP=%d insideObjC=%d\n", +- // yyFileName.data(),insideIDL,insideJava,insideCS,insideD,insidePHP,insideObjC ++ // "insideD=%d insidePHP=%d insideObjC=%d insidePerl=%d\n", ++ // yyFileName.data(),insideIDL,insideJava,insideCS,insideD, ++ // insidePHP,insideObjC,insidePerl + // ); + } + +@@ -591,6 +594,7 @@ + %x Define + %x DefineEnd + %x CompoundName ++%x PerlSubName + %x ClassVar + %x CSConstraintName + %x CSConstraintType +@@ -604,6 +608,7 @@ + %x BitFields + %x FindMembers + %x FindMembersPHP ++%x FindMembersPerl + %x FindMemberName + %x FindFields + %x FindFieldArg +@@ -920,6 +925,29 @@ + REJECT; + } + } ++{B}*"sub"{B}+ { ++ BEGIN( PerlSubName ); ++ } ++{LABELID} { ++ //printf("### Perl SUB name = %s\n", yytext); ++ isTypedef=FALSE; ++ current->name = yytext; ++ current->section ++ = Entry::FUNCTION_SEC; ++ current->type = "sub" ; ++ current->fileName = yyFileName; ++ current->startLine = yyLineNr; ++ current->bodyLine = yyLineNr; ++ lineCount(); ++ curlyCount = 0; ++ current_root->addSubEntry(current); ++ //current_root = current ; ++ current = new Entry ; ++ initEntry(); ++ lastCurlyContext = FindMembersPerl; ++ BEGIN( SkipCurly ); ++ BEGIN( FindMembersPerl ); ++ } + {ID} { + addType( current ); + current->name = yytext; +@@ -3431,6 +3459,13 @@ + BEGIN( CopyArgComment ); + } + } ++ /* Same in Perl or Sh */ ++"###" { ++ fullArgString+=yytext; ++ lastCopyArgChar=0; ++ lastCommentInArgContext=YY_START; ++ BEGIN( CopyArgCommentLine ); ++ } + /* a non-special comment */ + "/*" { + lastCContext = YY_START; +@@ -5434,6 +5469,10 @@ + { + BEGIN( FindMembersPHP ); + } ++ else if ( insidePerl ) ++ { ++ BEGIN( FindMembersPerl ); ++ } + else + { + BEGIN( FindMembers ); +diff -ru doxygen-1.5.4.orig/src/util.cpp doxygen-1.5.4/src/util.cpp +--- doxygen-1.5.4.orig/src/util.cpp 2007-10-26 21:33:49.000000000 +1000 ++++ doxygen-1.5.4/src/util.cpp 2008-01-09 09:27:43.000000000 +1100 +@@ -6158,6 +6158,9 @@ + extLookup.insert(".m", new int(SrcLangExt_ObjC)); + extLookup.insert(".M", new int(SrcLangExt_ObjC)); + extLookup.insert(".mm", new int(SrcLangExt_ObjC)); ++ extLookup.insert(".pl", new int(SrcLangExt_Perl)); ++ extLookup.insert(".pm", new int(SrcLangExt_Perl)); ++ extLookup.insert(".sh", new int(SrcLangExt_Shell)); + init=TRUE; + } + if (i!=-1) // name has an extension +diff -ru doxygen-1.5.4.orig/src/util.h doxygen-1.5.4/src/util.h +--- doxygen-1.5.4.orig/src/util.h 2007-08-12 05:45:51.000000000 +1000 ++++ doxygen-1.5.4/src/util.h 2008-01-09 09:28:43.000000000 +1100 +@@ -85,14 +85,16 @@ + + enum SrcLangExt + { +- SrcLangExt_IDL = 0x008, +- SrcLangExt_Java = 0x010, +- SrcLangExt_CSharp = 0x020, +- SrcLangExt_D = 0x040, +- SrcLangExt_PHP = 0x080, +- SrcLangExt_ObjC = 0x100, +- SrcLangExt_Cpp = 0x200, +- SrcLangExt_JS = 0x400, ++ SrcLangExt_IDL = 0x0008, ++ SrcLangExt_Java = 0x0010, ++ SrcLangExt_CSharp = 0x0020, ++ SrcLangExt_D = 0x0040, ++ SrcLangExt_PHP = 0x0080, ++ SrcLangExt_ObjC = 0x0100, ++ SrcLangExt_Cpp = 0x0200, ++ SrcLangExt_JS = 0x0400, ++ SrcLangExt_Perl = 0x0800, ++ SrcLangExt_Shell = 0x1000, + }; + + //-------------------------------------------------------------------- diff --git a/abs/core-testing/local-website/htdocs/mythtv-doc/i18n/.svn/all-wcprops b/abs/core-testing/local-website/htdocs/mythtv-doc/i18n/.svn/all-wcprops new file mode 100644 index 0000000..e7b0699 --- /dev/null +++ b/abs/core-testing/local-website/htdocs/mythtv-doc/i18n/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 64 +/svn/!svn/ver/15931/branches/release-0-21-fixes/mythtv/docs/i18n +END +keys_de.txt +K 25 +svn:wc:ra_dav:version-url +V 76 +/svn/!svn/ver/15931/branches/release-0-21-fixes/mythtv/docs/i18n/keys_de.txt +END diff --git a/abs/core-testing/local-website/htdocs/mythtv-doc/i18n/.svn/entries b/abs/core-testing/local-website/htdocs/mythtv-doc/i18n/.svn/entries new file mode 100644 index 0000000..4deb045 --- /dev/null +++ b/abs/core-testing/local-website/htdocs/mythtv-doc/i18n/.svn/entries @@ -0,0 +1,40 @@ +8 + +dir +17449 +http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythtv/docs/i18n +http://svn.mythtv.org/svn + + + +2005-06-22T17:08:33.437073Z +6689 +rkulagow + + +svn:special svn:externals svn:needs-lock + + + + + + + + + + + +7dbf422c-18fa-0310-86e9-fd20926502f2 + +keys_de.txt +file + + + + +2008-02-17T05:32:05.000000Z +c1a687298b5a96e93dd9daed3ee6f452 +2005-06-22T17:08:33.437073Z +6689 +rkulagow + diff --git a/abs/core-testing/local-website/htdocs/mythtv-doc/i18n/.svn/format b/abs/core-testing/local-website/htdocs/mythtv-doc/i18n/.svn/format new file mode 100644 index 0000000..45a4fb7 --- /dev/null +++ b/abs/core-testing/local-website/htdocs/mythtv-doc/i18n/.svn/format @@ -0,0 +1 @@ +8 diff --git a/abs/core-testing/local-website/htdocs/mythtv-doc/i18n/.svn/text-base/keys_de.txt.svn-base b/abs/core-testing/local-website/htdocs/mythtv-doc/i18n/.svn/text-base/keys_de.txt.svn-base new file mode 100644 index 0000000..3e7346c --- /dev/null +++ b/abs/core-testing/local-website/htdocs/mythtv-doc/i18n/.svn/text-base/keys_de.txt.svn-base @@ -0,0 +1,298 @@ +Translation provided by Michael Haas (hansi.urpils at gmail.com) 2005-06-22 + +Verschiedene Tasten und ihre Funktionen: + +mythfrontend +------------ + +- Pfeiltasten werden benutzt, um einen Menuepunkt auszuwaehlen. +- ALT-F4 beendet die Anwendung. +- Leertaste oder Enter, um den gewählten Menupünkt zu aktiveren. +- P zum Abspielen, sowohl in "Aufnahmen ansehen" als auch in "Loeschen". +- D zum Loeschen, sowohl in "Aufnahmen ansehen" als auch in "Loeschen". +- U fuer eine Detailansicht der momentan ausgewaehlten Sendung in "Aufnahmen + ansehen", "Loeschen", "EPG", "Suche" und "FIXME" sowie in den Suchergebnissen. +- O für eine Liste der anstehenden Folgen der momentan ausgewählten Sendung in + "EPG", "Suche", "Sendung Aufnahmeprioritaeten" und "FIXME" sowie in den + Suchergebnissen. +- I zum Bearbeiten der Aufnahmeoptionen in "EPG", "Suche", + "Sendung Aufnahmeprioritäten" und FIXME. In den Bildschirmen + "Aufnahmen ansehen" und "Loeschen" zeigt 'I' Optionen für aufgenommene + Sendungen wie "Automatisch löschen" oder "Aufnahme stoppen". + +Aufnahmen oder Fernsehen schauen +-------------------------------- + +- Pfeiltasten hoch und runter, um den Kanal zu wechseln +- Eine Nummer eintippen, um zu einem bestimmten Kanal oder um um eine bestimmte + Zeitspanne zu springen (HHMM-Format) +- P für Pause/Abspielen + - Es ist ebenfalls möglich, eine bestimmte Taste fuer "Abspielen" + ueber die Konfiguration der Tastenbelegung in MythWeb festzulegen, + um von Zeitlupenmodus, Zurückspulen, Vorspulen oder Pause wieder auf + normale Geschwindigkeit zu wechseln. + - C zum Wechseln des Eingangs auf der TV-Karte + - ESC zum Abbrechen + - I ruft das On-Screen-Display auf. + - Während der Wiedergabe wechselt 'I' zwischen Informationen zur aktuellen + Position und der Beschreibung der Sendung hin und her. Wenn eine Zeit + (HHMM) angegeben wird, springt MythTV um diese Zeit. + - M ruft das EPG auf. siehe Abschnitt zu EPG. + - Bild Runter springt um die vorkonfigurierte Zeitspanne zurueck. Standardwert ist 10 Minuten. + - Bild Hoch springt um die vorkonfigurierte Zeitspanne vor. Standardwert ist + 10 Minuten. + - Ende oder 'Z', um zur nächsten Werbungsmarkierung zu springen. + - Position 1 oder 'Q', um zur vorherigen Werbungsmarkierung zu springen. + - T zum Ein-/Ausschalten der Untertitel. + - F rotiert zwischen den verschiedenen Bildeinstellungen (Farbe, Farbton etc.) + Waehrend dieser Bildschirm zu sehen ist, benutzt man die linke bzw + rechte Pfeiltaste, um Einstellungen vorzunehmen. Diese Einstellungen + beeinflussen das Aussehen der Videowiedergabe und sind unabhaengig von + den Einstellungen, die mit der Taste 'G' gemacht werden koennen (siehe + unten) die bei der Aufnahme benutzt werden. + - [ oder F10 verringert die Lautstaerke + - ] oder F11 erhoeht die Lautstaerke + - / springt zum nächsten "bevorzugten Sender". + - ? kennzeichnet den aktuellen Kanal als "bevorzugten Sender" + - U erhöht die Abspielgeschwindigkeit + - J verringert die Abspielgeschwindigkeit + - A passt den Zeitraffer an (Beschleunigung oder Verlangsamung FIXME) + - W veraendert das Seitenverhaeltnis. Zur Auswahl stehen: 4:3, 16:9, + 4:3 Zoom (wie "Pan and Scan" FIXME), 16:9 Zoom und 16:9 "Stretch" FIXME + (beseitigt schwarze Raender im TV-Signal) + - Links (falls eine Sprungzeit angegeben wurde), um diese Zeitspanne + zurueckspringen + - Rechts (falls eine Sprungzeit angegeben wurde), um diese Zeitspanne + vorzuspringen + - F8 wechselt zwischen den Einstellungen des "sleep timer" FIXME: + 30min->1h->1h30min->2h->Aus. + +"Klebrige" Tasten ("sticky keys") ausgeschaltet: + + - Linke Pfeiltaste spult um die konfigurierte Zeitspanne (Standard: 5s) + zurueck. + - Rechte Pfeiltaste spult um die konfigurierte Zeitspanne (Standard: 30s) + vor. + - < startet den Rueckspulmodus (wie wenn "klebrige Tasten" aktiviert waere) + - > startet den Vorspulmodus (wie wenn "klebrige Tasten" aktiviert waere) + + "Klebrige" Tasten ("sticky keys") eingeschaltet: + + - Rechte Pfeiltaste startet den Vorspulmodus + - Linke Pfeiltaste startet den Rueckspulmodus + Waehrend dem Spulen: + - Linke/Rechte Pfeiltaste erhoeht die Vor-/Rueckspulgeschwindigkeit + - 0 spielt mit Normalgeschnwindigkeit, laesst allerdings den Zeitanzeiger + auf dem Bildschirm + - 1 oder 2, um langsamer als normales Vor-/Zurueckspulen zu spulen + (1 ist am langsamsten) + - 3 fuer normale Vor-/Rueckspulgeschwindigkeit + - 4 - 9 spult schneller als normales Vor-/Zurueckspulen + (9 ist am schnellsten) + - Leertaste, um den Spulmodus zu verlassen + +Nur Fernsehen: + + - G rotiert zwischen den verschiedenen Bildeinstellungen (Farbe, Farbton etc.) + fuer Aufnahmen. Diese Werte beeinflussen das Aussehen der resultierenden + .nuv-Datei. Waehrend dieser Bildschirm zu sehen ist, + benutzt man die linke bzw rechte Pfeiltaste, um Einstellungen vorzunehmen. + - H Senderverlauf. Jeder Druck auf diese Taste schaltet auf den jeweils + vorher geschauten Sender um. + - O schaltet den Browse-Modus an und erlaubt es so dem Benutzer, in den + Kanaelen und deren Programminformation zu stoebern waehrend er die + aktuelle Sendung in voller groesse schaut. + - Y wechselt zwischen den TV-Karten. + +Browse-Modus waehrend LiveTV + + - Linke Pfeiltaste blaettert im Programm vor dem aktuell angezeigten. + - Rechte Pfeiltaste blaettert im Programm nach dem aktuell angezeigten. + - Pfeiltaste Hoch blaettert im Programm des Kanals ueber dem aktuell + angezeigten. + - Pfeiltaste Runter blaettert im Programm des Kanals unter dem aktuell + angezeigten. + - / blattert durch das Programm des naechsten "bevorzugten Senders". + - 0-9 ermoeglicht es, eine Kanalnummer einzugeben und deren Programm + einzusehen. + - Leertaste/Enter wechselt den Kanal zu dem aktuell angezeigten. + - R/r nimmt die angezeigte Sendung auf (wechselt durch die Typen) + - ESC/O beendet den Browse-Modus + +Zoom-Modus während der Wiedergabe einer Aufnahme + - Linke Pfeiltaste bewegt das Video nach links + - Rechte Pfeiltaste bewegt das Video nach rechts + - Pfeiltaste Hoch bewegt das Video nach oben + - Pfeiltaste Runter bewegt das Video nach unten + - Bild Hoch zoomt rein + - Bild Runter zoomt raus + - Leertaste/Enter beendet den Zoom-Modus und laesst das Bild bei der momentanen + Groesse und Position + - ESC beendet den Zoom-Modus und kehrt zur Ausgangsgroesse zurück. + +Wenn man zwei oder mehr TV-Karten hat: + + - V schaltet Bild-in-Bild ein oder aus + - B holt die verschiedenen Fenster nacheinander in den Fokus + (erlaubt den Kanalwechsel im Bild-in-Bild-Fenster + - N vertauscht die Beiden Sender, indem die Kanäle auf beiden Karten gewechselt + werden + +Waehrend man eine Aufnahme ansieht: + - Leertaste oder Enter setzt ein Lesezeichen an dem Punkt. Wenn die Aufnahme + das nächste mal angeschaut wird, springt MythTV automatisch zu diesem + Punkt und loescht das Lesezeichen. + - E oder M startet/beendet den "Aufnahme bearbeiten"-Modus. + - Die linke und rechte Pfeiltaste bewegen den Cursor rueckwaerts und + vorwaerts + - Die Pfeiltasten Hoch und Runter veraendern die Zeitspanne, um die man + vorwaerts oder rueckwaerts springt. Verfügbare Schritte: naechster + Schnittpunkt, naechster Video-Keyframe, 1 frame, 0,5 Sekunden, + 1 Sekunde, 20 Sekunden, 1 Minute, 5 Minuten und 10 Minuten. + - Bild Hoch und Bild Runter wechseln zum naechsten Schnittpunkt + - < und > springen um das 10-fache der gesetzten Zeitspanne + nach vorne. + - 'Z' laedt die Liste mit den erkannten Werbespots in die Schnittliste, + falls eine existiert. + - 'C' oder 'Q' löschen alle Schnittpunkte in der Schnittliste. + - 'I' kehrt die Schnittliste um. + - X reiht die Aufnahme in die Warteschlange zur Umwandlung ein. + - O ruft das Menue zur Einstellung von "Automatisch loeschen", + "Werbung ueberspringen", etc auf. + - D beendet die gerade laufende Wiedergabe und zeigt das "Löschen"-Menue an. + +EPG +--- + +- Pfeiltasten werden benutzt, um einen Menuepunkt auszuwaehlen. +- A, D, S und W tun das selbe wie die Pfeiltasten. +- Bild Hoch/Bild Runter bewegen die Kanalliste eine Seite hoch oder runter. +- Position 1 oder Ende bewegen die Auswahl um einen Tag nach links oder rechts. +- 9, 3, 7 und 1 (wie auf dem Nummernblock) tun das gleiche wie Bild Hoch, + Bild Runter, Position 1 und Ende. +- I zeigt mehr Informationen ueber eine Sendung an und erlaubt es, eine + Aufnahme zu programmieren. + - Wenn man "Diese Sendung aufnehmen" auswaehlt waehrend man LiveTV schaut, + kann man eine Sendung direkt aufnehmen. +- Leertaste oder Enter, um Konflikte aufzuloesen oder um Sonderoptionen + zu veraendern. Wenn die Sendung nicht bereits zur Aufnahme bestimmt ist, + verhaelt sich MythTV als waere stattdessen 'I' gedrueckt worden. +- M, um auf den ausgewaehlten Kanal zu wechseln. +- ESC oder C, um den EPG zu verlassen, ohne den Kanal zu wechseln. +- R wechselt zwischen Aufnehmen/nicht Aufnehmen. Fortlaufendes Betätigen + wechselt zwischen den Aufnahmemodi. +- X wechselt den Kanal zu dem momentan ausgewaehlten, ohne den EPG zu verlassen. +- ? kennzeichnet den aktuellen Kanal als "bevorzugten Sender" +- / oder 4 zeigt alternativ nur die "bevorzugten Sender" an, bzw. schaltet + wieder zurueck zur normalen Ansicht. + +Setzen der "Sendung Aufnahmeprioritäten" und der "Sender Aufnahmeprioritäten" +---------------------------------------------------------------------------- + +- Die Rechte Pfeiltaste erhöht den Prioritaetswert +- Die Linke Pfeiltaste verringert den Prioritaetswert +- 1 sortiert nach dem Titel +- 2 sortiert nach der Priorität +- Position 1/Ende schaltet zwischen der Sortierung nach Prioritaet hin und her +- I, um die Aufnahmeoptionen zu editieren +- ESC speichert die Änderungen und verlässt den Bildschirm + +Ansehen der geplanten Aufnahmen/Konflikte lösen +------------------------------------------------ + +- 1 zeigt alle Aufnahmen an +- 2 zeigt nur wichtige Aufnahmen +- Position1/Ende wechselt zwischen der Ansicht von wichtigen und normalen + Aufnahmen. +- I, um die Aufnahmeoptionen zu editieren +- Leertaste oder Enter, um Konflikte zu lösen/außer Kraft zu setzen + +Ansehen der Suchlisten: +----------------------- + +- Position 1 wechselt zur vorherigen Ansicht, wenn anwendbar +- Ende wechselt zur naechsten Ansicht, wenn verfügbar +- M wechselt zu einer anderen Ansicht, wenn moeglich + - In dem Suchbildschirm für Titel und Beschreibung, druecke M noch einmal um + die ausgewählte Ansicht zu editieren oder zu löschen + +Einstellungsbildschirm der Aufnahmeprofile: +------------------------------------------ +- D ruft einen Bildschirm zum Löschen einer eigenen Profilgruppe auf. + +Aufnahmegruppen: +--------------- + +Aufnahmegruppen erlauben es, Programme in benutzerdefinierte Kategorien zu +unterteilen, wie beispielsweise "Kinder", "Alice", "Karl-Heinz" etc. +Diese Funktion kann benutzt werden, um Durcheinanger zu reduzieren oder um +Inhalt (Sendungen etc) abzusondern, wenn man die PIN-Funktion nutzt. + +Im "Aufnahmen ansehen"-Bildschirm: +- M wechselt die Ansicht oder setzt ein Passwort für die Gruppe +- I verschiebt eine Sendung von einer Gruppe in eine andere + +"Aufnahmen ansehen"-Bildschirm: +------------------------------- + +- "1" oder F1 zeigt einen Bildschirm mit der Bedeutung der Icons +- / markiert eine Aufnahme. Markierte Aufnahmen koennen als Gruppe + abgespielt (in Reihenfolge oder zufaellig) und geloescht werden. + Man kann ebenfalls die Aufnahmegruppe für einige Aufnahmen aendern, + indem man sie markiert und dann mit dem INFO-Menue die Aufnahmegruppe + aendert. +- ? leert die Liste der markierten Aufnahmen + +Fernbedienungen +--------------- + +Wenn man MythTV nur mit einer Fernbedienung benutzt, ist es empfohlen, dass man +die Tasten auf der Fernbedienung wie unten beschrieben belegt. +Es ist moeglich, dass die Fernbedienung nicht den gleichen Satz an Tasten +wie die unten genannten hat, die Namen sind nur Vorschlaege, die ungefaehr +der Funktion entsprechen. + +Wenn man neue Tastaturbelegungen zu dem Programm hinzufügt, wird es Benutzern +von Fernbedienungen helfen, wenn die vorgeschlagene Liste berücksichtigt wird. + +Diese Liste nimmt eine minimale Fernbedienung an, die nur 20 Tasten hat. +Nahezu alle Faehigkeiten koennen mit dieser Konfiguration genutzt werden. +Wenn man mehr Tasten hart, kann man alle Faehigkeiten ausnutzen. +Mit nru 16 Tasten sind die meisten Fähigkeiten verfügbar. + + +Fernbedienung LIRC-Tastendruck Funktion +------------- ---------------- -------- + +0 - 9 0 - 9 Kanalauswahl, Navigation im + EPG, + Rück-/Vorspulgeschwindigkeit + (mit "klebigen Tasten") + +Linke Pfeiltaste Left nach links scrollen, + zurueckspulen + +Rechte Pfeiltaste Right nach rechts scrollen, + vorspulen + +Pfeiltaste hoch Up hoch scrollen, Kanalwechsel + nach oben + +Pfeiltaste runter Down runter scrollen, Kanalwechsel + nach unten + +Auswahl/OK/Abspielen Space Menuepunkt auswaehlen, Abspielen + (mit "klebrigen Tasten"), + Lesezeichen setzen + +Abbrechen Escape Abbrechen, Wiedergabe beenden + +Menue m EPG (in LiveTV) + Editieren (bei Aufnahmen) + +Pause p Pause + +Andere Taste 1 i Information + +Andere Taste 2 c Wechselt den Eingang der + TV-Karte diff --git a/abs/core-testing/local-website/htdocs/mythtv-doc/i18n/keys_de.txt b/abs/core-testing/local-website/htdocs/mythtv-doc/i18n/keys_de.txt new file mode 100644 index 0000000..3e7346c --- /dev/null +++ b/abs/core-testing/local-website/htdocs/mythtv-doc/i18n/keys_de.txt @@ -0,0 +1,298 @@ +Translation provided by Michael Haas (hansi.urpils at gmail.com) 2005-06-22 + +Verschiedene Tasten und ihre Funktionen: + +mythfrontend +------------ + +- Pfeiltasten werden benutzt, um einen Menuepunkt auszuwaehlen. +- ALT-F4 beendet die Anwendung. +- Leertaste oder Enter, um den gewählten Menupünkt zu aktiveren. +- P zum Abspielen, sowohl in "Aufnahmen ansehen" als auch in "Loeschen". +- D zum Loeschen, sowohl in "Aufnahmen ansehen" als auch in "Loeschen". +- U fuer eine Detailansicht der momentan ausgewaehlten Sendung in "Aufnahmen + ansehen", "Loeschen", "EPG", "Suche" und "FIXME" sowie in den Suchergebnissen. +- O für eine Liste der anstehenden Folgen der momentan ausgewählten Sendung in + "EPG", "Suche", "Sendung Aufnahmeprioritaeten" und "FIXME" sowie in den + Suchergebnissen. +- I zum Bearbeiten der Aufnahmeoptionen in "EPG", "Suche", + "Sendung Aufnahmeprioritäten" und FIXME. In den Bildschirmen + "Aufnahmen ansehen" und "Loeschen" zeigt 'I' Optionen für aufgenommene + Sendungen wie "Automatisch löschen" oder "Aufnahme stoppen". + +Aufnahmen oder Fernsehen schauen +-------------------------------- + +- Pfeiltasten hoch und runter, um den Kanal zu wechseln +- Eine Nummer eintippen, um zu einem bestimmten Kanal oder um um eine bestimmte + Zeitspanne zu springen (HHMM-Format) +- P für Pause/Abspielen + - Es ist ebenfalls möglich, eine bestimmte Taste fuer "Abspielen" + ueber die Konfiguration der Tastenbelegung in MythWeb festzulegen, + um von Zeitlupenmodus, Zurückspulen, Vorspulen oder Pause wieder auf + normale Geschwindigkeit zu wechseln. + - C zum Wechseln des Eingangs auf der TV-Karte + - ESC zum Abbrechen + - I ruft das On-Screen-Display auf. + - Während der Wiedergabe wechselt 'I' zwischen Informationen zur aktuellen + Position und der Beschreibung der Sendung hin und her. Wenn eine Zeit + (HHMM) angegeben wird, springt MythTV um diese Zeit. + - M ruft das EPG auf. siehe Abschnitt zu EPG. + - Bild Runter springt um die vorkonfigurierte Zeitspanne zurueck. Standardwert ist 10 Minuten. + - Bild Hoch springt um die vorkonfigurierte Zeitspanne vor. Standardwert ist + 10 Minuten. + - Ende oder 'Z', um zur nächsten Werbungsmarkierung zu springen. + - Position 1 oder 'Q', um zur vorherigen Werbungsmarkierung zu springen. + - T zum Ein-/Ausschalten der Untertitel. + - F rotiert zwischen den verschiedenen Bildeinstellungen (Farbe, Farbton etc.) + Waehrend dieser Bildschirm zu sehen ist, benutzt man die linke bzw + rechte Pfeiltaste, um Einstellungen vorzunehmen. Diese Einstellungen + beeinflussen das Aussehen der Videowiedergabe und sind unabhaengig von + den Einstellungen, die mit der Taste 'G' gemacht werden koennen (siehe + unten) die bei der Aufnahme benutzt werden. + - [ oder F10 verringert die Lautstaerke + - ] oder F11 erhoeht die Lautstaerke + - / springt zum nächsten "bevorzugten Sender". + - ? kennzeichnet den aktuellen Kanal als "bevorzugten Sender" + - U erhöht die Abspielgeschwindigkeit + - J verringert die Abspielgeschwindigkeit + - A passt den Zeitraffer an (Beschleunigung oder Verlangsamung FIXME) + - W veraendert das Seitenverhaeltnis. Zur Auswahl stehen: 4:3, 16:9, + 4:3 Zoom (wie "Pan and Scan" FIXME), 16:9 Zoom und 16:9 "Stretch" FIXME + (beseitigt schwarze Raender im TV-Signal) + - Links (falls eine Sprungzeit angegeben wurde), um diese Zeitspanne + zurueckspringen + - Rechts (falls eine Sprungzeit angegeben wurde), um diese Zeitspanne + vorzuspringen + - F8 wechselt zwischen den Einstellungen des "sleep timer" FIXME: + 30min->1h->1h30min->2h->Aus. + +"Klebrige" Tasten ("sticky keys") ausgeschaltet: + + - Linke Pfeiltaste spult um die konfigurierte Zeitspanne (Standard: 5s) + zurueck. + - Rechte Pfeiltaste spult um die konfigurierte Zeitspanne (Standard: 30s) + vor. + - < startet den Rueckspulmodus (wie wenn "klebrige Tasten" aktiviert waere) + - > startet den Vorspulmodus (wie wenn "klebrige Tasten" aktiviert waere) + + "Klebrige" Tasten ("sticky keys") eingeschaltet: + + - Rechte Pfeiltaste startet den Vorspulmodus + - Linke Pfeiltaste startet den Rueckspulmodus + Waehrend dem Spulen: + - Linke/Rechte Pfeiltaste erhoeht die Vor-/Rueckspulgeschwindigkeit + - 0 spielt mit Normalgeschnwindigkeit, laesst allerdings den Zeitanzeiger + auf dem Bildschirm + - 1 oder 2, um langsamer als normales Vor-/Zurueckspulen zu spulen + (1 ist am langsamsten) + - 3 fuer normale Vor-/Rueckspulgeschwindigkeit + - 4 - 9 spult schneller als normales Vor-/Zurueckspulen + (9 ist am schnellsten) + - Leertaste, um den Spulmodus zu verlassen + +Nur Fernsehen: + + - G rotiert zwischen den verschiedenen Bildeinstellungen (Farbe, Farbton etc.) + fuer Aufnahmen. Diese Werte beeinflussen das Aussehen der resultierenden + .nuv-Datei. Waehrend dieser Bildschirm zu sehen ist, + benutzt man die linke bzw rechte Pfeiltaste, um Einstellungen vorzunehmen. + - H Senderverlauf. Jeder Druck auf diese Taste schaltet auf den jeweils + vorher geschauten Sender um. + - O schaltet den Browse-Modus an und erlaubt es so dem Benutzer, in den + Kanaelen und deren Programminformation zu stoebern waehrend er die + aktuelle Sendung in voller groesse schaut. + - Y wechselt zwischen den TV-Karten. + +Browse-Modus waehrend LiveTV + + - Linke Pfeiltaste blaettert im Programm vor dem aktuell angezeigten. + - Rechte Pfeiltaste blaettert im Programm nach dem aktuell angezeigten. + - Pfeiltaste Hoch blaettert im Programm des Kanals ueber dem aktuell + angezeigten. + - Pfeiltaste Runter blaettert im Programm des Kanals unter dem aktuell + angezeigten. + - / blattert durch das Programm des naechsten "bevorzugten Senders". + - 0-9 ermoeglicht es, eine Kanalnummer einzugeben und deren Programm + einzusehen. + - Leertaste/Enter wechselt den Kanal zu dem aktuell angezeigten. + - R/r nimmt die angezeigte Sendung auf (wechselt durch die Typen) + - ESC/O beendet den Browse-Modus + +Zoom-Modus während der Wiedergabe einer Aufnahme + - Linke Pfeiltaste bewegt das Video nach links + - Rechte Pfeiltaste bewegt das Video nach rechts + - Pfeiltaste Hoch bewegt das Video nach oben + - Pfeiltaste Runter bewegt das Video nach unten + - Bild Hoch zoomt rein + - Bild Runter zoomt raus + - Leertaste/Enter beendet den Zoom-Modus und laesst das Bild bei der momentanen + Groesse und Position + - ESC beendet den Zoom-Modus und kehrt zur Ausgangsgroesse zurück. + +Wenn man zwei oder mehr TV-Karten hat: + + - V schaltet Bild-in-Bild ein oder aus + - B holt die verschiedenen Fenster nacheinander in den Fokus + (erlaubt den Kanalwechsel im Bild-in-Bild-Fenster + - N vertauscht die Beiden Sender, indem die Kanäle auf beiden Karten gewechselt + werden + +Waehrend man eine Aufnahme ansieht: + - Leertaste oder Enter setzt ein Lesezeichen an dem Punkt. Wenn die Aufnahme + das nächste mal angeschaut wird, springt MythTV automatisch zu diesem + Punkt und loescht das Lesezeichen. + - E oder M startet/beendet den "Aufnahme bearbeiten"-Modus. + - Die linke und rechte Pfeiltaste bewegen den Cursor rueckwaerts und + vorwaerts + - Die Pfeiltasten Hoch und Runter veraendern die Zeitspanne, um die man + vorwaerts oder rueckwaerts springt. Verfügbare Schritte: naechster + Schnittpunkt, naechster Video-Keyframe, 1 frame, 0,5 Sekunden, + 1 Sekunde, 20 Sekunden, 1 Minute, 5 Minuten und 10 Minuten. + - Bild Hoch und Bild Runter wechseln zum naechsten Schnittpunkt + - < und > springen um das 10-fache der gesetzten Zeitspanne + nach vorne. + - 'Z' laedt die Liste mit den erkannten Werbespots in die Schnittliste, + falls eine existiert. + - 'C' oder 'Q' löschen alle Schnittpunkte in der Schnittliste. + - 'I' kehrt die Schnittliste um. + - X reiht die Aufnahme in die Warteschlange zur Umwandlung ein. + - O ruft das Menue zur Einstellung von "Automatisch loeschen", + "Werbung ueberspringen", etc auf. + - D beendet die gerade laufende Wiedergabe und zeigt das "Löschen"-Menue an. + +EPG +--- + +- Pfeiltasten werden benutzt, um einen Menuepunkt auszuwaehlen. +- A, D, S und W tun das selbe wie die Pfeiltasten. +- Bild Hoch/Bild Runter bewegen die Kanalliste eine Seite hoch oder runter. +- Position 1 oder Ende bewegen die Auswahl um einen Tag nach links oder rechts. +- 9, 3, 7 und 1 (wie auf dem Nummernblock) tun das gleiche wie Bild Hoch, + Bild Runter, Position 1 und Ende. +- I zeigt mehr Informationen ueber eine Sendung an und erlaubt es, eine + Aufnahme zu programmieren. + - Wenn man "Diese Sendung aufnehmen" auswaehlt waehrend man LiveTV schaut, + kann man eine Sendung direkt aufnehmen. +- Leertaste oder Enter, um Konflikte aufzuloesen oder um Sonderoptionen + zu veraendern. Wenn die Sendung nicht bereits zur Aufnahme bestimmt ist, + verhaelt sich MythTV als waere stattdessen 'I' gedrueckt worden. +- M, um auf den ausgewaehlten Kanal zu wechseln. +- ESC oder C, um den EPG zu verlassen, ohne den Kanal zu wechseln. +- R wechselt zwischen Aufnehmen/nicht Aufnehmen. Fortlaufendes Betätigen + wechselt zwischen den Aufnahmemodi. +- X wechselt den Kanal zu dem momentan ausgewaehlten, ohne den EPG zu verlassen. +- ? kennzeichnet den aktuellen Kanal als "bevorzugten Sender" +- / oder 4 zeigt alternativ nur die "bevorzugten Sender" an, bzw. schaltet + wieder zurueck zur normalen Ansicht. + +Setzen der "Sendung Aufnahmeprioritäten" und der "Sender Aufnahmeprioritäten" +---------------------------------------------------------------------------- + +- Die Rechte Pfeiltaste erhöht den Prioritaetswert +- Die Linke Pfeiltaste verringert den Prioritaetswert +- 1 sortiert nach dem Titel +- 2 sortiert nach der Priorität +- Position 1/Ende schaltet zwischen der Sortierung nach Prioritaet hin und her +- I, um die Aufnahmeoptionen zu editieren +- ESC speichert die Änderungen und verlässt den Bildschirm + +Ansehen der geplanten Aufnahmen/Konflikte lösen +------------------------------------------------ + +- 1 zeigt alle Aufnahmen an +- 2 zeigt nur wichtige Aufnahmen +- Position1/Ende wechselt zwischen der Ansicht von wichtigen und normalen + Aufnahmen. +- I, um die Aufnahmeoptionen zu editieren +- Leertaste oder Enter, um Konflikte zu lösen/außer Kraft zu setzen + +Ansehen der Suchlisten: +----------------------- + +- Position 1 wechselt zur vorherigen Ansicht, wenn anwendbar +- Ende wechselt zur naechsten Ansicht, wenn verfügbar +- M wechselt zu einer anderen Ansicht, wenn moeglich + - In dem Suchbildschirm für Titel und Beschreibung, druecke M noch einmal um + die ausgewählte Ansicht zu editieren oder zu löschen + +Einstellungsbildschirm der Aufnahmeprofile: +------------------------------------------ +- D ruft einen Bildschirm zum Löschen einer eigenen Profilgruppe auf. + +Aufnahmegruppen: +--------------- + +Aufnahmegruppen erlauben es, Programme in benutzerdefinierte Kategorien zu +unterteilen, wie beispielsweise "Kinder", "Alice", "Karl-Heinz" etc. +Diese Funktion kann benutzt werden, um Durcheinanger zu reduzieren oder um +Inhalt (Sendungen etc) abzusondern, wenn man die PIN-Funktion nutzt. + +Im "Aufnahmen ansehen"-Bildschirm: +- M wechselt die Ansicht oder setzt ein Passwort für die Gruppe +- I verschiebt eine Sendung von einer Gruppe in eine andere + +"Aufnahmen ansehen"-Bildschirm: +------------------------------- + +- "1" oder F1 zeigt einen Bildschirm mit der Bedeutung der Icons +- / markiert eine Aufnahme. Markierte Aufnahmen koennen als Gruppe + abgespielt (in Reihenfolge oder zufaellig) und geloescht werden. + Man kann ebenfalls die Aufnahmegruppe für einige Aufnahmen aendern, + indem man sie markiert und dann mit dem INFO-Menue die Aufnahmegruppe + aendert. +- ? leert die Liste der markierten Aufnahmen + +Fernbedienungen +--------------- + +Wenn man MythTV nur mit einer Fernbedienung benutzt, ist es empfohlen, dass man +die Tasten auf der Fernbedienung wie unten beschrieben belegt. +Es ist moeglich, dass die Fernbedienung nicht den gleichen Satz an Tasten +wie die unten genannten hat, die Namen sind nur Vorschlaege, die ungefaehr +der Funktion entsprechen. + +Wenn man neue Tastaturbelegungen zu dem Programm hinzufügt, wird es Benutzern +von Fernbedienungen helfen, wenn die vorgeschlagene Liste berücksichtigt wird. + +Diese Liste nimmt eine minimale Fernbedienung an, die nur 20 Tasten hat. +Nahezu alle Faehigkeiten koennen mit dieser Konfiguration genutzt werden. +Wenn man mehr Tasten hart, kann man alle Faehigkeiten ausnutzen. +Mit nru 16 Tasten sind die meisten Fähigkeiten verfügbar. + + +Fernbedienung LIRC-Tastendruck Funktion +------------- ---------------- -------- + +0 - 9 0 - 9 Kanalauswahl, Navigation im + EPG, + Rück-/Vorspulgeschwindigkeit + (mit "klebigen Tasten") + +Linke Pfeiltaste Left nach links scrollen, + zurueckspulen + +Rechte Pfeiltaste Right nach rechts scrollen, + vorspulen + +Pfeiltaste hoch Up hoch scrollen, Kanalwechsel + nach oben + +Pfeiltaste runter Down runter scrollen, Kanalwechsel + nach unten + +Auswahl/OK/Abspielen Space Menuepunkt auswaehlen, Abspielen + (mit "klebrigen Tasten"), + Lesezeichen setzen + +Abbrechen Escape Abbrechen, Wiedergabe beenden + +Menue m EPG (in LiveTV) + Editieren (bei Aufnahmen) + +Pause p Pause + +Andere Taste 1 i Information + +Andere Taste 2 c Wechselt den Eingang der + TV-Karte diff --git a/abs/core-testing/local-website/htdocs/mythtv-doc/index.html b/abs/core-testing/local-website/htdocs/mythtv-doc/index.html new file mode 100644 index 0000000..6efe675 --- /dev/null +++ b/abs/core-testing/local-website/htdocs/mythtv-doc/index.html @@ -0,0 +1,250 @@ + + + + + Installing and using MythTV + + + + + +Next +Previous +Contents +
+

Installing and using MythTV

+ +

Robert Kulagowski, +mailto:rkulagow@rocketmail.com

2008-06-04, v0.21.02 +
+Initially, installation of MythTV seems like a huge task. There are lots +of dependencies, and various distributions seem to do the same thing +different ways. This document will attempt to give general installation +instructions, as well as including distribution-specific instructions where +necessary. +
+

+

1. First things first.

+ + +

+

2. Introduction.

+ +

+

3. Checking prerequisites.

+ + +

+

4. System Configuration Requirements for Compiling MythTV.

+ + +

+

5. Downloading and compiling.

+ + +

+

6. MySQL.

+ + +

+

7. Configuring Sound.

+ + +

+

8. Setting up a remote control.

+ + +

+

9. Configuring MythTV.

+ + +

+

10. Configuring mythfrontend.

+ + +

+

11. Using MythTV.

+ + +

+

12. Scheduling Recordings.

+ + +

+

13. MythPlugins.

+ +

+

14. MythWeb.

+ + +

+

15. MythGallery.

+ + +

+

16. MythGame.

+ + +

+

17. MythMusic.

+ + +

+

18. MythWeather.

+ +

+

19. MythVideo.

+ +

+

20. MythDVD.

+ + +

+

21. MythNews.

+ +

+

22. Troubleshooting.

+ + +

+

23. Miscellaneous.

+ + +

+

24. Example Configurations.

+ + +
+Next +Previous +Contents + + diff --git a/abs/core-testing/local-website/htdocs/mythtv-doc/keys.txt b/abs/core-testing/local-website/htdocs/mythtv-doc/keys.txt new file mode 100644 index 0000000..4385fb4 --- /dev/null +++ b/abs/core-testing/local-website/htdocs/mythtv-doc/keys.txt @@ -0,0 +1,325 @@ +Various keys and their actions: + +mythfrontend +------------ + +- Arrow keys are used to move the highlight point around. +- ALT-F4 to exit out of the application. +- Space or Enter to take action on the item under the highlight point. +- P to play in both "Watch a Recording" and "Delete a Recording". +- D to delete in both "Watch a Recording" and "Delete a Recording". +- E to enter the Custom Record editor for the selected title on the EPG, + "Program Finder", "Upcoming Recordings" and search results screens. +- U to view details for the currently selected show on the Watch or + Delete screens, EPG, "Program Finder", "Upcoming Recordings" + and search results screens. +- O to list the upcoming episodes for the currently selected show + on any page where a show title may be highlighed. +- I to edit recording options from any of the pages for scheduling + recordings. From the Watch and Delete screens, 'I' presents options + for recorded shows such as Auto Expire or Stop Recording. +- Y on the "Upcoming Recordings" page switches which capture cards' + items are displayed in the highlight color. + +Watching TV or a recording +-------------------------- + +- P Pause / Play. + You may also add an explicit keybinding for "Play" through the + MythWeb keybindings page, returning you to normal speed if you + are in slow-motion, rewind, fast forward or pause mode. +- ESC Exit player if no OSD on screen, otherwise exit OSD. +- I Puts the On-screen Display up again. + During playback, 'I' toggles between position and show description info. + If a number of minutes is entered, jump to that position. +- M Menu (allows access to EPG and many other useful features +- K Jumps to the bookmark position. +- T In North America this toggles closed caption support. +- T In Europe follow this with the teletext page and another T +- F Rotate between the various Picture Adjustments (Colour, Hue, etc.) + While Picture Adjustment is on-screen, use Left and Right arrows + to adjust. These settings adjust the look of the video playback, + and are independent of the G-key settings used at record-time. + The Xv picture controls must be enabled in the Playback settings. +- U Increase the play speed [muted] +- J Decrease the play speed [muted] +- A Adjust time stretch (speed up or slow down play speed [with audio]) + Use the arrow keys to make adjustment. +- W Cycle through zoom modes: Half, Full, Stretch +- Ctrl-W Force aspect ratio of video to be treated as either 4:3 or 16:9 +- S Display the Program Guide (EPG). +- F6 Display the Program Finder. +- F8 Cycle through sleep timer settings Off->30m->1hr->1hr30m->2hr->Off +- Left arrow Skip back +- Right arrow Skip ahead + NOTE: During playback of a recording you can enter a number of minutes to + jump before using the Skip key. Otherwise, the configured defaults + will be used. Seconds can be entered by entering four digits in the + MMss format. + +- Page Up Jump back the configured number of minutes. (default is 10) +- Page Down Jump ahead the configured number of minutes. (default is 10) +- Z or End Skip to next commercial break marker +- Q or Home Skip back to previous commercial break marker +- + or - Cycle through audio streams +- | or F9 Toggle mute +- [ or F10 Decrease volume +- ] or F11 Increase volume +- Ctrl+B Jump to the beginning of the recording / ringbuffer. + +When in Teletext Menu mode: +- Up/Down Previous/Next Page +- Left/Right Previous/Next Subpage +- T Exit Teletext Menu +- F2-F6 Menu Red, Green, Yellow, Blue, or White, respectively +- F7 Toggle Background on/off +- F8 Reveal hidden text. + +When MHEG ITV is enabled: +- F2-F5 Menu Red, Green, Yellow, or Blue, respectively +- F6 Exit key, exits from interactive mode on some channels +- F7 Text key, enters interactive mode on some channels +- F12 EPG key, enters EPG mode (New Zealand only). + The effect of these keys depends on what is being displayed. The arrow, + Enter, and 0-9 keys may also be used. + +Without the stickykeys option selected: + +- Left arrow to rewind the configured number of seconds. (default is 5) +- Right arrow to fast forward the configured number of seconds. (default is 30) +- < starts rewind mode as if stickykeys are selected. + If a jump amount is entered, jump to that position. +- > starts fast forward mode as if stickykeys are selected. + If a jump amount is entered, jump that amount from the end. + +With the stickykeys option selected: + +- Right starts fast forward mode. +- Left starts rewind mode. + While in fast forward or rewind mode. + - Left/Right increases the ff/rew speed. + - 0 plays at normal speed, but leaves the time indicator on screen. + - 1 or 2 plays back more slowly than normal ff/rew speed (1 is slowest). + - 3 plays back at normal ff/rew speed. + - 4 - 9 plays back faster than normal ff/rew speed (9 is fastest). + - Space exits fast forward or rewind mode. + +With the video paused: + +- Left arrow Rewind one frame +- < or comma Rewind one second +- Right arrow Advance one frame +- > or period Advance one second + +Watching TV only: + +- 0-9 Enter a channel number... + If the channel is not unique or smart channel change is disabled + press Return/OK when done, to commit the channel change. +- G Rotate between the various Picture Adjustments (Colour, Hue, etc.) + for recording. These values affect the look for all recordings made + with the current capture card and are independent of the playback + picture settings. While Picture Adjustment is on-screen, use Left and + Right arrows to adjust. +- Ctrl-G The same as G, except it affects the look for all recordings made + on the current channel, independent of the capture card used. +- H Channel history. Each repeat steps back through the previous channels. +- O Turns on 'Browse' mode, allowing user to browse channels and program + info while watching current show FullScreen. +- / Change to the next "favorite" channel +- ? Mark/Unmark the current channel as a "favorite" channel +- Y Switch to the next available capture source +- Ctrl-Y Switch to the previous capture source +- C Change to the next available tuner card input +- F7 Monitor signal quality on a card capable of signal monitoring + +LiveTV while not in Browse Mode: +- Up/Down arrows Change the channel. + +LiveTV Browse Mode: +- Left browse program prior to current listed program. +- Right browse program following current listed program. +- Up browse program on channel above current listed channel/program. +- Down browse program on channel below current listed channel/program. +- / browse program on next favorite channel. +- 0-9 enter a channel number to browse. +- Space/Enter change channel to channel of current listed program. +- R Toggle recording of current program (cycles through types) +- ESC/O Exit Browse mode. + +Playback Recording +- Y Adjust Audio Sync +- R Cycle Commercial-Skip Mode + +Playback Recording Zoom Mode: +- Left Move video to Left +- Right Move video to Right +- Up Move video Up +- Down Move video Down +- PageUp Zoom In +- PageDown Zoom Out +- Space/Enter Exit Zoom mode leaving picture at current size and position +- ESC Exit Zoom mode and return to original size. + +If you have two or more tuner cards: + +- V toggle Picture-in-picture on or off +- B toggles the window focus (lets you change channels on the PiP window). +- N swaps the two channels by changing channels on both cards. + +While watching a recording: + +- SPACE or ENTER will set a bookmark at that point. Next time you start the + recording, you will automatically jump forward to this point and clear the + bookmark. +- E or M enters/exits edit mode. + - The left and right keys move forward and backward. + - The up and down arrow keys alter the amount of time you jump forward and + backward. Increments are: nearest cutpoint, nearest video keyframe, + 1 frame, 0.5 seconds, 1 second, 20 seconds, 1 minute, 5 minutes, and + 10 minutes. + - The page up and down keys move forward and backward to the nearest cut + point. + - The < or comma and > or period keys move forward or backward by 10 times + the normal jump amount. + - Space/Enter allows you to set or delete a cut point. + - 'Z' loads the commercial skip list (if one exists) into the cutlist. + - 'C' and 'Q' clear all cut points in the cutlist. + - 'I' inverts the cutlist. +- X queues the current recording for transcoding. +- O brings up menu to allow toggling settings such as Commercial Auto-Skip, + Auto-Expire, etc. +- D exits the current recording and displays the Delete menu for it. + + +EPG +--- + +- Arrow keys are used to move the highlighted program point around. +- The keys A, D, S, W perform the same as left, right, down and up. +- PageUp and PageDown move the channel list up or down a page. +- Home and End move the highlight left or right by one day. +- Control-Left and Control Right, <, >, period and comma keys move the + highlight left or right by one page. +- The keys 9, 3, 7 and 1 (like a numeric keypad) perform the same as PageUp, + PageDown, Home and End. +- I will bring up more information about a show, and allow you to schedule + a recording. + - If you select "Record this showing" while watching Live TV you can + "Instant Record" a program. +- Space or Enter will allow you resolve conflicts or change overrides. + If the program is not already scheduled to record, it will act like + pressing I instead. +- Pressing M when on a channel will change to that channel. +- Pressing ESC or C exits without changing the channel. +- Pressing R will change the current item from Recording/Not-Recording. + Successive keypresses cycle through the scheduled recording type list. +- Pressing X will change the channel to the currently selected channel without + leaving the EPG (Most useful in the alternate EPG) +- Pressing '?' will mark/unmark the current channel as a "favorite" +- Pressing '/' or 4 will toggle the guide listing between all channels and + "favorites". + +Set Program Recording Priorities and Set Channel Recording Priorities +--------------------------------------------------------------------- + +- Right increases priority value. +- Left decreases priority value. +- 1 sorts by title. +- 2 sorts by priority. +- Home/End to toggle sort priority. +- I to edit recording options. +- ESC commits changes and exits. + +Viewing Scheduled Recordings/Resolving Conflicts +------------------------------------------------- + +- 1 to show all recordings. +- 2 to show only important recordings. +- Home/End to toggle show showing all/important. +- I to edit recording options. +- Space or Enter to resolve conflict or override. + +Viewing Search Listings +----------------------- +- Home to change to the previous view if applicable. +- End to change to the next view if applicable. +- M to select another view if applicable. + - In the title and description search popup, press M again to edit or + delete the selected view. + +Program Finder +-------------- +- R will change the current item from Recording/Not-Recording. + Successive keypresses cycle through the scheduled recording type list. +- 4 switch to the Program Guide. +- 5 move to the middle of the active list. + +Recording Profiles Setup Screen +------------------------------- + +- D on a custom profile group displays a popup to delete the group. + +Recording Groups +---------------- + +Recording Groups allow you to separate programs into user-defined +categories, such as "Kids", "Alice", "Bob", etc. This can be used to reduce +clutter, or to segregate content if you use the PIN function. + +In the Watch Recordings Screen +- M to change the view or to set a group password +- I to move a program from one Recording Group to another + +Watch Recordings Screen +----------------------- + +- "1" or F1 to get a popup on the meaning of the icons +- / to tag a recording. Tagged recordings can be played (in order or + shuffled) and deleted as a group. You can also change the + recording group for several recordings at once by tagging them and + using the popup INFO menu to change the recording group. +- ? to clear the tagged list. + +Remote Controls +--------------- + +If you are using MythTV with just a remote control then it is suggested that you +map the remote control keys as described below. Your remote control may not +have the same set of keys as those named below, the names are only a suggestion +that roughly correspond to the function. + +If you are adding new key bindings to the program then consideration of this +suggested list will help users with remote controls. + +This list assumes a minimal remote control that only has 20 keys, nearly all +features can be used with this configuration. If you have more keys then you +can access all of the features. With only 16 keys most features are usable. + + +Remote Control LIRC Keystroke Function +-------------- -------------- -------- + +0 - 9 0 - 9 channel selection, EPG navigation, + ff/rew speed setting (with stickykeys) + +Left Arrow Left scroll left, rewind +Right Arrow Right scroll right, fast forward + +Up Arrow Up scroll up, channel change up +Down Arrow Down scroll down, channel change down + +Select / OK / Play Space Select item, play (with stickykeys) + set bookmark + +Cancel Escape Cancel, quit playback + +Menu m EPG (from watching TV) + edit (from playback). + +Pause p Pause + +Other key 1 i Information + +Other key 2 c Change tuner card input + diff --git a/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-1.html b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-1.html new file mode 100644 index 0000000..2f9fb22 --- /dev/null +++ b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-1.html @@ -0,0 +1,272 @@ + + + + + Installing and using MythTV: First things first. + + + + + +Next +Previous +Contents +
+

1. First things first.

+ +

+

+ + +NOTE: Please note that I, Robert Kulagowski, am NOT the +author/programmer of the MythTV application! I can not give you +personalized installation support. If you are having issues installing +MythTV you should examine the archives, or post your question to the +MythTV-users mailing list. If you send me "Does MythTV work with 'X'"? +messages - I will simply instruct you to ask your question on the +mythtv-users mailing list. +
+

+

1.1 What is MythTV? +

+ +

MythTV is a GPL licensed suite of programs that allow you to build the +mythical home media convergence box on your own using Open Source software +and operating systems. MythTV is known to work on Linux and Mac OS X +(PowerPC and Intel). It does not run on Windows.

+

MythTV has a number of capabilities. The television portion allows you to +do the following: +

    +
  • You may pause, fast-forward and rewind live Television.
  • +
  • You may install multiple video capture cards to record more than one +program at a time.
  • +
  • You can have multiple servers (called "backends"), each with multiple +capture cards in them. All scheduling is performed by the Master backend, +which arbitrates which recording will be performed by each device. All +recording requests are managed by the Master backend, so you can schedule a +recording from any client.
  • +
  • You can have multiple clients (called "frontends" in MythTV parlance), +each with a common view of all available programs. Any client can watch any +program that was recorded by any of the servers, assuming that they have the +hardware capabilities to view the content; a low-powered frontend will not +be able to watch HDTV, for example. Clients can be diskless and controlled +entirely by a remote control.
  • +
  • You may use any combination of standard analog capture card, MPEG-2, +MJPEG, DVB, HDTV, USB and firewire capture devices. With appropriate +hardware, MythTV can control set top boxes, often found in digital cable and +satellite TV systems.
  • +
  • Program Guide Data in North America is downloaded from +schedulesdirect.org, a non-profit organization which has licensed data from +Tribune Media Services. This service provides almost two weeks of +scheduling information. Program Guide Data in other countries is obtained +using XMLTV. MythTV uses this information to create a schedule that +maximizes the number of programs that can be recorded if you don't have +enough tuners.
  • +
  • MythTV implements a UPNP server, so a UPNP client should automatically +see content from your MythTV system.
  • +
+ +Other modules in MythTV include: +
    +
  • MythArchive, a tool to create DVDs
  • +
  • MythBrowser, a web browser
  • +
  • MythControls, an application to configure your remote control
  • +
  • MythFlix, a Netflix module
  • +
  • MythGallery, a picture-viewing application
  • +
  • MythGame
  • +
  • MythMusic, a music playing / ripping application which supports MP3 +and FLAC
  • +
  • MythNews, a RSS news grabber
  • +
  • MythPhone, phone and videophone using SIP.
  • +
  • MythVideo, DVD ripper and a media-viewer for content not created within MythTV
  • +
  • MythWeather
  • +
  • MythWeb, which allows you to control your MythTV system using a web +browser. With MythWeb, you can schedule and delete recordings, change +keybindings and more. With proper security, you may even schedule a program +over the Internet and have it immediately acted on by the Master backend.
  • +
+

+

1.2 QuickStart +

+ +

Custom mini-distributions are available to make it easier to install +MythTV. A mini-distribution removes many of the "general purpose" +workstation / server software packages that may be installed by default if +you use one of the big-name OS packages.

+

See +http://mysettopbox.tv if you'd +like to install a custom version of Knoppix optimized for MythTV.

+

See +http://www.minimyth.org if you'd like +to install MythTV onto a diskless system.

+

See +http://bit.blkbk.com if you'd +like to install MythTV on a Xbox. +NOTE: Site appears unmaintained.

+

See +http://wilsonet.com/mythtv/ for instructions tailored to RedHat's +Fedora Core distribution.

+

See +http://www.mythbuntu.org if +you'd like to install a customized version of Ubuntu optimized for MythTV.

+

There is a MythTV wiki at +http://wiki.mythtv.org.

+

If you are installing this version for Schedules Direct support, please see +the +Migrating from DataDirect Labs to Schedules Direct section for additional information.

+ +

1.3 Upgrading from previous versions +

+ +

The upgrade from previous versions should be transparent. Any changes to +the database structure should be applied automatically.

+

It is strongly recommended that you back up your database before +installing a new version of MythTV.

+

See +Saving or Restoring the database for instructions.

+ +

1.4 How to obtain this document / PDF versions of this document +

+ +

This HOWTO document is maintained at the primary MythTV website: +http://www.mythtv.org by Robert +Kulagowski +mailto:rkulagow@rocketmail.com.

+

This document is available as a single-page HTML document at +http://www.mythtv.org/docs/mythtv-HOWTO-singlehtml.html or as a PDF +at +http://www.mythtv.org/docs/mythtv-HOWTO.pdf.

+

This HOWTO is for MythTV v0.21

+

Release notes for this version may be found in the MythTV Wiki at +http://www.mythtv.org/wiki/index.php/Release_Notes_-_0.21

+ +

1.5 Books about MythTV +

+ +

If you would like to purchase a book specifically about MythTV:

+

+

    +
  • Hacking MythTV, ISBN 978-0470037874 by Wilson, Tittel, Wright and Korelc
  • +
  • Practical MythTV: Building a PVR and Media Center PC, ISBN 978-1590597798 by Smith and Still
  • +
+

+ +

1.6 Document conventions +

+ +

The following conventions are used throughout this document.
+boldface - used for program names.
+typewriter - used for program paths.
+emphasis - Pay attention here.

+

+

+ + +Pay more attention. +
+

+

+

+ + +Ignore at your own peril. +
+

+

+

+ + +Feature that has been added to SVN (subversion, a revision control system) +but is not available in the current release. +
+

+ +

1.7 Mailing lists / getting help +

+ +

It's recommended that you join the user list at +http://www.mythtv.org/mailman/listinfo/mythtv-users. The developer +list is at +http://mythtv.org/cgi-bin/mailman/listinfo/mythtv-dev. Please keep +the developer list strictly for development-related issues.

+

Searchable archives for the lists are available at +http://www.gossamer-threads.com/lists/mythtv/.

+ +

1.8 IRC +

+ +

There are two IRC channels dedicated to MythTV which can be found on +irc.freenode.net +

    +
  • mythtv
  • +
  • mythtv-users
  • +
+

+

The mythtv channel is where the developers discuss code. It is +not a user-support channel. Please don't ask non-development +related questions there.

+

+

+ + +Really. Even if there's no one in the mythtv-users IRC group or everyone +seems to be ignoring you. +
+

+ +

1.9 Bug database +

+ +

If you feel you need to contribute to a bug database, use the MythTV bug +ticketing system at +http://svn.mythtv.org/trac.

+

Good entries will contain the following: +

    +
  1. Qt version
  2. +
  3. Linux distribution
  4. +
  5. gcc version
  6. +
  7. the last entry in config.log to detail how you compiled
  8. +
  9. MythTV version numbers (e.g.from mythfrontend --version)
  10. +
  11. Hardware
  12. +
  13. How you are able to reproduce the bug
  14. +
+

+

See the instructions on how to debug in +Section 22.

+

The bug database is not a chat room, so restrict your entries to what is +relevant. It's also not a repository of feature requests; a feature request +without an accompanying patch file to implement that feature will be quickly +closed. There is a feature wishlist on the wiki at +http://www.mythtv.org/wiki/index.php/Feature_Wishlist. There is no +guarantee that anything on the wishlist will ever get code written to +implement it.

+

If a developer closes out your bug, it's likely you didn't provide enough +information. Don't re-open a bug without providing additional information.

+ +

1.10 Contributing to this document +

+ +

Contributions to the HOWTO are welcome, especially if you find a +grammatical or spelling error, or if the wording of something is just plain +confusing.

+

If you'd like to make a new contribution, create a ticket at +http://svn.mythtv.org/trac and +click "New Ticket". The type should be set to "patch" and the owner set to +"rkulagow" to ensure that I see your contribution.

+

Please send it as either SGML or as plain text. NO HTML. The +source used to create the HOWTO is in SGML / Linuxdoc. Do not be afraid of +SGML! A quick look at the source of this HOWTO will show that it is not +difficult, because there aren't that many tags to worry about, so at least +try to submit as SGML. See the Linuxdoc HOWTO at +http://www.tldp.org/HOWTO/Howtos-with-LinuxDoc.html for information +on the linuxdoc format itself, or look at the mythtv-HOWTO.sgml +file as an example.

+

To create the actual patch, run diff -u origfilename newfile > +doc.patch and attach your contribution to the trac ticket.

+ +
+Next +Previous +Contents + + diff --git a/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-10.html b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-10.html new file mode 100644 index 0000000..636696e --- /dev/null +++ b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-10.html @@ -0,0 +1,387 @@ + + + + + Installing and using MythTV: Configuring mythfrontend. + + + + + +Next +Previous +Contents +
+

10. Configuring mythfrontend.

+ +

Once you have completed configuration of your backend systems, the next +step is to configure the frontend client.

+

When you start mythfrontend for the first time, it will attempt to connect +to a configuration database on the local machine. If there is none, a +"Database Configuration" screen will appear, and you will need to fill in +some details. The "Host name" field needs the backend or database server's +IP address or DNS name, and the User or password fields may need to be set +to match your database user accounts. After editing those fields, press +Enter twice to write these configurations on your local machine, and attempt +to connect to the database. If you make any mistakes, the screens will pop +up again.

+

Now that mythfrontend has started up, you should have a number of +buttons/choices. Before doing anything, go to TV, then to Setup and +configure the frontend client. +

+ + +NOTE: You should go through the various setup screens in +mythfrontend before using any other modules to ensure that the the database +is correctly initialized. +
+

+

10.1 General +

+ +

The General screen has configuration items that don't really fit anywhere +else. The first few configuration items ask you to indicate the number of +seconds to record before or after a program, which is useful if the +broadcast network or your system clock are out of sync and will help prevent +you missing the beginning or end of a program.

+

To change the value, use the left and right arrow keys to increment and +decrement the number of seconds. When you're satisfied with the result, use +the down arrow to put the input focus on the Next button or press RETURN to +continue to the next page.

+

The next page has a number of options to do with how channels are displayed +on your system. The help text will give you more information. Move the +focus to Next and press the space bar to continue.

+

The last General page sets up some final configuration items. See the help +text for more information.

+ +

10.2 Appearance +

+ +

This set of screens is mostly concerned with how MythTV will look on your +system. From here, you can choose different themes and set the resolution +of your system.

+ +

10.3 Program Guide +

+ +

Fairly self explanatory. Note that the alternate program guide does not +use the same font settings as defined in Appearance, so if the EPG is +unreadable this is where you make the adjustments to fonts, number of +elements displayed, etc.

+ +

10.4 Playback +

+ +

The one configuration item which may cause problems on your system is the +"Deinterlace playback" setting. MythTV uses a linear blend algorithm for +deinterlacing, which will improve how the image looks on your screen. +Deinterlacing requires that your processor support SSE. (Streaming SIMD +Extensions, aka "MMX2"). Early Intel Celeron (those that don't use the +Coppermine 0.18um core and are usually <600MHz), Pentium Pro and Pentium II +CPUs do not have SSE, so make sure you haven't enabled deinterlacing if +your processor doesn't support it. If you enable it, and your processor +doesn't support SSE, you will get "Illegal Instruction" errors.

+

To determine if you've got SSE on an Intel processor, you can: +

+
+$ cat /proc/cpuinfo
+[snip]
+flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca
+cmov pat pse36 mmx fxsr sse
+
+
+

+

Notice the sse at the end of the line - this tells you that this +processor will be able to deinterlace correctly.

+

On an AMD processor, look for "3dnow" in the cpuinfo line; "3dnow" is AMD's +implementation of SSE instructions, so if your processor has 3dnow you +shouldn't have any issues with deinterlacing.

+

Video Filters

+ +

MythTV provides a means of employing video filters while recording and +during playback. These filters can be used to improve or modify the video +image, including hiding the effects of an interlaced image or reducing the +impact of noise in a poor video signal. The following is a brief +introduction to introduce you to the filters that are available in MythTV +version 0.20 and higher.

+

Applying filters

+ +

One or more filters can be included in a "filter chain". The filters to +be used are identified in a "filter string". A filter string is a group of +filter names and parameters separated by commas. To include parameters, the +filter name is followed by "=" and the parameter information. There should +be no spaces in the filter string. Here is an example filter string:

+

With parameters: kerneldeint=10:1,denoise3d=12

+

Without: kerneldeint,denoise3d

+

Recording filters are set for each individual channel. These may be used +when encoding in software (MPEG-4, RTjpeg) but do not apply when using a +capture card with hardware encoding such as those supported by the ivtv +driver, DVB, HDTV or MJPEG cards. You can run MythTV's "setup" program and +select the "Channel Editor". On the first page for each channel, you can +enter a filter string in the box titled "Video filters". If you are running +"mythweb" on your web server, you can click on "Settings" then "Channels" +and enter filter strings in the "videofilters" column.

+

Playback filters are per-host and apply to any recording you watch from the +frontend where filters have been applied. Playback filtering can only +work with software decoding so the viaslice, xvmc, and ivtv outputs ignore +filters entirely. From "mythfrontend" go to Setup->TV Settings->Playback. +Enter your filter string in the box titled "Custom Filters".

+ +

Currently Available Filters

+ +

"Deinterlace Playback" checkbox.

+

This implements special behavior needed for the "bobdeint" filter but can +also be used to choose any of the deinterlace filters. If you prefer, you +may leave this unchecked and include any of the deinterlace filters, other +than "bobdeint", in your custom filter chain.

+

o The "invert" filter

+

Invert ignores any parameters and inverts the pixel values of the video +frames. In other words, a negative image. This would rarely be useful but +may be a good example to verify that your filter strings take effect.

+

o The "linearblend" filter

+

It is a simple deinterlacing filter that ignores parameters and works by +blending adjacent lines. It replaces combing in interlaced video with a +less distracting "ghost" image.

+

o The "bobdeint" filter

+

This filter splits the interlaced image into two separate fields that +can be line doubled then displayed at twice the frame rate. If the +display is at the same refresh rate as the recording (59.92Hz NTSC or +50Hz PAL) this will cause each refresh to show objects in motion in +a new position with no jagged edges. However, if the display is not +synchronous, it will cause flickering or the appearance of the picture +moving up and down by one line.

+

+

+ + +NOTE: This filter requires the frame rate to be doubled +and therefore can only be used with the "Deinterlace Playback" checkbox. +Do not include this in your filter chain. +
+

+

o The "kerneldeint" filter

+

Kerneldeint is a more complex deinterlacing filter which applies a filter +kernel using input from several lines. It generally removes combing without +a "ghost" image, sometimes leaving a faint outline of the image from the +other field. It is considered to be less distracting to watch than +linearblend or no filter at all. It accepts one or two integer parameters +separated by a colon.

+

The first parameter is the filter threshold and defaults to 12. Adjacent +lines differing by more than the threshold value are filtered. The second +option defaults to 0. If set to a non-zero value, it will cause the filter +to skip chroma, and filter only the luminance. It may be useful on some +capture cards which do not capture the chroma fields of interlaced video +correctly.

+

o The "onefield" filter

+

This is a simple one-field deinterlacing filter that uses only one field of +the interlaced video. By default it keeps the top field, though passing the +parameter "bottom" will cause it to keep the bottom field instead.

+

This filter is primarily useful for those who display 1080i HDTV signals +with a video mode that has 540 pixels vertically. The advantage over other +deinterlacing filters is that scenes with motion never show combing or +ghosting.

+

o The "adjust" filter

+

This filter adjusts the digital values for luma and chroma to ensure that +they will fall within the ranges specified in the ITU-R601 standard. By +default, this corrects a known problem for the luma range used by bt8x8 +chips which causes video to look washed out. If parameters are passed, there +need to be exactly six. However, passing a single parameter of "-1" will +disable the filter.

+

1: luma minimum input value (int) +2: luma maximum input value (int) +3: luma gamma correction (float) +4: chroma minimum input value (int) +5: chroma maximum input value (int) +6: chroma gamma correction (float)

+

The default bt8x8 correction values are equivalent to +"16:253:1.0:2:253:1.0". Output ranges are fixed at ITU-R601 values (16-235 +luma, 16-240 chroma).

+

NOTE: If it is not already specified in the filter chain, this +filter will be automatically applied when recording with the "bttv" driver.

+

o The "quickdnr" filter

+

A fast temporal denoiser. This can take 1, 2 or 4 parameters, each being a +value from "0" for the least filtering to "255" for the greatest filtering. +With one parameter, the filter will compute the values it should use for all +of its variables. Two parameters will set the filter strength for luma and +chroma independently. If you are interested in how the algorithm works, you +may examine the source code to see how four parameter are used.

+

o The "denoise3d" filter

+

A slower denoiser that applies a spatial and temporal low-pass filter. The +spatial filter can remove some noise that quickdnr can't, but a more +powerful CPU is needed. This filter accepts 3 float parameters:

+

+

    +
  • luma spatial filter strength
  • +
  • chroma spatial filter strength
  • +
  • luma temporal filter strength
  • +
+

+

Reasonable defaults will be selected for omitted parameters. The chroma +temporal filter strength is calculated from the other filter strengths.

+

o The "crop" filter

+

Covers edges of video with black bars. This helps improve video quality +when the edges of the frame are distorted. By default, this removes 16 +pixels from each edge. This can optionally take four parameters representing +top:left:bottom:right. The number times 16 is the number of pixels to remove +so, for example, the default is "=1:1:1:1".

+

o The "forceyv12" and "forceyuv422p" filters

+

These force the filter manager to use the given format. You can use one of +these at the head of a filter chain to change the capture format. The most +likely use would be forceyuv422p to use YUV422P capture on cards with known +chroma interlacing problems with YV12.

+

There are some filters included in the MythTV source code that should +not be used:

+

o The "forcergb24" and "forceargb32" filters

+

The two RGB formats should not be used because there is no conversion filter +for them yet.

+

o The "convert" filter

+

It exists but don't use it. The filter manager uses this filter +automatically when it is unable to match the input/output formats of two +adjacent filters.

+

o The "postprocess" filter

+

While this exists in MythTV source code, it is currently not recommended for +use.

+ +

Usage Considerations

+ +

There are trade-offs to consider when deciding if it would be wise to use +a filter. Any processing will modify the original image so you should assess +if the filter has made a noticeable improvement to the picture in order to +justify the impact of the processing. Adding any filter will inherently +increase CPU usage. The impact can vary dramatically depending on your CPU +type and speed, the resolution of the recording, which filters you are using +and other factors. You can only determine what is right for you through +experimentation. However, as a starting point, here are some filter strings +that you may find useful:

+

For typical broadcast stations: "kerneldeint,quickdnr"

+

For stations with poor signal quality: "linearblend,denoise3d=12"

+

For synchronous TV-out: check Deinterlace with "Bob (2x framerate)"

+ +

10.5 Recording +

+ +

Depending on your capture card, MythTV offers different video encoders. +The following types of hardware encoding cards are supported: +

+ +For cards without hardware encoding capabilities (all cards supported by +V4L not listed above), Myth includes two methods for software encoding: +RTjpeg and MPEG-4. RTjpeg has significantly fewer CPU demands than MPEG-4, +but it generates larger files than MPEG-4 for a given recording.

+

For DVB and HDTV cards, no further configuration is required after +setting up the card using the 'mythtv-setup' program. +For all other cards, configuration is done through MythFrontend. +Selecting 'Recording Profiles' from the 'TV Settings' screen will list +the profiles currently available for the cards in your system. +Depending on what types of cards you have installed you may see: +

+
+(Create new profile group)
+Software Encoders
+Hardware MPEG Encoders
+Hardware MJPEG Encoders
+Transcoders
+
+
+ +The '(Create new profile group)' option will allow you to create custom +profiles in case you have multiple backends. Note that custom profiles +are per backend and card type. If you have 2 MPEG-2 encoders in a given +backend system, creating a custom profile will affect both of them. This +option should not be needed otherwise.

+

The 'Transcoders' group is a little different from the others. Selecting +this group will result in a menu with the following options: 'RTjpeg/MPEG-4' +and 'MPEG-2'. These types indicate what transcoder options will be used for +a given input type (i.e. the 'MPEG-2' settings would be used to transcode +MPEG-2 files into MPEG-4. The source of the MPEG-2 stream (DVB, HDTV, or +PVR-x50) does not matter. Configuration of the options is the same as below +(although any resolution settings will be ignored).

+

Selecting any of the other options will show a new screen with a list of +four profiles: +

    +
  • Default
  • +
  • Live TV
  • +
  • Low Quality
  • +
  • High Quality
  • +
+

+

The Default profile will be used for any recording which does not otherwise +have a specific profile assigned. The 'Live TV' profile will be used when +watching TV. The remaining two profiles are available for customizing to +allow for more precise control over what quality is used for a given +program.

+

Selecting a profile will allow you to adjust the relevant options for that +card. The most significant setting is the recording resolution, but you can +also choose encoding format, audio format, and tweak other encoder specific +properties.

+

+

+ + +NOTE: although the width and height can be changed to almost +anything, if you start MythTV and don't see video or you get "segmentation +fault" errors, it is likely that the video4linux (v4l) subsystem did not +like the height and width parameters specified. It's best to leave the +default as-is until you're sure that MythTV is operational. +
+

+

See the +What capture resolution should I use? How does video work? section for more information.

+ +

10.6 Xbox Frontends +

+ +

MythTV is able to control the LED on the Xbox to indicate backend +recording status.

+

To control the LED, you will need the blink program from the +xbox-linux project, which is installed as /bin/led on GentooX. On +Xebian (the new Ed's Debian) you must install it yourself. On other +distributions it may or may not be installed as a program called +blink and should be located in your path. (Type which +blink to see if the program is available.) If you do not have +blink, you may obtain it from the Xbox-Linux project site at +http://xbox-linux.sf.net/. The +program you need is part of the eds_i2c_staff module in CVS. Note +the spelling.

+

Once you have installed blink you will need to set permissions. +blink needs write permission to the i2c device to function +properly. There are three methods to accomplish this. First, you could run +mythfrontend as root, which is the simplest method, but could +potentially be a security risk. Next, you may make the blink +binary setuid root, which allows non-privileged users to run a program with +root capability. This is done by typing the command: +

+
+$ su
+# chmod u+s /path/to/blink
+
+
+ +The final technique would be to set the /dev/i2c/0 device read/write +for all users, but this is the least preferred method.

+

Now it's time to setup MythTV for Xbox hardware. Enter Setup -> General. +On the second page check the 'Enable Xbox Hardware' option. Upon reentering +the settings, you should have a new option named 'Xbox'. Within this option +you may select the distribution, LED colors for recording and the update +interval. If you select GentooX as the distribution led will be +used as the blink binary name, otherwise, blink is used. +Colors should be self explanatory. The update interval determines how often +the frontend should poll the backend to determine if the status has changed.

+ +
+Next +Previous +Contents + + diff --git a/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-11.html b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-11.html new file mode 100644 index 0000000..696189f --- /dev/null +++ b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-11.html @@ -0,0 +1,626 @@ + + + + + Installing and using MythTV: Using MythTV. + + + + + +Next +Previous +Contents +
+

11. Using MythTV.

+ +

+

+ + +NOTE to Red Hat/Fedora 4 users: Red Hat Linux and Fedora Core ship +with Gnome as the default desktop environment. However, Gnome seems to have +issues with window focus and window switching which sometimes cause +mythfrontend to obscure the video. KDE does not seem to have any such +issues. Therefore you will need to switch to KDE by selecting +RedHatMenu>Extras>System Settings>Desktop Switching Tool and choose "KDE". +NOTE to Fedora Core 5 and 6 users: Fedora 5 and 6 no longer have +this tool in the Menu. Use "switchdesk KDE" from a command line. Read "man +switchdesk" for further information about changing to other desktop +environments. +
+

+

11.1 Keyboard commands +

+ +

The keys.txt file describes what the various keyboard commands are. +If you have loaded mythweb, you may change the default keys to your liking.

+

mythfrontend

+ +

+

+
+Arrow keys used to move the highlight point around
+ALT-F4 exit out of the application
+Space/Enter take action on the item under the highlight point
+P play in both "Watch a Recording" and "Delete a Recording"
+D delete in both "Watch a Recording" and "Delete a Recording"
+U to view details for the currently selected show on the Watch or Delete screens, EPG, "Program Finder", "Fix Scheduling Conflicts" and search results screens
+O to list the upcoming episodes for the currently selected show on the EPG, "Program Finder", "Program Recording Priorities", "Fix Scheduling Conflicts" or search results screens
+I edit recording options from the EPG, "Program Finder", "Program Recording Priorities", or "Fix Scheduling Conflicts" screens. From the Playback and Delete screens, 'I' presents options for recorded shows such as Auto Expire or Stop Recording. Pressing 'I' while on the Recording Options screen will take you to the Advanced Recording Options screen. +
+

+

+

Watching TV or a recording

+ +

+

+
+Up or down keys change the channel
+num pad Type a number to enter a channel number or jump amount (HHMM format)
+P pause / play. You may also add an explicit keybinding for 'Play' through MythWeb, returning you to normal speed if you are in slow motion, rewind fast forward or pause mode.
+C change inputs on TV Tuner card
+ESC quits
+I puts the On-screen Display up again. During playback, 'I' toggles between position and show description info. If a jump amount is entered, jump to that position.
+M brings up the electronic program guide (Grid) -- see the EPG section
+Page Up jump back the configured number of minutes (default is 10)
+Page Down jump ahead the configured number of minutes (default is 10)
+End or Z skip to next commercial break marker
+Home or Q skip back to previous commercial break marker
+T toggle close caption support Pressing 0-9 (preferably 3 times) + T changes teletext page and turns on teletext.
+F rotate between the various Picture Adjustments (Colour, Hue, etc.) While Picture Adjustment is on-screen, use Left and Right arrows to adjust. These settings adjust the look of the video playback, and are independent of the G-key settings used at record-time.
+[ or F10 decrease volume
+] or F11 increase volume
+| or F9 toggle mute
+/ jump to the next "favorite" channel
+? mark/unmark the current channel as a "favorite"
+U increase the play speed
+J decrease the play speed
+A Adjust time stretch (speed up or slow down normal play of audio and video
+W cycle through zoom and fill modes: 4:3 aspect ratio, 16:9, 4:3 Zoom  (like Pan and Scan), 16:9 Zoom, and 16:9 Stretch (eliminates black  sidebars in TV signal)
+F8 toggle the sleep timer 30m->1hr->1hr30m->2hr->Off
+CTRL-B Jump to the beginning of the recording / ringbuffer
++ Switch between audio streams
+Left (if a jump amount is entered) to jump back that amount
+Right (if a jump amount is entered) to jump ahead that amount
+
+
+ Without the stickykeys option selected
+Left rewind the configured number of seconds (default is 5)
+Right fast forward the configured number of seconds (default is 30)
+< starts rewind mode as if stickykeys are selected
+> starts fast forward mode as if stickykeys are selected
+
+
+ With Stickykeys option selected
+Right starts fast forward mode
+Left starts rewind mode
+
+
+ In fast forward or rewind mode:
+Left/Right increases the ff/rew speed
+0 plays at normal speed, but leaves the time indicator on screen
+1 or 2 plays back more slowly than normal ff/rew speed (1 is slowest)
+3 plays back at normal ff/rew speed
+4-9 plays back faster than normal ff/rew speed (9 is fastest)
+Space exits fast forward or rewind mode
+
+
+ While video is paused:
+Left rewind 1 frame
+< rewind 1 second
+Right advance 1 frame
+> advance 1 second +
+

+

+

Watching TV only

+ +

+

+
+G rotate between the various Picture Adjustments (Colour, Hue, etc.) for recording. These values affect the look of the resulting .nuv file, and are independent of the playback picture settings. While Picture Adjustment is on-screen, use Left and Right arrows to adjust.
+H Channel history. Each repeat steps back through the previous channels.
+O Turns on 'Browse' mode, allowing user to browse channels and program info while watching current show FullScreen.
+Y switch between multiple capture cards.  NOTE: you will lose your LiveTV buffer on your current card. Useful for different-sourced cards (such as Dish Network on one, HDTV over-the-air on another card.)
+
+

+

+

LiveTV Browse Mode

+ +

+

+
+Left browse program prior to current listed program
+Right browse program following current listed program
+Up browse program on channel above current listed channel/program
+Down browse program on channel below current listed channel/program
+/ browse program on next favorite channel
+0-9 enter a channel number to browse
+Space/Enter change channel to channel of current listed program
+R/r Toggle recording of current program (cycles through types)
+ESC/O Exit Browse mode +
+

+

+

Playback Recording Zoom Mode

+ +

+

+
+Left Move video to Left
+Right Move video to Right
+Up Move video Up
+Down Move video Down
+PageUp Zoom In
+PageDown Zoom Out
+Space/Enter Exit Zoom mode leaving picture at current size and position
+ESC Exit Zoom mode and return to original size +
+

+

+

If you have two or more tuner cards

+ +

+

+
+V toggle Picture-in-picture on or off
+B toggles the window focus (lets you change channels on the PiP window)
+N swaps the two channels by changing channels on both cards +
+

+

+

Watching a recording only

+ +

+

+
+Space/Enter set a bookmark at that point. Next time you start the recording, you will automatically jump forward to this point and clear the bookmark.
+X queues the current recording for transcoding
+O brings up menu to allow toggling settings such as Commercial Auto-Skip, Auto-Expire, etc.
+D exits the current recording and displays the Delete menu
+E or M enters/exits edit mode.
+
+
+ In edit mode
+Left/Right move forward and backward
+Up/Down alter the amount of time you jump forward and backward. Increments are: nearest cutpoint, nearest video keyframe, 1 frame, 0.5 seconds, 1 second, 20 seconds, 1 minute, 5 minutes, and 10 minutes.
+PageUp/PageDown move forward and backward to the nearest cut point
+< or > move forward or backward by 10 times the normal jump amount
+Space/Enter allows you to set or delete a cut point
+Z loads the commercial skip list (if one exists) into the cutlist
+C or Q clear all cut points in the cutlist
+I Inverts the cutlist +
+

+

+

EPG

+ +

+

+
+Arrows are used to move the highlighted program point around
+A, D, S, W perform the same as left, right, down and up
+PageUp/PageDown move the channel list up or down a page
+Home/End move the highlight left or right by one day
+Ctrl+Left or < move the highlight left by one page
+Ctrl+Right or > move the highlight right by one page
+9, 3, 7, 1 (like a numeric keypad) perform the same as PageUp, PageDown, Home and End
+I bring up more information about a show, and allow you to schedule a recording. If you select "Record this showing" while watching Live TV you can "Instant Record" a program.
+Space/Enter allow you resolve conflicts or change overrides. If the program is not already scheduled to record, it will instead act like pressing 'I'.
+M when on a channel will change to that channel
+ESC or C exits without changing the channel
+R change the current item from Recording/Not-Recording. Successive keypresses cycle through the scheduled recording type list.
+X change the channel to the currently selected channel without leaving the EPG (Most useful in the alternate EPG)
+? mark/unmark the current channel as a "favorite"
+/ or 4 toggle the guide listing between all channels and filtered "favorites" +
+

+

+

Setting Program or Channel Recording Priorities

+ +

+

+
+Right increases priority value
+Left decreases priority value
+1 sorts by title
+2 sorts by priority
+Home/End toggle sort priority
+I edit recording options
+ESC commits changes and exits +
+

+

+

Viewing Scheduled Recordings/Resolving Conflicts

+ +

+

+
+1 show all recordings
+2 show only important recordings
+Home/End toggle show showing all/important
+I edit recording options
+Space/Enter resolve conflict or override +
+

+

+

Viewing Search Listings

+ +

+

+
+Home change to the previous view if applicable
+End change to the next view if applicable
+M select another view if applicable. In the title and description search popup, press M again to edit or delete the selected view. +
+

+

+

Recording Profiles Setup Screen

+ +

+

+
+D on a custom profile group displays a popup to delete the group
+
+

+

+

Recording Groups

+ +

In the Watch Recordings screen, Recording Groups allow you to separate +programs into user-defined categories, such as "Kids", "Alice", "Bob", etc. +This can be used to reduce clutter, or to segregate content if you use the +PIN function. +

+
+M change the view or to set a group password
+I move a program from one Recording Group to another +
+

+

+

Watch Recordings Screen

+ +

+

+
+1 or F1 Meaning of the icons
+/ Tags a recording. Tagged recordings can be played either in order or shuffled and deleted as a group. You can also change the recording group for several recordings at once by tagging them and using the  Menu (m) button, selecting "Playlist options",  then "Change Recording Group".
+? Clear the tagged list. +
+

+

+

Remote Controls

+ +

If you are using MythTV with just a remote control then it is suggested that you +map the remote control keys as described below. Your remote control may not +have the same set of keys as those named below, the names are only a suggestion +that roughly correspond to the function.

+

If you are adding new key bindings to the program then consideration of this +suggested list will help users with remote controls.

+

This list assumes a minimal remote control that only has 20 keys, nearly all +features can be used with this configuration. If you have more keys then you +can access all of the features. With only 16 keys most features are usable. +

+
+REMOTE CONTROL LIRC KEYSTROKE FUNCTION
+0 - 9 0 - 9 channel selection, EPG navigation, ff/rew speed setting (with stickykeys)
+Left Arrow Left scroll left, rewind
+Right Arrow Right scroll right, fast forward
+Up Arrow Up scroll up, channel change up
+Down Arrow Down scroll down, channel change down
+Select / OK / Play Space Select item, play (with stickykeys) set bookmark
+Cancel Escape Cancel, quit playback
+Menu m EPG (from watching TV) edit (from playback).
+Pause p Pause
+Other key 1 i Information
+Other key 2 c Change tuner card input +
+

+

+ +

11.2 Using themes with MythTV +

+ +

MythTV is "themeable", meaning that the visual appearance of the program +can be modified by the user without re-compiling or altering the program +functionality. Download the MythThemes tarball from the website and untar it:

+

+

+
+$ tar -xjf myththemes-0.21.tar.bz2
+$ cd ~/myththemes-0.21
+$ qmake myththemes.pro
+$ su -
+# make install
+# exit
+$
+
+
+

+

The theme will now be available in the mythfrontend Appearance section.

+ +

11.3 Adding DishTV information to the database +

+ +

A script for adding Pay Per View information into the MythTV database for +DishTV subscribers is available at +http://www.mythppv.com/.

+ +

11.4 Adding support for an external tuner +

+ +

MythTV supports changing the channel on an external tuner. If you have +an external tuner, such as a DirecTV or digital cable set top box, you +should add /usr/local/bin/changechannel to your Input Connections in the +mythbackend configuration GUI.

+

However, there is not changechannel program per-se, because this is +going to be dependent on what sort of external tuner you have. Look in the +contrib/channel_changers directory for a number of programs and +scripts which may be used to change channels. Once you find one which +works, copy it to /usr/local/bin/changechannel.

+

Feel free to browse some of what sort of hardware is available at +http://store.snapstream.com/accessories.html, or if you wish to +assemble your own, rather than purchase, the following may be helpful: +http://www.dtvcontrol.com/ for +cable pinouts.

+ +

11.5 Using Shutdown/Wakeup +

+ +

What does the MythTV Shutdown/Wakeup function do? The scheduler on the +Master backend (MBE) keeps track of the idle status of the entire MythTV +system, including the Slave backends (SBE). If it considers the system to be +idle, and thus ready to shutdown, it sets the wakeuptime to the time of the +next recording and then proceeds to shut down all Slave backends and then +itself. Once it is time to begin recording, the Master backend and the Slave +Backends are automatically woken up. This system allows MythTV to record +like a normal VCR, thereby conserving power when not in active use.

+

In order to use the Shutdown/Wakeup function there must be some method of +waking up the Master backend. There are any number of solutions, but we +will discuss in detail two possibilities:

+

+

    +
  • Use another server that runs 24/7 and have it send a WakeOnLAN (WOL) +packet to wake the Master backend. This assumes that you have the WOL tools +installed, and that your Master backend motherboard supports WOL.
  • +
  • Use your motherboard's BIOS wakeup capability. You'll need a motherboard +that supports BIOS wakeup, and some tools. Two that work are: +http://sourceforge.net/projects/nvram-wakeup and +http://www.malloc.de/tools/wakeup_clock.html
  • +
+

+ +

A deeper look into the operation

+ +

The scheduler keeps track of the idle status of the MythTV system. To +determine whether or not the MythTV system is idle, the following conditions +must be met for a period of time defined in the "Idle timeout (secs)" +parameter. +

    +
  • no client is connected to the server
  • +
  • no recording (neither LiveTV nor a regular recording) is currently taking place
  • +
  • no recording starts within a definable amount of time ("Max. wait for recording (min)")
  • +
  • the "pre Shutdown check-command" returns 0
  • +
+

+

If we get to this idle state the Master backend will set the wakeuptime using the "Set +wakeuptime command", which is the same for WOL and BIOS wakeup. The Master backend will +then shut down the Slave backends and itself using the "Server halt command".

+

One caveat is that the scheduler tries to guess if the Master backend was started by a +wakeup call or by the user. If it thinks it was woken up by a user, it +blocks shutdown until a client connects to the Master backend, after which it will +behave as described above. To disable this feature, unset "Block shutdown +before client connected" in the mythfrontend Setup->Setup->General screen.

+

Once it is time to startup the system, the Master backend is woken up first and will +wakeup the Slave backends using the "Wake command for slaves". At this time, there is +no support for starting only the required Slave backend, so all Slave backends will startup.

+ +

Setting up the MythTV side of this extension.

+ +

There are a number of options that are used to control the Shutdown / +Wakeup feature.

+

Shutdown/Wakeup Options: +

    +
  • "Idle timeout (secs)" is the time the server waits while idle until a +shutdown occurs.
  • +
  • "Max. wait for recording (min)" is the time the Master backend waits for a recording +without shutting down. For example, this would be used to prevent a 10 +minute system shutdown if a recording is set to start 15 minutes from now.
  • +
  • "Startup before rec. (secs)" Sets how long before a programmed +recording the MythTV system will be woken up. This should be roughly be the +time your systems need to bootup, and if you have Slave backends, you'll +need to ensure this value is long enough for all your machines to perform +their bootup cycle.
  • +
  • "Wakeup time format" is the format of the wakeup time that is given in +the "Set wakeuptime command" as a parameter "$time". You need to set this +according to your wakeup mechanism. If you need seconds since the epoch +(1970-01-01) set the "Wakeup time format" to "time_t".
  • +
  • "Set wakeuptime command" is the command executed to set the new wakeuptime.
  • +
  • "Server Halt Command" is the command executed to shutdown the Master +backend and the Slave backends.
  • +
  • "pre Shutdown check-command" is used to give a +"Go/NO-GO" decision from a non-MythTV source. This command is executed +immediately before the shutdown would occur. The return value is use to make +the following choices: +
      +
    • If it returns a "0" the shutdown will occur as scheduled.
    • +
    • If it returns a "1" the "idle timeout" will be reset and the system +waits again for the timeout.
    • +
    • If it returns a "2" the entire shutdown sequence is reset. This means +that a new client connect is needed before a shutdown occurs, unless you have +the "Wait for client connect" setting disabled, in which case this is the same as +returning "1". An example of a use for this return value is to prevent the shutdown +if a user is currently logged in, or if a specific program (i.e. transcode, +automatic updates, etc.) is currently running. If you don't need it, leave +the field blank.
    • +
    +
  • +
+

+

The "WakeOnLan settings": +These settings have nothing to do with using BIOS or WOL wakeup, they are +the same for both. +

    +
  • "Master backend" This setting defines timings for the frontends to +wakeup the Master backend using WOL. Useful if your frontend can emit a WOL +packet so you don't need to physically go to the Master backend if you're +trying to watch TV.
  • +
  • "Reconnect wait time (secs)" is the time the frontend waits after +executing the "Wake command" before attempting to retry the connection. This +should be roughly the amount of time your Master backend needs for bootup. +Set to "0" to disable. The frontends will retry to connect for "Count of +reconnect tries" times before giving up.
  • +
  • "Wake command for slaves" is the one command executed to wake +your Slave backends. This should be a script that contains the calls to +wakeup all Slave backend systems.
  • +
+

+ +

Using WOL to wake your Master backend.

+ +

To use WOL to wake your Master backend you will need a WOL capable Master +backend, a machine that runs 24/7 which can execute an at-job and nc (netcat) +on the Master backend. I use some little bash scripts to make my DSL router +wakeup my mythbox if required.

+

Replace $SERVER and $PORT with your own settings! +On my Master backend I have a script that gets called as 'setwakeuptime command' which +looks like the following: +

+
+#! /bin/sh
+echo $@ | nc $SERVER $PORT
+
+
+ +This simply cats the parameters (that is $time) to my 24/7 server. On my +$SERVER I have (x)inetd listening on $PORT starting a little script which +cares about setting the at-job. The following additions are necessary on the +$SERVER:

+

If you use inetd:

+

In /etc/inetd.conf add: +

+
+mythwake stream tcp nowait mythtv /usr/sbin/tcpd /usr/local/bin/mythwake
+
+
+ +If you use xinetd, save the following as mythwake in your +/etc/xinet.d/ directory: +
+
+service mythwake
+  {    
+        socket_type     = stream
+        wait            = no
+        user            = mythtv        
+        protocol        = tcp
+        id              = mythwake
+        server          = /usr/local/bin/mythwake
+  }
+
+
+ +and add the following to /etc/services: +
+
+mythwake        $PORT/tcp
+
+
+

+

Finally, /usr/local/bin/mythwake looks like: +

+
+#! /bin/bash
+#this should be a command to wake your server
+WAKECMD="#!/bin/sh\n /usr/local/bin/wakeMBE"
+#first we need to delete all wake jobs in queue
+for JOB in atq | cut -f 1 ; do
+    atrm $JOB;
+done
+#now we read the date from 'nc'
+read date;
+#now set the atjob
+echo -e "$WAKECMD" | at $date ;
+
+
+ +SECURITY WARNING: +Be sure to secure $SERVER:$PORT from untrusted networks, because this +allows 3rd parties to run arbitrary code on your server!

+ +

Using BIOS wakeup to wake your Master backend.

+ +

Since I don't use this, I cannot say much about this. If your motherboard +supports any wakeup tool you have to call that tool as "Set wakeuptime +command" with the "Wakeup time format" suitable for that tool.

+

Wakeup the MySQL server using WOL

+ +

If your MySQL server and your Master backend are not on the same machine, +you can have the Master backend wake your MySQL server using WOL. You will +find the settings for this in the second page of the mythtv-setup program, +or at the end of mysql.txt. The meanings are the same as +discussed in "The WakeOnLan settings" above.

+ +

Tips/Tricks:

+ +

If, for example, one of the Slave backends is also your desktop computer, +you could simply use a little script as 'server halt command' which first +calls /sbin/shutdown -t TIMEOUT where TIMEOUT is a value sufficient +for you to react. You could then popup a window using *dialog, asking for +permission to shutdown. If you cancel the shutdown, simply call +/sbin/shutdown -c.

+

If you get "nvram-wakeup: /dev/rtc: Device or resource busy" your +set-wakeuptime-script should stop the program that uses /dev/rtc before +setting the wakeuptime.

+

11.6 Controlling the mythfrontend via telnet +

+ +

To use this feature you must first enable it in Settings>General>General

+

The network control listens on port 6546, as demonstrated below:

+

+

+
+$ telnet basement 6546
+Connected to basement.
+Escape character is '^]'.
+MythFrontend Network Control
+Type 'help' for usage information
+---------------------------------
+# help
+Valid Commands:
+---------------
+jump               - Jump to a specified location in Myth
+key                - Send a keypress to the program
+play               - Playback related commands
+query              - Queries
+exit               - Exit Network Control
+
+Type 'help COMMANDNAME' for help on any specific command.
+
+# help jump
+Usage: jump JUMPPOINT
+
+Where JUMPPOINT is one of the following:
+channelpriorities    - Channel Recording Priorities
+channelrecpriority   - Channel Recording Priorities
+deletebox            - TV Recording Deletion
+deleterecordings     - TV Recording Deletion
+guidegrid            - Program Guide
+livetv               - Live TV
+livetvinguide        - Live TV In Guide
+mainmenu             - Main Menu
+...snip...
+# exit
+$
+
+
+

+

Please note that this feature only allows one connection at a time, so any +new connections will automatically terminate prior ones.

+ +
+Next +Previous +Contents + + diff --git a/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-12.html b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-12.html new file mode 100644 index 0000000..f9cf96e --- /dev/null +++ b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-12.html @@ -0,0 +1,1112 @@ + + + + + Installing and using MythTV: Scheduling Recordings. + + + + + +Next +Previous +Contents +
+

12. Scheduling Recordings.

+ +

The MythTV master backend is responsible for managing the schedule for +all TV tuner cards on the master and any slave. Its job is to search the TV +listing for the shows you have requested and assign recordings to the TV +tuner cards. If none of the shows that you've chosen overlap, it simply +records all of them. However, if there are shows where the beginning +and end times overlap, the scheduler follows rules that you've specified or +makes logical decisions about what would be best if you haven't expressed your +preference. Further, the "Upcoming Recordings" page allows you make specific +decisions about what you really do and don't want to record.

+ +

12.1 Record Types +

+ +

When you choose a show that you would like to record from the +Options Page, there are eight different types of rules to help the +scheduler find which showings you would like to record.

+

+

    +
  • Single Record -- record only this title at this specific time and +this station. This is the best way to be sure that a certain showing will +be recorded. However, if the TV listings change and the show is not broadcast +at that time, the show will not be recorded but will be marked as Not Listed +to let you know that you should investigate. +
  • +
  • Find One -- this will record a title once from any of the times +that appear in the TV listings. This is useful for recording a movie +or special that has multiple showings because it allows the scheduler +to choose one that doesn't conflict. It is not a good choice for +recording a single episode of a series because it records the first +available showing of the title without regard to the episode +information. +
  • +
  • Record Weekly -- this records a show whenever the title is listed +on the same channel, weekday and time. Note that if the TV station +changes the schedule for a special episode, it would not be +recorded. However, you can add a Single record for the special +episode. If there are no matching showings in the TV listings, +a Not Listed item will be added to your schedule for the next +time slot to let you know that you should investigate. +
  • +
  • Find Weekly -- this will record a title once per week from any +of the times that appear in the TV listings beginning from the time of +the showing that was selected when the rule was set. This is useful +for news, current events or other programs where the same episode is +shown several times each week but the listings may not include +descriptive information. This may not be a good choice if there are +different episodes shown during the week. +
  • +
  • Record Daily -- this records a show whenever the title is listed +for the time and station on any day of the week. Here again, a show +will not be recorded if the time was altered by the station. If there +are no matching showings in the TV listings, a Not Listed item will be +added to your schedule for the next time slot to let you know that you +should investigate. +
  • +
  • Find Daily -- this will record a title once per day from any +of the times that appear in the TV listings beginning from the time of +the showing that was selected when the rule was set. This is useful +for news, current events or other programs where the same episode is +shown several times each day but the listings may not include +descriptive information. This may not be a good choice if there are +different episodes shown during the day. +
  • +
  • Channel Record -- records one showing of each unique episode from +any of the times the title is listed on this station. This is perhaps +the most common rule to use for most shows. +
  • +
  • Record All -- records one showing of each unique episode from +any of the times this title is listed on any channel. This can be +useful if a station has sister stations where shows are rebroadcast +allowing the scheduler to record rebroadcasts on the other station +when the original airing cannot be recorded.
  • +
+

+ +

12.2 Scheduling Options +

+ +

Priority

+ +

By default, all shows you select have equal value to the +scheduler. There are a set of rules to make good choices when +two or more shows are in conflict. However, priority values let the +scheduler know what you prefer so that it can set the schedule based +on your preferences.

+

Initially, recording rule priority values are set to zero. You may choose +to leave everything at "0" and let the scheduler follow rules to guess +what you might prefer when there are conflicts. However, if you have +one or two favorite shows, you may want to increase the priority +value so the scheduler will know that you would prefer recording +these over other shows. You might use certain values to rate shows +so that all favorites are 2. good shows are 1 and extra 'filler' +shows are all -1 for example. You could sort each title on the "Set +Priorities" page to have a unique value so the scheduler can know +which show you'd prefer versus any other show. The choice and style +are entirely up to you. However, the more information you give to +the scheduler, the more likely it will make the choices you would +prefer in the first place.

+

The scheduler choices are based on the total priority for a showing by +adding up all priority factors that match the showing. By default, most +of these factors are "0" but you may use any combination to express your +likes and needs.

+

+

    +
  • Per record rule -- this is the "priority" selection in the "Scheduling +Options" section of the options page and this value is included for any +showings that match the recording rule. You may choose to only use these +values and not use the other factors for the sake of simplicity and clarity.
  • +
  • Per record type -- Setup->TV Settings->Recording Priorities->General allows +you to add to the priority based on the type. It may make sense to increase +the value for "Single" so that by default they have an extra advantage over +other shows. The default is +1. You may want to decrease the value for Find +rules so that they will be less likely to interfere with regularly scheduled +shows and will be more likely to record in a non-conflicting time instead. +The default is -1.
  • +
  • Per channel -- Setup->TV Settings->Recording Priorities->Channel Priorities +can be useful if you believe that you prefer any of the shows on certain +channels. This would give all shows on a channel an advantage by default.
  • +
  • Input priority -- in the "mythtv-setup" program, the "Input Connections" +section allows you to add additional priority in the "Input priority". +This is simply another priority factor but has an interesting effect. If a +card input has a higher value than the other cards, the scheduler will see +that you would rather record showings of episodes on this input rather than a +showing on other inputs. If you have multiple cards of different quality, +you may want to set input priority to encourage the scheduler to record +shows on your best card(s) whenever possible. This can also be useful if you +have multiple video sources which include the same stations. For example, +with digital and analog cable you could increase the digital cable input +preference by 1 to tell the scheduler that you want to record from the +digital channel whenever possible but the channel on the analog input could +still be used when the digital input is busy.
  • +
  • Custom Priority -- this allows you to add any specialized factors you +would like in order to influence scheduling decisions. See the +Custom Priority section below.
  • +
+ +For any single showing of any show you've chosen to record, these factors +are added together to find the "total priority". This is the priority that +the scheduler uses to decide which showings are given the first choice when +filling in the schedule.

+

The scheduling priority of a show may also be used to determine +auto-expiration of recordings when disk space gets full (see +Auto-Expire, below).

+ +

Duplicates

+ +

Singles will record without regard to duplicate matching.

+ +

The standard recurring methods of All, Channel, Weekly and Daily use the +descriptive information in the TV listings to try to record only one showing +of each unique episode. However, This goal is sometimes complicated by the +fact that the stations may not include a description for a specific episode +but use a generic description for the series instead. When there is a +generic description, the default behavior is to assume that it may be an +episode that you have not seen and to record it for you. One of the +duplicate matching options is "Record new episodes only". If this is +selected, listing that have an original air date of more than 14 days +earlier are considered repeats and are not eligible to record. Generally, +generic episodes will be marked as repeats also.

+ +

Because of generic episodes and other situations, MythTV offers an +alternative approach where shows may be recorded by choosing from multiple +showings even when the descriptive information is not reliable. All of the +"Find" record types look for matching titles in the listings. If there is a +showing with specific episode information and that episode has recorded +before, that showing is marked as previously or currently recorded. The +scheduler will then choose to record the earliest non-conflicting showing +from any of other remaining showings regardless of the descriptive +information. Generally, Find One is most useful for movies or specials and +the Find Daily and Find Weekly rules are best for news or current events +shows that are repeated. However, these may be useful in other situations +where the standard recording rules may not work correctly.

+ +

Conflicts

+ +

As you add more shows that you would like to record, the scheduler +will eventually encounter conflicts. If there are two shows at the +same time and you have two or more TV tuner cards, both shows will +record. However, if there are more shows than cards, the scheduler +will have to decide what it thinks it should not record based on the +information you have given. If you see an unexpected situation you +are not "stuck" with the scheduler's choice. You can still tell the +scheduler exactly which shows you do want to record and/or don't +want to record in any situation.

+ +

Scheduling decisions

+ +

Here are the actual decisions made by the scheduler as it fills in the +schedule.

+

+

    +
  • Currently recording beats not currently recording -- A recording +in progress can not be moved to another input or time so it "wins" +its current timeslot. +
  • +
  • Single, Daily, or Weekly rules with no match are marked Not Listed -- +If these or Overrides do not match the current listings because the +listings have changed, they are added to the schedule and marked to +indicate that they will not record. +
  • +
  • Rules that could record beat rules that can not record a showing -- +If two rules match the same showing of a program, a rule marked as inactive +or a showing marked as a repeat, for example, yield to the other rule. +
  • +
  • More specific record type is used in place of less specific -- If +two rules match the same showing of a program, preference is given to +Don't Record then Override, Single, Find One, Record Weekly, Find Weekly, +Record Daily, Find Daily, Channel and finally All. +
  • +
  • Higher total priority beats lower total priority -- This is the +core of the scheduling process. Episodes of the highest priority show +are placed on the first available input followed by the next highest +priority show and so on. +
  • +
  • Future start time beats past start time -- If there is an +episode in progress and also a later showing of the same episode, it +is better to record the complete episode. If there isn't another +showing, it will start recording immediately to record the remaining +portion. This should only happen if you add a new rule while the show +is in progress or if the master backend is started after the start time +of a scheduled show. +
  • +
  • More specific record type beats less specific record type -- If +two shows are on at the same time and have the same total priority but +different types they will be sorted by Single then Find One, Record +Weekly, Find Weekly, Record Daily, Find Daily, Channel and finally +All. This only applies if the priorities are the same. +
  • +
  • If both start times have passed, later start time beats earlier start +time -- This attempts to miss the least amount of time. +
  • +
  • If neither start time has passed, earlier start time beats later +start time -- This helps assure that the earliest showing of an episode +has the advantage. +
  • +
  • Lower input id beats higher input id -- The scheduler fills in +open time slots on the first available input for the video source. The +next input is used when there is another show already placed for the +card of the first input. +
  • +
  • Older record rule beats newer record rule -- If two shows are still +equal after all of these other checks, the show whose record rule was added +first is preferred over a more recent addition. +
  • +
  • Postpone showings to resolve conflicts -- If Reschedule Higher +Priorities is set or if a conflict has the same priority as a show +that was scheduled at the same time, the scheduler will check to see +if a scheduled show can be moved to another input or later matching +showing without creating a new conflict so that the conflicting show +can be scheduled to record. +
  • +
+

+ +

Reschedule Higher Priorities

+ +

Setup->TV Settings->Recording Priorities->General has a checkbox for +"Reschedule Higher Priorities" which tells the scheduler to try to be a +little smarter in certain situations. If this is checked, the scheduler will +look for situations where a show cannot record because all inputs for the +channel are used for higher priority shows. It will check to see if any of +the other shows could be recorded at another time so that the conflicting +show can be recorded in its place.

+

Generally, this is a good strategy but there are tradeoffs. If a higher +priority show is postponed, you will not get to watch it until it is +recorded in the later timeslot. There is also a risk that the TV listings +may change and the later showing may go away. In this rare case the higher +priority show may never record. On the other hand, if you do not use this +option you will miss recording some lower priority shows unnecessarily +unless you manually make similar changes.

+

By using Reschedule Higher Priorities, the scheduler will do a better job of +recording as many of your shows as possible when left unattended. It will +also be easy to see that shows have been marked to record at a later time. +You can then decide for yourself when you would prefer to record the first +showing by clicking "Record anyway".

+ +

Controlling Your Schedule

+ +

The Manage Recordings->Upcoming Recordings page is your control center +for the MythTV scheduler. Unlike other DVR systems, this one page gives you +all of the information and tools you need to see all of your alternatives +and make whatever adjustments you desire.

+

The upper half of the screen has a scrollable box listing items that match +your record rules sorted by time. The lower half shows the details for the +highlighted item. There are two 'views' available. Press "1" to include all +of the items that match record rules even if they do not need to be +recorded. Press "2" to focus on just the things that will record and items +that may need your attention. The message in the upper right-hand corner +will remind you when there are conflicts that would prevent one or more +shows from being recorded.

+

The items in the list are colored in the record color for things that +will record, white for things that may need attention, gray for those +that do not need to record and yellow when there is a time conflict. +Items at the top of the list may also be highlighted indicating that the +recording is in progress.

+

Along with the channels, start times and titles, the right-hand column has +a status code. Numbers indicate which card number has been assigned to +record the show. Letters are used to indicate the reason that something +will not be recorded. Just below the box is a short status message for the +highlighted item that indicates the type of record rule that was matched, +the "total priority" for this showing and a one or two word explanation of +the status code. If you press SELECT, you will see more information about +the status.

+

There are a few status codes that may require your attention. "C" indicates +that there are more overlapping shows to record than there are TV tuners to +record them. "L" indicates that the scheduler found that it may be better to +record a later showing of this episode. These states happen as a result of +your choices and should normally reflect your preferences. However, you may +notice situations where you would like to modify the scheduler's initial +choices.

+

The first thing you can do is to highlight an item and press INFO to +see the recording options page. From this page you can change the +record rule type, the duplicate matching rules, or raise or lower the +priority to resolve whatever problem you noticed.

+

Additionally, you can treat any individual showing as an exception that you +do want to record or don't want to record. To use these "override" features, +highlight the item and press SELECT. You will see a message explaining the +current status and at least an "OK" button to exit without making changes.

+

For items scheduled to record, there will be a button for "Don't record" +which will prevent recording this showing but will still allow the same +episode to record in the future. If there is episode description +information, you may also see a button for "Never record". This prevents +recording this showing and tells MythTV to remember that this is an episode +that you've seen or don't need to see if it is ever in the TV listings +again.

+

For items that are not scheduled to record, the message will describe the +reason and in the case of "C" or "L" it will include a list of the shows +that are scheduled to record instead. For any item that could potentially be +recorded there will be buttons for "Edit Options" and "Add Override". "Edit +Options" will allow you to change the options for the existing record rule +such as raising the priority so that the show will record. These changes +would apply to this and all future showings that match this record rule. +"Add Override" will allow you to set options that apply to the specific +showing without affecting the recurring record rule.

+

If you return to an override page after an override has already been set, +you will also see a "Clear Override" to undo your changes. This option makes +it very easy to try out some "what if" attempts when deciding on your best +strategy in a difficult situation.

+

For a recording in progress, there will be a "Change Ending Time" button. +This will take you to the options page for a Single or Override or create +an Override if it is a recurring rule. Here you can go to the Recording +Options section to change the program end time offset. If you extend the +end time so that it overlaps upcoming recordings, the schedule will change +to accommodate the new end time. This may cause a conflict or later showing +even for a show with higher priority. Therefore, it is a good idea to +check your schedule after changing the end time of a recording in +progress.

+ +

12.3 Storage Options +

+ +

Recording Profile

+ +

Each recording rule can be configured with a different recording +profile. For example, colorful cinematography can be configured with a +"High Quality" profile, while 'talking heads' interviews shows can be +configured with a "Low Quality" profile. These recording profiles need to +be configured before using them (see +Recording, +above).

+ +

Recording Group

+ +

For organization of the "Watch Recordings" screen and the MythWeb +interface, recordings can be assigned into "recording groups".

+ +

Storage Groups

+ +

This allows you to select any special "Storage Groups" you may have +created to determine where recordings from this rule should be stored +on your disks. The "Default" storage group is always available.

+ +

Playback Group

+ +

This selects a set of pre-configured playback parameters which can be +created and edited in Setup->TV Settings->Playback Groups. When the +recording is played, the values from this playback group will be +used. This allows you to choose a default time stretch value, skip and +jump amounts appropriate for this type of television program.

+ +

Auto-Expire

+ +

MythTV will "autoexpire" old recordings to make room for new recordings +when disk space gets filled up. This option can be set to "Don't allow +auto expire" to prevent these recordings from being automatically deleted +when disk space fills up.

+ +

The default setting is for all scheduled recordings to be eligible +for auto-expiration; this can be changed in the Settings->TV +Settings->General page by manipulating the "Auto Expire Default" +checkbox.

+ +

The default auto-expire policy is "Oldest Show First"; the oldest +recordings are deleted first. The "Lowest Priority First" method +chooses to expire the lowest-priority recordings first.

+ +

Episode Limit

+ +

An episode limit can also be configured to limit the maximum number +of episodes recorded of a single series, to restrict that series' disk +usage. If this is set, you can further decide what to do when this +limit is reached; either stop recording that series, or to delete the +oldest episodes in favor of the new ones.

+ +

12.4 Post Recording Processing +

+ +

Commercial Flagging

+ +

Select whether or not to automatically flag commercials for these +recordings. Commercial Flagging parameters can be set in +Setup->TV Settings->General.

+ +

Transcoding

+ +

Select whether or not to automatically transcode recordings to save +disk space. Before using this, you must first enable auto-transcode in +the recording profile and configure the transcoding parameters; see +Recording, above.

+ +

User Jobs

+ +

User Jobs allow you to configure up to 4 custom commands to run on +recordings. They can be configured in mythtv-setup. The following +tokens have special meaning when used in the User Job commands:

+

+

    +
  • %DIR% - the directory component of the recording's filename
  • +
  • %FILE% - the filename component of the recording's filename
  • +
  • %TITLE% - the title of the recording (e.g., name of the series)
  • +
  • %SUBTITLE% - the subtitle of the recording (e.g., name of the +episode)
  • +
  • %DESCRIPTION% - description text for the recording (from guide +data)
  • +
  • %HOSTNAME% - the backend making the recording
  • +
  • %CATEGORY% - the category of the recording (from guide data)
  • +
  • %RECGROUP% - the +recording group
  • +
  • %CHANID% - the MythTV channel ID making the recording
  • +
  • %STARTTIME% - the recording start time (YYYYMMDDhhmmss)
  • +
  • %ENDTIME% - the recording end time (YYYYMMDDhhmmss)
  • +
  • %STARTTIMEISO% - the recording start time in ISO 8601 format +(YYYY-MM-DDTHH:MM:SS)
  • +
  • %ENDTIMEISO% - the recording end time in ISO 8601 format
  • +
  • %PROGSTART% - the recording's start time (from guide data; +YYYYMMDDhhmmss)
  • +
  • %PROGEND% - the recording's end time (from guide data)
  • +
  • %PROGSTARTISO%, %PROGENDISO% - the recording's start and end +time in ISO 8601 format.
  • +
+

+ +

12.5 Advanced Recording Options +

+ +

Creating Power Search rules with Custom Record

+ +

MythTV's "Custom Record" feature gives you unlimited control for creating +specialized search recording rules to meet your needs. It allows you to +choose your criteria to search for matching shows based on any of the +information in the program listings, channel information, time functions and +more. This goes beyond the capabilities of any other DVR system and it is +unlikely that this level of scheduling customization will ever be available +in any commercial DVR system.

+ +

Getting Started

+ +

Go to Schedule Recordings->Custom Record. This page, helps you build a +database search one clause at a time. Each added clause further limits +which showings will be matched in the TV listings. You can test the +search at any time and when you are done, you can save your search as a +recording rule.

+

To familiarize yourself with how you can create custom rules, create a +simple rule to record "Nova" only in primetime.

+

The first item at the top of the page allows you to edit an existing rule +or create a new rule. Leave it on "<New rule>". Arrow down to the +third item which says "Match an exact title". Right and left arrows would +allow you to select any of several prefabricated pieces or full examples +but leave it on the default for now. Arrow down to "Add this example +clause" and press SELECT (Enter or Space on a keyboard). The large text +box should now show: +

+
+     program.title = 'Nova'
+
+
+ +As you have probably guessed, this says that we want to search for all +programs with the title "Nova" regardless of the time, day, channel, etc.

+

If you do not receive a PBS station that carries "Nova" or would like to use +another title, edit the title by pressing the down arrow to highlight the +text box and right arrow over the the word "Nova". If you are using a +keyboard you can simply delete the four letters and type a different title +between the quotes. With a remote control, you can do 'cell phone' style +text entry with the number pad. The delete key is the "X" in the grouping +for "1", zero is grouped with "9" and "0" acts as the "Caps Lock" key. You +can press ENTER in the text box to popup a virtual keyboard.

+

Note: the text box honors many familiar Emacs control keys. It is also +possible to cut and paste text into the text box so you can edit with a +favorite editor or insert a rule sent in email or from other sources.

+

In any case, choose a title that is shown both in primetime and late night +or daytime. Next, click the "Test" button. You should see a list of the +upcoming episodes for "Nova" just as if you had clicked the Upcoming +button for "Nova" elsewhere in MythTV.

+

Press ESC to go back to the Custom Record page. Move to the example +selector then press the right or left arrows until you find "Only in +primetime". Click "Add this example clause". You should now see: +

+
+            program.title = 'Nova'
+            AND HOUR(program.starttime) >= 19
+            AND HOUR(program.starttime) < 23
+
+
+ +Click "Test". You should now see a shorter list with only the showings that +begin between 7PM and 11PM. To create a rule for this, press ESC to go back +to the custom page and move to "Rule Name:" then type "Nova" or anything +else you would like. This is only a label and will not affect the search +results. Once a name has been entered, the "Record" button will light up. +Click this to enter the recording options page. If you named it "Nova" the +title will say "Nova (Power Search)". Set whatever options you would like +then click "Save these settings". You now have a special rule to record +"Nova" but only when it is shown in primetime.

+

You can make further modifications to this rule by returning to the Custom +Record page then press the right or left arrow keys on "Edit Rule:" until +you find "Nova". You can experiment and test but the saved rule will not +be updated until you click "Record" then "Save these settings".

+

To remove this, or any other rule, you can go to the "Recording Priorities" +page, arrow down to the title, press Enter and change the the recording type +to "Do not record this program" then "Save these settings".

+ +

How it Works

+ +

MythTV stores TV program information in a database and uses the Structured +Query Language (SQL) to access the data. Information about each TV program +is stored in the 'program' table and information about each TV station you +receive is stored in 'channel'. These two tables are used in the scheduler +queries and their columns are available to be used in your rules. The rules +you create are stored in 'record'.

+

Normal rules in MythTV simply match the title in the rule with the titles +in the 'program' table. MythTV also has search rules for "Titles", +"Keywords" and "People". These store the key phrase in the description +column of the rule and includes them in specialized SQL replacements for +the normal title check. There is also a type called "Power Search" which +takes the raw SQL in the description as the replacement for title +matching.

+

Custom Record is a tool to help you build valid SQL for Power Search rules. +You do not need to be a SQL expert to use Custom Record because the +examples are known to work correctly and are usually self-explanatory so you +can choose the pieces you need then modify them. Many powerful solutions to +unique problems are possible by combining the examples. With some creativity +and some knowledge of SQL, the possibilities are limitless.

+ +

Common Tricks and Tips

+ +

The example clauses marked "complete example" are actual rules that have +been used to address specific problems. You may find that some of these +are useful for you as-is or with slight modifications. These show off how +powerful custom rules can be but there are also several simple idioms that +you may find useful for many of the shows you would like to record.

+

Wait for a known title -- If there is a movie that you anticipate will be +televised in the coming months but is not yet in the listings, you can +select "Match an exact title", edit the movie title, click "Record" then +choose "Record one showing of this title". The rule will wait weeks, months +or years until this title shows up in your listings then it will record one +showing. These rules have no impact on the scheduler throughout the day and +only take a tiny fraction of a second when the master backend starts or when +the listings are updated.

+

Silence series out of season -- "Celebrity Poker Showdown", for example, +will have new episodes for a while then long periods where reruns are shown +dozens of times per week. By checking the previously shown flag you can +create a rule that will only match new episodes. Therefore, your schedule +won't be polluted with dozens of entries marked as "Repeat" or "Previously +Recorded". +

+
+       program.title = "Celebrity Poker Showdown"
+       AND program.previouslyshown = 0
+
+
+ +This allows you to keep rules for your favorite shows that are dormant while +out of season but will spring back to life when new episodes appear.

+

Choose showings on certain days -- Several cable stations will show their +highest rated shows a dozen on more times per week. However, the scheduler +only needs two or three choices to do a good job of making a flexible +choice. +

+
+       program.title LIKE "Celebrity Fit Club%"
+       AND DAYNAME(program.starttime) = "Sunday"
+
+
+ +This says to choose any showing of an episode that hasn't been recorded +when it appears on Sunday. This prevents all the other showings during the +week from being listed in the schedule.

+

Notice the word "LIKE" and the "%" at the end. This does wildcard matching +so that this would match even if the title ended with "2". "III" or +":Revenge of the Snapple Lady". This can be useful where the title may +change from one season to the next like "Survivor: %", "Big Brother%" or +"The Amazing Race%".

+ +

Working with SQL

+ +

As you experiment, it is possible that you may misplace a quote or mistype a +word. If there is a mistake when you press "Test" or "Record" you will see +an error message returned from the database. This will usually give you a +good idea about what needs to be fixed. However, for more subtle MySQL +syntax errors, you can find more information in the documentation at +http://dev.mysql.com/doc/mysql/en/. This contains a lot of +information that can be useful for Power Search rules such as the "Date and +Time Functions". There are many other good resources for SQL on the Web.

+

While the example clauses demonstrate how to use many of the data columns, +you can get a more complete list of all the columns that are available by +using a MySQL client program: +

+
+$ mysql -u mythtv -pmythtv mythconverg
+mysql> describe program;
+mysql> describe channel;
+
+
+ +This will show the names of all of the columns along with their type and +default value. Most are easy to understand but a few need some explanation +in order to use them effectively with Power Search. +
    +
  • "program.category_type" holds one of these exact four strings: "movie", +"series", "sports" or "tvshow". +
  • +
  • "program.airdate" is a string representing the year of release for +movies and may have no meaning for other types of shows. +
  • +
  • "program.stars" is a floating point number from 0.0 to 1.0. On a +four star scale, 1.0 would be four stars, 0.75 would be three stars and so +on. +
  • +
  • "program.originalairdate" if provided is the date when a show +was, or will be, first televised. This may be useful for finding +episodes before or after a certain date such as finding just the +original series of "Battlestar Galactica". +
  • +
  • "program.previouslyshown" is a column created by MythTV to try to +determine if a showing is more than 14 days after its original air date or +if the show was marked as a repeat and did not have a date for the first +airing. If this is "0" it usually means that this is a brand new show or a +rebroadcast within the first two weeks. +
  • +
  • "program.generic" is a column created by MythTV to try mark +showings for a series where the specific episode information is not +included. When these generic showings appear, it is impossible for the +system to determine if they are repeats of the same episode(s) or if +they are all different episodes. +
  • +
  • "program.first" is a column created by MythTV to mark the first +showing in the current listings for each episode, movie or special. +Choosing to match only the "first" showing can be useful for sports +that are brodcast live then repeated. +
  • +
  • "program.last" is a column created by MythTV to mark the last +showing in the current listings for each episode, movie or special. +If a showing is marked both "first" and "last" then it is the only +showing of that program in the current TV listings. +
  • +
  • "program.programid" is the Tribune Media Service database record +identifier for each program description. In general, these start with a two +letter prefix, MV, EP, SP or SH that correspond to the +"program.category_type". For most, the last four digits are "0000" except +EP where the last four digits are the episode number in the series. Note +that these are generated by TMS and not the show's producers but they are +usually in the same order as the original air dates for the episodes. +
  • +
  • "program.videoprop" also "audioprop" and "subtitletypes". +These columns contain bit flags for a variety of attributes that +may be associated with a program. These are filled with information +offered by the TV listings provider. However, your listings source +will not have information for all of the available flags. Therefore, +some of these may not be useful for your search rules. This information +is organized in "sets" and the MySQL function FIND_IN_SET() can be used +to test for any of these flags. For example: +
    +
    +FIND_IN_SET('SURROUND', program.audioprop) > 0
    +
    +
    + +would be true for the programs where the surround sound bit is present. +To see all of the available attribute names: +
    +
    +$ mysql -u mythtv -pmythtv mythconverg
    +mysql> SHOW COLUMNS FROM program LIKE '%prop'\G
    +mysql> SHOW COLUMNS FROM program LIKE 'subtitletypes'\G
    +
    +
    +
  • +
+ +Finally, if you are doing something very experimental and a column is not +giving you the results you had anticipated, you can always check the MythTV +source code to see exactly how a column is used. The open source for MythTV +is available from +http://www.mythtv.org/ .

+ +

12.6 Scheduling with more than one Input +

+ + +

MythTV is designed to allow recording television programs from one or more +service providers, or video source, on one or more video input from each +provider. Some inputs may not be allowed to record at the same time as +each other while others may record simultaneously.

+

A television station may be broadcast on more than one channel from one +provider or may be available on channels from two or more providers. If a TV +station is available from more than one source, the video quality or type of +broadcast may differ. Therefore, MythTV allows you to control how you would +like the scheduler to select the best channel and input for a show which is +available on more than one input or more than one channel.

+ +

Mutually Exclusive Inputs

+ +

A single TV capture card may have video connections to more than +one of its inputs and each input may be from a different service. The card +may only be allowed to record from one of these inputs at one time because +there is only one encoder on the card that actually captures the content.

+

+

+ + + +
+

+

These are mutually exclusive meaning that only one input or the other +may record at a given time but not both.

+

Usually, inputs on different cards can record at the same time +but two or more inputs on the same card cannot. However, there are cases +where inputs on different cards should not be allowed to record at the +same time, for example, a firewire card and s-video analog card connected +to the same set top cable box.

+

+

+
+|
+|   coax +--------------+ firewire    ------------------+
+|     .-=|Cable Provider|=------------=| Card 1 input 1 | HDTV
+|     |  |HD/Cable STB  |=--.          +-----||||||||||||
+|     |  +--------------+   | s-video ------------------+
+|     |                     `---------=|        input 2 | Digital
+|wall |               coax             | Card 2         |
+|=---=^=------------------------------=|        input 3 | Cable
+|                                      +-----|||||||||||| 
+
+
+

+

Input 1 and input 2 receive content from the same set top box and the +channels can not be tuned independently. Therefore only one of these two +inputs should be used at any given time. The solution is to create an "Input +Group" with mythtv-setup in "Input connections". Including these +two inputs in the same Input Group will tell the scheduler that these are +mutually exclusive and may not record at the same time. Inputs 2 and 3 are +automatically mutually exclusive because they are on the same card so there +is no need to create an Input Group for these inputs.

+

Cards such as the Hauppauge PVR-500 are able to record as two cards +simultaneously because it has two MPEG-2 encoders and each encoder appears +as a separate device. DVB cards may be allowed to capture content from more +than one channel at a time if the channels are in the same MUX.

+ +

Stations, Channels and Video Sources

+ +

Although we may be accustomed to thinking of a broadcast station and its +channel number as being synonymous, stations and channels are very different +things. A "station" is in a building with wires and employees. A "channel" +is a carrier frequency or digital ID that carries a broadcast stream. The +same TV station may be broadcast over different frequencies in different +cities or by different providers in the same city. The same frequency will +carry different stations in different cities. In the digital realm of DVB +and ATSC (HDTV), it is even possible for a single frequency to carry +multiple program streams but each of these streams of content are actually +different channels that the receiving devices can 'tune' to independently.

+

+

    +
  • Station: building
  • +
  • Channel: frequency
  • +
+

+

In MythTV, a "video source" is a set of channels from a provider, or over +the air, that can be received by an input. The set defines the channels and +the broadcasters primarily associated with each of those channels. If you +have more than one device or cable from the same provider connected to more +than one card and input, you only need to create one video source in +mythtv-setup then associate that one source with each of these connected +inputs. This will let your MythTV system know that the same channels and +their TV listings are available to be recorded from any of these inputs.

+

For example. A MythTV system may have two capture cards. Both have a cable +connected to the coaxial connectors. These cables carry the local cable TV +service. In mythtv-setup, the user should create one "Video source" called +"Cable", for example. Under "Input connections", "Cable" should be +associated with each of the two tuner inputs. The scheduler will then know +that any program on one of the channels from the "Cable" source could be +recorded by either card from the card's tuner input.

+

You need to create a different video source for each provider or service +that has a different set of channels. Each input with a connection to that +service should be associated with the video source for that service so the +system will know which set of channels are available for each of your active +inputs.

+

Let's say that this user also has one digital cable set top box. The digital +cable service carries channels that are not available over basic cable. The +user would create another source called "Digital". This set top box is +connected to the second card by S-Video so under "Input connections", +"Digital" is associated with the S-Video input of card 2. The system would +then know that programs on channels from the Digital source can only be +recorded from this input. Further, the scheduler understands that it can +only record one show at a time from card 2 so it can assign Cable or Digital +shows to the card but not both at the same time.

+

Some TV stations may be broadcast over a channel from the Cable source and +also broadcast over a channel from the Digital source. Note that two +channels carrying the same primary station may not have the same TV listings +due to carrying the primary station part time, including local programming +exclusive to one of the channels, the channels may be in different +timezones, etc. Listings information must be associated with each channel +even if two or more channels report that they carry the same station.

+ +

Order of Inputs

+ +

By default the scheduler chooses the first (lowest numbered) input which has +a showing of the scheduled program as it fills the schedule. If a lower +priority show is on at the same time as a higher priority show that has been +assigned to input 1, then input 2 will be used next and so on. Therefore, +configure your best card and input first and next best card and input +second. There may be differences in the type or brand of capture card, +signal quality from the cable, system resources such as disk space, CPU, +etc. By configuring your best input first, more recordings, and your highest +priority recordings, will use that input.

+

A common situation is that a newer and better card is added last. For +example, you may initially setup your system with two analog cable cards and +then add a HDTV card. If NBC is on a cable channel and "The Apprentice" is +shown in HDTV on an NBC HD channel, the scheduler would still prefer analog +inputs 1 and 2 over the new HD input 3.

+

So, if you'd like the scheduler to prefer a new source, the simplest thing +is to run mythtv-setup and "Delete all capture cards" then enter +your cards and inputs in your preferred order. This will not remove your +sources and channels - you want to keep those and only renumber your cards +and inputs. In this example, once the changes have been made and the Master +Backend is restarted, the scheduler would then choose "The Apprentice" in HD +on the new input 1 and only use the analog inputs (now numbered 2 and 3) +when the HDTV input was occupied with another show.

+ +

Matching Callsigns

+ +

If a recording rule is a type that can record from any channel, "The +Apprentice" would match for any channel that shows episodes which may +include CNBC or BRAVO. However, for Single, Timeslot, Weekslot or Channel +rules, "The Apprentice" would only match showings on the selected station as +identified by the "callsign". For example, KVBC is an NBC affiliate on +channel 3. Channel 733 is KVBCDT which is HDTV over cable from the same +station. If a Single record rule was set for "The Apprentice" on KVBC +channel 3, it could not record this showing from KVBCDT on 733. If 733 was +chosen when the rule was saved, channel 3 could not be used to record.

+

However, the "Channel Editor" in mythtv-setup can be used to change the +Callsign for channel 733 to "KVBC". MythTV would then understand that both +of these channels are from the same broadcast station. Assuming the HDTV +input was input number "1", "The Apprentice" would record on 733. If, +however, this HDTV input already had a higher priority show assigned to it +in that time slot, "The Apprentice" would be assigned to KVBC channel 3 on +input 2.

+

Having two channels with the same callsign may affect how program +information is shown in mythfrontend. If two sources have the same callsign +and channel number, the program guide and program lists will only show one +instance of the channel number and callsign. If the same callsign is on two +different channel numbers, both will be shown and if two sources have +different callsigns with the same channel number, both of those will be +shown.

+

Continuing with the example above, the Electronic Program Guide would +include rows for both "3 KVBC" and "733 KVBC". If channel 3 KVBC was also +included in the Digital cable source, the EPG would still include just one +line for "3 KVBC" even though there are two different channels, Cable and +Digital, with this identification. Regardless of how these are displayed and +which "KVBC" channel you select to add a rule to record "The Apprentice", +the scheduler will pick the best channel, source and input to record "The +Apprentice" on "KVBC".

+ +

Using Priorities to Prefer an Input

+ +

The fundamental concept to keep in mind is that the MythTV scheduler will +choose the lowest numbered input available when showings have the same +priority. If there are factors that cause two showings of the same show to +have different priorities then the higher priority showing will be +considered before the showings with lower priority.

+ +

Input Priority

+ +

"Input Connections" in mythtv-setup includes a box to set "Input priority" +which defaults to "0". If a value is set, that amount will be added to the +"total priority" for showings on that input. This can be used to influence +using favored cards or not using less favored cards unless necessary.

+

Let's say the "The Apprentice" is on at 8:00pm with a priority of 3. "Who +Cares" is -2 and an episode is shown at 8:00pm then repeated at 11:00pm. The +scheduler would assign "The Apprentice" to card 1 and "Who Cares" to card 2 +at 8:00pm. If the input priority for the input on card 2 was changed to -1, +"Who Cares" would have a total priority of -2 for showings on card 1 and -3 +for showings on card 2. The scheduler would assign "The Apprentice" to card +1 at 8:00pm and "Who Cares" to card 1 at 11:00pm when the better card is +available. If there was another higher priority show at 11pm, the next best +choice for "Who Cares" would be card 2 at 8pm with the priority -3.

+

Card 1 and 2 have input priority "0":

+

+

+ + + +
+

+

+

+
+ Time  Title     Priority  Card  Status
+ 8:00  The Apprentice  +3  1     Will Record
+ 8:00  Who Cares       -2  2     Will Record
+11:00  Who Cares       -2  1     Earlier Showing
+
+
+

+

Card 2 with input priority "-1":

+

+

+ + + +
+

+

+

+
+ Time  Title     Priority  Card  Status
+ 8:00  The Apprentice  +3  1     Will Record
+ 8:00  Who Cares       -3  2     Later Showing
+11:00  Who Cares       -2  1     Will Record
+
+
+

+

Card 2 at "-1" but higher priority shows at both 8 P.M. and 11 P.M.:

+

+

+ + + +
+

+

+

+
+ Time  Title     Priority  Card  Status
+ 8:00  The Apprentice  +3  1     Will Record
+ 8:00  Who Cares       -3  2     Will Record
+11:00  The Daily Show  +1  1     Will Record
+11:00  Who Cares       -3  2     Earlier Showing
+
+
+

+

Note the two different effects, each of which may be what you desire +depending on circumstance. If input priorities are equal, shows will record +at the earliest time if any input is available. If input priorities differ, +shows may be postponed to a later time in order to record on the best input.

+ +

Channel Priority

+ +

Priority can be added for individual channels (remember, frequencies from a +video source, not stations). This can be used to tell the system that you +generally prefer the content of the station on a channel over the formats of +other stations. You may want to raise the priority for ESPN, SciFi, Comedy +Central or lower the priority for CSPAN, CourtTV, etc. If the same station +is on two different channels, you can use channel priority to have the same +effect for these channels as input priority would have for whole inputs.

+

For example, say CNN is on analog channel 20 and there is an HD CNN on 750. +You may not want to tie up the HD input for news originating in standard +definition. Under TV Settings->Recording Priorities->Channel Priorities you +could set channel 750 to -1. The scheduler would then prefer to record CNN +shows on any analog channel 20 before considering using 750 only when there +are no analog inputs available.

+ +

Preferred Input

+ +

For an even finer grain of control, there is a per rule option to specify +which input should be preferred for showings that match the rule. By +default, this adds +2 to the priority for showings on the specified input.

+

For illustration, let's say there will be a Space Shuttle launch on CNN that +will be broadcast in high definition. Adding a rule to record the launch +with priority "0" should default to channel 20 on input 2. Channel 750 would +have this at -1 due to the channel priority set in the previous example. If +on the recording options page for this rule, the "Scheduling Options" had +the input set to prefer the HD input on card 1, then the showing on channel +750 for this input would be increased in value by +2 for a total of +1 and +would be the best choice for this launch coverage. While this one rule +would prefer the HD input with channel 750, all other rules that match shows +on CNN would still prefer channel 20.

+

Note that this will not work properly if the preferred input priority does +not out weigh differences in input and channel priorities. The value of the +priority boost when this option is chosen defaults to +2 but can be modified +in TV Settings->Recording Priorities->Set Recording Priorities.

+ +

HDTV Priority

+ +

In the preceeding fictious example, the Space Shuttle launch is broadcast in +high definition and a preferred input is selected to give preference to the +HD input. However, TV listings from zap2it.com through the DataDirect +service may allow this to work without having to use this per rule option.

+

In Settings->Recording Priorities->Set Recording Priorities there is an +option for "HDTV Recording Priority". This value will be added automatically +if the listings for the show have the "hdtv" flag set. DataDirect will set +this flag for shows known to be broadcast in HDTV on HD channels. However, +the flag is not set for standard definition channels. This is another +example of the listings being different for the same station on a different +channel. If the HDTV priority is set to "+2", the shuttle launch would +automatically have a total priority of +1 so that channel 750 would be +preferred over channel 20 for this HDTV broadcast.

+

Channel "750 CNN" at priority "-1" and HDTV broadcast priority at "+2":

+

+

+ + + +
+

+ +

Custom Priority

+ +

+

+ + +New for MythTV 0.21 +
+

+

While Input, Channel, and HDTV Priority can be used for indicating a +preference for certain programs and inputs, there may be circumstances that +cannot be resolved easily with these standard features. MythTV version 0.21 +includes a feature for "power priority". The Custom Priority editor in +mythfrontend's "TV Settings" screen is similar to Custom Record, however, +Custom Priority allows you to create specialized power priority factors to +influence scheduling decisions.

+

For example, the 'program.closecaptioned' flag can be used in a +similar way as the 'program.hdtv' flag.

+

+

+
+Priority Rule Name: Closed Captioned priority
+Priority Value: 2
+program.closecaptioned > 0
+
+
+

+

This will raise the priority of shows marked with "CC" over those that are +not by applying the "Priority Value" whenever the SQL fragment evaluates to +true. If the expression evaluates to false for a showing, the "Priority +Value" is not applied.

+

+

+
+Priority Rule Name: Priority when shown once
+Priority Value: 1
+program.first > 0 AND program.last > 0
+
+
+

+

The "first" and "last" flags for an episode will only be set for the +same showing when there is only one showing of that episode in the +current TV listings. This rule would raise the priority in these cases +so that these shows would have an advantage to record in their only +available time slot.

+

+

+
+Priority Rule Name: Input 1 signal quality
+Priority Value: -1
+cardinput.cardinputid = 1 AND
+channel.channum IN (3, 5, 39, 66)
+
+
+

+

A common issue with two or more analog capture cards is that one of +the cards may have more interference on some channels than the same +channels on other cards. This example gives a disadvantage to the +channels in this list but only for the first input. Therefore, a show +on channel 39 would choose input 2 or 3 if possible but for channels +not in this list, input 1 is still the first choice.

+

The Custom Priority editor includes many example fragments and complete +examples that can be used or you can create your own to suit your needs.

+ +
+Next +Previous +Contents + + diff --git a/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-13.html b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-13.html new file mode 100644 index 0000000..2f4f192 --- /dev/null +++ b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-13.html @@ -0,0 +1,106 @@ + + + + + Installing and using MythTV: MythPlugins. + + + + + +Next +Previous +Contents +
+

13. MythPlugins.

+ +

MythTV has a rich set of plugins available. Once you have downloaded +the tarball, untar it and run the configure script:

+

+

+
+$ tar -xjf mythplugins-0.21.tar.bz2
+$ cd mythplugins-0.21
+$ ./configure --help
+
+Usage:   configure [options]
+Options: [defaults in brackets after descriptions]
+NB:      all --enable-* options can be reversed with --disable-*
+
+Generic options:
+  --help                   print this message
+  --enable-all             Enable all options
+  --enable-opengl          enable OpenGL (Music and Gallery) [default=no]
+
+MythBrowser related options:
+  --enable-mythbrowser     build the mythbrowser plugin [default=yes]
+
+MythDVD related options:
+  --enable-mythdvd         build the mythdvd plugin [default=yes]
+  --enable-transcode       enable DVD ripping and transcoding [default=no]
+  --enable-vcd             enable VCD playing [default=no]
+
+MythGallery related options:
+  --enable-mythgallery     build the mythgallery plugin [default=yes]
+  --enable-exif            enable reading of EXIF headers [default=no]
+
+MythGame related options:
+  --enable-mythgame        build the mythgame plugin [default=yes]
+
+MythMusic related options:
+  --enable-mythmusic       build the mythmusic plugin [default=yes]
+  --enable-fftw            enable fftw visualizers [default=no]
+  --enable-sdl             use SDL for the synaesthesia output [default=no]
+  --enable-aac             enable AAC/MP4 audio file decompression [default=no]
+
+MythNews related options:
+  --enable-mythnews        build the mythnews plugin [default=yes]
+
+MythPhone related options:
+  --enable-mythphone       build the mythphone plugin [default=yes]
+  --enable-festival        enable festival TTS Engine [default=no]
+
+MythVideo related options:
+  --enable-mythvideo       build the mythvideo plugin [default=yes]
+
+MythWeather related options:
+  --enable-mythweather     build the mythweather plugin [default=yes]
+
+
+

+

The sections detailing configuration of the plugins assume that you are +already in the ~/mythplugins-0.21/ directory.

+

Note that a single configure script now does configuration for all +modules. By default, it will compile all modules. If you do not wish to +compile a module, either because it is of no use to you, or you do not have +the prerequisites, the simplest course of action is to go through the +various sections below, satisfying the prerequisites, and then compile all +modules at once.

+

For example, you would only like to compile and install MythGallery and +MythMusic. For MythGallery, you would like to use the EXIF data in the .JPG +file to present additional information onscreen. For MythMusic, you would +like to enable support for the opengl and FFT visualizations. The command +line would look like:

+

+

+
+$ cd ~/mythplugins-0.21 
+$ ./configure --disable-all --enable-opengl --enable-mythgallery --enable-exif --enable-mythmusic --enable-fft
+$ qmake mythplugins.pro
+$ make
+$ su -
+# make install
+# exit
+$
+
+
+

+

For simplicity, the examples below will disable compilation of all other +modules other than the one being discussed.

+ +
+Next +Previous +Contents + + diff --git a/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-14.html b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-14.html new file mode 100644 index 0000000..f1ab3cb --- /dev/null +++ b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-14.html @@ -0,0 +1,112 @@ + + + + + Installing and using MythTV: MythWeb. + + + + + +Next +Previous +Contents +
+

14. MythWeb.

+ +

MythWeb allows you to use a web page to control various aspects of your +MythTV system. MythWeb is a separate application, but it's dependent on +MythTV being installed and operational.

+ +

14.1 Installation and prerequisites +

+ +

Mythweb is a part of the mythplugins package. See +MythPlugins for instructions on downloading the +tarball. The next step depends on whether your distribution has a web server +and if you have PHP support.

+ +

Mandriva

+ +

Mandriva has apache and PHP pre-packaged, so +installation is quite simple.

+

+

+ + +NOTE: Mandriva 9.1 users, perform the following: +
+ +
+
+# urpmi apache2 apache2-mod_php php-mysql
+# chkconfig --level 345 httpd on
+# /etc/rc.d/init.d/httpd restart
+
+
+

+ +

14.2 Completing the installation +

+ +

+

+
+$ cd ~/mythplugins-0.21/mythweb
+$ su
+# mkdir /var/www/html/mythweb
+# cp -r . /var/www/html/mythweb
+# exit
+$ 
+
+
+

+

By default, MythWeb uses an Apache .htaccess file to restrict +access to the website and to configure some variables.

+

To create the password file for Apache (if your system doesn't already have +one), you could do something like this: +

+
+# cd /var/www
+# htpasswd -c htpasswd mythtv
+New password:
+Re-type new password:
+Adding password for user mythtv
+
+
+

+

See the man page for htpasswd for more examples.

+

To access the web page, open a web browser and use http://[name or ip +address]/mythweb/

+

+

+ + +NOTE: Make sure that you have a trailing slash on the URL, +otherwise you will get a 404 Page not Found error. +
+

+

14.3 Resetting the key binding table +

+ +

MythWeb allows you to configure which keys are bound to which actions +within MythTV. If you'd like to reset this back to the default, execute the +following command: +

+
+$ echo "delete from keybindings ;" | mysql -u mythtv -pmythtv mythconverg
+
+
+

+

14.4 Resetting the theme. +

+ +

If you find yourself wedged into a theme that isn't working, open your +web browser and go to site: +http://mythweb_name_or_ip_address/mythweb/settings.php?RESET_THEME=yes

+
+Next +Previous +Contents + + diff --git a/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-15.html b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-15.html new file mode 100644 index 0000000..f9a6ba7 --- /dev/null +++ b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-15.html @@ -0,0 +1,137 @@ + + + + + Installing and using MythTV: MythGallery. + + + + + +Next +Previous +Contents +
+

15. MythGallery.

+ +

MythGallery is a photo and slideshow application. MythGallery is a +separate application, but it's dependent on MythTV being installed and +operational.

+

15.1 Installation and prerequisites +

+ +

MythGallery is a part of the mythplugins package. See +MythPlugins for instructions on downloading the +tarball.

+

There are a number of transitions available, some requiring OpenGL +support. You will also need to install a TIFF library. Under Mandriva, you +would perform the following command: +

+
+# urpmi libtiff3-devel
+
+
+ +Once you have satisfied the prerequisites for your distribution, install the application: +
+
+$ cd ~/mythplugins-0.21
+$ ./configure --disable-all --enable-opengl --enable-mythgallery
+$ qmake mythplugins.pro
+$ make
+# su
+# make install
+# exit
+$ 
+
+
+ +The configuration for MythGallery is accessed through the main Setup option +in mythfrontend. Make sure you set your pictures directory to wherever +you're storing your photos.

+

The controls for MythGallery can be found in the README that comes with the +application.

+

15.2 Using MythGallery +

+ +

When you first start MythGallery, you will see a thumbnail view of any +folders and pictures in the Gallery Directory you specified in setup. If +this is the first time you have accessed this directory, the thumbnails will +be generated on the fly. If the Gallery Dir is writable, these thumbnails +will be cached thus speeding up future access. On the left is a greyed-out +menu of options.

+

Use the arrow keys to select a folder or picture to open/view with the +Select key, or use the Menu key to toggle access the menu on the left. The +menu options are as follows: +

    +
  • Slideshow - Will cycle through all the pictures in the current folder. +The currently selected item must be a picture (not a folder) for this to +work. It does not currently traverse subfolders.
  • +
  • Rotate CW - Rotate the current image 90 degrees in the clockwise +direction. This change persists if the current directory is writable.
  • +
  • Rotate CCW - As above except the direction of rotation is counter(anti) +clockwise.
  • +
  • Import - Import pictures into your Gallery Dir. This option is +described in the next section.
  • +
  • Settings - Access the MythGallery settings screen.
  • +
+

+

15.3 Importing Pictures +

+ +

The import path in the setup dialog is a colon separated list of +directories and/or executable files. When the import key is pressed, a new +directory (the destination directory) under the current directory will be +created and the import path will be searched. If the item in the import +path is a directory (the source directory), the contents of that directory +will be copied to the destination directory. If you would like the source +directory to be that of a removable device, it might be a good idea to use +autofs. See the automount howto at +www.linuxdoc.org for info on how to get it working.

+

If the item in the import path is an executable file, MythGallery will +attempt to execute it with the destination directory as its sole argument. +Be careful when using executable scripts that the script runs unattended +(doesn't need user intervention) and returns properly, otherwise it could +create the appearance of MythGallery hanging (e.g. running +smbclient and prompting for password). Also be sure that scripts +have executable permissions set.

+

Here is an example script that a user may want to run +on import: +

+
+#!/bin/csh
+
+if ($#argv == 0) then 
+        echo "Usage: $0 dest_dir" 
+        exit 
+endif 
+
+cd $argv[1]
+
+# get stuff over the network
+wget http://www.somesite.dom/dir/file1.jpg 
+wget http://www.somesite.dom/dir/file2.jpg
+wget http://www.somesite.dom/dir/file3.jpg
+
+# stuff that requires manual module loading and/or fs mounting
+modprobe camera_module
+mount /dev/camera /mnt/camera
+cp /mnt/camera/* $argv[1]
+umount /mnt/camera
+rmmod camera_module
+
+# perform some processing
+foreach pname (`ls *.jpg`)
+        jpegtran -flip vertical $pname > $pname.new
+        mv $pname.new $pname
+end
+
+
+

+ +
+Next +Previous +Contents + + diff --git a/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-16.html b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-16.html new file mode 100644 index 0000000..6660a7d --- /dev/null +++ b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-16.html @@ -0,0 +1,241 @@ + + + + + Installing and using MythTV: MythGame. + + + + + +Next +Previous +Contents +
+

16. MythGame.

+ +

MythGame can used as a frontend to start any emulator that your host OS +runs. This is an example of how to set up xmame on Linux. +http://www.mameworld.net/ is +an excellent resource for all things mame.

+

Installation overview: +

    +
  1. Setup directory structure
  2. +
  3. Download and install xmame
  4. +
  5. Download and place extra files (artwork/catver.ini/etc..)
  6. +
  7. Download and install MythGame plugin
  8. +
  9. Setup xmame in MythGame
  10. +
  11. Hints
  12. +
+

+

16.1 Setup Directory Structure +

+ +

To keep things organized, create the following directories for xmame to use +in /usr/local/share/xmame: hiscore, roms, and snaps.

+

+

+
+$ mkdir -p /usr/local/share/xmame/{highscore,roms,snaps}
+
+
+

+ +

16.2 Download and Install xmame +

+ +

NOTE: There may be pre-packaged versions of xmame +available for your distribution. Check +http://x.mame.net/download.html for the latest version.

+

Download the source to xmame from +http://x.mame.net/download/xmame-0.103.tar.bz2

+

+

+
+$ wget http://x.mame.net/download/xmame-0.103.tar.bz2
+$ tar -xjf xmame-0.103.tar.bz2
+$ cd xmame-0.103
+
+
+

+

Edit the Makefile with your favorite editor. Adjust the options as required for your system. +

+
+$ joe Makefile
+
+
+

+

Then make and install xmame +

+
+$ make
+$ su
+(enter password)
+# make install
+# exit
+
+
+

+

After mame has been installed, we need to create some defaults. +

+
+$ mkdir ~/.xmame
+$ cp docs/xmamerc.dist ~/.xmame/xmamerc
+
+
+

+

Because some ROMS work better with different display toolkits, or possibly +even older versions of xmame, it's convenient to keep all of your +xmame binaries and to rename them to include the version number. +MythGame allows you to match individual roms to preferred binaries.

+

+

+
+$ su
+(enter password)
+# mv /usr/local/bin/xmame.x11 /usr/local/bin/xmame-0.103.x11
+# exit
+
+
+

+

NOTE: Depending on how you compiled xmame, you may have +xmame.X11, xmame.SDL or xmame.xgl based on what +display toolkit you used. Also, you may need to remove and recreate +xmamerc after upgrading since some of the default options may have +changed.

+

Edit ~/.xmame/xmamerc to include your paths. +

+
+### Fileio Related ###
+rompath                         /usr/local/share/xmame/roms
+snapshot_directory              /usr/local/share/xmame/snaps
+cheat_file                      /usr/local/share/xmame/cheat.dat
+hiscore_file                    /usr/local/share/xmame/hiscore.dat
+hiscore_directory               /usr/local/share/xmame/hiscore
+history_file                    /usr/local/share/xmame/history.dat
+mameinfo_file                   /usr/local/share/xmame/mameinfo.dat
+
+
+

+

Confirm that xmame works before running it inside MythTV. Place +your ROM in the /usr/local/share/xmame/roms directory you created +earlier.

+

NOTE: There are three public domain ROM sets available at +http://www.mame.net/downmisc.html

+

Launch xmame with your game of choice. In this example, we are using Gauntlet. +

+
+$ xmame gauntlet
+
+
+

+

Some basic mame keyboard commands: +

+
+5 = Insert coin
+1 = Player 1 start
+arrow keys = movement
+left control = button 1
+left alt = button 2
+SPACE = button 3
+ESC = exit
+TAB - menu
+~ to adjust Volume
+     < and >
+
+
+

+ +

16.3 Download extra files +

+ +

The following files allow you to add extra functionality. Place them +into /usr/local/share/xmame

+

- catver.ini is a catalog of categories and versions of popular mame ROMs.

+

Useful for keeping large libraries of ROMs organized.

+

It may be downloaded from +http://www.catver.com or +http://www.mameworld.net/catlist

+

- Screenshots aka "snaps"

+

These may be downloaded from +http://www.classicgaming.com/mame32qa/

+

Screenshots are displayed when you are browsing your ROMS in mythgame. +Unzip and place them in /usr/local/share/xmame/snaps

+

- history.dat

+

Download from +http://www.arcade-history.com/ +This file fills in a bit of background about each ROM.

+

- hiscore.dat

+

Download from +http://www.mameworld.net/highscore/

+

- Cheats

+

Download from +http://cheat.retrogames.com/

+ +

16.4 Download and Install MythGame. +

+ +

MythGame is part of the mythplugins package. See the instructions +in the +Downloading and Compiling +section to obtain mythplugins.

+

Switch to the mythplugins directory: +

+
+$ cd ~/mythplugins-0.21
+
+
+

+

Compile and install mythgame: +

+
+$ ./configure --disable-all --enable-mythgame
+$ qmake mythplugins.pro
+$ make
+$ su
+(enter password)
+# make install
+# exit
+
+
+

+ +

16.5 Setup xmame in MythGame +

+ +

Start mythfrontend and navigate to Utilities/Setup > Setup > Media +Settings > Game Settings > Game Players. Select (New Game Player).

+

To set up a new player for xmame enter the following:

+

+

+
+Player Name:    xmame-0.103.x11                  (Name by which you want your emulator or game called)
+Type:           xmame                           (This is used for display purposes only and does not affect the function of your system)
+Command:        xmame-0.103.x11 -vidmod 1 -fullscreen     (Path and name of binary + any optional parameters)
+Rom Path:       /usr/local/share/xmame/roms     (This tells MythGame what directories to scan for roms to be used with this emulator)
+ScreenShots:    /usr/local/share/xmame/snaps    (This tells MythGame what directories to scan for snapshots to be used with these roms)
+Working Directory:                              (Directory to change to before launching game or emulator. Blank in our case ignores this setting)
+File Extensions:                                (List of all file extension to be used for this emulator. Blank menas any file under the Rom Path)
+[] Allow games to span multiple roms/disks      (will treat game.1.rom game.2.rom game.3.rom as one game)
+
+
+

+ +

16.6 Hints: +

+ +

+

    +
  • Rom name before options: %s can be used as a standin for rom names on the command line.
  • +
  • Multiple disk/rom games: %d1 %d2 etc can be used as standins for multiple disc games on the command line.
  • +
  • Associating a rom with an emulator: Browse to the desired rom and press 'M' to enter the settings page for that rom.
  • +
  • Assign a Game Favorite Status: Browse to the desired game and press "/".
  • +
+

+ +
+Next +Previous +Contents + + diff --git a/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-17.html b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-17.html new file mode 100644 index 0000000..e7eaf9c --- /dev/null +++ b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-17.html @@ -0,0 +1,348 @@ + + + + + Installing and using MythTV: MythMusic. + + + + + +Next +Previous +Contents +
+

17. MythMusic.

+ +

MythMusic has a number of prerequisites that must be satisfied before it +is operational. Depending on your distribution, some of these prerequisites can +be satisfied through the various package managers. If your distribution doesn't +offer pre-compiled versions of the software below, then follow the generic +instructions for manually compiling and installing the software.

+

The prerequisites for MythMusic are: +

    +
  • MAD
  • +
  • taglib
  • +
  • libogg and libvorbis
  • +
  • FLAC
  • +
  • libcdaudio
  • +
  • CDParanoia
  • +
+

+ +

17.1 Manual installation of prerequisites +

+ +

These instructions are for distributions which don't have pre-compiled +versions of the software necessary to run MythTV.

+

Download MAD from +http://www.underbit.com/products/mad and install:

+

+

+
+$ tar -xzf mad-0.15.1b.tar.gz
+$ cd mad-0.15.1b
+$ ./configure
+$ make
+$ su
+# make install
+# exit
+
+
+

+

Download TagLib from +http://developer.kde.org/~wheeler/taglib.html and install:

+

+

+
+$ tar -xzf taglib-1.4.tar.gz
+$ cd taglib-1.4
+$ ./configure
+$ make
+$ su
+# make install
+# exit
+
+
+

+

Download libogg and libvorbis from +http://www.xiph.org/downloads and install in a similar manner +to the above packages.

+

Download FLAC from +http://flac.sourceforge.net and install: +

+
+$ tar -xzf flac-1.1.2.tar.gz
+$ cd flac-1.1.2
+$ ./configure
+$ make
+$ su
+# make install
+# exit
+$ 
+
+
+

+

Download libcdaudio from +http://libcdaudio.sourceforge.net and +install: +

+
+$ tar -xzf libcdaudio-0.99.12p2.tar.gz
+$ cd libcdaudio-0.99.12p2
+$ ./configure
+$ make
+$ su
+# make install
+# exit
+$ 
+
+
+

+

Download cdparanoia from +http://www.xiph.org/paranoia/down.html. +

+
+$ tar -xzf cdparanoia-III-alpha9.8.src.tgz
+$ cd cdparanoia-III-alpha9.8
+$ ./configure
+$ make
+$ su
+# make install
+# cd /usr/lib
+# ln -sf libcdda_interface.so.0.9.8 libcdda_interface.so
+# ln -sf libcdda_paranoia.so.0.9.8 libcdda_paranoia.so
+# exit
+$ 
+
+
+

+ +

17.2 Mandriva +

+ +

Mandriva has a number of the prerequisites available on the +installation CD. Some of the software you're going to need will have to be +obtained from the "contrib" or "cooker" development repositories. +Applications downloaded from "cooker" come from the development branch, so +there may be issues with some software. It isn't recommended that you mix +cooker and release-level software.

+ +

urpmi is the simplest tool for installation of packages from the +command line. The difficult part is the configuration, but this has been +made easier at the following website: +http://addmedia.linuxfornewbies.org/ The website will allow +you to choose a mirror site and then present the command-line configuration +text for that mirror. You will most likely need to add a "Contrib" mirror +to your setup. Once you have done that, you can proceed. If urpmi +prompts you about other modules that need to be installed to satisfy +dependencies, say "Yes".

+

+

+
+# urpmi libmad0 libmad0-devel libflac4 libflac4-devel libcdaudio1 cdparanoia
+# urpmi libcdda0 libcdda0-devel libvorbis0 libvorbis0-devel
+# urpmi libcdaudio1-devel libid3tag0 libid3tag0-devel
+
+
+

+ +

Additional options with MythMusic

+ +

Additional visualizations have been added to MythMusic. If you wish to +use these, there are some prerequisites you must install prior to compiling.

+

+

    +
  • fftw
  • +
  • OpenGL
  • +
  • SDL
  • +
+

+

fftw may be obtained from +http://www.fftw.org/. In Mandriva it may be installed by +typing: +

+
+# urpmi libfftw2 libfftw2-devel
+
+
+

+

OpenGL should be installed on practically all distributions. +However, you will need the devel module. In Mandriva it may be +installed by typing: +

+
+# urpmi libMesaGLU1-devel
+
+
+

+

SDL may be obtained from +http://www.libsdl.org. In Mandriva it may be installed by +typing: +

+
+# urpmi libSDL1.2 libSDL1.2-devel
+
+
+

+ +

17.3 Red Hat Linux 9 +

+ +

Red Hat provides packages for several of the prerequisites, making +installation very simple. Of the prerequisites, Red Hat provides +packages for Vorbis, cdparanoia, SDL, and OpenGL (which you probably +already have installed). To install these all at once, simply type (all on +the same line): +

+
+$ up2date --solvedeps libvorbis libvorbis-devel vorbis-tools cdparanoia-devel cdparanoia-libs cdparanoia SDL-devel SDL
+
+
+

+

If you get the following message: "None of the packages you requested +were found, or they are already updated" it probably means you already +have all of those packages installed.

+

You must install the remaining packages, (MAD, FLAC, libcdaudio and +optionally fftw) manually following the installation directions above. When +installing fftw do not use the rpm package offered on the website because it +will cause an error, so use the source package instead.

+

+

+ + +NOTE: you can use the instructions given at the +automated installation section to install all of MythMusic in one +step. +
+

+

17.4 Compiling MythMusic +

+ +

Once all the prerequisites have been installed, you can proceed with +compiling MythMusic.

+

+

+
+$ cd ~/mythplugins-0.21
+$ ./configure --disable-all --enable-mythmusic --enable-fftw --enable-sdl --enable-aac
+$ qmake mythplugins.pro
+$ make
+$ su
+# make install
+# exit
+
+
+

+ +

17.5 Configuring MythMusic +

+ +

Configuration of MythMusic occurs in two places. The main mythfrontend +Setup is for global MythMusic configuration. Go to the +Setup/MythMusic/General Setup screen and adjust it for your particular +configuration.

+

The second configuration screen is within the MythMusic program and will +allow you rescan your music library, etc.

+

Here's some explanation about the Ignore_ID3 and The NonID3FileNameFormat:

+

If Ignore_ID3 is set to TRUE, MythMusic will try to determine the +Genre, Artist, Album, Track Number, and Title from the filename of the +mp3 file. The NonID3FileNameFormat variable should be set to the +directory/file format where the mp3 files are stored. For instance, I +store mine in the above shown Genre/Artist/Album/Track format. MythMusic +will then use this information to fill in the proper fields when it +populates the musicmetadata table rather than searching for an ID3 tag in +the mp3 file.

+

The files can be laid out in any format, such as:

+

Genre/Artist/Album/Title +Artist/Genre/Album/Title +Artist/Album/Title (with Genre left as Unknown)

+

The track number is optional but can be specified with the title by using +the TRACK_TITLE keyword instead of TITLE. If TRACK_TITLE is used, +then the filename can have a space, hyphen, or underscore separating the +track number from the track title. Keywords are case insensitive, so if +you specify GENRE it's the same as Genre in the format field.

+

The Ignore_ID3 option does not disable the code that determines the track +length, just the portion that tries to read ID3 info.

+ +

17.6 Using MythMusic +

+ +

MythMusic is fairly simple to use. It is recommended that you insert the +CD before selecting "Import CD". You should also ensure that your system +doesn't try to automount the CD and begin playing it automatically.

+

Here's some information on playlist management:

+

Q: How do I create a new playlist? +A: Using the MythMusic "Select Music" menu option, setup the playlist as you +normally would by adding songs or other playlists as needed. When you are +ready to save the new playlist, highlight "Active Play Queue" at the bottom +of the selection tree and hit the "i" key. This will pop up a menu allowing +you to name and save the new playlist. You can also hit Enter to bring up +the popup on the Active Play Queue. This does not work on the playlists +above, as Enter is obviously bound to checking/unchecking the boxes. Any +number (i.e. keypad on remote) will also bring up the menu in both cases.

+

Q: How do I enter the playlist name in the text field without a keyboard? +A: Use the keypad number keys (bound to your remote) to select letters +quasi-cell phone style. Keys 2-9 work pretty much like any cell phone text +entry. 1 cycles through a few special characters, delete, and space. 0 is +like a CAPS LOCK. Hard to describe, fairly easy to use. You will soon be +able to specify the cycle timing in a Setup screen. You can type fairly +quickly through a combination of jumping around the number keys AND hitting +a non-number key (right arrow is particularly good for this) to force the +current character.

+

Q: How do I edit a playlist? +A: Highlight the playlist in the selection tree and hit the "i" key then +select "Move to Active Play Queue" in the popup. You can now modify the +"Active Play Queue" like normal, adding songs and playlists by selecting +them from the song tree. When you are done, highlight the "Active Play +Queue" in the selection tree and hit the "i" key then select "Save Back to +Playlist Tree". And whatever you were editing as your Active Queue before +you moved an existing playlist "on top" of Active reappears. Think of Active +has having a push on, pop off capability, but with a depth of only 1.

+

Q: How do I delete an item from a playlist? +A: Highlight the item in the selection tree and hit the "d" key.

+

Q: How do I rearrange the songs in my playlist? +A: Highlight a song and hit the "space" bar, the song will now have pair of +red arrows in front of it. Use the up and down arrow keys to move it around +in the playlist. When you have it where you want it, hit the "space" bar +again.

+

Q: How do I delete a playlist? +A: Highlight the playlist in the selection tree and hit the "i" key then +select "Delete this Playlist" from the popup.

+ +

17.7 Troubleshooting MythMusic +

+ +

You may run into errors when running MythMusic.

+

When I run MythMusic and try and look up a CD, I get an error message

+ +

The full text of the message will say:

+

databasebox.o: Couldn't find your CD. It may not be in the freedb database. +More likely, however, is that you need to delete  /.cddb and  /.cdserverrc +and restart mythmusic. Have a nice day.

+

If you get this message, you should go to the home directory of whatever +user MythMusic is running as and type: +

+
+rm .cdserverrc
+rm -rf .cddb/
+
+
+

+

These files aren't automatically deleted because of a conscious design +decision by the author that programs that automatically delete things are +bad.

+

The files are used to locally cache CD lookups. If you are re-inserting +CDs, your machine will not actually have to go out to the Internet to +determine what is on them. However, the URL used to access the freedb +database has recently changed, so the stale information in the files from +previous runs of MythMusic would cause the error above. Once the files have +been deleted the stale information will be gone and your local database +will be rebuilt as you use CDs.

+ +
+Next +Previous +Contents + + diff --git a/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-18.html b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-18.html new file mode 100644 index 0000000..01ca0e6 --- /dev/null +++ b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-18.html @@ -0,0 +1,71 @@ + + + + + Installing and using MythTV: MythWeather. + + + + + +Next +Previous +Contents +
+

18. MythWeather.

+ +

MythWeather is a part of the mythplugins package. See +MythPlugins for instructions on downloading the +tarball.

+

+

+
+$ cd ~/mythplugins-0.21
+$ ./configure --disable-all --enable-mythweather
+$ qmake mythplugins.pro
+$ make
+$ su
+# make install
+# exit
+
+
+

+

MythWeather uses MSNBC.com as its source for weather data and weather.com +for its radar image.

+

These are the keyboard commands for MythWeather: +

+
+Left Key             Goes back one page, and extends the time spent
+                     on the page you are on.
+Right Key            Goes forward one page, see above.
+Space                Pause, wait on the current page until space is hit
+                     again.
+Numeric Keys         You can check other weather by keying in other ZIP codes.
+Enter Key            Switch between Celsius and Fahrenheit. Can also
+                     be used a way to force a data update.
+"m" Key              Resets the location to the database default, then updates the data.
+"i"                  Enter / Save settings
+ESC                  Exit the settings screen without saving / Exit the program
+
+
+

+

MythWeather also has an "Aggressiveness" setting. This affects how long +MythWeather waits for data from the msnbc.com website before timing out. If +you are on a slow connection, or have a slow DNS, or MythWeather just +doesn't seem to be working and you've already tried everything else, then +try increasing the aggressiveness level parameter. This parameter is +inverse; a higher number actually means that MythWeather will be less +aggressive, and will therefore wait longer before timing out.

+

MythWeather will print debugging information on the terminal. If you wish +to see additional debugging information while MythWeather is running, run +mythweather from the command line with as mythweather --debug

+

You may also force mythweather to re-run the configuration by starting it on +the command line as mythweather --configure. These two options are +mutually exclusive.

+ +
+Next +Previous +Contents + + diff --git a/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-19.html b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-19.html new file mode 100644 index 0000000..f9e9969 --- /dev/null +++ b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-19.html @@ -0,0 +1,42 @@ + + + + + Installing and using MythTV: MythVideo. + + + + + +Next +Previous +Contents +
+

19. MythVideo.

+ +

MythVideo is a part of the mythplugins package. See +MythPlugins for instructions on downloading the +tarball.

+

MythVideo will allow you to use an external program to watch media files +that are not directly supported by MythTV.

+

+

+
+$ cd ~/mythplugins-0.21
+$ ./configure --disable-all --enable-mythvideo
+$ qmake mythplugins.pro
+$ make
+$ su
+# make install
+# exit
+
+
+

+

See MythVideo's README file for additional information.

+ +
+Next +Previous +Contents + + diff --git a/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-2.html b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-2.html new file mode 100644 index 0000000..c958ba0 --- /dev/null +++ b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-2.html @@ -0,0 +1,27 @@ + + + + + Installing and using MythTV: Introduction. + + + + + +Next +Previous +Contents +
+

2. Introduction.

+ +

This HOWTO document will focus on manually building MythTV in a North +American environment. If you have installation instructions for a different +region or Linux distribution, please send them to the author so that it can +be included in other versions of this document.

+ +
+Next +Previous +Contents + + diff --git a/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-20.html b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-20.html new file mode 100644 index 0000000..6b3561b --- /dev/null +++ b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-20.html @@ -0,0 +1,102 @@ + + + + + Installing and using MythTV: MythDVD. + + + + + +Next +Previous +Contents +
+

20. MythDVD.

+ +

MythDVD is a part of the mythplugins package. See +MythPlugins for instructions on downloading the +tarball. MythDVD is an application which rips DVDs and makes them available for +use with MythVideo. You may also transcode the DVD content from MPEG-2 to +other formats which should greatly reduce the amount of space the DVD +material takes up on your hard drive.

+

MythDVD has a number of prerequisites to enable transcoding functionality. +If you only wish to play DVDs rather than convert them to something like +MPEG-4 or xvid you may skip the prerequisite installation step.

+ +

20.1 Manual Compilation of Prerequisites +

+ + +

20.2 Pre-compiled binaries +

+ +

Mandriva users may install the prerequisites this way: +

+
+# urpmi libdvdread3 libdvdread3-devel a52dec liba52dec-devel 
+# urpmi mplayer ogle xine
+
+
+ +Assuming that you've added a PLF mirror, you may also load the rest of the +prerequisites using the following command: +
+
+# urpmi xvid xvid-devel fame libfame0.9-devel transcode libdvdcss
+
+
+

+

In the example below, we have enabled support for transcoding and for VCD +playing. You may remove these options if you don't need them. +

+
+$ cd ~/mythplugins-0.20
+$ ./configure --disable-all --enable-mythdvd --enable-transcode --enable-vcd
+$ qmake mythplugins.pro
+$ make
+$ su
+# make install
+
+
+

+

20.3 Running the Myth Transcoding Daemon +

+ +

Transcoding ("ripping") a DVD requires you to run the Myth Transcoding +Daemon (mtd). To ensure that mtd is configured correctly, you should first +test it at the command line. +

+
+$ mtd -n
+
+
+ +The last line of text should show something like: +
+
+mtd is listening on port 2342
+
+
+ +This indicates that mtd is ready for use. Once you've successfully +tested mtd in the foreground, type CTRL-C to stop mtd. You may +then start it as a background (daemon) process. +
+
+$ mtd -d
+
+
+

+

Running mtd as a daemon will allow you to automatically start it during the +boot process. For example, you may add mtd -d to your +rc.local file, or you can adjust the script/steps outlined in the +section called +Automatically starting mythbackend at system boot time to start mtd instead of mythbackend.

+ +
+Next +Previous +Contents + + diff --git a/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-21.html b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-21.html new file mode 100644 index 0000000..8b8d7dd --- /dev/null +++ b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-21.html @@ -0,0 +1,37 @@ + + + + + Installing and using MythTV: MythNews. + + + + + +Next +Previous +Contents +
+

21. MythNews.

+ +

MythNews is a part of the mythplugins package. See +MythPlugins for instructions on downloading the +tarball. MythNews is a RSS reader. +

+
+$ cd ~/mythplugins-0.21
+$ ./configure --disable-all --enable-mythnews
+$ qmake mythplugins.pro
+$ make
+$ su
+# make install
+
+
+

+ +
+Next +Previous +Contents + + diff --git a/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-22.html b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-22.html new file mode 100644 index 0000000..9a4f0b6 --- /dev/null +++ b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-22.html @@ -0,0 +1,608 @@ + + + + + Installing and using MythTV: Troubleshooting. + + + + + +Next +Previous +Contents +
+

22. Troubleshooting.

+ +

22.1 Compiling +

+ +

Compile errors

+ +

Some compile errors are worse than others. If you get an error that +doesn't abort the compilation, and says something like: +

+
+cc1plus: warning: changing search order for system directory
+"/usr/local/include"
+cc1plus: warning:   as it has already been specified as a non-system
+directory
+
+
+ +then it shouldn't be a problem.

+

If you get an error like /usr/bin/ld: cannot find -lXext, the +compiler is telling you that you don't have XFree86-devel installed, or that +your distribution hasn't set it up correctly. This needs to be fixed before +MythTV will compile.

+ +

make: *** No rule to make target /usr/lib/qt3/mkspecs/default/qmake.conf', needed by Makefile'. Stop.

+ +

This error happens when there's a missing link in the +/usr/lib/qt3/mkspecs directory. There are two ways to fix this +error:

+

1. Create the link manually: +

+
+$ su
+# cd /usr/lib/qt3/mkspecs
+# ln -sf linux-g++ default
+
+
+ +and then restart the compile,

+

or

+

2. Run qmake mythtv.pro in the mythtv directory. Rerunning +qmake will create a new Makefile for you, however this still +doesn't fix the root cause of the issue, which is that your distribution +didn't create the symlink for you when the qt3 package was installed. The +first choice is the better solution.

+ +

make: *** No rule to make target /mkspecs/default/qmake.conf', needed by Makefile'. Stop.

+ +

You didn't set your QTDIR. Re-read the section on +Setting up paths.

+ +

Internal Segmentation Fault.

+ +

This is most likely to be caused by an overheating processor rather than +an actual programming fault within gcc.

+ +

22.2 Debugging +

+ +

MythTV segfaults

+ +

MythTV isn't doing anything

+ +

Debugging with GDB

+ +

Without details, the developers will not be able to determine if you have +discovered a genuine code-bug, or if the problem is with your system. In +order to determine what's going on, you must recompile MythTV with debugging +support and run MythTV within gdb, the GNU debugger. +Note that, on OS X, some data is provided without going through these steps. +See  /Library/Logs/CrashReporter/MythFrontend.crash.log

+

Re-run the configure script and add --compile-type=debug +to any previous configuration options you may have used. Check the +config.log file if you have forgotten.

+

Now, you need to clear out the old versions of the software to ensure that +you're running with the debugging code, then compile and install. +

+
+$ make distclean
+$ ./configure --compile-type=debug
+$ make
+$ su
+# make install
+# exit
+
+
+

+

At this point, you now have debug-enabled software ready. To make sure that +you don't forget to type a command required for debugging, it's best to +setup a gdbcommands file. This will be read by gdb when it's +started. +Put the following into gdbcommands in your home directory:

+

+

+
+handle SIGPIPE nostop noprint
+handle SIG33 nostop noprint
+set logging on
+set pagination off
+set args -l myth.log -v record,channel,siparser
+run
+thread apply all bt full
+set logging off
+
+
+

+

Let's assume that the problem you're having is in mythbackend.

+

+

+
+$ gdb mythbackend -x gdbcommands
+GNU gdb 6.3-debian
+Copyright 2004 Free Software Foundation, Inc.
+GDB is free software, covered by the GNU General Public License, and you are
+welcome to change it and/or distribute copies of it under certain conditions.
+Type "show copying" to see the conditions.
+There is absolutely no warranty for GDB.  Type "show warranty" for details.
+This GDB was configured as "i386-linux".Using host libthread_db library "/lib/tls/libthread_db.so.1".
+[Thread debugging using libthread_db enabled]
+
+
+

+

gdb will automatically read the commands that you've placed in the +gdbcommands file and begin running the program you specified on the +command line.

+

If the program appears to be locked up, press CTRL-C to create the backtrace +file.

+

All of the output from gdb.txt should be posted to the mythtv-dev +mailing list, along with the steps you followed to get the program to crash.

+

NOTE: If you're trimming the gdb.txt file to remove +extraneous information from the beginning of the file, make sure you include +at least 10 lines prior to the point where the backtrace actually +begins. This ensures that there is some context to the backtrace, and so +that it's possible to see what exactly caused the segfault.

+

gdb has a number of options, read the man page for more +information.

+

Using the gdbcommands file in conjunction with a while loop +will ensure that gdb creates a trace file and then restarts:

+

+

+
+$ while true; do date >> gdb.txt; gdb mythbackend -x gdbcommands; done;
+
+
+

+

NOTE: To exit this loop you will need to kill the while loop.

+

If you're trying to troubleshoot and you can't get back to the gdb window +for some reason, it may be easier to use two systems or to start +mythfrontend from the text console.

+

If you're going to troubleshoot from a remote system, connect to the machine +that you're going to test using ssh or telnet. Next, type +$ export DISPLAY=localhost:0.0. This will allow the graphics to be +displayed on the X console (usually ALT-F6 or ALT-F7) and still give you +output and control of mythfrontend, either from the ssh +session, or by switching back to the text console by pressing CTRL-ALT-F1. +You can now continue troubleshooting using gdb as detailed in the +instructions.

+ +

MythTV is crashing your system

+ +

When run as a non-privileged user, MythTV can not crash your +system. If your system is crashing when you run MythTV, then you have some +issue with the drivers for your capture card or other hardware, or the CPU +fan has fallen off/broken and your system is overheating when asked to +perform a CPU intensive task like encoding video.

+

If you are running as root, which is strongly discouraged, it is +possible that your system may crash due to the real-time thread using all +available CPU. You will not be able to interrupt the process, so for all +intents and purposes your computer will have crashed.

+ +

22.3 Installing +

+ +

When trying to run mythtv-setup, you get an error like this: "mythtv-setup: error while loading shared libraries:"

+ +

You didn't add /usr/local/lib to /etc/ld.so.conf. See the +section on modifying +/etc/ld.so.conf.

+ +

22.4 Using +

+ +

No programs are displayed in "Watch Recordings"

+ +

This situation occurs most often with a system that acts as a frontend +and a slave backend. MythTV supports system-global and user-specific +configuration files, with user-configuration files taking precedence. 99% +of the configuration for MythTV is in the MySQL database, but MythTV still +needs to know where the MySQL server is running. This information is in the +mysql.txt file. By default, it will be installed to +/usr/local/share/mythtv, but a copy placed into ~/.mythtv +will over-ride the global configuration.

+

You must ensure that there aren't multiple, conflicting versions of this +file on your system! +

+
+$ locate mysql.txt
+/usr/local/share/mythtv/mysql.txt
+/home/mythtv/.mythtv/mysql.txt
+$
+
+
+

+

As you can see, in this example there are two mysql.txt files. If +they are not identical, then there may be unintended consequences.

+

You may also see this error if you completely fill the /var +partition. The most likely mythtv-related reason for this is an +overly large mythbackend or mythfrontend log file in /var/log. If +you have logging enabled for the backend, and myth runs for weeks at a time, +this may creep up and surprise you. Note that many system processes also +write to /var and the system may not boot if it is unable to write +to /var due to a full partition.

+ +

MySQL not connecting correctly

+ +

Your MySQL installation may have networking turned off. +Check that /etc/mysql/my.cnf does not contain +skip-networking. If it does, remove it. Also verify that +bind-address is set to your IP address instead of +127.0.0.1. If you change either of these items, restart +MySQL.

+ +

MySQL database is corrupt

+ +

If you have reason to believe that your MySQL database is corrupt, +execute the following commands to attempt to repair it.

+

NOTE: Ensure that there are no programs accessing the database +while you attempt to repair it. Make sure that all backend and frontend +programs have exited.

+

mysqlcheck -r -umythtv -p<password> mythconverg

+ +

Using a MPEG-2 encoder card and the video appears "jittery"

+ +

Using a MPEG-2 encoder card and the video is jumping up and down

+ +

This is a different problem than the one discussed in the previous +section. Currently, the ivtv driver or firmware appear to have some issues +if the vertical capture resolution is not the full screen height. If you +are having a jitter problem then ensure that you are capturing either 480 +lines (for NTSC) or 576 lines (for PAL). The default capture profiles may +need to be edited for your setup. Go to Settings->TV Settings->Recording +Profiles and adjust the Default and Live TV options to +480 or 576 from their defaults.

+ +

Screen goes blank but returns when mouse is moved or keyboard is used

+ +

This is due to DPMS, the Display Power Management System, which is used +to save power by turning off your monitor when the system decides that it's +not being used or due to a screensaver that has defaulted to a blank screen. +MythTV now has DPMS support built-in, and should intelligently handle the +screen. Continue reading if you wish to override DPMS and force it off.

+

Since it's likely that watching TV will not generate keyboard or mouse +events for a time, you need to turn off DPMS and the screensaver. There are +a few ways to do this. You may also need to check your BIOS for power +saving modes and disable screen blanking there as well.

+

Edit your /etc/X11/XF86Config-4 or /etc/X11/xorg.conf +file, and look for: +

+
+Section "ServerFlags"
+    #DontZap # disable <Ctrl><Alt><BS> (server abort)
+    #DontZoom # disable <Ctrl><Alt><KP_+>/<KP_-> (resolution switching)
+    AllowMouseOpenFail # allows the server to start up even if the mouse doesn't work
+
+    Option "blank time" "0"
+    Option "standby time" "0"
+    Option "suspend time" "0"
+    Option "off time" "0"
+    Option "NoPM" "1"
+EndSection
+
+
+

+

Also, look for: +

+
+Section "Device"
+    Identifier "device1"
+    VendorName "nVidia Corporation"
+    BoardName "NVIDIA GeForce 256 (generic)"
+    Driver "nv"
+    Option "DPMS"
+EndSection
+
+
+

+

In this case, you would need to either delete the Option "DPMS" +line, or change it to # Option "DPMS" to comment it out. The next +time you start XFree this change will take effect.

+

Finally, check: +

+
+Section "Monitor"
+    Identifier "monitor1"
+    VendorName "Plug'n Play"
+    HorizSync 30-85
+    VertRefresh 50-160
+
+    # Sony Vaio C1(X,XS,VE,VN)?
+    # 1024x480 @ 85.6 Hz, 48 kHz hsync
+    ModeLine "1024x480"    65.00 1024 1032 1176 1344   480  488  494  563 -hsync -vsync
+
+    # TV fullscreen mode or DVD fullscreen output.
+    # 768x576 @ 79 Hz, 50 kHz hsync
+    ModeLine "768x576"     50.00  768  832  846 1000   576  590  595  630
+
+    # 768x576 @ 100 Hz, 61.6 kHz hsync
+    ModeLine "768x576"     63.07  768  800  960 1024   576  578  590  616
+EndSection
+
+
+

+

Ensure that there isn't an Option "DPMS" in the Monitor +configuration.

+

You can also turn off DPMS from the Command Line, but this will not survive +a reboot. +

+
+$ xset -dpms
+
+
+

+

Using xset +dpms will turn it back on.

+

Another technique to try, which will turn off the screensaver: +

+
+$ xset s off
+
+
+ +You may also combine the command to turn off DPMS and the screensaver: +
+
+$ xset -dpms s off
+
+
+

+

Finally, depending on your distribution, you may be able to turn it off from +within the control panel.

+

22.5 Miscellaneous +

+ +

mythfilldatabase failing

+ +

If mythfilldatabase suddenly appears to be failing, there are at least +two things to check.

+

First, if you are in North America, ensure that your DataDirect subscription +is still valid, otherwise, check to see what version of XMLTV you're +running and that it's the latest version.

+

+

+ + +NOTE: It is highly recommended that you run the latest +version of XMLTV available. Your listings provider may have made changes +which negatively impact XMLTV. +
+

+ +

Fast CPU, choppy or jittery video

+ +

First, you should check that your kernel has been enabled for DMA: +

+
+[mythtv@pvr mythtv]$ dmesg |grep DMA
+    ide0: BM-DMA at 0xd800-0xd807, BIOS settings: hda:DMA, hdb:DMA
+    ide1: BM-DMA at 0xd808-0xd80f, BIOS settings: hdc:DMA, hdd:pio
+hda: 156301488 sectors (80026 MB) w/2048KiB Cache, CHS=9729/255/63, UDMA(33)
+hdb: 80043264 sectors (40982 MB) w/2048KiB Cache, CHS=4982/255/63, UDMA(33)
+
+
+

+

From the listing above, you can see that hda, hdb and hdc are set for DMA, +and hdd is set for pio. If your kernel is not reporting DMA being enabled, +you may need to recompile your kernel. Check your motherboard's chipset +(look in the "ATA/IDE/MFM/RLL support" section in "make menuconfig") for more +information.

+

Next, check that the hard drive has DMA enabled. Use the hdparm +program to check and enable DMA. +

+
+# hdparm -d /dev/hd?
+
+
+ will tell you the DMA status for your hard drives. If you run +hdparm with the -d1 parameter, it will turn DMA on.

+ +

You may also setup your PC to do this at boot time, either by adding the +command to your /etc/rc.local file, or by adding files to +/etc/sysconfig.

+

On Mandriva and other distributions, if you install hdparm from an RPM you +will most likely get a /etc/sysconfig/harddisks file installed. +This file will be parsed by the /etc/rc.sysinit script. If you use +the default harddisks file, your changes will affect all IDE devices +(including CD ROMs). If you wish to use different parameters for various +devices, rename and/or copy the file to harddiskhda, +harddiskhdb, etc. Edit the file to your liking and on the next +reboot your setting will be preserved.

+ +

Frontend appears to be slow at jumping / seeking.

+ +

On-screen Display shows incorrect program length.

+ +

This may occur when MythTV doesn't have an accurate seek table. Run +mythcommflag --rebuild

+ +

Troubleshooting audio

+ +

+

+ + +NOTE: the following instructions do not apply to PVR-250/350 +encoders; the MPEG-2 file will have the audio embedded in the stream so it +is not accessible using /dev/dsp. +
+

+

Audio appears to be one of the bigger issues that users run into on the +mailing list. If the audio isn't configured correctly, then MythTV will +often appear to hang, when in fact it is trying to manipulate the audio +subsystem and failing. You may or may not receive error messages indicating +that the source of the error is the audio subsystem.

+

You can not use xawtv to determine if your audio is working +correctly, since xawtv is simply using the analog sound patched +through line-in to line-out. It doesn't need to digitize the sound unless +you are using the recording function.

+

A better test to verify that sound will work for MythTV (and recording with +xawtv for that matter) is to startup xawtv, mute the +line-in then run aplay /dev/dsp. You should hear the recorded audio +slightly delayed behind the real-time video. You should see messages about +"underrun". These can be ignored but they do confirm that the driver is +loaded and there is an active device. Once this test succeeds, MythTV +should work correctly because it writes to and read from /dev/dsp in +the same way that aplay does.

+

To record audio along with video the audio signal must be digitized by a DSP +so that the audio data can be stored in a file. On playback, the audio data +is written to /dev/dsp and converted back to an analog signal. This analog +signal should then be sent to your speakers. Here is what is needed in +alsamixer. If you are using an ALSA version after 1.0.6, use +alsamixer -V all:

+

CAPTUR source - the analog source to be sent to the DSP. This should be set +to the input source from the tuner card to the sound card. In most cases +this is Line but this could also be Aux, CD, Mic, etc., depending on how you +connect the input cable. This source should be muted to prevent patching +through the analog sound. The volume of this source will not affect the +record level.

+

Capture mixer - this sets the level for the analog to digital recording. +While a volume of 100% is recommended for testing, distortion may occur. +Lowering this level to 75% to 85% may result in better audio quality. +"Capture" should be marked as the CAPTUR destination.

+

PCM mixer - this sets the level for the digital to analog playback. While a +volume of 100% is recommended for testing, distortion may occur. Lowering +this level to 75% to 85% may result in better audio quality.

+

Master mixer - sets the level for the analog signal sent to line-out or the +speakers.

+

You may also want to ensure that /dev/dsp , or whatever device file +is being used, hasn't already been grabbed by another process, like +esd or artsd. If the device file isn't available, then +MythTV won't work. You may wish to run configure and enable +support for these.

+

If you wish to see what application is grabbing a resource, you can use the +fuser command: +

+
+# fuser -v /dev/dsp
+
+
+

+

To disable aRts in KDE, go to KDE->Control Center->Sound->Sound System and +uncheck the "Start aRts soundserver on KDE startup" box. Run # killall +artsd from the command line to stop the artsd program.

+

If you're using multiple sound cards and multiple tuners, use alsamixer +-c 1 to work with the second sound card. The first card is #0, the +second card is #1, etc.

+ +

Mythbackend reports that your card is not reporting full duplex capabilities

+ +

The mythbackend program told me to look at this section

+ +

mythbackend does a check to see if your sound device is capable of full +duplex operation. If it's not, it's most likely that you're going to run +into issues when you try to record and play sound at the same time. If your +backend is a separate machine than your frontend, then there's no problem, +since you're only going to be doing one thing at a time with the card. +Likewise, if you're running the frontend and backend on the same machine, +but you're using btaudio or a hardware encoder card such as the Hauppauge +PVR-250, DVB cards or HDTV capture cards as your recording source and you're +only using the playback function of your sound card, then you also shouldn't +have an issue, since the sound card isn't being asked to perform two +functions at once.

+

If you can't get your sound card to go full-duplex and need it to, then check +your distribution for updated sound drivers. If your sound card is not +capable of full-duplex operation, either because the drivers don't support +it, or it has been designed that way, then you're pretty much out of luck +and will either need to purchase a new sound card, or will need to get +btaudio +operational.

+ +

My remote doesn't work / works sometimes and not others / "ghost" keypresses

+ +

This can be due to a number of factors. The simplest case is the +"ghost" keypresses. For me, it was due to compact fluorescent lights in +the same room as the IR receiver, which the receiver was picking up as +keypresses. Once the lights were switched to incandescent bulbs, the ghost +went away.

+

You may have an issue with lirc misinterpreting IR commands from a +different remote. I also have an issue where the TiVo "Peanut" remote will +eventually cause lircd to stop responding; even though lircd +is configured for the Pinnacle Systems remote, the TiVo remote IR patterns +are being seen by the IR receiver.

+

If your remote has been properly configured, and irw and +irxevent are working correctly, then it's highly likely that your +window manager is not giving focus correctly to the various Myth programs as +they run. The following window managers are known to work correctly:

+

+

    +
  • fvwm
  • +
  • blackbox (using "Sloppy Focus" and "Focus New Windows")
  • +
+

+

NOTE: You do not need to use irxevent if you are using +MythTV's native LIRC support, so the window manager focus issue does not +apply in that case.

+ +

Where's "canada-cable"?

+ +

Channels are off by one

+ +

There is no such thing as "Canada Cable"; Canada uses the same +frequencies as the United States. "Canada Cable" was a hack that some +people used when they would discover that their channels were off-by-one, +i.e. when tuning to channel 42, they might get channel 41 or 43. This is +actually due to the tuner on the video capture device being mis-detected. +You must manually specify the tuner type in your /etc/modules.conf. +See the video4linux mailing list ( +https://listman.redhat.com/mailman/listinfo/video4linux-list) for +more information.

+ +

Mythweb is showing a db_open error when I connect to it

+ +

Find your php.ini file. Make sure you've got a line in it like this:

+

extension=mysql.so

+

Restart apache for it to take effect.

+ +

Mouse pointer disappears when placed over the MythTV windows

+ +

This is the intended behavior. The MythTV interface is meant for use +with a remote control or a keyboard.

+ +

What does "strange error flushing buffer" mean on the console?

+ +

Nothing, really. It's just lame (the mp3 encoder) complaining for some +obscure reason. This seems to be fixed in more recent versions of the +libmp3lame library.

+ +

Can't change the channel when watching Live TV.

+ +

Something's wrong with your program database. Did mythfilldatabase run +with no major errors? Or, MythTV may not have permissions to the +appropriate video4linux devices. See the section titled +Device Permissions for an example.

+ +

Screen goes black when you try to play something

+ +

MythTV prints error and status messages to the shell that was used to +start the application. If nothing seems to be happening when you try to +view a program, try switching back to the shell and look for error messages +there, or, if you're running from a startup script, check the log file.

+ +

Poor performance with NVidia cards and XvMC

+ +

XvMC is a NVidia driver feature which is supposed to help with decoding +video. Users have reported that rather than speeding up their video it +appears to be doing the opposite. You may want to check that your color +depth is set for 24bpp.

+ +

Computer is loading a media player application when you insert a CD or DVD

+ +

You need to disable any sort of auto-running media player in your +environment, otherwise MythDVD or MythMusic will not be able to work +properly.

+

In KDE, you may want to perform the following: +

+
+$ rm ~/.kde/Autostart/Autorun.desktop
+
+
+

+
+Next +Previous +Contents + + diff --git a/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-23.html b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-23.html new file mode 100644 index 0000000..8b7439e --- /dev/null +++ b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-23.html @@ -0,0 +1,1193 @@ + + + + + Installing and using MythTV: Miscellaneous. + + + + + +Next +Previous +Contents +
+

23. Miscellaneous.

+ +

23.1 I'd like to watch the files without using MythTV / I'd like to convert the files to some other format +

+ +

First, check if the mytharchive plugin does what you want. If not, then +read on:

+

MythTV comes with a utility called mythtranscode which can +decode nuv files into raw format for use with other applications. This +command-line utility was not designed to be used by the end-user, but +instead to be called by other applications or scripts. Programs like +nuvexport ( +http://forevermore.net/myth/) are better suited for the end user. +However, since mythtranscode can be a useful tool, directions on +using it follow.

+

mythtranscode creates raw streams, which means that they do not +contain any container information such as resolution, frame-rate, or audio +sampling rate. In order to process the output, you must supply this +information to the processing utility. mythtranscode provides the +relevant information on STDOUT.

+

There are two modes in which mythtranscode can create raw streams. +The first has no synchronization and assumes that the processing utility +will read audio and video at a constant rate. This method is useful when a +single application will be processing the raw output, such as +mencoder or ffmpeg. The second method assumes that two +separate applications will be processing the audio and video streams +independently, and there is no rate control between them which means that +the two programs don't coordinate their efforts to maintain synchronization.

+ +

mythtranscode example

+ +

First, start mythtranscode. You will need to determine the +channel and the start time manually. +

+
+$ mythtranscode --chanid 1036 --starttime 2003-10-20T15:30:00 --profile \
+autodetect --fifodir . &
+
+
+

+

When mythtranscode begins executing, it will create two FIFOs +("audout" and "vidout") in the directory specified (in this case ".", +meaning the current directory) and will print out information about the +video stream.

+

The next step is to start the processing application. The following assumes +that the stream is NTSC 640x480 with 32Kbps audio.

+

To use mencoder you would enter a command like: +

+
+mencoder -audiofile audout -audio-demuxer 20 -rawaudio rate=32000 \
+-rawvideo on:w=640:h=480:fps=29.97 -ovc lavc -oac mp3lame -o out.avi \
+vidout
+
+
+

+

+

+ + +NOTE: You must use mencoder 1.0PRE1 or later. mencoder +version 0.9x WILL NOT WORK! +
+ +Using ffmepg: +
+
+ffmpeg -f u16le -ar 32000 -ac 2 -i audout -f rawvideo -s 640x480 -r 29.97 \
+-i vidout -vcodec mpeg4 -b 2000 -acodec mp3 -ab 128 out.avi
+
+
+

+

Or to play directly using mplayer (again 1.0PRE1 or later is needed): +

+
+mplayer -audiofile audout -audio-demuxer 20 -rawaudio rate=32000 \
+-rawvideo on:w=640:h=480:fps=29.97 vidout
+
+
+

+

If you wanted to write the raw data to separate audio and video files for +later processing, the following would work (note the use of --fifosync +for rate-control): +

+
+$ mythtranscode --chanid 1036 --starttime 2003-10-20T15:30:00 \
+--profile autodetect --fifodir . --fifosync &
+$ cat audout > audio.raw &
+$ cat vidout > video.yuv
+
+
+

+ +

23.2 Using a different window manager +

+ +

MythTV is not dependent on any particular window manager. If you wish to +run a lightweight window manager, the contrib/configfiles/ directory has an +example of a .twmrc and .fvwmrc file you may use.

+ +

23.3 What capture resolution should I use? How does video work? +

+ +

While MythTV allows you to set various GUI and capture resolutions, not +all combinations make sense.

+

First, analog video signals have a defined vertical resolution. In NTSC, +the video standard specifies that there are 525 vertical scan lines. Once +the "extra" lines are removed (they're used to synchronize the video signal, +and encode closed captioning data), you have 480 horizontal lines stacked +vertically.

+

In PAL, there are 625 "raw" lines of resolution, with a net of 576 +horizontal lines stacked vertically.

+

Horizontally, the maximum value allowed for a Bt8X8 chip is 720. However, +due to limitations in the chip and other limitations of broadcast +television, there may not be a noticeable improvement in image quality +beyond 400 or 500 pixels.

+

With this in mind, there are certain commonly accepted values for +resolution. While other values may be accepted for the vertical +resolution, they will cause scan lines to be repeated or dropped.

+

From "best" to "worst", in NTSC: +

    +
  • 720x480 "DVD" resolution. ReplayTV High and medium resolution
  • +
  • 704x480 DVD standalone recorder standard resolution
  • +
  • 640x480 4:3
  • +
  • 544x480 TiVo Best resolution
  • +
  • 480x480 SuperVCD (SVCD) Video CD resolution, TiVo High resolution
  • +
  • 352x480 ReplayTV "Standard" quality, TiVo Basic and Medium resolution, DVD "LP" resolution
  • +
  • 320x480
  • +
  • 544x240
  • +
  • 480x240
  • +
  • 352x240 Video CD (VCD) resolution
  • +
  • 320x240
  • +
+

+

As you can see, the lower quality values are half of the better ones. +720x240 is possible, but isn't a good tradeoff relative to the number of +vertical lines lost. In a PAL country, the you would use values like +720x576 or x288.

+

The higher resolutions will be more CPU intensive if you're using software +encoding (PVR-250/350 will have minimal host CPU impact even if you're using +720x480). If the CPU is overtaxed, frames will be dropped causing uneven +motion. You will likely see the best results at resolutions which average at +least 10% CPU idle time. You can use system tools such as top or +sar to check the CPU % idle while recording. If the CPU average +usage is consistently exceeding 90%, frames will need to be dropped during +peak times when more than 100% of the available CPU would be needed to +process all of the frames.

+

If you'd like to read more on this, go to the vcdhelp website at +http://www.vcdhelp.com/forum/userguides/94382.php.

+ +

23.4 MythTV GUI and X Display Sizes +

+ +

MythTV is designed to be run as dedicated full screen TV application +but can also be run as a desktop application on a computer monitor. Here +are a few consideration for configuring sizes to best suit you needs.

+ +

X Dimensions

+ +

For output to a Television, common resolutions are 640x480, 800x600, and +some rare devices support 1024x768. Generally, higher resolutions are +better. However, you may find that you prefer the picture quality at one of +the lower resolutions. Everything in MythTV is scalable and should 'fit' +regardless of the resolution you choose.

+

Edit your X configuration file, usually /etc/X11/XF86Config-4 for +XFree, or /etc/X11/xorg.conf for Xorg, so that the resolution you +want to use is listed first in the lists under "Screen". If this resolution +is higher than the resolutions supported by your output device, you will see +a 'panning' effect where moving the mouse to the edge will scroll around a +desktop area which is larger than the display size. If this happens, edit +your X configuration file to match the display size then restart X.

+ +

MythTV Dimensions

+ +

From "mythfrontend" go to Setup->Appearance. +The default for the height and width is "0" - this will cause +MythTV to automatically size itself to full screen.

+

If the MythTV GUI width and height are not 0, mythfrontend uses these GUI +dimensions and is anchored to the upper left corner of the X Desktop. If +the GUI X and/or Y are not 0, the upper left corner is positioned at the +specified coordinates. If the "Run the frontend in a window" box is checked, +the window will have a frame and can then be dragged to any position on the +desktop.

+

+

+ + +NOTE: When the GUI is full screen, you may see windows rapidly +flipping on top of each other. If this happens you will need to set your +window manager to 'Click to Focus' for windows to stack properly. +
+ +The fonts for the GUI and OSD will scale to whatever sizes you use. Most +font sizes can be changed in setup selections or in the .xml files under +/usr/local/share/mythtv/ . Make sure to use fonts large enough +to be read on a TV screen from a distance.

+

The full screen TV size is based on the X display size. For Xinerama, you +can specify a screen in Setup->General. The TV picture will be stretched +to fit the entire GUI area regardless of the +capture resolutions used. However, during playback, the "W" key can +to used to correct differences between 16:9 and 4:3.

+ +

Overscan Dimensions

+ +

Because picture edges can be ragged and screen edges aren't straight, +Television is designed to project an image larger than the physical screen. +This is called "overscan". Underscan is fitting the entire image inside the +screen. Underscan is useful for computer monitors so that toolbars and +scrollbars at the edges can be seen.

+

For best results, match the X display area as close as possible to the edges +of the physical screen. This can only be adjusted by your tv-out device or +by the settings for the television set. Many sets have these adjustments in +a 'service mode'. If you cannot make these adjustments, there will be black +borders around the edges of the X desktop, MythTV GUI and TV playback.

+

MythTV has settings for "Overscan" in Setup->Playback. These can not, and do +not, cause the image to display beyond the edge of the X display area. The +purpose of these settings are to cut off rough edges and to expand the image +so that objects will appear to be the same size as a normal overscanned TV +picture.

+ +

23.5 Saving or restoring the database +

+ +

See the mysqldump manpage for more information. +

+
+$ mysqldump -u mythtv -pmythtv mythconverg -c > mythtv_backup.sql
+
+
+

+

To restore: (assuming that you've dropped the database) +

+
+$ mysql -u root
+mysql>create database mythconverg;
+mysql>exit
+$ mysql -u mythtv -pmythtv mythconverg < mythtv_backup.sql
+
+
+

+

You may need to alter the MySQL permissions if this database is being shared +with multiple systems. See the +Modifying access to the MySQL database for multiple systems section for more +information.

+ +

23.6 Deleting the MySQL database +

+ +

+

+ + +NOTE: Performing this step will remove the entire database. You will lose all of your settings and will need to re-run the mc.sql script +to setup the database structure before running the mythtv-setup program. +
+ +
+
+$ mysql -u root
+mysql> drop database mythconverg;
+mysql> quit
+
+
+

+ +

23.7 Moving your data to new hardware +

+ +

This assumes that you will be moving your data to newer / bigger hardware +and don't want to lose your programs.

+

The first step is to create a database backup as demonstrated in an earlier +section.

+

Next, you will extract only the data that is relevant to the programs: +

+
+$ grep "INSERT INTO record "          mythtv_backup.sql > restore.sql
+$ grep "INSERT INTO recorded "        mythtv_backup.sql >> restore.sql
+$ grep "INSERT INTO oldrecorded "     mythtv_backup.sql >> restore.sql
+$ grep "INSERT INTO recordedprogram " mythtv_backup.sql >> restore.sql
+$ grep "INSERT INTO recordedrating "  mythtv_backup.sql >> restore.sql
+$ grep "INSERT INTO recordedmarkup "  mythtv_backup.sql >> restore.sql
+$ grep "INSERT INTO recordedseek "    mythtv_backup.sql >> restore.sql
+
+
+

+

NOTE: Newer versions of mysqldump place backticks around +the table names. Backticks are not the same as apostrophes! On a typical +North American keyboard, backticks are located to the left of the "1" key, +on the same key as the tilde. Also, because the bash shell may try +to interpret the backticks, make sure you use a \ before each one.

+

If your restore.sql file is empty, you'll need to re-run the +commands like this: +

+
+$ grep "INSERT INTO \`record\` "          mythtv_backup.sql > restore.sql
+$ grep "INSERT INTO \`recorded\` "        mythtv_backup.sql >> restore.sql
+$ grep "INSERT INTO \`oldrecorded\` "     mythtv_backup.sql >> restore.sql
+$ grep "INSERT INTO \`recordedprogram\` " mythtv_backup.sql >> restore.sql
+$ grep "INSERT INTO \`recordedrating\` "  mythtv_backup.sql >> restore.sql
+$ grep "INSERT INTO \`recordedmarkup\` "  mythtv_backup.sql >> restore.sql
+$ grep "INSERT INTO \`recordedseek\` "    mythtv_backup.sql >> restore.sql
+
+
+

+

Note the space after the table name and the ">>" to append to the file for +all but the first grep. "recordedmarkup" and "recordedseek" are +huge and there may be hundreds of thousands of lines if you had lots of +hours of recordings.

+

After you have moved the data files to the new hardware, configure MythTV +using the mythtv-setup program as you normally would with a +standard MythTV installation.

+

At this point we will restore the information about your programs back into +the database: +

+
+$ mysql -u mythtv -pmythtv mythconverg < restore.sql 
+
+
+

+

After successful insertion of the data you may delete the +restore.sql file.

+ +

23.8 btaudio +

+ +

btaudio allows you to obtain the audio data from your tuner card directly +over the PCI bus without using a sound card. This is useful if you would +like to use multiple tuner cards in a system without adding a sound card for +each one, or if your existing sound card is not capable of full-duplex +operation.

+

In order to use btaudio, your tuner card will need certain hardware +installed on it, and that hardware must be wired correctly. The chip that +will allow you to use the btaudio module is the MSP34xx. However, having a +MSP34xx is no guarantee that you will be able to use the btaudio module.

+

As of 2003-03-31, this is the current list of cards and their status: +Works with btaudio:

+

+

    +
  • Hauppauge WinTV-radio with dbx-TV stereo, model 401
  • +
  • Hauppauge WinTV-Theater, model 495, 498 (Europe)
  • +
  • ATI TV Wonder
  • +
+

+

The following cards do not work: +

    +
  • Pinnacle Studio PCTV Pro - note: this has a MSP34xx, but it's not +wired correctly to the BT878 chip.
  • +
  • ATI TV Wonder VE
  • +
  • Leadtek Winfast 2000 XP (PAL, UK and NTSC)
  • +
  • I/O Magic PC-PVR. No MSP34xx chip.
  • +
+

+

The following cards have been reported to work, but have issues: +

    +
  • Avermedia AVerTV Studio (no digital DSP output, "whiney noise" on +analog)
  • +
+

+

Once btaudio loads, it should register additional /dev/dsp and +/dev/mixer devices. Typing $ dmesg will let you know +what's going on.

+ +

23.9 Removing unwanted channels +

+ +

If mythfilldatabase grabbed a channel which you do not want to +include in your TV listings, you can remove the entries from the grabber +configuration and the MySQL database. This often happens with premium +channels; for example, HBO or Showtime may be available on your cable TV +system, but is scrambled because you're not a subscriber to that channel. +Since you can never watch it, you want to get rid of it.

+

If you are using the DataDirect service, login to your account at +http://labs.zap2it.com/ to +modify your lineup. Uncheck the boxes for any unwanted channels, and they +will no longer be included in your download.

+

If you are using a grabber from XMLTV, comment out the channel from the +~/.mythtv/<sourcename>.xmltv file by inserting the word "not +" (including the space) in front of the unwanted entry. This will prevent +xmltv from grabbing future listings.

+

Next, delete the unwanted item from the channel table so that it will not +appear in the EPG or when changing channels. To delete the data from the +database we need to perform some steps. First, assuming that HBO is channel +15, we need to find out the internal chanid used by MySQL: +

+
+$ mysql -u root mythconverg
+mysql> select chanid from channel where channum=15;
++--------+
+| chanid |
++--------+
+|   1015 |
++--------+
+1 row in set (0.00 sec)
+mysql> delete from channel where chanid = 1015;
+
+
+

+

Old program data will be removed over the course of a week. However, you may +want to immediately delete any current program listings for the channel that +has been removed: +

+
+$ mysql -u root mythconverg
+mysql> delete from program where chanid = 1015;
+
+
+

+ +

23.10 NFS +

+ +

You may want to use a central server to store your files.

+

On the host machine, (in this case, the hostname is "masterbackend") you'll +want to edit your /etc/exports file and use something like: +

+
+/var/video (rw)
+
+
+

+

To export the /var/video directory with read / write privileges.

+

On the "slave" machine, you'll want to edit the /etc/fstab file and +add something like: +

+
+masterbackend:/var/video /var/video nfs rsize=8192,wsize=8192,hard,intr,nfsvers=3,actimeo=0
+
+
+

+

Then run # mount -a to re-read the file to mount the file system.

+

In this case, the source is a machine called "masterbackend" which is +exporting the directory "/var/video", which we're mounting locally at +"/var/video". The rsize and wsize options are used to increase the +performance of NFS; "hard,intr" is there because that's the recommendation +of the NFS-HOWTO, the nfsvers is required for filesizes over 2GB and actimeo +is used to turn off file attribute caching. Attribute caching for a shared +media point causes problems; you always want to see the latest state of the +directory and files. See +http://www.mythtv.org/wiki/index.php/Optimizing_Performance for +additional information regarding performance optimization.

+ +

23.11 Automatically starting mythfrontend at system boot time +

+ +

Here's an example submitted to the mythtv-dev list by Pat Pflaum +mailto:pat@netburp.com using fvwm: +

+
+$ cat > .xinitrc
+fvwm &
+mythfrontend
+^D
+$ cat > .fvwmrc
+Style myth* NoTitle, NoHandles, Sticky, WindowListSkip, SloppyFocus, GrabFocus, BorderWidth 0
+^D
+$
+
+
+

+

The following also works with blackbox: +

+
+$ cat > .xinitrc
+xset -dpms s off &
+irxevent &
+mythfrontend &
+blackbox
+
+
+

+

Make sure that your .blackboxrc file has: +

+
+session.screen0.focusNewWindows:        True
+session.screen0.focusModel:     SloppyFocus
+
+
+ in it.

+

+

+

23.12 Automatically starting mythbackend at system boot time +

+ +

Red Hat And Mandriva

+ +

Here's a method for automatically starting mythbackend submitted by Mike +Thomson ( +mailto:linux@m-thomson.net) and Stu Tomlinson ( +mailto:stu@nosnilmot.com).

+

Copy the files from the MythTV contrib directory or from Mike's web +site ( +http://m-thomson.net/mythtv/) as follows:

+

etc.rc.d.init.mythbackend should be made executable and copied to +/etc/rc.d/init.d/: +

+
+$ cd contrib
+$ su
+# chmod a+x etc.rc.d.init.d.mythbackend
+# cp etc.rc.d.init.d.mythbackend /etc/rc.d/init.d/mythbackend
+
+
+

+

etc.sysconfig.mythbackend should be copied to +/etc/sysconfig/: +

+
+$ cd contrib
+$ su
+# cp etc.sysconfig.mythbackend /etc/sysconfig/mythbackend
+
+
+

+

Edit /etc/sysconfig/mythbackend if you want to change the defaults +(the userid that should start mythbackend, location of the logfile and (if +required) the name and location of the mythbackend binary).

+

Use chkconfig to make sure the script is called when +entering runlevels 3, 4 or 5: +

+
+$ su
+# chkconfig --level 345 mythbackend on
+# exit
+$
+
+
+

+

+

+

Log files

+ +

By default, the log file for mythbackend will be written to +/var/tmp/mythbackend.log. This has been tested and is known to work +on Mandriva and Red Hat, but many people prefer to place logs under +/var/log/.

+

To do this, create a group called mythtv (or anything you prefer) +and add your usual MythTV users to that group. If you changed the user that +starts mythbackend from the default of root you must perform this +step.

+

Create the directory /var/log/mythtv and set its +permissions as follows: +

+
+$ su
+# mkdir /var/log/mythtv
+# chown root:mythtv /var/log/mythtv
+# chmod 0775 /var/log/mythtv
+# exit
+$ ls -ld /var/log/mythtv
+drwxrwxr-x    2 root     mythtv       4096 Apr 28 21:58 /var/log/mythtv/
+$
+
+
+

+

Create a mythtv file in /etc/logrotate.d: +

+
+$ su
+# cat > /etc/logrotate.d/mythtv
+# Set default values for all log files first...
+
+# Rotate the logs once a week, or more frequently if they 
+# exceed 10Mb in size (size is checked daily).
+weekly
+size 10M
+
+# 'copytruncate' is used for logs generated by 
+# currently-running programs that should not be restarted 
+# (and can't be signalled to start a new log) after the 
+# rotation.  It duplicates the existing log file and then 
+# sets the length of the existing file to 0.  The only time 
+# this would break would be if the program writing the log 
+# was using lseek.
+copytruncate
+
+# After rotating the files, leave the most recent rotated 
+# copy alone but gzip everything else to save space.
+compress
+delaycompress
+
+# If a log isn't present then don't worry about it.
+missingok
+
+# Don't rotate an empty file.
+notifempty
+
+# end of the global options
+
+/var/log/mythtv/mythbackend.log /var/log/mythtv/mythfrontend.log {
+  # Keep logs until they are 2 months old or the number of 
+  # logs reaches 12.  If the log files stay small, the age will 
+  # kick in first and you'll only have 8 log files.  If they 
+  # get larger than 10Mb then you won't keep all 60 days.
+  rotate 12
+  maxage 60
+}
+
+# Different options for mythfilldatabase:
+/var/log/mythtv/mythfilldatabase.log {
+  rotate 2
+}
+^D
+#
+
+
+

+ +

Mandriva

+ +

Mandriva adds one more twist in the form of the msec utility, +which runs regularly and (at the default or any higher security level) sets +permissions on many files, including those under /var/log.

+

To tell msec about the MythTV log files and their directory, you need to +edit the /etc/security/msec/perm.local file to include the +following: +

+
+# /etc/security/msec/perm.local
+# Local overrides to the msec program
+#
+# Full file path                user.group              permissions
+/var/log/mythtv/                root.mythtv             775
+/var/log/mythtv/*               root.mythtv             664
+
+
+

+

A copy of the above has been included in the contrib/ directory. You may +add it by typing: +

+
+$ cd contrib
+$ su
+# cat etc.security.msec.perm.local >> /etc/security/msec/perm.local
+# exit
+
+
+

+

Finally run the msec tool to check and implement your +changes. +

+
+$ su
+# msec
+# exit
+$
+
+
+

+

+

+ + +NOTE: msec can only reduce the permissions of files, so if +you don't get the results you expect, check that you're not asking +msec to add missing permissions to the files or directories you +created. +
+

+

Gentoo

+ +

The portage file for MythTV has scripts that will allow you to run +mythbackend at startup.

+

To run mythbackend as a daemon which starts at boot time: +

+
+# rc-update add mythbackend default
+
+
+ +To stop mythbackend as a daemon: +
+
+# /etc/init.d/mythbackend stop
+
+
+

+

To obtain a list of options: +

+
+# /etc/init.d/mythbackend
+
+
+

+ +

23.13 Advanced Backend Configurations +

+ +

MythTV is flexible in the way that you define multiple backend tuner +configurations. The only hard-and-fast rule is that the Master backend +must have a capture device defined, but shouldn't imply that the +capture device in the Master backend must be the first capture card defined in the +database.

+

One example of an advanced configuration is the round-robin scheme. Rather +than defining all of the cards on the master, you could first go into +mythtv-setup on the master to define globals such as the general configuration +and the channel lineup but not the host-specific configuration item like the +capture card. In this example, we will use a 4 tuner configuration, where two +slaves have one card each and the master has two. +

    +
  1. Add the first capture card on one of the slaves. Complete the +configuration, connecting the input source to the card. This will get +cardid #1 in the database. Exit mythtv-setup.
  2. +
  3. Configure the first capture card on the master backend. This will get +cardid #2 in the database. Exit mythtv-setup.
  4. +
  5. Configure the first capture card on the second slave. This will be +cardid #3 in the database. Exit mythtv-setup.
  6. +
  7. Configure the second capture card on the master backend. This will +get cardid #4 in the database. Exit mythtv-setup.
  8. +
+

+

Using this scheme, the master backend will not use both capture cards until +one of the following happens: +

    +
  • There are four recordings scheduled for the same time
  • +
  • Both slaves are unavailable
  • +
+

+

The scheduler in MythTV checks whether an encoder is available; if a slave +backend isn't running, its encoder isn't available, so the scheduler will +look for the next available encoder. This makes MythTV very flexible; slave +tuners can come and go, and as long as there are enough tuners for what +you'd like to record it doesn't matter which tuner in particular is going to +be used.

+

Using this round-robin scheme along with a shared storage directory like +NFS and enabling the Master Backend Override setting will allow you to view +content even if the slave backend that recorded a program is not available.

+ +

23.14 Using the transcoder +

+ +

MythTV's built-in transcoder re-encodes recordings from one codec to +another. The transcoder has three primary uses; it can transcode MPEG-2 +files captured using a hardware encoder (PVR cards, DVB cards, ATSC HD, +etc.) to MPEG-4, it can be used to transcode RTjpeg files (usually only used +on systems that can not real-time encode to MPEG-4 using a framegrabber) to +MPEG-4, and finally it can be used to remove commercials from a MPEG-2 file +while leaving the file in MPEG-2 format.

+

When MythTV transcodes a file to MPEG-4 or RTjpeg the resulting file format +is NuppelVideo (nuv). NuppelVideo is a container which provides a method of +keeping the audio and video in sync throughout the recording, which is why +it is used instead of the .avi format. You may have difficulty +playing .nuv files in non-MythTV systems.

+ +

The original file is removed when the transcoding process is complete. +Unless you're sure that you will be satisfied with the result you may want +to enable the mythtv-setup option which causes mythbackend +to keep the original file after transcoding. This option is on the second +page of the General section in mythtv-setup. Enabling this allows you to +compare the two files and restore the original if you like. Outside of the +initial setup phase it usually isn't necessary to leave this option enabled. +A recording can be transcoded in two ways:

+

+

    +
  • Automatically transcode the file once it has completed +recording.
  • +
  • Manually choosing to transcode a recording, usually after +importing a cutlist or manually marking commercials to be +removed.
  • +
+

+

The second method can be used on files that have already been transcoded (or +files which were are already in the desired format), so only the frames +immediately following a cut section will be re-encoded, resulting in a +minimal loss of quality when removing commercials with the added benefit of +being extremely quick.

+

The current transcoding system has a lot flexibility, but there are +a number of steps involved in setting it up. In order to +automatically transcode a given recording you must do the following: +

    +
  1. Configure recording profile for your capture source and enable +transcoding on one or more profiles.
  2. +
  3. Configure one or more transcoding profiles.
  4. +
  5. Create or alter existing scheduled recordings to enable +transcoding for that recording.
  6. +
+

+ +

Configuring Recording Profiles to Allow Transcoding

+ +

Enter the Utilities/Setup > Setup > TV Settings > Recording Profiles +section in mythfrontend. Choose the option that corresponds to +your capture source (ignore the Transcoders for now.) Choose the quality +profile you are interested in using for transcoding. Ensure that "Enable +auto-transcode after recording" is checked.

+ +

Configure Transcoding Profiles

+ +

Enter the Recording Profiles > Transcoders menu. There are three quality +settings to choose from and a two special Autodetect settings. Later, when +scheduling recordings you'll have to choose one of Autodetect, High, Medium, +and Low Quality transcode settings in addition to the recording profile we +set up above. If you choose the Autodetect transcoding profile for a +recording, MythTV will use the "Autodetect from RTjpeg/MPEG-4" profile for +recordings which are RTjpeg/MPEG-4 files. Otherwise, it will use the +"Autodetect from MPEG-2" profile provided it's an MPEG-2 recording. If you +choose one of the others (High, Medium, Low) it will use the settings in +that profile regardless of the codec of the original recording.

+

There are a number of options for transcoding but the simplest is to enable +lossless transcoding (the first option) which subsequently removes all other +options. Enabling lossless encoding simply removes commercials (if you've +marked them) and attempts to clean up MPEG-2 streams. Note that with this +option MythTV will not apply any sort of filters and will only attempt to +normalize the stream into something cleaner and less likely to have trouble +with other less forgiving MPEG-2 hardware/software (including players, video +editors, etc.)

+

If you enable resizing of the recording the next page has the settings for +choosing the final resolution. MythTV will scale the video as appropriate, +not crop it to this resolution.

+

The final two pages allow configuration of the video and audio codecs. +Although RTjpeg is an option for video codec there is no reason to transcode +to this format because it will produce larger files than MPEG-4 and +the recording will take more CPU power to play back. The MPEG-4 +settings are described in the documentation for the ffmpeg project +at +http://ffmpeg.sourceforge.net/ffmpeg-doc.html. It's a matter of +trial and error to discover which settings achieve a good compromise between +size and quality.

+

If you wish to return to the default settings, they are Bitrate: 2200-2500, +MaxQ: 2, MinQ: 15, MaxQDiff: 3, and "Scale bitrate for frame size" is +enabled. The other options are unchecked.

+ +

Create/Alter Scheduled Recordings to Enable Transcoding

+ +

Transcoding is actually enabled on a per-recording basis. Two things +must be true before any given recording will be auto-transcoded, however. +The first is that the recording must have been made with a recording profile +that has auto-transcode enabled. Under "Storage Options" for the recording +you must set the "Record using the "X" profile" to the profile you +configured in the first step. In addition, under the "Post Recording +Options" section of the recording you must also set "Transcode new +recordings." This is also where you specify the Transcoding profile to use +(Auto, High, Medium, Low.)

+

It may not be obvious from above but the flexibility of this system is +primarily to make it possible to auto-transcode a show recorded via one +source (ie: pcHDTV 3000), and not transcode that same show if it's recorded +on another kind of card (ie: PVR-250.) There are other uses however. You +could have a PVR-250 and a V4L card. You may want to transcode the MPEG-2 +from the PVR-250 but there is no need to transcode the recordings made with +the V4L card, as it's already likely to be MPEG-4.

+

As an example, you could configure the Default profile for "Hardware DVB +Encoders" (the profile group used for DVB cards, including ATSC cards like +the pcHDTV 3000) to "Enable auto-transcoding". In the Default profile for +MPEG-2 Encoders (PVR cards) you'd leave "Enable auto-transcoding" unchecked. +For programs that are available on both kinds of cards you'd set the +recording profile to Default and enable auto-transcoding in the record +settings. Then you pick your transcoding profile. The result is that when +a program is recorded on your DVB card, it will get transcoded. When it +plays on a channel available via your PVR card, it won't be.

+ +

Manual Transcoding

+ +

Manually transcoding is activated while watching a show by hitting 'x', +from the OSD menu by choosing the Transcode option, or by choosing Job +Options/Transcode from the info menu from the Watch or Delete +Recordings screens.

+

The transcoding profile used for manual transcoding is whatever was set when +the recording was originally configured, even if you didn't enable +auto-transcoding. The only way to change what transcoding profile will be +used is to alter the transcoder column in the recorded table in the +database. The transcoder column contains a number which corresponds with +the id column in the recordingprofiles table. You can find out the id +number for each profile in the transcoder group with an SQL command like:

+

+

+
+mysql> select r.* from recordingprofiles r,profilegroups p where p.name='Transcoders' and p.id=r.profilegroup;
++----+----------------+------------+------------+--------------+
+| id | name           | videocodec | audiocodec | profilegroup |
++----+----------------+------------+------------+--------------+
+| 21 | RTjpeg/MPEG4   | MPEG-4     | MP3        |            6 |
+| 22 | MPEG2          | MPEG-4     | MP3        |            6 |
+| 27 | High Quality   | MPEG-4     | MP3        |            6 |
+| 28 | Medium Quality | MPEG-4     | MP3        |            6 |
+| 29 | Low Quality    | MPEG-4     | MP3        |            6 |
++----+----------------+------------+------------+--------------+
+5 rows in set (0.01 sec)
+
+mysql>                                                                        
+
+
+

+

Armed with the knowledge of what the profile ID's are you can also choose to +run mythtranscode from the command line and explicitly specify the transcoder +profile. Run mythtranscode --help for usage information.

+ +

23.15 Changing your hostname +

+ +

If you need to change the name of the computers used with MythTV you'll +need to perform a sequence of steps. There are a number of pieces of +information that MythTV keeps track of which are tied to the hostname of the +box, so changing the hostname involves altering the name in the +operating system and in the MySQL database. In the examples below, the old +name of the system was "frontend1" and we're going to change it to +"kidsroom".

+

+

+ + +NOTE: Changing the hostname using direct SQL update commands will +break things. You MUST use this indirect method. +
+

+

1. Stop all backends. If you run mythbackend from a terminal +session, press control-c. If your backends are started with an init +script, you would do something like the following: +

+
+$ su
+# /etc/init.d/mythbackend stop
+
+
+

+

2. Change the hostname.

+

For Red Hat and derived distributions, edit the +/etc/sysconfig/network file. Look for +HOSTNAME=frontend1 and change this to +HOSTNAME=kidsroom or whatever you'll be using. For other +distributions, refer to the documentation, such as the +

+hostname(1)
+
+ man page.

+ +

To alter the +hostname in the current session, run: +

+
+# hostname kidsroom
+
+
+

+

3. Dump the database. +

+
+$ mysqldump -u mythtv -pmythtv mythconverg -c > mythtv_backup.sql
+
+
+

+

4. Rename the host in the database. First, ensure that the new hostname +you'll be using isn't already in the database. +

+
+$ grep kidsroom mythtv_backup.sql
+
+
+ +Now we're actually going to change the name. The following should all be +typed on the same line: +
+
+$ cat mythtv_backup.sql | sed s/\'frontend1\'/\'kidsroom\'/g >> mythtv_restore.sql
+
+
+ +If you don't feel comfortable using sed, you can open the +mythtv_backup.sql file in a text editor and perform a global search +and replace. When saving the file, make sure you use the new name, +mythtv_restore.sql or the rest of the steps below will fail.

+

5. Drop and recreate the database. +

+
+$ mysql -u root
+mysql>drop database mythconverg;
+mysql>create database mythconverg;
+mysql>exit      
+
+
+

+

6. Restore the database using your edited version. +

+
+$ mysql -u mythtv -pmythtv mythconverg < mythtv_restore.sql
+
+
+

+

If you are running slave backends or frontends, don't forget to re-enable +access as detailed in +Modifying access to the MySQL database for multiple systems.

+

7. Start the backends. If you use init scripts, do the following, otherwise +start them from terminal consoles. +

+
+# /etc/init.d/mythbackend start
+
+
+

+

8. Quit and restart all frontends. Delete the mythtv_backup.sql +and mythtv_restore.sql files.

+ +

23.16 Can I run MythTV on my TiVo? +

+ +

23.17 Can I run MythTV on my ReplayTV? +

+ +

No.

+

While it is true that the TiVo runs the Linux kernel, and TiVo has released +their changes to the kernel under the GPL, the TiVo is not a +general-purpose computer, and there is no programming information available +for the custom hardware contained within a TiVo. TiVo is under no +obligation to release the source code to their application.

+

The ReplayTV runs VxWorks, a Real Time Operating System from Wind River +Systems.

+

23.18 Can a wireless connection be used between the frontend and the backend? +

+ +

Yes, assuming that your wireless connection has sufficient bandwidth to +maintain the datarate between the frontend and the backend. 802.11b should +be sufficient if the encoded bitrate of the content is less than the +datarate of your wireless connection, which in the case of 802.11b would be +approximately 4 Mbps. (The advertised rate of 11Mbps gives an actual +throughput of 4 Mbps.) 802.11a and 802.11g, if operating in their high-speed +modes, or proprietary 802.11b "Turbo" schemes should be adequate. Multiple +wireless frontends, poor signal strength or other factors can severely +impact the viewing experience on the frontend.

+ +

23.19 How can I burn shows that I have recorded to a DVD? +

+ +

Use the mytharchive plugin.

+ +

23.20 Using the DBoxII within MythTV +

+ +

The configuration of the DBoxII for use within MythTV is tricky (as of +May 16 2005), that's why it's covered here. Your DBoxII has to be running +linux and the Neutrino GUI instead of the stock BetaNova firmware. For +further information, please refer to +http://www.tuxbox.org. Additionally, you need to enable the SPTS +mode in Neutrino.

+

+

    +
  • Add a new "Capture Card" in the setup. The "Card type" is "DBOX2 Input", +the other values have to be adjusted according to your setup. +The default values, except for the "DBOX2 host ip", should work fine.
  • +
  • Define a new video source. It doesn't need to be configured, +you just need to define it. MythTV grabs the EPG from the DBoxII.
  • +
  • Connect the DBoxII to the newly defined input source in "input connections".
  • +
  • Since channel scanning is not implemented yet, you need to define channels +in the "Channel Editor". Make sure that you use the same value for +"Channel Name" as on the DBoxII. You can get a list of available +channels from the web interface of Neutrino at http://ip-of-your-box:80/. +Associate the channel with your new video source and repeat when needed.
  • +
+

+

You may leave the Setup now and proceed as usual.

+ +

23.21 What do the icons on the Watch Recordings screen mean? +

+ +

Press "1" or F1 to get a popup.

+

23.22 What do the letters mean when I change channels? +

+ +

These letters let you know what's going on with the backend as it tries +to tune to a channel.

+

Lower case = seen

+

Upper Case = seen & good +

    +
  • l/L = Lock : This could be seen by PVR-250/BTTV users
  • +
  • a/A = PAT : Any recording transmitted in MPEG
  • +
  • m/M = PMT : Any recording transmitted in MPEG
  • +
  • g/G = MGT : ATSC only
  • +
  • v/V = VCT : ATSC only
  • +
  • n/N = NIT : DVB only
  • +
  • s/S = SDT : DVB only
  • +
+

+

23.23 What is the difference between the various Hauppauge PVR models? +

+ +

This is covered in the hardware section, and extensively covered on the +Hauppauge website. ( +http://www.hauppauge.com/pages/compare_pvr.html) Please check the +Hauppauge website for the most accurate information.

+

A PVR-150 comes in a number of versions: +

    +
  • The PVR-150 (Model 1045) is the retail kit. It comes with a remote +control and an IR Blaster. It does not have a radio tuner.
  • +
  • The PVR-150 MCE (Model 1042) will usually come in a plain white box and is +sold as an OEM device. It does not come with a remote control, since it's +usually used as the second, third, etc capture device.
  • +
  • The PVR-150 MCE Kit (Model 1062) does not have a radio tuner and +comes with a Microsoft Media Center remote control instead of Hauppauge's.
  • +
  • The PVR-150 low profile (Model 1086) is a low-profile card. It has a +radio tuner and is approximately half the height of a standard card. +However, it comes with a low-profile PCI bracket, so it is not suitable for +use in a standard PCI slot without removing the bracket, which may not be +worth the trouble.
  • +
+

+

A PVR-250 (Model 980) is a retail kit which comes with an IR receiver and a +remote control.

+

The PVR-250 MCE (Model 975) contains a FM radio tuner. The PVR-250 MCE does +not contain a IR receiver or a remote.

+

The PVR-250 Rev 1 contained an MPEG-2 decoder. However, this function was +not connected to any output jacks, and there doesn't appear to be any way to +pull decoded video from the card, so it's a fairly useless feature.

+

The PVR-350 (model 990) has the features of the PVR-250 as well as being +able to decode MPEG-2. The encode and decode functions may be used +simultaneously. The MPEG-2 decoder function gives superior video quality +compared to what you'll find on a standard video card. However, the decoder +function is only available once Linux has started, so you will not see any +boot-time messages. Also, the card is not capable of resolutions higher +than 720x480, so it cannot be used with HDTV. Make a conscious decision +(and ask for advice on the mailing list) that you want to tradeoff potential +HDTV use in the future compared to video quality.

+

The X-driver for the PVR-350 support playback using Xv efficiently but does +not support any other 2D or 3D acceleration. For some application this may +place a large load on the host CPU, some will run without any problem and +others (mplayer, xine, xmame etc.) should be configured to utilize the Xv +interface.

+

Note that for the PVR-350 there are some +considerations +regarding the way audio is handled.

+

The PVR-500 is a dual-encoder version of the PVR-150 card, so you can +simultaneously record two different programs at the same time, because there +are two encoder chips on the PCI card. Hauppuage has also installed an +onboard splitter, so you can use one COAX to feed both tuners. Current +versions of the PVR-500 should come with an adapter to allow you to connect +a second S-Video or composite input, but this will take up a second PCI +slot. Early adopters may need to purchase this item separately.

+ +

23.24 Changing channels on an external Set Top Box +

+ +

If you need to use an external Set Top Box (STB), such as for satellite +TV or for digital cable you will need some way for MythTV to tell the STB to +switch to a new channel. There are several methods: +

    +
  1. Use an IR blaster. An IR blaster is an infrared transmitter connected +to your computer. When MythTV needs to change channels it will send IR +pulses, thereby emulating a remote control.
  2. +
  3. Use a direct serial connection. Some STB's have a serial port on the +back, although it may not look like a serial port. It may look like a phone +jack, or a strange VGA connector. It may be labeled "Low Speed Data". A +direct serial connection is more reliable than an IR blaster. Not all STB's +that have a Low Speed Data port have it enabled; you may need to convince +your service provider to turn it on. Stating that you have a Tivo may help; +the Tivo has a direct-connect capability.
  4. +
  5. Use a firewire connection. There is a 6200ch.c in the MythTV +contrib directory which may work for you.
  6. +
+

+

23.25 Configuring one machine to flag all commercials +

+ +

Commercial flagging can be CPU intensive. By default, the backend that +created a recording is the one which will flag commercials. You may wish to +use a different machine to run commercial flagging.

+

On the slower machine:

+

Start the mythtv-setup program. Advance through the pages until you get to +the Job Queue page. Turn off the setting that says "Allow Commercial +Detection jobs", thereby preventing any commercial flagging jobs from +running on this machine.

+

Next, make sure that "Run Jobs only on original recording host" is turned +OFF so that new jobs are allowed to run anywhere.

+

Restart mythbackend since it only reads this setting when it starts +up.

+

On the faster machine:

+

Start the mythtv-setup program. Advance through the pages until +you get to the Job Queue page. Ensure that "Allow Commercial Detection +jobs" is turned ON for this machine.

+

Run mythjobqueue. mythjobqueue will examine the JobQueue +and run any jobs it finds. mythjobqueue should be left running so +that it will pick up any new commercial flagging jobs that are added to the +queue, otherwise new jobs will be added to the queue and your programs won't +be flagged until you run manually run mythjobqueue.

+

Using this technique it's possible to add commercial flagging machines as +needed, even on systems that aren't running a backend. It's also possible +to run the commercial flagger in a virtual machine environment such as +VMWare.

+ +
+Next +Previous +Contents + + diff --git a/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-24.html b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-24.html new file mode 100644 index 0000000..32a0eb5 --- /dev/null +++ b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-24.html @@ -0,0 +1,452 @@ + + + + + Installing and using MythTV: Example Configurations. + + + + +Next +Previous +Contents +
+

24. Example Configurations.

+ +

24.1 Logical Volume Manager (LVM) +

+ +

LVM greatly increases the flexibility you have in managing your storage +than traditional physical partitions. This section will provide some brief +notes on how to use LVM to create storage space for your video files and how +to add additional disk space in the future. There's lots more that can be +done with LVM, so check the LVM HOWTO +http://tldp.org/HOWTO/LVM-HOWTO/ document for details.

+ +

+

+ + +NOTE: If you are running MythTV 0.21 and you are using LVM to +create one large filesystem to store your recordings, it's no longer +recommended that you go the LVM route. The preferred solution is to use +Storage Groups. They're more flexible and less +likely to lose all of your recordings if you have a drive failure. +
+

+

If you don't understand how to partition a drive, or how to change the +partition type you should stop and look at documentation on how to perform +these steps.

+

+

+ + +BIG FAT WARNING: Using an incorrect parameter can make your files +inaccessible, prevent your computer from booting, etc. Be careful! +
+

+

Make sure your kernel configuration includes LVM support or that it's +available as a module. Today, most vendors include this by default. You'll +also want to ensure that you have a copy of the LVM utilities; check your +distribution, or get the latest versions from +http://www.sistina.com/products_lvm.htm and build them manually.

+

Check that the vgscan program is being run at some point during +your boot sequence - most distributions do this by default. Look for a +message during boot up that looks like this: vgscan -- reading all +physical volumes (this may take a while...) If you don't see any +messages during boot, you may need to install a LVM init script or confirm +that you have all of the LVM packages installed from your distribution.

+

LVM uses a few concepts you should be familiar with before starting. +

    +
  • PV (Physical Volume). The actual partition on the hard drive.
  • +
  • VG (Volume Group). The aggregation of all the PVs make a VG.
  • +
  • LV (Logical Volume). Subdivision of the pool of space available in +the VG into individual chunks, like /usr, /var/video, etc.
  • +
+

+

The following example assumes that you want to create a LVM partition from a +chunk of space in /dev/hda5, using a reiserfs filesystem and mounted on +/var/video. You later decide to extend this filesystem by adding a new disk: +/dev/hdb.

+

You need to create at least one LVM partition for a physical volume. Use +fdisk or your favorite partition editor to set the type to LVM +(0x8e). If you're using an entire disk, create one big partition rather than +using the device itself. e.g. use /dev/hdb1 not /dev/hdb.

+

In the following example, you have a 15GB disk. The first 6GB are set as +your boot partition. /dev/hda2 was added as an extended partition, +and within that partition you created the /dev/hda5 linux (ext2) +partition.

+

+

+
+# fdisk /dev/hda
+
+The number of cylinders for this disk is set to 1823.
+There is nothing wrong with that, but this is larger than 1024,
+and could in certain setups cause problems with:
+1) software that runs at boot time (e.g., old versions of LILO)
+2) booting and partitioning software from other OSs
+   (e.g., DOS FDISK, OS/2 FDISK)
+
+Command (m for help): p
+
+Disk /dev/hda: 15.0 GB, 15000330240 bytes
+255 heads, 63 sectors/track, 1823 cylinders
+Units = cylinders of 16065 * 512 = 8225280 bytes
+
+   Device Boot    Start       End    Blocks   Id  System
+/dev/hda1   *         1       764   6136798+  83  Linux
+/dev/hda2           765      1823   8506417+   5  Extended
+/dev/hda5           765      1823   8506417   83  Linux
+
+Command (m for help): t
+Partition number (1-6): 5
+Hex code (type L to list codes): 8e
+
+Command (m for help): p
+
+Disk /dev/hda: 15.0 GB, 15000330240 bytes
+255 heads, 63 sectors/track, 1823 cylinders
+Units = cylinders of 16065 * 512 = 8225280 bytes
+
+   Device Boot    Start       End    Blocks   Id  System
+/dev/hda1   *         1       764   6136798+  83  Linux
+/dev/hda2           765      1823   8506417+   5  Extended
+/dev/hda5           765      1823   8506417   8e  Linux LVM
+
+Command (m for help): w
+
+#
+
+
+

+

Create the LVM physical volume from the partitions (repeat if you have +multiple partitions to use): +

+
+# pvcreate /dev/hda5
+
+
+ +Create a LVM volume group out of this physical volume called "VGforMyth" that is +allocated in chunks that are a multiple of 64MB +
+
+# vgcreate VGforMyth -s 64m /dev/hda5
+
+
+ +Create a logical volume of 5GB called "video" and then create the reiserfs +filesystem and mount it: +
+
+# lvcreate --name video --size 5G VGforMyth
+# mkreiserfs /dev/VGforMyth/video
+# mount /dev/VGforMyth/video /var/video
+
+
+ +Now create a 3GB volume for mythmusic files if you like: +
+
+# lvcreate --name music --size 3G VGforMyth
+# mkreiserfs /dev/VGforMyth/music
+# mount /dev/VGforMyth/music /var/music
+
+
+ +Display the volume group status: +# vgdisplay -v

+

Now, lets suppose you want to add a 60GB hard disk to the system as hdb and +allocate 50GB of it to video storage.

+

First, create a single partition /dev/hdb1 covering the whole disk and make +it type 0x8e using your partition editor.

+

# fdisk /dev/hdb +.... create partition, set type, save and reboot if it says you have to

+

Create the new LVM physical volume:

+

# pvcreate /dev/hdb1

+

Add the new physical volume to the volume group:

+

# vgextend VGforMyth /dev/hdb1

+

+

+ + +NOTE: You may get errors at this point stating that there are no +physical volumes available for adding to the LV, even though you know for a +fact that there are. You may need to specify the physical volume in the /dev/ide/host/bus/target/lun/etc format. +
+ +Once you've completed one of the following two procedures, use df +to check that you've got more space.

+

Make the logical volume used for video bigger:

+

# lvextend --size +50G /dev/VGforMyth/video

+

ReiserFS

+ +

Unmount, resize and remount the filesystem. Technically, you don't need to +unmount and remount the ReiserFS. +

+
+# umount /var/video
+# resize_reiserfs /dev/VGforMyth/video
+# mount /dev/VGforMyth/video /var/video
+
+
+

+ +

ext2 or ext3

+ +

LVM comes with a program called resize2fs.

+

Unmount, resize and remount the filesystem. The filesystem must be +unmounted during this procedure. +

+
+# umount /var/video
+# resize2fs --size +50G /dev/VGforMyth/video
+# mount /dev/VGforMyth/video /var/video
+
+
+

+

xfs

+ +

XFS does not need to be unmounted to extend the size: +

+
+# xfs_growfs /var/video
+
+
+

+

24.2 Advanced Partition Formatting +

+ +

The partitions that your distribution sets up for you may not be +optimized for large files. Using LVM in conjunction with the following +techniques can be quite useful.

+

Unlike a typical filesystem, a MythTV video partition is usually a very +large filesystem filled with a fairly small number of large files. +Filesystem I/O is usually not an issue, even in multi-tuner and/or +multi-frontend setups.

+

There is however, one aspect of filesystem performance that can have a +bearing on the performance of MythTV. In Linux, deleting a file will +utilize I/O bandwidth until the deletion has been completed. If deleting +the file takes long enough, the video capture buffer may overrun, thereby +resulting in dropped frames. Some filesystems are faster at deleting files +than others and, for multi-gigabyte MythTV video files, these differences +can be significant.

+

Fortunately, there are published tests ( +http://aurora.zemris.fer.hr/filesystems/big.html) that provide +insight into filesystem performance under conditions relevant to MythTV +usage. In addition, some limited testing (archived at +http://www.gossamer-threads.com/lists/mythtv/users/52672) +with very large files (10 gigabytes) was reported in the MythTV Users +mailing list.

+ +

Ext2

+ +

Ext2 was the defacto standard Linux filesystem for many years. It is +stable, provides good I/O performance and can quickly delete large files. +The primary disadvantage of Ext2 is that it is not a journaling filesystem, +so a file system consistency check (fsck, which is normally only performed +after a system crash) can take many hours on a filesystem the size of a +typical MythTV partition.

+ +

Ext3

+ +

Ext3 is Ext2 with a journal, so your biggest gain is that in case of a +crash and reboot you won't have to wait very long for your partition to be +remounted.

+

There are options available when formatting an Ext3 partition, as in: +

+
+# mkfs.ext3 -T largefile4 /dev/hdb1
+
+
+

+

This example assumes that /dev/hdb1 has already been created using +fdisk. If you're using LVM, /dev/hdb1 may be something like +/dev/VGforMyth/video.

+

The "-T largefile4" option creates one inode per 4 megabytes, which can +provide a few percent more storage space. However, tests indicate that +using the "-T largefile4" option can drastically increase the amount of time +required to delete a large file and thus it should only be used with encoder +settings that produce small video files (YMMV).

+

You can check on your filesystem using the dumpe2fs program. See +the man page for details.

+

ReiserFS

+ +

The Reiser filesystem is another journaling filesystem commonly +distributed with Linux. It is known to be an extremely efficient filesystem +and it especially excels at managing partitions containing a large number of +small files. However, tests indicate it is not the fastest at deleting very +large files. For that reason, it may not be the best choice when using +encoder bitrates that produce very large files.

+ +

JFS

+ +

JFS (Journaling File System) is a journaling filesystem originally +developed by IBM for AIX which was later released as open source. While not +as common as Ext3 or ReiserFS, it is distributed with RedHat 9 (RH9), Fedora +Core and Mandriva as well as other distros. According to tests, JFS is the +file deletion speed king, deleting virtually any file in under one second, +even files as large as 10 gigabytes.

+ +

XFS

+ +

XFS is a journaling file system originally developed by SGI for Irix, and +later released as open source. While not a part of the default RedHat Linux +9 or Fedora Core installation (although it is a part of Mandriva and Fedora +Core 2+), it can be easily installed via ATrpms. XFS provides deletion +speeds for large files only slightly slower than JFS. According to the test +results shown at ( +http://aurora.zemris.fer.hr/filesystems/big.html), XFS provide +higher I/O rates than JFS, albeit at a higher CPU loading. This may cause +issues if you do not have the spare CPU capacity to handle XFS, potentially +leading to dropped frames.

+

+

+

24.3 Migrating from DataDirect Labs to Schedules Direct +

+ +

MythTV v0.20.2 or later is required to natively support Schedules Direct. +Code has been included to make the transition as simple as possible.

+

You do not need to delete your existing video sources or add new ones!

+

The following steps should work for most users: +

    +
  • Create a Schedules Direct account and use the same information as your +existing lineups at Zap2It Labs. Do not add or delete channels at this +time.
  • +
  • Shut down any running mythfrontend and mythbackend programs.
  • +
  • Perform a backup of your existing database. See +Saving or restoring the database for instructions.
  • +
  • Run mythtv-setup -> Video Sources. Change the grabber to +Schedules Direct, update the username and password fields with the account +information you created at Schedules Direct and select "Retrieve Lineups". +Click Finish.
  • +
  • Exit mythtv-setup and run mythfilldatabase. Check +if there were any errors.
  • +
  • Restart your mythbackend and mythfrontend programs.
  • +
+

+ +

24.4 Caching support for Schedules Direct +

+ +

MythTV 0.20.2 or later supports caching of downloaded information from +Schedules Direct, so devices that share a common source do not require +multiple downloads.

+

Before beginning, perform a backup of your existing database. See +Saving or restoring the database for instructions.

+

In the following scenario, assume that you have the following: +

    +
  1. A PVR-150 MPEG-2 encoder card connected directly to a CATV source.
  2. +
  3. A PVR-250 MPEG-2 encoder card connected via S-Video to a CATV Set Top Box.
  4. +
+

+

What we are going to do is to create a single lineup at Schedules Direct and +then create two Video Sources which use the same login information but have +different channels associated with them.

+

On your Schedules Direct account, create a lineup that has all of the +channels that you can receive. Because we have a Set Top Box (STB), choose +a Digital lineup. Yes, this means that you may have 900 channels in this +lineup, but that's OK.

+

Use the Schedules Direct channel editor and unselect any channels that you +can't tune without the STB. This will usually be channels higher than 125, +but check your CATV provider lineup if you're not sure. Once you've +deselected them (using a click on the first channel you can't receive and +then a shift-click on the last channel you can't receive will deselect all +the channels in between those two.) click the Save Changes button at the +bottom of the screen.

+

In mythtv-setup, create a Video Source with an appropriate name. +"SD-Analog Only" will be used in this example. Click "Retrieve Lineups" +and select the digital lineup you just created at Schedules Direct.

+

Click "Finish" to return to the Video sources selector and then press the +ESC key to go back to the main screen.

+

Now choose Input Connections. Select the PVR-150 which is connected +directly to the CATV. Set the Video Source to "SD-Analog Only" and click +"Fetch channels from listings source".

+

Set the start channel to an appropriate value.

+

NOTE: There is a bug where the "Fetch" command may not work; you +can tell that the Fetch did not retrieve any channels in one of two ways: in +the text-mode console, you will see a connection to Schedules Direct, but it +doesn't appear to retrieve any channel information: +

+
+2007-08-25 15:03:05.526 New DB DataDirect connection
+2007-08-25 15:03:05.526 Connected to database 'mythconverg' at host: localhost
+2007-08-25 15:03:05.536 DataDirect: Your subscription expires on 11/23/2007 01:12:10 PM
+2007-08-25 15:03:05.707 New DB connection, total: 3
+2007-08-25 15:03:05.707 Connected to database 'mythconverg' at host: localhost
+2007-08-25 15:03:05.708 sourceid 2 has lineup type: CableDigital
+2007-08-25 15:03:06.623 Data fetching complete.
+2007-08-25 15:03:06.624 DataDirect: Deleting temporary files
+
+
+

+

or, the "Please add channels to this source" message in the "Starting +channel" field stays on the screen.

+

If either of these happens, save the information on this screen by clicking +the "Finish" button. Exit back to the Input connections screen by pressing +ESC, then select this Input Connection again. This time the Fetch will work +and the "Please add channels to this source" message will disappear.

+

If you look at the text-mode console, you'll see this if the channel +retrieval is working: +

+
+2007-08-25 15:04:32.437 New DB DataDirect connection
+2007-08-25 15:04:32.437 Connected to database 'mythconverg' at host: localhost
+2007-08-25 15:04:32.447 DataDirect: Your subscription expires on 11/23/2007 01:12:10 PM
+2007-08-25 15:04:32.622 New DB connection, total: 3
+2007-08-25 15:04:32.622 Connected to database 'mythconverg' at host: localhost
+2007-08-25 15:04:32.623 sourceid 2 has lineup type: CableDigital
+2007-08-25 15:04:33.418 DataDirect: Adding channel 41 'AMC' (AMC).
+2007-08-25 15:04:33.422 DataDirect: Adding channel 32 'A & E Network' (AETV).
+2007-08-25 15:04:33.425 DataDirect: Adding channel 66 'Black Entertainment Television' (BET).
+2007-08-25 15:04:33.427 DataDirect: Adding channel 180 'Bravo' (BRAVO).
+2007-08-25 15:04:33.430 DataDirect: Adding channel 51 'ABC Family' (FAM).
+2007-08-25 15:04:33.432 DataDirect: Adding channel 146 'Country Music Television' (CMTV).
+2007-08-25 15:04:33.435 DataDirect: Adding channel 39 'CNBC' (CNBC).
+2007-08-25 15:04:33.437 DataDirect: Adding channel 36 'Cable News Network' (CNN).
+2007-08-25 15:04:33.440 DataDirect: Adding channel 35 'CNN Headline News' (CNNH).
+
+
+

+

Repeat the Input Connection configuration for any other capture devices that +are connected directly to the CATV system. You do not need to click Fetch +once you've done one successful download of the channel information - the +Starting channel should be automatically populated.

+

Go back to Schedules Direct and re-enable the channels that you had +previously deselected, then click Save Changes.

+

Create a new Video Source, here called "SD-All Digital Channels". Perform +the same "Retrieve Listings" you did before.

+

Go back to the Input Connections screen, select the PVR-250 which is +connected to the STB, assign the "SD-All Digital Channels" video source and +perform a retrieve channels. This will pull down the complete channel +listing, but only for this device.

+

When mythfilldatabase runs, it will cache the "big" download which +is appropriate for the STB, and then copy the information to the channels +that can only be accessed without the STB. But by default +mythfilldatabase is going to notice that the "Analog only" video +source is missing the channels that are in the Digital lineup you created at +Schedules Direct, so we need to override the addition of new channels.

+

When you run mythfilldatabase to populate your database, you'll +need to run it like this:

+

+

+
+$ mythfilldatabase --remove-new-channels
+
+
+

+

You will also need to modify how the mythbackend calls +mythfilldatabase when it performs its automatic listings update.

+

In mythfrontend, select "Setup" -> "General".

+

Continue press ENTER until you reach the Mythfilldatabase configuration +screen. In the "mythfilldatabase Arguments" field, type +--remove-new-channels

+

then press the TAB key until you reach Finish, then press ENTER to save. +You can then press ESC until you return to the main screen.

+
+Next +Previous +Contents + + diff --git a/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-3.html b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-3.html new file mode 100644 index 0000000..bd6e3b4 --- /dev/null +++ b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-3.html @@ -0,0 +1,805 @@ + + + + + Installing and using MythTV: Checking prerequisites. + + + + + +Next +Previous +Contents +
+

3. Checking prerequisites.

+ +

You must ensure that any firewalls (either hardware, or a software +firewall installed by your distribution) will not block access to the ports +that will be used by the MythTV clients and servers on the "inside" LAN. +The ports for MySQL (TCP port 3306) and mythbackend (TCP ports 6543 and +6544) must be open. It is strongly recommended that you do +not expose the MythTV and MySQL ports to the Internet or your +"Outside" LAN.

+ +

3.1 Hardware +

+ +

Hardware selection is a complex topic, one this HOWTO will only discuss +briefly and in general terms. The following subsections offer some general +guidance but stop short of offering specific recommendations.

+

For a good MythTV experience, you must understand that MythTV exercises your +hardware more than a typical desktop. Encoder cards generate DMA across the +PCI bus. The CPU is busy encoding / decoding video. Hard drives are +constantly reading and writing data. Building a MythTV system on older / +"spare" hardware may be an exercise in frustration and can waste many hours +of valuable time.

+

For more detail about actual configurations that others have used, Mark +Cooper has setup a hardware database at +http://pvrhw.goldfish.org/. The +website will let you browse what other users have reported as their hardware +configuration, and how happy they are with the results.

+

If you have specific questions about the suitability of specific hardware +choices, you can consult the archives of the mythtv-users mailing list at +http://www.gossamer-threads.com/lists/mythtv/ or +post a question to the list.

+

CPU Type and Speed

+ +

Selection of CPU type and speed is one of the trickiest elements of +hardware selection, mainly because there are so many tradeoffs which can be +made. For example, if you have plenty of CPU, you can use higher bitrates +or capture sizes, etc.

+

MythTV has two modes of operation. First, it can function as a software +video encoder, which means that it uses a fairly generic "dumb" video +capture card to get frames of video, encodes them using the CPU on your +motherboard and writes them to disk. High-end video capture cards and +devices like the TiVo and ReplayTV have dedicated encoder chips which use +specialized hardware to convert the video stream to the MPEG-2 format +without using the motherboard CPU. The main CPU has the responsibility of +running the Operating System and reading and writing the encoded frames to +the disk. These tasks have fairly low CPU requirements compared to encoding +video, which is why a device like a Series 1 TiVo can run with only 16MB of +RAM and a 54MHz CPU.

+

There are many variables that go into the question: "How fast a CPU do I +need to run MythTV"? Obviously, the faster your CPU, the better your +experience will be with MythTV. If you are using the software MPEG-4 +encoder and performing the "Watch TV" function, where the CPU is both +encoding and decoding video simultaneously to allow Pause, Fast Forward and +Rewind functions for live TV requires more CPU then just encoding or +decoding. MythTV also supports multiple encoder cards in a single PC, +thereby increasing the CPU requirements if you plan on simultaneously +encoding multiple programs. As a general guideline, plan on 1GHz per +encoder if you are doing software-based encoding, less if you are using a +hardware-based encoder.

+

Here are a few data points: +

    +
  • A PIII/733MHz system can encode one video stream using the MPEG-4 +codec using 480x480 capture resolution. This does not allow for live TV +watching, but does allow for encoding video and then watching it later.
  • +
  • A developer states that his AMD1800+ system can almost +encode two MPEG-4 video streams and watch one program simultaneously.
  • +
  • A PIII/800MHz system with 512MB RAM can encode one video +stream using the RTjpeg codec with 480x480 capture resolution and play it back +simultaneously, thereby allowing live TV watching.
  • +
  • A dual Celeron/450MHz is able to view a 480x480 MPEG-4/3300kbps file +created on a different system with 30% CPU usage.
  • +
  • A P4 2.4GHz machine can encode two 3300Kbps 480x480 MPEG-4 files and +simultaneously serve content to a remote frontend.
  • +
+

+

The second mode of operation is where MythTV is paired with a hardware-based +video encoder, such as a Matrox G200 or a Hauppauge +WinTV-PVR-150/250/350/500. In this mode, because the video encoding is +being done by a dedicated video processor, the host CPU requirements are +quite low. See the +Video Capture Device section for details.

+

The price differential between a frame grabber and a card that implements +hardware MPEG-2 encoding, such as the Hauppauge PVR-x50 series, is now less +than $30 US. Primary development in MythTV has transitioned to supporting +MPEG-2 capture devices and HDTV, so if given the option, go with the +hardware MPEG-2 encoder.

+

If you have a Via M10000 series or a Hauppauge PVR-350, MythTV can use the +hardware-based video decoder for playback, which further reduces CPU +requirements.

+ +

Memory

+ +

A MythTV host that is both a backend and a frontend and using software +encoding with a single capture card should run adequately in 256MB of RAM. +Additional RAM above 256MB will not necessarily increase performance, but +may be useful if you are running multiple encoders.

+ +

Hard Disk(s)

+ +

Encoded video takes up a lot of hard disk space. The exact amount depends +on the encoding scheme, the size of the raw images and the frames per +second, but typical values for MythTV range from 700 megabytes/hour for +MPEG-4, 2 GB/hour for MPEG-2 and RTjpeg and 7 GB/hour for ATSC HDTV.

+

+

+ + +NOTE: You must use DMA for hard drive access to prevent +choppy or jittery video. Not all distributions enable DMA at boot time. See the Troubleshooting Section for +instructions on how to do this. +
+

+

Writing video to disk is sensitive to timing issues; RTjpeg requires less +CPU with the tradeoff being larger files and needing to write to the disk +faster. MPEG-4 requires more CPU, but the files are smaller. At the +default resolution, MPEG-2 creates the largest files of all with almost no +CPU impact.

+

See the Troubleshooting +section for more +information.

+ +

Filesystems

+ +

MythTV creates large files, many in excess of 4GB. You must +use a 64 or 128 bit filesystem. These will allow you to create large files. +Filesystems known to have problems with large files are FAT (all versions), +and ReiserFS (versions 3 and 4).

+

Because MythTV creates very large files, a filesystem that does well at +deleting large files is important. Numerous benchmarks show that XFS and +JFS do very well at this task. You are strongly encouraged to +consider one of these for your MythTV filesystem. JFS is the absolute best +at deletion, so you may want to try it if XFS gives you problems. MythTV +.21 incorporates a "slow delete" feature, which progressively shrinks +the file rather than attempting to delete it all at once, so if you're more +comfortable with a filesystem such as ext3 (whose delete performance for +large files isn't that good) you may use it rather than one of the +known-good high-performance file systems. There are other ramifications to +using XFS and JFS - neither offer the opportunity to shrink a filesystem; +they may only be expanded.

+

+

+ + +NOTE: You must not use ReiserFS v3 for +your recordings. You will get corrupted recordings if you do. +
+

+

Because of the size of the MythTV files, it may be useful to plan for future +expansion right from the beginning. If your case and power supply have the +capacity for additional hard drives, read through the +LVM and +Advanced Partition Formatting sections for some pointers.

+

+

+

Video Capture Device

+ +

In order to capture video, MythTV will need one or more video capture +devices with Linux drivers. There are a number of classes of hardware +available for capturing video.

+

Frame Grabbers.

+ +

This class of card is the simplest and is usually the cheapest. There is no +on-board encoding of the analog video; hardware known as a Digital-Analog +Converter (DAC) takes the video and presents it to the computer in an +essentially raw digital form.

+

For a list of video capture cards known to work with Linux, please see +/usr/src/linux/Documentation/video4linux/bttv for a partial +listing; even if your specific card is not listed, it may be that the vendor +is actually using a standard reference design and placing their own name on +it. See the video4linux mailing list ( +https://listman.redhat.com/mailman/listinfo/video4linux-list) for +more information and for specific hardware questions.

+

The most common inexpensive cards available use the Bt848, Bt878 or CX2388x +series of video capture chips; examples are the "Hauppauge WinTV Go" card and +the "AverTV Desktop PVR" card, both of which use the bttv kernel module.

+

+


+
+NOTE:  The ATI TV Wonder series and the ATI All-in-Wonder series of cards
+are not the same.  The All-in-Wonder cards will not work with MythTV.
+
+
+

+

+

+ + +
+ +
+ + +NOTE: The ATI All-in-Wonder cards (which are not the same +as the ATI TV Wonder, TV Wonder VE or TV Wonder Pro) will not work +as a MythTV capture device because the GATOS +http://gatos.sourceforge.net +drivers that are available provide only a limited subset of the V4L API. The TV Wonder series of cards are supported by the Bt8x8 Video4Linux driver. +
+

+

After you have installed a suitable capture device, you can check that +the kernel sees it with lspci. Look for an entry labeled "Multimedia +video controller". To get more detailed information about the card, use +lspci -v or lspci -vv. Ensure that your system is loading +the bttv modules by typing: +

+
+# lsmod |grep bttv
+
+
+

+

You want to see the bttv module listed.

+

Hardware MPEG-2 encoders.

+ +

While inexpensive video-capture cards simply capture raw frames, leaving +encoding to software, some higher-end cards incorporate hardware-based +encoding. Using either a G200 MJPEG encoder card, or a MPEG-2 encoder card +supported by the IvyTV project +http://ivtvdriver.org such as the Hauppauge +PVR-150/250/350/500, Avermedia M179, Hauppauge "Freestyle" or Yuan M600 +cards will allow you to use dedicated hardware encoders rather than your +CPU. (The PVR-350 can simultaneously be used as an output device.) Using the +on-board MPEG-2 encoder greatly reduces the CPU requirements for +encoding.

+

The ivtv driver was incorporated into the Linux kernel starting at v2.6.22.

+

There is a Beta driver for the HVR-1600 card at +http://www.ivtvdriver.org/index.php/Cx18

+

NOTE: Motherboards with the Via chipset are notoriously bad with +DMA and have caused numerous issues with ivtv, including hard locks. See +the ivtv website +http://ivtvdriver.org +for the latest information on what works and what doesn't.

+

Here are some data points for encoding: +

    +
  • A Celeron 450 uses 2% CPU for encoding a 480x480 16Mbps MPEG-2 stream.
  • +
+

+

Here are some data points for decoding:

+

+

    +
  • An Athlon 1800XP can decode a 720x480 8Mbps MPEG-2 file using 10% CPU
  • +
  • An Athlon 1GHz can decode a 720x480 16Mbps MPEG-2 file using 30-50% +CPU, can decode a 480x480 16Mbps MPEG-2 using 30% CPU and approximately 30% +for Live TV at 416x480.
  • +
  • A P3-550 can decode a 480x480 16Mbps MPEG-2 file with 55% CPU.
  • +
  • A Celeron 450 (no SSE) can decode a 480x480 16Mbps MPEG-2 file with +80% CPU.
  • +
+

+ +

DVB capture cards.

+ +

DVB is a video standard primarily found in Europe (where it comes in +DVB-C, DVB-T and DVB-S varieties for Cable, Terrestrial and Satellite) and +is also used as the programming interface for HDTV capture cards in Linux. +To see if your DVB card is supported, see the list of cards in the +"Supported Hardware" section of the DVB Wiki at +http://www.linuxtv.org/wiki/index.php/Main_Page for more +information.

+

In the United States, you may use a card such as the TwinHan to obtain +unencrypted Free-To-Air satellite channels. See +http://www.lyngsat.com/ for the types +of content which is available.

+ +

HDTV.

+ +

There are a number of HDTV cards with Linux drivers which are known to +operate in the United States; a complete list of cards with DVB drivers can +be found at +http://www.linuxtv.org/wiki/index.php/ATSC_Devices Some cards +support capture of unencrypted digital cable TV (utilizing QAM256), others +will only work with Over The Air (aka "OTA") signals captured with an +antenna (with 8VSB).

+

Cards that have been reported to work include: +

    +
  • pcHDTV HD-2000, Air2PC PCI rev 1-3 (8VSB only)
  • +
  • SiliconDust HDHomeRun (8VSB, QAM256)
  • +
  • pcHDTV HD-3000/5500 (8VSB, QAM256)
  • +
  • Air2PC HD-5000 (8VSB, QAM256)
  • +
  • DViCO Fusion HDTV Lite/Gold 5 (8VSB, QAM256)
  • +
+

+

NOTE: There are no known consumer-level capture devices which will +allow you to capture the HDTV output (DVI, HDMI, VGA, YPbPr / Component) +from a set-top box commonly found with digital cable systems or satellite +systems. None of the capture devices listed above +perform any encoding; they merely allow your computer to save a copy of a +HDTV stream which has already been converted to MPEG-2 at the broadcast +facility.

+

NOTE:: All of the cards listed above (except for the HD-2000 and +HDHomeRun) should be configured as DVB cards. The HD-2000 can be configured +as a pcHDTV card if you use the V4L drivers from +http://www.pchdtv.com and use Linux +kernel 2.6.9 or earlier. With kernel 2.6.10 and higher it must be +configured as a DVB card, but you lose access to the second antenna input in +ATSC mode. The HDHomeRun should be configured as two HDHomeRun cards, one +for each tuner.

+

To playback HDTV content, plan on a powerful CPU. "How powerful?" depends +on a number of factors, such as the capture resolution, whether the video is +progressive or interlaced, and whether your display card has hardware-assist +support for Linux.

+

The Simple Answer: Once you are in the 3.2 Ghz P4-class of CPU you should have +no issues with viewing HDTV.

+

The Complicated Answer:

+

For 720p content (1280x720), a 2.4GHz P4 should be sufficient.

+

For 1920x1080i->1920x1080p with the better deinterlacing methods +done in real time a 2.4GHz CPU is taxed, but should work if you use "Bob and +Weave" deinterlacing, or if you have an NVIDIA card with MPEG-2 hardware +acceleration. If you enable the hardware acceleration, you may be able to +use a 1.8GHz processor.

+ +

Firewire.

+ +

You may use the Firewire output of the Motorola DCT6200 or the SA3250. +If your provider uses 5C encryption on a particular channel, you won't be +able to get any content.

+ +

DBoxII or other devices running Neutrino

+ +

You may use the Ethernet port of an DBoxII or a similar device to capture +MPEG2. Your set top box has to be running the Neutrino GUI.

+ +

USB Capture Devices.

+ +

The Plextor ConvertX PVR devices are supported through Linux drivers +available from +http://www.plextor.com/english/support/LinuxSDK.htm. MythTV uses the +Plextor to capture hardware encoded MPEG-4, so the host CPU requirements are low.

+

Hauppauge WinTV-PVR-USB2 (driver available at +http://www.isely.net/pvrusb2/) +emulates a PVR-x50 card.

+ +

IP Recorder (RTSP, RTS, UDP)

+ +

MPEG-2, MPEG-4 and H.264 internet TS stream recording is supported using +the IPTV recorder in MythTV. This recorder expects the channels to be supplied +as a m3u playlist. If your DSL/Fiber provider supplies television service, +but does not provide a m3u playlist for the channels, you can construct one +for your own use. You do not need to download it from the same server as the +streams themselves, and can also read it from a file if this is more convenient.

+

NOTE: Some DSL providers only allow you to use one recorder at a +time, so you may need to limit yourself to one recorder in MythTV and turn +off any set top box the cable provider sold or rented to you with your +service. This limitation is independent of the bandwidth you have purchased.

+ +

Hardware known NOT to work and other issues

+ +

+

    +
  • Hauppauge WinTV-D or -HD (no driver)
  • +
  • Hauppauge WinTV-USB series
  • +
  • Hauppauge WinTV-PVR-usb (model 602), or WinTV-PVR-PCI (model 880) cards (no driver - this is not the PVR-250/350 +series of cards supported by the IvyTV driver)
  • +
  • ATI All-in-Wonder series
  • +
+

+ +

Sound card

+ +

The system needs a sound card or an on-board equivalent on the motherboard +to play back and in most cases, to record sound. Any sound card that can be +operated by the ALSA (Advanced Linux Sound Architecture) kernel modules will +work with MythTV. However, some cards and drivers will provide better +quality or compatibility than others. In particular, many audio +devices included on motherboards can be problematic.

+

The usual practice for capturing the audio associated with the video is to +run a cable from an audio output on the video capture card to the Line input +on a sound card. However, some video capture cards provide on-board audio +capabilities that work with the kernel btaudio module instead, +thereby eliminating the need for a cable. This is useful if you will be +using multiple capture cards in a single chassis, since each capture card +will not need its own sound card. Note that a separate sound card is still +required for playback when using btaudio, and that often the audio +recorded in this way will be mono only. See the +btaudio section for more information.

+

+

+ + +NOTE: Analog video capture cards are the only ones which +require a soundcard for capturing audio. DVB, HDTV, and other hardware +encoder cards all provide a combined audio / video stream. +
+

+

+

+ + +NOTE: Plugging a Line-level device into the Mic input is +not recommended. Line-level devices have higher voltages and can damage the +sound card. In addition, even if it doesn't break your card, you will be +getting Mono sound. See the Linux MP3 HOWTO at +http://www.tldp.org/HOWTO/MP3-HOWTO.html for additional information. +
+

+ +

Video Display Card

+ +

MythTV will work with just about any video card. However, it is highly +recommended that you use a card which supports XVideo (XV) extensions. If +your card does not support XV, color conversion and scaling will be +performed by your CPU rather than the video card. This is very CPU +and memory intensive and will often result in dropped frames and a +corresponding degradation of quality. Check the X documentation +for details if you are uncertain about your preferred card. You may +also run xvinfo; look for your video card to be listed as one +of the adapters.

+ +

If you want to use MythTV with a standard television, you will need a +physical connection from your video card to your TV set, which can either be +a TV-out port on the card itself or an external adapter that converts the +VGA signal to an appropriate video signal. "Appropriate" depends on a number +of factors, such as video standard (NTSC vs. PAL), the type of input +connection (Composite vs. SVideo), etc.

+

Note that with some video cards and X drivers, XVideo extensions are +only supported on the VGA output, and not on the TV output.

+ +

Cards with TV-out

+ +

The next section deals with a number of cards that are known to have +TV-out ports. The list is unlikely to be complete, so if you know of +others, please post a message to the mythtv-users mailing list so the +information can be included in future versions of the HOWTO. The list is +organized by manufacturer.

+

Reports here are based on what users of the cards have posted on the +mythtv-users mailing list, so if you need configuration details, please +search the archives at +http://www.gossamer-threads.com/lists/mythtv/ using +the card name in your search string.

+ +

ATI

+ +

ATI makes many cards with TV-out capability, but only offers Linux +drivers for Radeon 8500 and above cards. See the Drivers and Software +section of +http://www.ati.com for the +driver and additional information.

+

The enhanced ati.2 X driver created by the GATOS +http://gatos.sourceforge.net +project offers some support for TV-out on other ATI cards, but only in its +"experimental" version, available through CVS. There have been reports from +people who say they have made this driver work with one or another ATI card. +For example, Bruce Markey +mailto:bjm@lvcm.com writes (on the +mythtv-users mailing list): "I got this to work. You can quote me on that. +I've used TV-out on several models of ATI cards both All-In-Wonder and +regular cards with TV-out." See the "Adventurous Setup" section of +http://gatos.sourceforge.net/watching_tv.php for details. Also see +http://www.retinalburn.net/linux/tvout.html for more information.

+ +

NVIDIA

+ +

Some NVIDIA cards with TV-out can be run using the standard nv driver in +X, combined with the userspace application nvtv to control the TV-out +port. See +http://sourceforge.net/projects/nv-tv-out/ for details. Recent +versions of the NVIDIA driver have better support for overscan and other +features useful with TV-Out, so the nvtv application may not be +required.

+

Some NVIDIA cards can be run with a proprietary NVIDIA X driver made +available by NVIDIA. See +http://www.nvidia.com/object/unix.html for more information.

+

NOTE: It's strongly recommended that you use the proprietary +NVIDIA drivers; they have excellent support for XvMC and ship with a good +configuration utility. XvMC provides MPEG-2 hardware acceleration, which is +important if you want to display HDTV.

+ +

Hauppauge PVR-350

+ +

MythTV supports the TV-out and MPEG-2 decoder functions in the IvyTV +driver.

+

The PVR-350 is unique amongst the Hauppauge PVR-x50 cards in that it also +supports audio output, but you need to connect that audio output to +something. There are two courses of action you may take: +

    +
  1. Take the audio output from the PVR-350 and plug it into an input on a +sound card on your machine. You may then use MythTV's internal audio +controls.
  2. +
  3. Take the audio output from the PVR-350 and connect it directly to your +television / audio system. You must indicate that you are using external +audio control on the PVR-350 setup page.
  4. +
+

+ +

Other Options

+ +

Some devices with on-board TV-out capability, such as Xboxes converted to +Linux and some laptops can be used as MythTV frontends to display on a +television screen. Please consult the mythtv-users mailing list for messages +that report the details of these special arrangements.

+ +

External Adapters

+ +

External adapters convert standard VGA output to a form suitable for +display on a television. The output format varies by region, since +different countries have different TV standards. People on the mythtv-users +list have mentioned these adapters:

+

+

    +
  • AITech Web Cable Plus, powered by external transformer or takes power +from PS/2 keyboard connector, support resolutions up to 1024x768, outputs +composite and SVideo, provides position adjustment.
  • +
  • Averkey lite, powered by a USB port, has Composite, SVideo, YPbPr +outputs; pan, brightness, overscan/underscan controls; supports up to +1024x768 outputs; and supports PAL and NTSC.
  • +
  • ADS TV Elite XGA
  • +
  • AverKey iMicro (comments are generally favorable)
  • +
  • AITech Web Cable (comments are generally unfavorable, different than +the "Plus" version above)
  • +
  • TVIEW Gold (mentioned once, favorably)
  • +
+

+ +

3.2 Software +

+ +

There are a few ways of installing programs on Linux systems; you can +either use a pre-compiled package, or install from a tarball after +satisfying any prerequisites.

+

+

+ + +NOTE: you must have the MySQL database software installed on a +system to store the master database. This does not necessarily mean that +MySQL must run on one of the MythTV boxes. The minimum MySQL version is 5.0. +
+

+ +

Pre-compiled packages

+ +

A number of people have created pre-compiled packages for MythTV that may +make your installation easier.

+

+

+ + +BIG FAT WARNING: This HOWTO assumes that you have not +installed MythTV from a package. All example command lines and file +locations are based on the MythTV tarball defaults. Some packagers have +modified the filenames, binaries and file locations to match what is +commonly found in that distribution. Any issues with MythTV installed via a +pre-compiled package MUST be raised with the packager. +
+

+

If you use any of the pre-compiled packages you may not need to perform any +additional configuration steps in this HOWTO. The next logical step is +configuring MySQL, which you may or may not have to +perform. See your package documentation.

+ +

Red Hat Linux / Fedora Core

+ +

The definitive documentation on installing MythTV on Red Hat Linux / +Fedora Core can be found in Jarod Wilson's ( +mailto:jcw@wilsonet.com) HOWTO at +http://wilsonet.com/mythtv/ Just +like 3rd-party packages, any 3rd-party documentation problems should be +brought up with the 3rd-parties (maintainer, lists, bugzillas etc.). The +installation instructions which follow should be used as a guide only; refer +to Jarod's guide.

+

Red Hat Linux and Fedora Core packages for MythTV and all of its add-on +modules and some themes have been packaged by +mailto:Axel.Thimm@ATrpms.net and +are available at +http://ATrpms.net/topic/multimedia/. All of the prerequisites for +MythTV (such as XMLTV) are available as RPM packages. If you have problems +with the RPMs, please contact the ATrpms lists at +http://lists.ATrpms.net/ or file a +bug against +http://bugzilla.ATrpms.net/.

+

Given the large number of dependent RPMs you are advised to use tools like +apt or yum for automatic retrieval and installation of the required RPMs. +( +http://ATrpms.net/install.html) In this case a +special meta-package called mythtv-suite will allow you to install all of +MythTV and its add-ons, plus all dependencies.

+

If you don't have apt or yum on your machine, download and +install the atrpms-kickstart package from +http://ATrpms.net/name/atrpms-kickstart/. +Install the package with: +

+
+# rpm -Uvh atrpms-kickstart*
+
+
+ +Then run: +
+
+# apt-get update
+# apt-get dist-upgrade
+# apt-get update
+
+
+ +And finally: +
+
+# apt-get install mythtv-suite
+
+
+ +These steps however, do NOT perform the installation of any drivers required +for ALSA, capture cards, lirc kernel modules, etc., nor do +they set up your MythTV database. Check +http://ATrpms.net/topic/multimedia/ for the drivers you +need.

+ +

Mandriva

+ +

Thac has created RPMs for MythTV for Mandriva which may +be obtained from +http://rpm.nyvalls.se/ If you have problems with the RPMs, please +send him email directly at +thac@nyvalls.se.

+

Debian

+ +

Debian packages for MythTV and most of its add-on modules are maintained +by Christian Marillat +mailto:marillat@free.fr and are available at +http://www.debian-multimedia.org/. +Installation instructions can be found on those pages as well. All of the +prerequisites for MythTV are available as Debian packages, most of them from +the official Debian archive.

+

If you have followed the instructions on the above page you should have added +

+
+deb-src http://www.debian-multimedia.org sid main
+
+
+

+

to your /etc/apt/sources.list file. Running apt-get update and then +executing apt-get build-dep mythtv should install all the +pre-requisites required to compile MythTV.

+

+

+ + +NOTE: Due to the requirement for Qt 3.3+, there are no packages for +Debian woody/stable. +
+

+ +

The Debian packages are configured such that MythTV programs should be +run as the mythtv user, which is automatically created during +installation. This user has access to write new recordings to disk in the +default directory, read and write the database, access the audio and video +devices, and everything else that MythTV needs to do.

+ +

See /usr/share/doc/packagename/README.Debian for more +information, including copies of the MythTV documentation. The +mythtv-doc package contains a copy of this HOWTO in +/usr/share/doc/mythtv-doc.

+

Manual installation

+ +

You may use the graphical tools that come with your distribution, or you +can use command-line utilities. Either system will get the job done, and it +all depends on your comfort level with Linux.

+

In order to compile MythTV, we need to make sure that the software it needs +is installed. This list includes mysql, gcc, +freetype2-devel, xorg-xserver-devel, qt-devel and +lame. If you're going to use a remote control with MythTV, you're +going to need the cdialog package in order to compile +lircd if your distribution doesn't have a pre-packaged +lirc. If you are using XMLTV as a grabber, you will need +perl.

+

+


+
+NOTE:  Qt v3.3 or higher is required.
+
+NOTE:  MythTV DOES NOT WORK with Qt4.
+
+NOTE:  If you are going to be using RPMs to install various
+components, you should be aware that not all packages include the necessary
+headers for compiling.  If you're having trouble compiling, ensure
+that you've installed the -devel version of a prerequisite.
+
+
+

+ +

Command-line installation

+ +

This section details the various methods for installing prerequisites +from the command line.

+ +

Mandriva

+ +

NOTE: The following instructions should be considered out of +date as of 2006-09-10. If updated instructions are not submitted by the +release of v0.21 of MythTV they will be removed.

+

urpmi is the simplest tool for installation of packages from the +command line, but properly configuring it can be difficult. The +following website +http://easyurpmi.zarb.org/ will allow you to choose +a mirror site and then present the command-line configuration text for that +mirror. You will most likely need to add a "Contrib" mirror to your setup. +If you add a site from the "Penguin Liberation Front", you will be able to +load the lame library without compiling from source.

+

Open a shell, and execute the following. You may get +asked a number of questions regarding dependencies. It's best to answer +"YES". +

+
+$ su
+# urpmi mysql gcc gcc-c++ freetype2-devel cdialog alsa-utils
+# urpmi XFree86-devel perl
+# urpmi libqt3-devel libMesaGLU1-devel
+
+
+

+

+


+
+NOTE for Mandriva 9.1+ users: execute the following command.
+
+# urpmi libqt3-mysql
+
+
+ +However, you might get this when you execute the commands above: +
+
+everything already installed
+
+
+

+

In that case, you're ready to move to the next +section. Once you have completed installing the pre-requisites, +exit out of the shell and start a new one to ensure that any environment +variables setup by the installation have a chance to take effect.

+ +

Gentoo.

+ +

NOTE: MythTV does not run on Qt4. +If Qt has not been installed on your system: Edit +/etc/make.conf and locate the "USE" variable. If the line is +commented out, remove the comment. The line should have at least: +

+
+USE="mysql alsa"
+
+
+ +Next you need to build Qt. If you don't plan on using the ebuilds as +described in the Gentoo section then you also need to install lame. +
+
+# emerge lame mysql qt
+
+
+

+

If you have already installed Qt: you will need to rebuild because the +default installation doesn't include MySQL support, a requirement for MythTV. +To enable SQL support, add "mysql" to your USE variable in +/etc/make.conf and rebuild Qt by running +

+
+# emerge qt
+
+
+

+

All the necessary files will be downloaded and built. Even on a fast machine +this may take a lot of time if you need to do a full Qt build.

+ +

Debian.

+ +

Build-dependencies for MythTV can be satisfied by adding the following to +your /etc/apt/sources.list +

+
+# Christian Marillat's packages (mplayer, lame)
+deb http://www.debian-multimedia.org sid main
+deb-src http://www.debian-multimedia.org sid main
+
+
+ +and executing: +
+
+# apt-get build-dep mythtv
+# apt-get source mythtv --compile
+
+
+

+ +
+Next +Previous +Contents + + diff --git a/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-4.html b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-4.html new file mode 100644 index 0000000..fbe5386 --- /dev/null +++ b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-4.html @@ -0,0 +1,181 @@ + + + + + Installing and using MythTV: System Configuration Requirements for Compiling MythTV. + + + + + +Next +Previous +Contents +
+

4. System Configuration Requirements for Compiling MythTV.

+ +

Before you compile MythTV from the current source tarball or from +subversion, you may need to modify your system configuration in a +few ways.

+

In general, if you install MythTV from pre-packaged binaries for your Linux +distribution/version, you don't need to be too concerned about the issues in +this section of the HOWTO - the install script for the packages should take +care of them. However, this section is still recommended reading which may +help if the packager skipped a step in their packaging.

+ +

4.1 Software requirements for compiling MythTV +

+ +

General requirements

+ +

MythTV is written in C++ and requires a fairly complete, but standard, +compilation environment, including a recent g++ compiler, make, and +appropriate header files for shared libraries. Any standard Linux +distribution should be able to install a suitable compilation environment +from its packaging system. Section 3.2 of this HOWTO provides some details +of how to install the required environment for many distributions.

+

Subsequent sections of this chapter address the few oddities that you may +have to adjust by hand before you compile MythTV.

+

The reference compilation system for MythTV is Ubuntu.

+ +

4.2 Shared-Library requirements for MythTV +

+ +

Modifying /etc/ld.so.conf

+ +

The runtime manager for shared libraries, /lib/ld.so, gets +information about the locations and contents of shared libraries from +/etc/ld.so.cache, a file created by ldconfig from +information in /etc/ld.so.conf. Because MythTV installs some +shared libraries in /usr/local/lib, that directory needs to be +added to the list of directories for ld.so to search when doing +runtime linking of programs, if it is not already there. +You do this, as root, by editing /etc/ld.so.conf, then +running ldconfig. There are many ways to do this; one that +works is to enter this series of commands:

+

+

+
+$ su -
+# echo /usr/local/lib >> /etc/ld.so.conf
+# /sbin/ldconfig
+# exit
+$
+
+
+

+

4.3 Environment variable requirements for MythTV +

+ +

General requirements

+ +

QT libraries and binaries

+ +

The compiler needs to be able to locate QT binaries and libraries in +order to compile MythTV. QTDIR needs to be set and the directory holding the +QT binaries needs to be added to your PATH. Your distribution may already +be making these changes as a part of the installation of the software +prerequisites detailed earlier.

+

One way to do this is as follows: +

+

Open a shell and execute the following: +

+
+$ echo $PATH
+/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/usr/games:/usr/lib/qt3/bin:/home/mythtv/bin:/usr/lib/qt3/bin
+$ echo $QTDIR
+/usr/lib/qt3
+$ which qmake
+/usr/lib/qt3/bin/qmake
+
+
+

+

For Mandriva, you should see a value like /usr/lib/qt3 for +QTDIR and /usr/lib/qt3/bin should be in $PATH.

+

For Gentoo, you should see a value like /usr/qt/3 for QTDIR +and /usr/qt/3/bin should be in $PATH.

+

If you don't, do not proceed past this step until you have resolved this +error. You may need to manually specify the QTDIR and PATH at the shell +prompt before compiling.

+

Also, check that there has been a link created in +/usr/lib/qt3/mkspecs (/usr/share/qt3/mkspecs for Debian) +called default. If not, you'll get errors during the compile. See +the Troubleshooting Section for more information.

+

Distribution-Specific Notes

+ +

Mandriva

+ +

The following instructions work for Mandriva using +bash as the shell, and may be applicable for a distribution which +uses /etc/profile.d.

+

+

+ + +NOTE: Mandriva 10 installs a /etc/profile.d/qtdir3.sh +file, but it doesn't include the addition of the PATH variable. If you're +running Mandriva 10, don't create a mythtv.sh file as detailed +below; edit the qtdir3.sh file and add the PATH statement within +the if / fi block. +
+ +As root, create the following file in /etc/profile.d The example +filename is "mythtv.sh". Use what you feel is appropriate.

+

Open a shell, and switch to superuser mode.

+

+

+ + +NOTE: ^D means press CTRL and d at the same time. +
+ +
+
+$ su
+# cd /etc/profile.d
+cat > mythtv.sh
+export QTDIR=/usr/lib/qt3
+export PATH=$PATH:/usr/lib/qt3/bin
+^D
+
+# chmod a+x mythtv.sh
+# exit
+$ exit
+
+
+ +The last two commands are to exit out of the shell. This way, when you next +open a shell your new commands +will take effect.

+ +

Device Permissions

+ +

MythTV will need access to the video4linux devices on your system. By +default, your distribution may restrict access to these devices to the +logged-in user, so if you will be automatically starting +mythbackend from a script rather than an interactive terminal +session you will need to make some adjustments.

+

NOTE: The following instructions are accurate for Mandriva.

+

Check for a file called /etc/security/console.perms. Open the file +in your favorite text editor and look for a line that has: +

+
+<console>  0600 <v4l>        0600 root.video
+
+
+ +and replace it with +
+
+<console>  0666 <v4l>        0666 root.video
+
+
+

+

What we're doing is allowing read and write access to the files in the +video4linux directory.

+
+Next +Previous +Contents + + diff --git a/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-5.html b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-5.html new file mode 100644 index 0000000..0ecf975 --- /dev/null +++ b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-5.html @@ -0,0 +1,426 @@ + + + + + Installing and using MythTV: Downloading and compiling. + + + + + +Next +Previous +Contents +
+

5. Downloading and compiling.

+ +

Get MythTV from the +http://www.mythtv.org web site. There are two installation methods +you may choose from. The first is to download the latest release in tarball +format and compile. The tarball release of MythTV should work on a wide +variety of systems and should be the preferred method for new users. If you +wish to use the subversion copy of MythTV you may obtain it from +http://svn.mythtv.org

+

+

+ + +NOTE: If you are going to use subversion to +compile MythTV rather than using the distribution tarball, you must +join the +http://www.mythtv.org/mailman/listinfo/mythtv-commits/ and +http://www.mythtv.org/mailman/listinfo/mythtv-dev/ mailing lists to +keep up to date with the current status of the code. Code obtained from +subversion has no guarantees regarding stability, etc. +
+

+

If you are in North America you will use the Schedules Direct grabber which is +built-in to MythTV. You do not need to install XMLTV (so you may +skip XMLTV-related instructions), but you need wget version 1.9.1 +or higher.

+

Get XMLTV from +http://xmltv.sourceforge.net. Download the latest version (0.5.51).

+

+


+
+NOTE for Mandriva users:  If you have added a "PLF" mirror, you may skip the
+next step and type:
+
+# urpmi libmp3lame0 libmp3lame0-devel
+
+After downloading, be sure to install both:
+# rpm -Uvh lame*
+
+
+

+

Get lame from +http://lame.sourceforge.net/. Download the source code to v3.96.1 +by following the links from "Using" through "Download...".

+ +

5.1 Building LAME +

+ +

Open a shell and switch to the directory where you saved lame. +

+
+$ tar -xzf lame-3.96.1.tar.gz
+$ cd lame-3.96.1
+$ ./configure
+$ make
+$ make test
+$ su
+# make install
+
+
+ +Check that it worked: +
+
+# ls -l /usr/local/lib
+-rw-r--r--    1 root     root       381706 Nov  4 14:22 libmp3lame.a
+-rwxr-xr-x    1 root     root          674 Nov  4 14:22 libmp3lame.la*
+lrwxrwxrwx    1 root     root           19 Nov  4 14:22 libmp3lame.so ->
+libmp3lame.so.0.0.0*
+lrwxrwxrwx    1 root     root           19 Nov  4 14:22 libmp3lame.so.0 ->
+libmp3lame.so.0.0.0*
+-rwxr-xr-x    1 root     root       360197 Nov  4 14:22
+libmp3lame.so.0.0.0*
+
+# exit
+$ 
+
+
+

+ +

5.2 XMLTV +

+ +

Red Hat Linux and Fedora Core:

+ +

RPMs for XMLTV and all of its dependencies can be obtained from +http://ATrpms.net/name/xmltv/. The web page has a +list of all the dependent packages you must download and install. +

+
+# rpm -Uvh xmltv* perl*
+
+
+

+

If you install from this location you may skip to +Manually building MythTV.

+

Mandriva

+ +

RPMs for XMLTV and all of its dependencies are located in +Mandriva's "contrib". If you have added a contrib mirror, try installing +XMLTV: +

+
+# urpmi xmltv xmltv-grabbers
+
+
+ +If this does not work, it is possible that contrib for your Mandriva version +does not have XMLTV, so you may install the XMLTV prerequisites by typing: +
+
+# urpmi perl-xml-twig perl-xml-writer perl-datemanip perl-libwww-perl
+
+
+

+

and skip straight to the XMLTV compilation step.

+ +

Manual installation

+ +

+ Untar the xmltv file: +

+
+$ tar -xjf xmltv-0.5.51.tar.bz2
+
+
+ +Install the xmltv prerequisites. The following prerequisites are the +minimum required; when you actually start running the xmltv setup program it +may alert you to other modules that are required.:

+

+

+
+$ su
+# perl -MCPAN -e shell
+cpan> install XML::Twig
+cpan> install Date::Manip
+Date::Manip is up to date.
+cpan> install LWP
+cpan> install XML::Writer
+cpan> exit
+
+
+

+

Change to the XMLTV directory and compile it: +

+
+$ cd xmltv-0.5.51
+$ perl Makefile.PL
+
+
+ +You can answer "N" to the tv_check, tv_pick_cgi questions. Say "yes" to +the grabber required for your location.

+

You may get errors about modules not being installed. You will need to +resolve any missing dependencies at this point, or your grabber may not work +correctly. +

+
+$ make
+$ make test
+$ su
+# make install
+# exit
+
+
+

+ +

5.3 Configuring the Schedules Direct service +

+ +

As of 2007-09-01, Tribune Media Services will no longer offer free guide +data. Schedules Direct is a non-profit organization which has licensed the +data to make it available to users of Freeware and Open Source applications.

+

If you wish to use Schedules Direct, you'll need to establish a user +account. Go to +http://www.schedulesdirect.org and click on the "Membership" link.

+

Once you've read and agreed to the Subscriber Agreement, Terms of Use and +Privacy Policy proceed to the lineup choices and configure your account for +your particular location and the channels that you have. This configuration +will be imported into MythTV when you first run the mythtv-setup +program.

+ +

+

+

5.4 Manually building MythTV +

+ +

If you are going to use subversion, execute the following +instructions to obtain the latest version of MythTV:

+

+

+
+$ mkdir mythtv
+$ svn co http://svn.mythtv.org/svn/trunk/ mythtv
+$ cd mythtv
+
+
+

+

To use a release version, you can execute: +

+
+$ mkdir mythtv-release-0.21
+$ svn co http://svn.mythtv.org/svn/branches/release-0-21-fixes/ mythtv-release-0.21
+$ cd mythtv-release-0.21
+
+
+

+

NOTE: Using a svn version of the code allows you to stay +up-to-date with changes. So, if there's an update to the 0.21 release and +you originally obtained it using svn, you could enter the +mythtv-release-0.21 directory and type "svn up", which will update your copy +with the fixed version from the website. You would then recompile and +install the updated 0.21 code.

+

If you are using the tarball, then unpack it: +

+
+$ tar -xjf mythtv-0.21.tar.bz2
+$ cd mythtv-0.21
+$ ./configure
+
+
+

+

If you wish to change options, run ./configure --help to +see what is available and to override and automatically detected options. +See the config.log file after running configure to see +previous runs.

+

To compile: +

+
+$ make -j 2
+
+
+

+

The MythTV compile can take advantage of multiple CPUs, SMP and +Hyperthreading. If you want to build MythTV on a multi-CPU machine (or with +distcc), specify "-j numjobs", where "numjobs" is greater than 2. +In the above example, we had two concurrent jobs executing, which is +recommended for a single CPU system. Do not set the number of jobs too +high, or your compile will actually take longer to complete than it would if +you did a "normal" build.

+

If you are using distcc, and you had two other host machines (red, blue) +participating, you would do something like: +

+
+$ export DISTCC_HOSTS='localhost red blue'
+$ make -j 6 CXX=distcc
+
+
+

+

The actual speed-up, if any, is dependant on a number of factors, such as +number of CPUs / hosts, etc. The distcc documentation recommends +using a -j value of twice the number of CPUs available to keep all +of them busy.

+

Some timing information. The following should only be used for +illustration; your actual results may vary. The test involves a complete +make distclean to the final binary. +

    +
  • P4 3.2Ghz HT: "standard" make: 12m 49s
  • +
  • P4 3.2Ghz HT: make -j 2: 11m 24s
  • +
+

+

In the above example, we see that with a single CPU, a multi-stage +make does not significantly decrease compile time.

+

Once the compile is done, switch to superuser: +

+
+$ su
+# make install
+# exit
+
+
+

+

+

+ + +NOTE: subsequent configuration steps assume that you are within +the MythTV directory that you cd'd to above. +
+

+ +

Enabling real-time scheduling of the display thread.

+ +

MythTV supports real-time scheduling of the video output thread. There +are three ways to go about enabling this: You can use rlimits, you can use +the realtime security module, or on older systems you can SUID the +executable. Enabling real-time scheduling is optional, but can make the +video display smoother, especially if you are decoding HDTV.

+ +

rlimits

+ +

The rlimits method is the preferred method and is included in Linux +2.6.12 and above. Unfortunately, you need PAM version 0.79 or above, which +may not be supported by your distribution yet. Assuming anyone running +mythfrontend is in the audio group and rlimits are supported, all +you need to do is place this in your /etc/security/limits.conf

+

+

+
+*               -       rtprio     0
+*               -       nice       0
+@audio          -       rtprio     50
+@audio          -       nice       0
+
+
+

+ +

realtime module

+ +

The second option is to use the Linux realtime kernel module. +This is will be phased out over time, but is currently supported +by many distributions that do not yet support rlimits. If you are +not using the distribution kernel you must configure your kernel +with: +

+
+Security options : [*] Enable different security models
+Security options : [M] Default Linux Capabilties
+
+
+ +You may also need to install the realtime module, using your distribution's +realtime package. Assuming the users who will be running +mythfrontend will be in the audio group you can get the GUID of a named +group like so: +
+
+$ grep audio /etc/group
+
+
+ +If the number printed out from the grep was 18, you can now load +this module as root before starting mythfrontend: +
+
+# modprobe realtime gid=18
+
+
+

+ +

run as root option (not safe)

+ +

The final and least preferred option is to set the sticky bit +on the mythfrontend executable. This opens a security hole, +but is the only option on systems that do not support either +rlimits or the realtime module. This does not work on modern +distributions either, and is not recommended +on any system connected to the Internet. This may also make it +impossible to debug MythTV without running gdb as root. If you +would still like to do this, you just need to run this as root: +

+
+# chmod a+s /usr/local/bin/mythfrontend /usr/local/bin/mythtv
+
+
+

+ +

Frontend-only configuration

+ +

Since MythTV uses a client/server architecture, multiple frontend +computers can simultaneously access content on a Myth system. Live TV, +watching and scheduling recordings, etc. are all possible from multiple +frontends.

+

To get a better picture of what is needed to run a frontend, note the +following: +

  • You do NOT need the MySQL server installed on your remote frontend
  • +
  • You do NOT need XMLTV installed on your remote frontend
  • +
  • You do NOT need to run the mythtv-setup program on +your frontend machine
  • +

    +

    Other than the exclusion of the MySQL server and XMLTV, the MythTV +compilation procedure is the same as when you're setting up both a backend +and a frontend. However, you will need to install the database +access libraries.

    +

    Once MythTV is compiled and installed: +

  • Run the mythtv-setup program on your Master backend. Under the "General" +menu, change the IP address of the current machine (by default, "127.0.0.1") +to the real external IP address - 127.0.0.1 is the loopback address and no +external machine can access it. Change the Master Server IP setting to the +same IP address as well.
  • +
  • Run the mythfrontend program on your frontend machine, +and a "Database Configuration" screen should appear. +Set the "Host name" field to point to your Master backend's IP address.
  • +

    + +

    5.5 Gentoo +

    + +

    Installation of MythTV on Gentoo consists of simply emerging the desired +ebuild because all of the packages are now part of the official Portage tree. +

    +
    +$ su -
    +# emerge --sync # make sure portage is up to date.
    +# vi /etc/make.conf
    +
    +
    + +Add mysql to your USE variable. i.e. USE="mysql ...." +
    +
    +# emerge mythtv
    +
    +
    +

    +
    +Next +Previous +Contents + + diff --git a/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-6.html b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-6.html new file mode 100644 index 0000000..2f9af20 --- /dev/null +++ b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-6.html @@ -0,0 +1,176 @@ + + + + + Installing and using MythTV: MySQL. + + + + + +Next +Previous +Contents +
    +

    6. MySQL.

    + +

    When you install MySQL 5.x you will also want to comment +out "log-bin" in your my.cnf configuration file. This option will +quickly fill your "/var" disk partition with many gigabytes of data, +unless you are doing database replication and deleting these files regularly.

    +

    6.1 Distribution-specific information +

    + +

    Mandriva

    + +

    If this is the system maintaining the database, make sure that MySQL is +running and started at boot. Click on Mandriva Control +Center->System->Services, find MySQL and click the "On Boot" button and the +"Start" button if the MySQL status shows that it isn't running yet.

    +

    +

    + + +NOTE: There have been reports that MySQL isn't starting at boot. +If this is happening to you, try running the following commands. +
    + +
    +
    +$ su
    +# chkconfig --level 35 mysql on
    +# /etc/rc.d/init.d/mysql start
    +# exit
    +
    +
    +

    + +

    Red Hat Linux and Fedora Core

    + +

    If this is the system maintaining the database, make sure that MySQL is +running and started at boot. Click on Redhat menu>Server Settings>Services +and enter the root password when asked. Check "mysqld" and then click Start. +Click Save, then close the window.

    +

    This can be done from the command line by typing: +

    +
    +# /sbin/chkconfig mysqld on
    +# /sbin/service mysqld start
    +
    +
    +

    + +

    Gentoo

    + +

    After installing MySQL you need to initialize the database by running +mysql_install_db as root.

    +

    6.2 Setting up the initial database +

    + +

    This step is only required on the system maintaining the database, which +may or may not be one of your MythTV boxes. If the database is on a +non-MythTV machine you'll need to copy the database/mc.sql file to it.

    +

    To setup the initial MySQL databases: +

    +
    +$ cd database
    +
    +
    +

    +

    Mandriva and Red Hat Linux/Fedora Core

    + +

    +

    +
    +$ mysql -u root < mc.sql
    +
    +
    +

    +

    Debian 3.0

    + +

    +

    +
    +$ mysql < mc.sql
    +
    +
    +

    +

    Gentoo

    + +

    +

    +
    +$ su
    +# mysql < /usr/share/mythtv/database/mc.sql
    +
    +
    + +
    + + +NOTE: It is good practice to set a root password for MySQL. Instructions for doing so can be found on MySQL's web site at +http://www.mysql.com/doc/en/Security.html. +
    +

    +

    Modifying access to the MySQL database for multiple systems

    + +

    If you're going to have multiple systems accessing a master database, +you must grant access to the database from remote systems. By default, the +mc.sql script is only granting access to the local host.

    +

    To allow other hosts access to your master database, you can either set it +up for no security at all, or with more granularity. Note that the "%" is +the wildcard character in MySQL.

    +

    +

    + + +NOTE: The "no security" option is very dangerous unless +you're in a controlled environment. +
    + +This example has no security at all, and allows access from any host. +
    +
    +$ mysql -u root mythconverg
    +mysql> grant all on mythconverg.* to mythtv@"%" identified by "mythtv";
    +mysql> flush privileges;
    +
    +
    +

    +

    For a more secure setup, you can restrict which machines or subnets have +access. If you have a complete DNS system operational, you could do the +following: +

    +
    +$ mysql -u root mythconverg
    +mysql> grant all on mythconverg.* to mythtv@"%.mydomain.com" identified by "mythtv";
    +mysql> flush privileges;
    +
    +
    +

    +

    Finally, if you just want to restrict by IP subnet (in this example, the +192.168.1. network): +

    +
    +$ mysql -u root mythconverg
    +mysql> grant all on mythconverg.* to mythtv@"192.168.1.%" identified by "mythtv";
    +mysql> flush privileges;
    +
    +
    +

    +

    You'll also need to check that the "networking" feature of MySQL is turned +on. Check that /etc/mysql/my.cnf does not contain +skip-networking. If it does, remove it. Also verify that +bind-address is set to your IP address instead of +127.0.0.1. If you change either of these items, restart +MySQL.

    +

    NOTE: Your distribution may have a customized MySQL configuration +file; in Mandriva, check /etc/sysconfig/mysqld for additional +configuration.

    + +
    +Next +Previous +Contents + + diff --git a/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-7.html b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-7.html new file mode 100644 index 0000000..97bc763 --- /dev/null +++ b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-7.html @@ -0,0 +1,130 @@ + + + + + Installing and using MythTV: Configuring Sound. + + + + + +Next +Previous +Contents +
    +

    7. Configuring Sound.

    + +

    If your video doesn't appear to be in-sync with your audio and you're +using an analog video capture card and a soundcard to capture audio, it +could be because you are listening to the real-time audio from your video +card rather than after it's been processed and synchronized to the video by +MythTV. Because MythTV is a personal video recorder, "Live TV" isn't really +live - to let you pause live TV, MythTV is actually encoding the video, +saving to disk, and then playing it back. This procedure puts your MythTV +"live" TV about 2 seconds behind real-time, so it's important that you're +not listening to the live audio. However, if you're having an issue where +the audio and video aren't synchronized by small but varying amount, it's +most likely because the sound driver that you're using doesn't have the +DSP_CAP_REALTIME capability. This was the case with ALSA (0.5), but not +with newer versions. See the +Troubleshooting Audio section for more information if you're having +issues with sound. Also, ensure that no other programs are grabbing the +audio output, like arts or esd.

    +

    What you need to do is to mute the "line-in" of your sound card and also +set it as the recording source.

    +

    There are two ways to do this. Graphically, and from the command line.

    + +

    7.1 Graphically setting up the mixer +

    + +

    Mandriva and Red Hat Linux/Fedora Core

    + +

    Open Kmix by clicking K->Multimedia->Sound->Kmix for Mandriva, or +

    +RedHat Menu>Sound & Video>Volume Control
    +
    + on Red Hat/Fedora.

    +

    Click on Settings->Configure Make sure that "Tick Marks" and "Show +labels" have "X"'s in them. This will make it easier to find the correct +audio source. Click OK.

    +

    On the mixer page, look for Line-In on your sound card. You should see +two LED's - a green one at the top, and a red one at the bottom. The green +one at the top is for muting; you want to make sure that the green LED is a +dark green, meaning that it's "off". You also want to click on the red LED +so that it turns bright red, indicating that it's "ON"; this insures that +the Line-in is used as the source. Click OK, and make sure that you save +the settings so that this is your default.

    + +

    Using ALSA.

    + +

    To use ALSA, you'll need to correctly setup your +asoundrc file. Configuring this file is beyond the scope of this +HOWTO. Once ALSA is working correctly, change the output sound device in +mythfrontend->setup->Audio from /dev/dsp to ALSA:default. +This field may be edited to suit your ALSA requirements.

    + +

    7.2 Setting the mixer from the command line +

    + +

    If you have installed the alsa-utils package, then the amixer +program can be used to setup the mixer. The "Master" volume setting is only +required on a frontend machine to ensure that the sound channels are unmuted +and configured for outputting sound. The "Line" and "Capture" controls are +required for your sound card to actually capture audio from the external +Line-in if it's connected to an analog frame grabber. Not all sound cards +have a "Capture" control, but if yours does and you don't set it then MythTV +will not capture audio.

    +

    +


    +
    +Note the spelling in the following commands.
    +
    +
    + +
    +
    +$ amixer set Master,0 100%,100% unmute
    +$ amixer set PCM,0 100%,100% unmute
    +$ amixer set Line,0 75%,75% mute captur
    +$ amixer set Capture,0 100%,100% captur
    +$ su
    +# alsactl store
    +# exit
    +$ 
    +
    +
    +

    +

    If you have multiple sound cards, then use the -c parameter to +specify which card to adjust. Note that the first card will be "0", the +second will be "1", etc.

    +

    That takes care of setting the volume correctly, and the ALSA startup script +will restore the volume after a reboot. If you find that your sound is +distorted, it's possible that the levels in the above examples are too high +for your particular hardware combination. Try reducing the percentages by +5-10% and checking again. Once you're satisfied, re-run the alsactl +store command.

    +

    You may also use the alsamixer program to set the volume. If you +are using an ALSA version after 1.0.6, use alsamixer -V all First, +start alsamixer from the command line. You should start out on the +"Master" volume control slider. Use the up and down cursor to set the +master volume to around 75%. Next, use the left and right cursor keys to +move around on the screen until you find the "Line" slider. Press SPACE to +set it as the capture source, set the level to around 50-75% and press "M" +to mute it. You can now press ESC to exit out of the alsamixer +program. You can also have MythTV manage all volume and mute settings, but +this will only affect the "Master" or PCM volume, not the capture volume. See +the mythfrontend setup page for options.

    +

    Finally, if you've performed all of the above steps, and you still don't seem to have any sound, it's possible that your video capture device is muting the audio output. +

    +
    +$ v4lctl -c /dev/video0 setattr mute off
    +
    +
    +

    + +
    +Next +Previous +Contents + + diff --git a/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-8.html b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-8.html new file mode 100644 index 0000000..98d4b66 --- /dev/null +++ b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-8.html @@ -0,0 +1,530 @@ + + + + + Installing and using MythTV: Setting up a remote control. + + + + + +Next +Previous +Contents +
    +

    8. Setting up a remote control.

    + +

    MythTV does not have native remote control receiver and decoder software +built-in. Instead, remote control functions are implemented by cooperating +with lirc, the Linux Infrared Remote Control program. lirc +handles the IR hardware and passes keystrokes to MythTV, which then acts as +if the user had pressed the keys on the keyboard. The file +keys.txt describes the keys used to control MythTV.

    +

    +

    + + +NOTE: If you are running Mandriva, you may install +lirc by executing: # urpmi lirc lirc-remotes and bypass +the manual compilation steps described below by jumping to the +Completing the lirc install section. See the contrib/mandrake91.etc.sysconfig.lircd file for an example of how to +configure lircd. +
    +

    +

    Some IR devices require a kernel recompile, and some don't. However, all at +least require having the kernel source available as a resource for the lirc +build process.

    + +

    8.1 Gentoo +

    + +

    To install lirc on Gentoo, all you need to do is: +

    +
    +# emerge lirc
    +
    +
    +

    + +

    8.2 Obtaining and compiling lirc +

    + +

    You're going to need to download and compile lircd. Go to +http://www.lirc.org and download lirc; as +of 2006-01-21, the version available is 0.8.0. Grab the remotes.tar.bz2 file as +well. +

    +
    +$ tar -xjf lirc-0.8.0.tar.bz2
    +$ cd lirc-0.8.0
    +$ ./setup.sh
    +
    +
    + +You're going to need to know what sort of receiver you have and where it's +connected. In the case of the Pinnacle Studio TV card, with the IR receiver +connected to COM1 (/dev/ttys0), once the configuration menu comes up, +perform the configuration by going to Driver Configuration->Other Serial +Port Devices->Pinnacle Systems Receiver->OK and on the next page select +COM1->OK.

    +

    Each remote is different; some remote receivers connect directly to your +capture card and not to a serial port, so make sure that you've got the +correct one.

    +

    You then click "Save Configuration and run configure" to continue.

    +

    Make sure you read the last text generated by the configure step. It will +tell you if you require a kernel recompile, and what the name of your kernel +module will be (if necessary). For instance a home-built receiver may +require a kernel recompile, so you would be notified that you will have to +load the lirc_serial module. If you did not get any such messages skip the +kernel recompile steps below and go directly to making and installing the +lirc driver.

    +

    Once the configuration step is complete: +

    +
    +$ make
    +$ su
    +# make install
    +# chmod 666 /dev/lircd
    +
    +
    +

    +

    At this point, if you're using a serial receiver, check that there's a +lirc device in /dev: +

    +
    +$ ls -l /dev/li*
    +lr-xr-xr-x    1 root     root            5 Jan 27 09:00 /dev/lirc -> ttyS0
    +srw-rw-rw-    1 root     root            0 Jan 27 15:01 /dev/lircd=
    +prw-r--r--    1 root     root            0 Jan 27 09:00 /dev/lircm|
    +
    +
    +

    +

    As you can see, there's a link from /dev/lirc to ttyS0, a.k.a. "COM1", which is +appropriate for the Pinnacle Systems PCTV Pro. However, you may notice +something like this: +

    +
    +crw-------    1 root     root      61,   0 Dec 31  1969 lirc
    +
    +
    + +Some IR receivers (including some homebrew units) use a character device as +their data interface as opposed to a link to a serial port. If the make +install step has created a character device for you, don't replace it +with a link to a COM port.

    +

    So, if the link or character device was not created (but should have been), +ensure that you ran the make install step as root. If it still +doesn't work, then there are three options. The first option is to re-read +the lirc documentation to determine whether your IR receiver is a +character device or should be a link to a serial port and to create the +link/character device manually. In this example, the IR device is connected +to ttyS0. If it were connected to "COM2", then use ttyS1, etc. +

    +
    +$ su
    +# cd /dev
    +# ln -sf ttyS0 lirc
    +# exit
    +$
    +
    +
    +

    +

    +

    + + +NOTE: The above example assumes that your receiver uses the +standard serial driver. Some receivers do not, including receivers that +plug into a TV capture card. Check the lirc documentation, but it may be +necessary to replace the link created above with a character pipe: +
    + +
    +
    +# mknod /dev/lirc c 61 0
    +
    +
    +

    +

    See the lirc documentation for additional information. The lirc +installation should create this for you, so manually creating it +indicates that your lirc installation may have other issues.

    +

    The second option is to post your issue to the lirc list, not the +mythtv-users list. The lirc programmers will be the ones that can assist +you best.

    +

    The third option is to dispense with lirc altogether by purchasing an IR +keyboard (various options exist, although Chicony appears to work for some +people) and a learning remote control. The IR keyboard receiver plugs into +the PS/2 keyboard port on your PC and you would train your learning remote +to emulate the various keystrokes from keys.txt of your IR +keyboard. Using this method removes lirc entirely from the picture - your +remote will be sending keypresses that your PC "sees" on the keyboard port.

    + +

    8.3 Completing the lirc install +

    + +

    +

    + + +NOTE to Mandriva 9.1 users: skip to the manual start paragraph +below. +
    +

    +

    If the lirc configure program / compile did not mention anything about a +kernel module, then you are finished. If it did mention a kernel module, you +must edit the /etc/modules.conf file. Add this line as the first +thing in the file. It must come first, or it may not work. +

    +
    +alias char-major-61 XXX
    +
    +
    +

    +

    replace XXX with the name which you determined earlier, which in this +example was "lirc_serial" +

    +
    +$ su
    +# modprobe lirc_serial
    +# /sbin/ldconfig
    +
    +
    +

    +

    Next, we're going to manually start lircd the first time. Mandriva 9.1 +users, type: # /etc/rc.d/init.d/lircd start instead of: +

    +
    +# /usr/local/sbin/lircd
    +
    +
    +

    +

    NOTE: Read this next section if you're not familiar with how lirc works!

    +

    There are two separate files used by lirc, and both are required for your +remote control to do anything useful. First is the lircd.conf file. +lircd.conf tells the lirc daemon how to interpret the IR pulses +that it receives from a remote control and what name to assign to each +sequence of pulses. Without getting too involved, a particular series of +pulses may correlate to "Channel Up". The lircd.conf file will +then contain a line that looks something like this:

    +

    +

    +
    +          ChannelUp                0x0000000000001020
    +
    +
    +

    +

    The lircd.conf file can have multiple remote controls defined.

    +

    The second file is lircrc, which takes the name of the button which +was pressed ("ChannelUp") in the above example, and correlates that to an +action to be performed by a program using the remote control. So in MythTV, +ChannelUp means one thing, while in mplayer it means something +different. lircrc gives you the flexibility of taking the name of +the button and having it perform different actions depending on which +program you're using at the time.

    +

    NOTE: The definitions in lircd.conf come from the user +community, and there is no standard for the common button names. One +lircd.conf file may contain a definition for a button called +"ChannelUp", while another may contain a definition for "Chan+". Your +lircrc file must therefore be configured appropriately, or it won't +work.

    +

    If this fails, complaining of a missing lircd.conf file, then you +must find or make one. First look for a pre-made configuration file at +http://lirc.sourceforge.net/remotes/. Mandriva 9.1 users, look in +/usr/share/lirc-remotes. If you find one your remotes either on the +website or in /usr/share, download or copy the file, name it +lircd.conf and put it in your /etc directory. If you +couldn't find your remote, you must make your own lircd.conf file.

    +

    To make your own lircd.conf file +

    +
    +$ irrecord myremote
    +
    +
    +

    +

    Follow the on-screen directions to train your remote and define keys. If +your remote ends up working well, you should consider submitting your +lircd.conf file back to the lirc developers. Once finished: +

    +
    +$ su
    +# cp myremote /etc/lircd.conf
    +
    +
    +

    +

    now try to start lircd again: +

    +
    +# /usr/local/sbin/lircd
    +
    +
    +

    +

    Now, we're going to add the commands necessary for lircd to run each time we +boot. Mandriva 9.1 users, you can execute: +

    +
    +$ su
    +# chkconfig --level 35 lircd on
    +# exit
    +
    +
    +

    +

    All other distributions: +

    +
    +# cd /etc/rc.d
    +# cat >> rc.local
    +echo "Starting lircd"
    +/usr/local/sbin/lircd
    +^D
    +# exit
    +$ 
    +
    +
    +

    +

    This takes care of the lircd portion, which "listens" for the IR signals. If +everything went well, the install script for lircd put an appropriate +configuration file for your remote into /etc/lircd.conf This file +maps the buttons on the remote control to the IR pulses coming from the +receiver.

    +

    The next step is to convert those signals into something that can be used +to control MythTV. MythTV now includes native support for lirc and can +interact directly with

    +

    +

    +
    +$ cd ~/mythtv-0.21/contrib/configfiles
    +$ cp lircrc.example ~/.lircrc
    +
    +
    + +or +
    +
    +$ cp lircrc.example.pinnaclestudiopctv ~/.lircrc
    +
    +
    + +if you've got a Pinnacle Studio PCTV remote. +
    +
    +$ irw
    +
    +
    + +Start pressing the keys on your remote; irw will +print the name of the button as it is defined in your +/etc/lircd.conf. If you don't see anything at this point, you need +to troubleshoot further by going back to the lirc home page and investigating +from there.

    +

    If it is working, then press CTRL-C to abort the program. Once you +know that your remote is working, you can either recompile MythTV with +native lirc support by enabling it in configure or you +need to run the irxevent program, which takes the key presses and +sends them to MythTV. If you use native lirc support, you don't need to run +irxevent. If you are going to use irxevent, then you need to run +it like this: +

    +
    +$ irxevent &
    +
    +
    + +If irxevent isn't running, then MythTV will not respond to your remote +control unless you're using native lirc support.

    + +

    8.4 Additional information for lirc +

    + +

    Take a look at the lircrc.example files in the contrib/configfiles/ +directory. In my case, (Pinnacle Studio card) the channel up and down functions +weren't working, due to the fact that the button names were different than +the default lircrc.example file that came with MythTV.

    +

    The lircrc.example file has this: +

    +
    +begin
    +    prog = irxevent
    +    button = ChannelUp
    +    config = Key Up CurrentWindow
    +end
    +
    +begin
    +    prog = irxevent
    +    button = ChannelDown
    +    config = Key Down CurrentWindow
    +end
    +
    +
    + +but the /etc/lircd.conf that comes in the lircd package +defines the buttons for the Pinnacle Studio PCTV as: +
    +
    +          channel+                 0x0000000000000017
    +          channel-                 0x000000000000001C
    +
    +
    + +rather than "ChannelUp" and "ChannelDown". I added the +following to my /home/[yourusername]/.lircrc file: +
    +
    +begin
    +    prog = irxevent
    +    button = channel+
    +    repeat = 3
    +    config = Key Up CurrentWindow
    +end
    +
    +begin
    +    prog = irxevent
    +    button = channel-
    +    repeat = 3
    +    config = Key Down CurrentWindow
    +end
    +
    +
    + +which took care of basic functionality. Because the PCTV Studio remote +has additional buttons, look at the +contrib/configfiles/lircrc.example.pinnaclestudiopctv for an example of how +to define additional buttons, and how to debug potential button name +conflicts between the lircrc.example file and how your +remote defines the button names.

    +

    By examining the button names defined in /etc/lircd.conf and using +the irw program to make sure that your remote is working, you can +create the appropriate mappings in .lircrc to get excellent remote +functionality with MythTV.

    +

    Note the repeat = parameter. This informs the irxevent +program to pass through every third keypress. By default, lirc +will only send one keypress to the application, even if you're holding down +the key. The actual repeat = number will vary from system to +system, so experiment and see which value works best for you.

    + +

    8.5 Configuring lirc for use with an IR blaster +

    + +

    Lirc has support for various IR transmitters. A popular model is the Actisys +IR-200L +http://store.snapstreamstore.com/accessories.html. It was +originally designed for IRDA communication, but can be used to transmit A/V remote +control codes. By using the lirc SIR driver, this device can easily be +integrated with MythTV. I have tested this device with an AT&T DCT2000 +digital cable box but the instructions can be used to configure other IRDA +devices and A/V remotes.

    +

    Follow the steps in the previous section. When you run setup.sh, select +option 1, driver configuration. From here select option 6, IrDA hardware. +Select your appropriate device and the corresponding serial port, then Save +configuration & run configure from the main menu. Once configure is done +type: +

    +
    +$ make
    +
    +
    +

    +

    Please note: unlike the Pinnacle receiver above you will be compiling lircd +in addition to a kernel module for the SIR transmitter. Depending on whether +you have your serial port driver configured as a kernel module you might see +the following message during make: +

    +
    +lirc_sir.c:56:2: warning: #warning
    +"******************************************"
    +
    +lirc_sir.c:57:2: warning: #warning "Your serial port driver is compiled into "
    +
    +lirc_sir.c:58:2: warning: #warning "the kernel. You will have to release the "
    +
    +lirc_sir.c:59:2: warning: #warning "port you want to use for LIRC with:"
    +
    +lirc_sir.c:60:2: warning: #warning "setserial /dev/ttySx uart none"
    +
    +lirc_sir.c:61:2: warning: #warning
    +"******************************************"
    +
    +
    +

    +

    If you do receive this statement make sure to run the setserial command +before you load the lirc_sir module. Follow this with the install: +

    +
    +$ su
    +# make install
    +
    +
    +

    +

    You will notice that lirc installs the kernel module in +/lib/modules/uname -a/misc.

    +

    The configuration for starting lircd differs if you're going to be +sending and receiving IR versus just receiving. +

    +
    + 
    +# cd /etc/rc.d
    +# cat >> rc.local
    +echo "Starting lircd"
    +setserial /dev/ttySx uart none        # (if required)
    +modprobe lirc_sir
    +/usr/local/sbin/lircd
    +^D
    +# exit
    +$ 
    +
    +
    +

    +

    At this point you have to populate the /etc/lircd.conf file with the proper +codes for your A/V remote. You should be able to find your remote within the +lirc remote tar file located at +http://www.lirc.org/remotes.tar.bz2. In my case I +extracted the file from remotes/motorola/DCT2000 (gi-motorola-dct2000)

    +

    To test the lirc_sir module you can run irw to verify the codes are being +received. If everything is configured correctly +you should see something similar to the following: +

    +
    +$ irw
    +0000000000007ff0 00 1 gi-motorola-dct2000
    +000000000000bff8 00 2 gi-motorola-dct2000
    +000000000000f7f0 00 ENTER gi-motorola-dct2000
    +
    +
    +

    +

    Once you've verified lirc is working you can press CTRL-C to exit +irw and configure the channel changing script.

    +

    The path to the channel changing script will need to be entered on the +mythtv-setup screen for Input Connections.

    +

    This csh script will be called each time MythTV needs to change the channel. +Below is a copy of the script followed by the corresponding perl script. +Make sure both are in your path. Also make sure you leave the #!/bin/csh +setting and not change it to Bourne or bash. This will create a frustrating +symptom to diagnose where MythTV cannot open /dev/device. Unlike Bourne or +bash, csh scripts automatically close parent file descriptors before they +start. +

    +
    +$ cd /usr/local/bin
    +# su
    +# cat > change_channel.csh
    +#!/bin/csh
    +echo "changing to $1"
    +/usr/local/bin/channel.pl $1 &
    +^D
    +# chmod a+x change_channel.csh
    +# exit
    +$ exit
    +
    +
    +

    +

    See contrib/channel.pl for the actual file. Copy it to +/usr/local/bin/

    +

    The last statement within the perl script is the lirc rc command. This is +the command that transmits the code to your cable/DSS box. Make sure to have +the IRDA device within a few feet of the box.

    + +
    +Next +Previous +Contents + + diff --git a/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-9.html b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-9.html new file mode 100644 index 0000000..4fc01d5 --- /dev/null +++ b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-9.html @@ -0,0 +1,649 @@ + + + + + Installing and using MythTV: Configuring MythTV. + + + + + +Next +Previous +Contents +
    +

    9. Configuring MythTV.

    + +

    By this point, all of the compile-time prerequisites have been installed, +mysql is running and has had its initial database setup. It's now +time to configure MythTV. +

    + + +NOTE: If you're running Debian unstable and you have compiled +MythTV from source, you will need to install an additional package before +you will be able to run MythTV. Execute the following to install the MySQL +driver for QT. +
    + +
    +
    +$ su -
    +# apt-get install libqt3c102-mt-mysql
    +# exit
    +
    +
    +

    +

    9.1 Configuring the Master backend system +

    + +

    Open a shell and decide where you will store your video files. This may +be one directory or multiple directories on the same or different +filesystems. There is no default directory used for new recordings, you +must create at least one storage directory and configure Myth to +use it by running mythtv-setup. If you do not do this, then MythTV +will be unable to record anything. The following example is specific for +/var/video, but the same instructions would apply for any directory +name you choose to use. See the +Advanced Partition Formatting section for hints on creating a +partition for MythTV.

    +

    +

    +
    +$ su
    +# mkdir /var/video
    +# chmod a+rwx /var/video
    +# exit
    +
    +
    +

    +

    NOTE: The last slash "/" is not required.

    +

    + +TIP: Try not to have your video mount point on the same partition +as your root partition, which could lead to the filling up of your root +partition with video data if the mount fails. For example:

    +

    If /var/video is created on your root partition and you then +perform a mount of another drive to this directory there won't be any +problems if everything is working the way it should. However, if the mount +fails for some reason, /var/video still exists, so MythTV will find +the directory and write files to it. If your / mount point is +space limited, /var/video will also be space limited, and +it won't take long to fill the partition. This will cause a number of +side-effects, most of them bad. Instead, create subdirectories as the +destination for the storage group.

    +

    Your directory structure could then look something like this: +

    +
    +/mnt/video/drive1/video
    +/mnt/video/drive2/video
    +
    +
    +

    +

    Your /etc/fstab would look like this: +

    +
    +/dev/hdb1 /mnt/video/drive1
    +/dev/hdc1 /mnt/video/drive2
    +
    +
    +

    +

    Because the Storage Group path is /mnt/video/drive1/video, if the +mythbackend can only find /mnt/video/drive1 it will not +write files to that share.

    +

    After you create the desired directory or directories for storing your video +files, you will need to add them to the proper Storage Group using +mythtv-setup. This procedure is described below in the +Storage Groups section.

    +

    The first thing to configure is the Master backend system. If you are +running multiple backend systems, the Master backend will make all +decisions about which programs will be recorded on which tuners. If you +have only one backend, then it will be its own master.

    +

    The Master backend will always choose the first available tuner in the same +order as you add cards through "mythtv-setup". In other words, the second +card you add will only be used when there are two overlapping recordings, +the third when there are three, and so on. + Therefore, you will want to have +the greatest amount of disk space on the Master backend because its tuner +will always be the first choice. You will then want to add your +other backends in the order of your +preference for recording.

    +

    +

    + + +NOTE: It is possible to not have the cards on the Master +backend be the first ones used. However, if you are new to MythTV it is +easier to configure the Master backend first before moving on to the Slaves, +at least until you become more familiar with the MythTV system. See +Advanced Backend Configurations for +information on configuring multiple backend systems in various ways. +
    +

    +

    Because MythTV uses a database to store all configuration variables, +part of the bootstrap of MythTV is to indicate the location of the MySQL +database server. If the frontend, backend and MySQL database server are all +going to be running on the same box, you can continue to the next step. If +not, you'll need to change the Host Name in the "Database Configuration" +screen of the mythfrontend program.

    +

    +

    + + +NOTE: Users that have been running the frontend and the backend on +different machines have stated that they have been having issues with remote +access to the MySQL database. The following instructions may or may not +work. Add the following to /etc/my.cnf on the backend machine and +restart MySQL. +
    + +
    +
    +skip-innodb
    +set-variable=thread_stack=256k
    +
    +
    +

    +

    Run the setup program: +

    +
    +$ mythtv-setup
    +
    +
    +

    +

    The backend setup program will start and offer you a number of choices. It +is strongly recommended that you go through them in order.

    +

    The first question will ask if you wish to clear out your existing +configurations for your capture cards. Initially, you should say "YES" so +that there are no surprises later.

    +

    The next question will ask you if you wish to clear out your video source +information. You should answer "YES" to this as well.

    +

    Once the graphical setup starts, you'll see that there are six choices

    +

    +

    + + +The Storage Directories feature is available only in the SVN version of MythTV. +
    +

    +

    +

      +
    1. General
    2. +
    3. Capture Cards
    4. +
    5. Video Sources
    6. +
    7. Input connections
    8. +
    9. Channel Editor
    10. +
    11. Storage Directories
    12. +
    +

    +

    Use the arrow keys to move around, and press the space bar to select which +option you wish to configure.

    + +

    General

    + +

    The first screen of the General configuration deals with IP addresses of the +system that you're running mythtv-setup on and any master backend you may have. +If you've only got one machine, then the default values are fine and you can +move to the next page by pressing the space bar. If you need to move around +the screen, use the arrow keys to move focus between settings, not the +mouse.

    +

    If you will be deploying multiple backends, or if your backend is on one +system and you're running the frontend on another machine then do +not use the "127.0.0.1" IP address.

    +

    NOTE: If you modify the 127.0.0.1 address and use a "real" IP +address, you must use real IP addresses in both fields, otherwise your +frontend machines will generate "Unexpected response to MYTH_PROTO_VERSION" +errors.

    +

    Changing any of the port settings is very strongly discouraged. +(If you do accidentally change them, the defaults are 6543 for +the master/backend server, and 6544 for the HTTP requests)

    +

    Once you're satisfied with the values, move the focus down to Next and hit +the space bar.

    +

    The next screen details the Host-specific Backend setup. This is where you +will set the specific directory paths for this particular backend. Make +sure that you've followed the steps at the beginning of this section and +created a directory that exists and that MythTV will have write privileges +to. When you're done, press Next to continue, taking you to the Global +Backend Setup.

    +

    On the Global Backend Setup configure your backend with the appropriate +settings. Use the left and right arrow keys to iterate through the choices +available on each setting, and the up and down keys to move between +settings. Move to Finish when you're done and press the space bar, taking +you back to the main configuration screen.

    + +

    Capture Cards

    + +

    You should have no capture cards defined, so the highlight will be on +(New Capture Card). Press space to begin.

    +

    Choose the appropriate settings for your particular tuner. Use the arrow +keys to move around and to make your choices, and press RETURN when +complete. Pressing RETURN will take you back to the Capture Cards screen; +if you have additional capture cards in this machine, press the space bar +when the highlight is on the (New Capture Card) row to define another card.

    +

    If you have made a mistake, you can delete a card by highlighting it and +pressing the 'D' key, or you can highlight it and press the RETURN or 'E' +key to edit it.

    +

    Once you have no additional cards to setup, press ESC.

    +

    +

    + + +NOTE: If you have a dual digital/analog card, such as the pcHDTV +cards and some DViCO cards, then you should not configure this as two +separate cards. Configure the digital portion as a DVB card, then click +on the "Analog Options" button within the DVB configuration panel for +the card and configure the analog portion of the card there. +
    +

    + +

    Video Sources

    + +

    When you start, the highlight should be on (New Video Source). Press the +space bar to begin. The first field asks for the name of the video source. +You may choose something easy to remember, like "Antenna" or "Cable". Once +you've chosen a name, press the down arrow to move to the next field.

    +

    If you're in North America, change the grabber to +"SchedulesDirect.org(Internal)", then continue pressing the down arrow to +move to the next field. Fill in the username (lowercase only) and password +that you have established with Schedules Direct, then move to the "Retrieve +Listings" button and press the space bar.

    +

    NOTE: You need wget version 1.9.1 or higher to use +Schedules Direct.

    +

    The mythtv-setup program will contact the Schedules Direct servers and get +your account information. Once you're done, you may click the Finish button +and skip the next few paragraphs in this document since they only apply to +users that are using the external XMLTV script to get their guide data.

    +

    If you wish to continue using the XMLTV grabber, then move to the Zip/postal +code field and put in the appropriate value.

    +

    If you're outside of North America, then some manual interaction will be +required with XMLTV. You may need to switch from the MythTV setup program +to the console it was run on to interact with XMLTV.

    +

    Once you have chosen your provider, press RETURN to continue. XMLTV will +now begin collecting the initial data for your location. The screen may +blank for a few seconds to several minutes, depending on the load of the +listings provider and the speed of your connection to the Internet. Be +patient!

    +

    You will then be returned to the Video Sources screen. If you have multiple +video sources available, such as Antenna, Cable, etc, go ahead and define +them all, even if they're not all going to be physically connected to the +master backend server. Once you're done, press ESC to return to the main +screen.

    + +

    Input Connections

    + +

    The final configuration item is Input Connections. On this screen, you +will associate the various video sources you defined earlier with a physical +input to a encoder card. It's entirely possible that you have multiple +tuners, and each tuner has a different input, so on this screen you let +MythTV know which device will connect to which input source.

    +

    When you start this screen, you should see a listing of the various input +connections available on each of the Capture cards you defined earlier. For +example, you may have a capture card with a tuner, a SVideo and a Composite +connection. If you wanted to associate the tuner (a.k.a., "Television") +with an "Antenna" source you defined in Video Sources, you would move to the +/dev/videodevice (Television) -> line and press the space bar. +Using the left and right arrow keys will show you the various choices you +have already created for video source. In our case, you would use the +left/right cursor keys until "Antenna" was shown in the Video Source field. +Press down to move to the next setting.

    +

    On the connection pane there is a "Scan for channels" button, if you are +configuring a digital source such as a DVB card, you need scan for channels +and you must do this before pressing the "Fetch channels from listings +source" button. You may scan for analog channels on an analog input, but +this is not needed.

    + +

    The other button is called "Fetch channels from listings source". As long as +you have a real listings source you should fetch channels from them for +analog channels. You can do this for digital sources as well (unless the +listing source is transmitted EIT data). If you are using XMLTV, you may need +to switch from the MythTV setup program to the console it was run on to +interact with XMLTV after pressing this button. It is possible to fetch the +channels on the command line using mythfilldatabase. But if you need to do +this, you will probably need to re-enter the MythTV setup program to +configure the "Starting channel" setting for this source->input connection.

    +

    +

    + + +NOTE: If you have a Hauppauge PVR-500, you must think of +it has two PVR-150's on a single PCI card. For example, if you have a +single PVR-500 card, it will appear as /dev/video0 and +/dev/video1. Each /dev/video device will have a Tuner input. +
    + +Once you're done, press RETURN to go back to the Input Connections screen. +You would then finish associating the video sources to any other hardware +devices you have available.

    +

    +

    + + +NOTE: Don't add a video source to a hardware input if you don't +actually have anything connected there. For example, adding "Cable" to the +Tuner and to the Composite inputs without having something connected to +Composite will lead to blank recordings. +
    +

    +

    Press ESC to return to the main menu, and press ESC again if you have no +further items to configure, thereby returning you to the command line.

    + +

    Channel Editor

    + +

    The channel editor is used to globally alter channel information, +including items like hue, contrast, fine tuning and others. Users in North +America shouldn't run the channel editor until you've completed the initial +mythtv-setup and ran mythfilldatabase at least once to populate the +database.

    + +

    Storage Groups

    + +

    +

    + + +New in MythTV 0.21 +
    +

    +

    Introduction.

    + +

    Storage Groups are lists of directories that are used to hold MythTV +recording files giving you a flexible way to allow you to add capacity to +your MythTV system without having to use exotic solutions such as LVM, +filesystem expansion or RAID Online Capacity Expansion. You can also use +Storage Groups to organize recordings and to put recordings of a certain +type into one subdirectory.

    +

    Storage Groups do not offer redundancy in case of hard drive failure, but +unlike LVM, if you lose a hard drive, you only lose the recordings that were +on that drive. With LVM, if you lose a hard drive, you will most likely +lose everything.

    + +

    How to use Storage Groups.

    + +

    By default, there is only one Storage Group called "Default", and it is +used for all recordings and Live TV.

    +

    +

    + + +NOTE: You need to add at least one directory to the Default +Storage Group or else you will not be able to record anything with MythTV. +
    +

    +

    For example, if you have 5 hard drives in your system, your first hard drive +could be your "boot" drive, and the remaining four could be dedicated to +media storage. You could format the drives and mount them as +/mnt/store/d2, /mnt/store/d3, /mnt/store/d4 and +/mnt/store/d5.

    +

    Within each mount point, it's strongly recommended that you use a +sub-directory and make that the destination path for the Storage Group. See +the +Tip in the "Configuring the Master +backend" section for additional information.

    +

    You would then add the four subdirectories you created under the mount +points (/mnt/store/d1/video, etc) into the "Default" Storage Group.

    +

    At recording time, if there were four simultaneous recordings, MythTV would +put one recording onto each drive.

    +

    Or, say that you originally installed MythTV to a 80GB hard drive, and that +hard drive is now filling up. You could simply add a new drive to your +system, mount it and update the Storage Group to add additional space.

    +

    You may create additional Storage Groups to store specific recordings in +their own directories. Storage Groups are edited via the 'Storage +Directories' section of mythtv-setup.

    +

    You can also create multiple Storage Groups to group recordings together; +recording schedules now have an option to specify which Storage Group to +use.

    +

    MythTV will balance concurrent recordings across the available directories +in a Storage Group in order to spread out the file I/O load. MythTV will +prefer filesystems that are local to the backend over filesystems that are +remote until the local filesystem has 2 concurrent recordings active or +other equivalent I/O, then the next recording will go to the remote +filesystem. The balancing method is based purely on I/O, Myth does not try +to balance out disk space unless a filesystem is too low on free disk space +in which case it will not be used except as a last resort.

    +

    Storage Groups are global, but can be overridden on a slave backend by +creating a local Storage Group by running mythtv-setup on the +slave. If a problem occurs and the slave backend is unable to use the +desired Storage Group, it will fail back and try the directories defined in +the master's Storage Group.

    +

    There's also a special 'LiveTV' Storage Group, but the directory list starts +out empty. If you add a directory to the Storage Group, it will be used +instead of putting LiveTV recordings in the Default Storage Group. This +will allow you to put your LiveTV recordings on their own filesystem, which +is similar to the old MythTV method which used a RingBuffer for LiveTV. Of +course, you don't have to do anything, and Live TV recordings will just go +into the Default Storage Group where they'll be the first programs eligible +for expiration if the system needs free space for recordings.

    +

    Usage information for all Storage Group directories is visible on the +mythfrontend status screen as well as the mythbackend status webpage. +MythTV is smart enough to determine which directories are on shared +filesystems so it should not count free or used space multiple times if you +have more than one directory on the same filesystem.

    + +

    Migrating to Storage Groups.

    + +

    Migrating to Storage groups is very simple: if you have existing +recordings in a storage directory, then the system will automatically add +that directory to the Default Storage Group. If you then add additional +directories to a storage group, the system is flexible enough to check +all Storage Groups for a file before deciding that it can't be +found, which means that you can use the mv command from the Unix +command line to arrange files however you'd like.

    + +

    Advanced: Algorithm used by the Storage Group

    + +

    This section details the logic of the Storage Group allocation engine.

    +

    The current load-balancing preferences (in order) are: +

      +
    • Local filesystems over remote
    • +
    • Less-busy (less weight) over more-busy (more weight)
    • +
    • More Free Space over Less Free Space
    • +
    +

    +

    The 'business' of a filesystem is determined by weights. The following +weights are added to a filesystem if it is in use for the following things: +

      +
    • recording = +10
    • +
    • playback = +5 (mythfrontend)
    • +
    • comm flagging = +5 (mythcommflag)
    • +
    • transcoding = +5 (mythtranscode)
    • +
    +

    +

    If a recording is due to end within 3 minutes, it is not counted against +the weight of a filesystem. This is done to account for the pre/post-roll +and start-early/end-late settings.

    + +

    9.2 Post-configuration +

    + +

    Run the mythfilldatabase program as directed. The master +backend will obtain guide data for all the video sources you defined during +setup.

    +

    NOTE: If you are using Schedules Direct and watching the output messages +on the console or the log file it is normal to see a "401 Unauthorized" +error followed by a "200 OK" when the connection to Schedules Direct is being +established. +

    +
    +From : Sun Jun 13 05:00:00 2004 To : Mon Jun 14 05:00:00 2004 (UTC)
    +--02:58:01--
    +http://datadirect.webservices.zap2it.com/tvlistings/xtvdService
    +           => -'
    +Resolving datadirect.webservices.zap2it.com... 206.18.98.160
    +Connecting to datadirect.webservices.zap2it.com[206.18.98.160]:80...
    +connected.
    +HTTP request sent, awaiting response... 401 Unauthorized
    +Connecting to datadirect.webservices.zap2it.com[206.18.98.160]:80...
    +connected.
    +HTTP request sent, awaiting response... 200 OK
    +Length: unspecified [text/xml]
    +
    +    [    <=>                              ] 114,125       63.57K/s
    +
    +02:58:03 (63.53 KB/s) - -' saved [114125]
    +
    +Your subscription expires on 08/20/2004 12:00:00 AM
    +Grab complete.  Actual data from Sun Jun 13 05:00:00 2004 to Mon Jun 14
    +00:00:00 2004 (UTC)
    +
    +
    +

    +

    Once mythfilldatabase has finished, start the master server before +continuing. +

    +
    +$ mythbackend
    +
    +
    +

    +

    mythbackend will print information about connections and what it's doing to +the console. If you'd like to see the options that are available for +mythbackend, type mythbackend -h for help.

    +

    As of MythTV v0.21, the available options are: +

    +
    +$ mythbackend --help
    +Valid options are:
    +-h or --help                   List valid command line parameters
    +-l or --logfile filename       Writes STDERR and STDOUT messages to filename
    +-p or --pidfile filename       Write PID of mythbackend to filename
    +-d or --daemon                 Runs mythbackend as a daemon
    +-v or --verbose debug-level    Use '-v help' for level info
    +--printexpire                  List of auto-expire programs
    +--printsched                   Upcoming scheduled programs
    +--testsched                    Test run scheduler (ignore existing schedule)
    +--resched                      Force the scheduler to update
    +--nosched                      Do not perform any scheduling
    +--nojobqueue                   Do not start the JobQueue
    +--noautoexpire                 Do not start the AutoExpire thread
    +--version                      Version information
    +
    +
    +

    +

    Running mythbackend as a daemon and using the logfile option will allow you +to have mythbackend automatically start up during boot. You can follow the +steps outlined in the section called +Automatically starting mythbackend at system boot time for +configuration steps.

    +

    If you enable the -l parameter, you will want to keep your logfiles +rotated (so that they don't fill up a partition). See the section called +Automatically rotating logs for more +information.

    + +

    9.3 Configuring a non-master backend +

    + +

    Ensure that you've granted access to the master MySQL database for remote +backends as discussed in the section titled +Modifying access to the MySQL database for multiple systems and that +you have the correct IP address for the database server in the "Database +Configuration" screen of the mythtv-setup application on this slave backend.

    +

    +

    + + +NOTE: Slave backends must not run a local MySQL +daemon. By default, they will connect to their local daemon rather than the +central database, causing unexpected behavior such as empty "Watch +Recordings" lists and a failure to locate the Video Sources defined on the +master backend. Modify the /usr/local/share/mythtv/mysql.txt file +on all slave backends to ensure that the DBHostName has the address +of the MySQL server. +Caveat: You may make a slave backend the primary MySQL server, or run a +non-MythTV database on a slave backend as long as you have edited the +mysql.txt file on all systems and made it consistent. There can be only one authoritative MySQL database in a MythTV system - +errors such as the one above ensue if backends and frontends have differing +ideas of which MySQL database they should talk to. +
    +

    +

    Make sure that the IP addresses on the General setup screen are accurate. +If the slave backend can't communicate with the master backend due to IP +address misconfiguration then MythTV will not function properly.

    +

    Configuration of a non-master backend follows the same general procedure +as that of the master backend, with the exception that you skip over the +"Video Sources" step. All possible video sources need to be defined on the +master backend system; only the master backend will query a listings +provider to obtain guide data for all the non-master backends.

    +

    +

    + + +NOTE: Do not run mythfilldatabase on a non-master backend. +
    +

    +

    9.4 Configuring and running mythfilldatabase +

    + +

    +

    + + +NOTE: mythfilldatabase might take a while to complete, +depending on any number of factors, most of which you can't control. It's +best to just let the program run to completion. +
    + +mythfilldatabase --help will give a full listing of the options +available.

    +

    mythfilldatabase --manual is another option; the manual option will +allow you to fine tune channel frequencies and specify which channels will +be added to the database.

    +

    mythfilldatabase --file is an option if there isn't an XMLTV grabber +for your country, but you do have an XML formatted listings file +created by some other program.

    +

    mythfilldatabase --xawchannels is an option if you have used +xawtv to fine-tune your channels and would like to import the fine +tuning offsets into MythTV.

    +

    mythfilldatabase --refresh-today will only pull guide data for +today (in case of late-breaking changes to the schedule).

    + + +

    Periodically running mythfilldatabase

    + +

    In order to keep your database filled, mythfilldatabase should be +run once a day.

    +

    To use MythTV's built-in capability, you'll need to run the +mythfrontend Setup option. From the mythfrontend, enter the +Setup>General screen and advance to "Mythfilldatabase", the fourth screen. +Select the checkbox, then complete the options as you see fit. The +mythbackend program will now run mythfilldatabase for you.

    + +

    9.5 Grabbing channel icons for Schedules Direct users +

    + +

    While the Schedules Direct TV listings service has several advantages, it +does not support grabbing logo icons for the stations you receive. However, +there are utilities provided with MythTV which you may use to grab your +initial set of icons and to keep them updated if your lineups change.

    +

    First, you need to generate or obtain an XML file with the information for +your stations.

    +

    If you have XMLTV software installed, there is a perl script in MythTV's +contrib/ directory which will generate this file for you. Run the +command: +

    +
    +$ perl mkiconmap.pl
    +
    +
    +

    +

    You will be asked for your zip code and the service that you use. If there +are no errors, the iconmap.xml file that you need for the next step +will be created.

    +

    If you do not have XMLTV software installed and do not want to install it +for the sake of this minor task, there is a generic +contrib/master_iconmap.xml which you can copy and use but this may +not be as complete as using the specific information for your service.

    +

    Once you have an iconmap.xml file, add the icon information to your +database and grab any new icons with the command: +

    +
    +$ mythfilldatabase --import-icon-map iconmap.xml --update-icon-map
    +
    +
    +

    + +
    +Next +Previous +Contents + + diff --git a/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-singlehtml.html b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-singlehtml.html new file mode 100644 index 0000000..b5b82a2 --- /dev/null +++ b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO-singlehtml.html @@ -0,0 +1,8532 @@ + + + + + Installing and using MythTV + + +

    Installing and using MythTV

    + +

    Robert Kulagowski, +mailto:rkulagow@rocketmail.com

    2008-06-04, v0.21.02 +
    +Initially, installation of MythTV seems like a huge task. There are lots +of dependencies, and various distributions seem to do the same thing +different ways. This document will attempt to give general installation +instructions, as well as including distribution-specific instructions where +necessary. +
    +

    +

    1. First things first.

    + + +

    +

    2. Introduction.

    + +

    +

    3. Checking prerequisites.

    + + +

    +

    4. System Configuration Requirements for Compiling MythTV.

    + + +

    +

    5. Downloading and compiling.

    + + +

    +

    6. MySQL.

    + + +

    +

    7. Configuring Sound.

    + + +

    +

    8. Setting up a remote control.

    + + +

    +

    9. Configuring MythTV.

    + + +

    +

    10. Configuring mythfrontend.

    + + +

    +

    11. Using MythTV.

    + + +

    +

    12. Scheduling Recordings.

    + + +

    +

    13. MythPlugins.

    + +

    +

    14. MythWeb.

    + + +

    +

    15. MythGallery.

    + + +

    +

    16. MythGame.

    + + +

    +

    17. MythMusic.

    + + +

    +

    18. MythWeather.

    + +

    +

    19. MythVideo.

    + +

    +

    20. MythDVD.

    + + +

    +

    21. MythNews.

    + +

    +

    22. Troubleshooting.

    + + +

    +

    23. Miscellaneous.

    + + +

    +

    24. Example Configurations.

    + + + +
    +

    1. First things first.

    + +

    +

    + + +NOTE: Please note that I, Robert Kulagowski, am NOT the +author/programmer of the MythTV application! I can not give you +personalized installation support. If you are having issues installing +MythTV you should examine the archives, or post your question to the +MythTV-users mailing list. If you send me "Does MythTV work with 'X'"? +messages - I will simply instruct you to ask your question on the +mythtv-users mailing list. +
    +

    +

    1.1 What is MythTV? +

    + +

    MythTV is a GPL licensed suite of programs that allow you to build the +mythical home media convergence box on your own using Open Source software +and operating systems. MythTV is known to work on Linux and Mac OS X +(PowerPC and Intel). It does not run on Windows.

    +

    MythTV has a number of capabilities. The television portion allows you to +do the following: +

      +
    • You may pause, fast-forward and rewind live Television.
    • +
    • You may install multiple video capture cards to record more than one +program at a time.
    • +
    • You can have multiple servers (called "backends"), each with multiple +capture cards in them. All scheduling is performed by the Master backend, +which arbitrates which recording will be performed by each device. All +recording requests are managed by the Master backend, so you can schedule a +recording from any client.
    • +
    • You can have multiple clients (called "frontends" in MythTV parlance), +each with a common view of all available programs. Any client can watch any +program that was recorded by any of the servers, assuming that they have the +hardware capabilities to view the content; a low-powered frontend will not +be able to watch HDTV, for example. Clients can be diskless and controlled +entirely by a remote control.
    • +
    • You may use any combination of standard analog capture card, MPEG-2, +MJPEG, DVB, HDTV, USB and firewire capture devices. With appropriate +hardware, MythTV can control set top boxes, often found in digital cable and +satellite TV systems.
    • +
    • Program Guide Data in North America is downloaded from +schedulesdirect.org, a non-profit organization which has licensed data from +Tribune Media Services. This service provides almost two weeks of +scheduling information. Program Guide Data in other countries is obtained +using XMLTV. MythTV uses this information to create a schedule that +maximizes the number of programs that can be recorded if you don't have +enough tuners.
    • +
    • MythTV implements a UPNP server, so a UPNP client should automatically +see content from your MythTV system.
    • +
    + +Other modules in MythTV include: +
      +
    • MythArchive, a tool to create DVDs
    • +
    • MythBrowser, a web browser
    • +
    • MythControls, an application to configure your remote control
    • +
    • MythFlix, a Netflix module
    • +
    • MythGallery, a picture-viewing application
    • +
    • MythGame
    • +
    • MythMusic, a music playing / ripping application which supports MP3 +and FLAC
    • +
    • MythNews, a RSS news grabber
    • +
    • MythPhone, phone and videophone using SIP.
    • +
    • MythVideo, DVD ripper and a media-viewer for content not created within MythTV
    • +
    • MythWeather
    • +
    • MythWeb, which allows you to control your MythTV system using a web +browser. With MythWeb, you can schedule and delete recordings, change +keybindings and more. With proper security, you may even schedule a program +over the Internet and have it immediately acted on by the Master backend.
    • +
    +

    +

    1.2 QuickStart +

    + +

    Custom mini-distributions are available to make it easier to install +MythTV. A mini-distribution removes many of the "general purpose" +workstation / server software packages that may be installed by default if +you use one of the big-name OS packages.

    +

    See +http://mysettopbox.tv if you'd +like to install a custom version of Knoppix optimized for MythTV.

    +

    See +http://www.minimyth.org if you'd like +to install MythTV onto a diskless system.

    +

    See +http://bit.blkbk.com if you'd +like to install MythTV on a Xbox. +NOTE: Site appears unmaintained.

    +

    See +http://wilsonet.com/mythtv/ for instructions tailored to RedHat's +Fedora Core distribution.

    +

    See +http://www.mythbuntu.org if +you'd like to install a customized version of Ubuntu optimized for MythTV.

    +

    There is a MythTV wiki at +http://wiki.mythtv.org.

    +

    If you are installing this version for Schedules Direct support, please see +the +Migrating from DataDirect Labs to Schedules Direct section for additional information.

    + +

    1.3 Upgrading from previous versions +

    + +

    The upgrade from previous versions should be transparent. Any changes to +the database structure should be applied automatically.

    +

    It is strongly recommended that you back up your database before +installing a new version of MythTV.

    +

    See +Saving or Restoring the database for instructions.

    + +

    1.4 How to obtain this document / PDF versions of this document +

    + +

    This HOWTO document is maintained at the primary MythTV website: +http://www.mythtv.org by Robert +Kulagowski +mailto:rkulagow@rocketmail.com.

    +

    This document is available as a single-page HTML document at +http://www.mythtv.org/docs/mythtv-HOWTO-singlehtml.html or as a PDF +at +http://www.mythtv.org/docs/mythtv-HOWTO.pdf.

    +

    This HOWTO is for MythTV v0.21

    +

    Release notes for this version may be found in the MythTV Wiki at +http://www.mythtv.org/wiki/index.php/Release_Notes_-_0.21

    + +

    1.5 Books about MythTV +

    + +

    If you would like to purchase a book specifically about MythTV:

    +

    +

      +
    • Hacking MythTV, ISBN 978-0470037874 by Wilson, Tittel, Wright and Korelc
    • +
    • Practical MythTV: Building a PVR and Media Center PC, ISBN 978-1590597798 by Smith and Still
    • +
    +

    + +

    1.6 Document conventions +

    + +

    The following conventions are used throughout this document.
    +boldface - used for program names.
    +typewriter - used for program paths.
    +emphasis - Pay attention here.

    +

    +

    + + +Pay more attention. +
    +

    +

    +

    + + +Ignore at your own peril. +
    +

    +

    +

    + + +Feature that has been added to SVN (subversion, a revision control system) +but is not available in the current release. +
    +

    + +

    1.7 Mailing lists / getting help +

    + +

    It's recommended that you join the user list at +http://www.mythtv.org/mailman/listinfo/mythtv-users. The developer +list is at +http://mythtv.org/cgi-bin/mailman/listinfo/mythtv-dev. Please keep +the developer list strictly for development-related issues.

    +

    Searchable archives for the lists are available at +http://www.gossamer-threads.com/lists/mythtv/.

    + +

    1.8 IRC +

    + +

    There are two IRC channels dedicated to MythTV which can be found on +irc.freenode.net +

      +
    • mythtv
    • +
    • mythtv-users
    • +
    +

    +

    The mythtv channel is where the developers discuss code. It is +not a user-support channel. Please don't ask non-development +related questions there.

    +

    +

    + + +Really. Even if there's no one in the mythtv-users IRC group or everyone +seems to be ignoring you. +
    +

    + +

    1.9 Bug database +

    + +

    If you feel you need to contribute to a bug database, use the MythTV bug +ticketing system at +http://svn.mythtv.org/trac.

    +

    Good entries will contain the following: +

      +
    1. Qt version
    2. +
    3. Linux distribution
    4. +
    5. gcc version
    6. +
    7. the last entry in config.log to detail how you compiled
    8. +
    9. MythTV version numbers (e.g.from mythfrontend --version)
    10. +
    11. Hardware
    12. +
    13. How you are able to reproduce the bug
    14. +
    +

    +

    See the instructions on how to debug in +Section 22.

    +

    The bug database is not a chat room, so restrict your entries to what is +relevant. It's also not a repository of feature requests; a feature request +without an accompanying patch file to implement that feature will be quickly +closed. There is a feature wishlist on the wiki at +http://www.mythtv.org/wiki/index.php/Feature_Wishlist. There is no +guarantee that anything on the wishlist will ever get code written to +implement it.

    +

    If a developer closes out your bug, it's likely you didn't provide enough +information. Don't re-open a bug without providing additional information.

    + +

    1.10 Contributing to this document +

    + +

    Contributions to the HOWTO are welcome, especially if you find a +grammatical or spelling error, or if the wording of something is just plain +confusing.

    +

    If you'd like to make a new contribution, create a ticket at +http://svn.mythtv.org/trac and +click "New Ticket". The type should be set to "patch" and the owner set to +"rkulagow" to ensure that I see your contribution.

    +

    Please send it as either SGML or as plain text. NO HTML. The +source used to create the HOWTO is in SGML / Linuxdoc. Do not be afraid of +SGML! A quick look at the source of this HOWTO will show that it is not +difficult, because there aren't that many tags to worry about, so at least +try to submit as SGML. See the Linuxdoc HOWTO at +http://www.tldp.org/HOWTO/Howtos-with-LinuxDoc.html for information +on the linuxdoc format itself, or look at the mythtv-HOWTO.sgml +file as an example.

    +

    To create the actual patch, run diff -u origfilename newfile > +doc.patch and attach your contribution to the trac ticket.

    + +

    2. Introduction.

    + +

    This HOWTO document will focus on manually building MythTV in a North +American environment. If you have installation instructions for a different +region or Linux distribution, please send them to the author so that it can +be included in other versions of this document.

    + +

    3. Checking prerequisites.

    + +

    You must ensure that any firewalls (either hardware, or a software +firewall installed by your distribution) will not block access to the ports +that will be used by the MythTV clients and servers on the "inside" LAN. +The ports for MySQL (TCP port 3306) and mythbackend (TCP ports 6543 and +6544) must be open. It is strongly recommended that you do +not expose the MythTV and MySQL ports to the Internet or your +"Outside" LAN.

    + +

    3.1 Hardware +

    + +

    Hardware selection is a complex topic, one this HOWTO will only discuss +briefly and in general terms. The following subsections offer some general +guidance but stop short of offering specific recommendations.

    +

    For a good MythTV experience, you must understand that MythTV exercises your +hardware more than a typical desktop. Encoder cards generate DMA across the +PCI bus. The CPU is busy encoding / decoding video. Hard drives are +constantly reading and writing data. Building a MythTV system on older / +"spare" hardware may be an exercise in frustration and can waste many hours +of valuable time.

    +

    For more detail about actual configurations that others have used, Mark +Cooper has setup a hardware database at +http://pvrhw.goldfish.org/. The +website will let you browse what other users have reported as their hardware +configuration, and how happy they are with the results.

    +

    If you have specific questions about the suitability of specific hardware +choices, you can consult the archives of the mythtv-users mailing list at +http://www.gossamer-threads.com/lists/mythtv/ or +post a question to the list.

    +

    CPU Type and Speed

    + +

    Selection of CPU type and speed is one of the trickiest elements of +hardware selection, mainly because there are so many tradeoffs which can be +made. For example, if you have plenty of CPU, you can use higher bitrates +or capture sizes, etc.

    +

    MythTV has two modes of operation. First, it can function as a software +video encoder, which means that it uses a fairly generic "dumb" video +capture card to get frames of video, encodes them using the CPU on your +motherboard and writes them to disk. High-end video capture cards and +devices like the TiVo and ReplayTV have dedicated encoder chips which use +specialized hardware to convert the video stream to the MPEG-2 format +without using the motherboard CPU. The main CPU has the responsibility of +running the Operating System and reading and writing the encoded frames to +the disk. These tasks have fairly low CPU requirements compared to encoding +video, which is why a device like a Series 1 TiVo can run with only 16MB of +RAM and a 54MHz CPU.

    +

    There are many variables that go into the question: "How fast a CPU do I +need to run MythTV"? Obviously, the faster your CPU, the better your +experience will be with MythTV. If you are using the software MPEG-4 +encoder and performing the "Watch TV" function, where the CPU is both +encoding and decoding video simultaneously to allow Pause, Fast Forward and +Rewind functions for live TV requires more CPU then just encoding or +decoding. MythTV also supports multiple encoder cards in a single PC, +thereby increasing the CPU requirements if you plan on simultaneously +encoding multiple programs. As a general guideline, plan on 1GHz per +encoder if you are doing software-based encoding, less if you are using a +hardware-based encoder.

    +

    Here are a few data points: +

      +
    • A PIII/733MHz system can encode one video stream using the MPEG-4 +codec using 480x480 capture resolution. This does not allow for live TV +watching, but does allow for encoding video and then watching it later.
    • +
    • A developer states that his AMD1800+ system can almost +encode two MPEG-4 video streams and watch one program simultaneously.
    • +
    • A PIII/800MHz system with 512MB RAM can encode one video +stream using the RTjpeg codec with 480x480 capture resolution and play it back +simultaneously, thereby allowing live TV watching.
    • +
    • A dual Celeron/450MHz is able to view a 480x480 MPEG-4/3300kbps file +created on a different system with 30% CPU usage.
    • +
    • A P4 2.4GHz machine can encode two 3300Kbps 480x480 MPEG-4 files and +simultaneously serve content to a remote frontend.
    • +
    +

    +

    The second mode of operation is where MythTV is paired with a hardware-based +video encoder, such as a Matrox G200 or a Hauppauge +WinTV-PVR-150/250/350/500. In this mode, because the video encoding is +being done by a dedicated video processor, the host CPU requirements are +quite low. See the +Video Capture Device section for details.

    +

    The price differential between a frame grabber and a card that implements +hardware MPEG-2 encoding, such as the Hauppauge PVR-x50 series, is now less +than $30 US. Primary development in MythTV has transitioned to supporting +MPEG-2 capture devices and HDTV, so if given the option, go with the +hardware MPEG-2 encoder.

    +

    If you have a Via M10000 series or a Hauppauge PVR-350, MythTV can use the +hardware-based video decoder for playback, which further reduces CPU +requirements.

    + +

    Memory

    + +

    A MythTV host that is both a backend and a frontend and using software +encoding with a single capture card should run adequately in 256MB of RAM. +Additional RAM above 256MB will not necessarily increase performance, but +may be useful if you are running multiple encoders.

    + +

    Hard Disk(s)

    + +

    Encoded video takes up a lot of hard disk space. The exact amount depends +on the encoding scheme, the size of the raw images and the frames per +second, but typical values for MythTV range from 700 megabytes/hour for +MPEG-4, 2 GB/hour for MPEG-2 and RTjpeg and 7 GB/hour for ATSC HDTV.

    +

    +

    + + +NOTE: You must use DMA for hard drive access to prevent +choppy or jittery video. Not all distributions enable DMA at boot time. See the Troubleshooting Section for +instructions on how to do this. +
    +

    +

    Writing video to disk is sensitive to timing issues; RTjpeg requires less +CPU with the tradeoff being larger files and needing to write to the disk +faster. MPEG-4 requires more CPU, but the files are smaller. At the +default resolution, MPEG-2 creates the largest files of all with almost no +CPU impact.

    +

    See the Troubleshooting +section for more +information.

    + +

    Filesystems

    + +

    MythTV creates large files, many in excess of 4GB. You must +use a 64 or 128 bit filesystem. These will allow you to create large files. +Filesystems known to have problems with large files are FAT (all versions), +and ReiserFS (versions 3 and 4).

    +

    Because MythTV creates very large files, a filesystem that does well at +deleting large files is important. Numerous benchmarks show that XFS and +JFS do very well at this task. You are strongly encouraged to +consider one of these for your MythTV filesystem. JFS is the absolute best +at deletion, so you may want to try it if XFS gives you problems. MythTV +.21 incorporates a "slow delete" feature, which progressively shrinks +the file rather than attempting to delete it all at once, so if you're more +comfortable with a filesystem such as ext3 (whose delete performance for +large files isn't that good) you may use it rather than one of the +known-good high-performance file systems. There are other ramifications to +using XFS and JFS - neither offer the opportunity to shrink a filesystem; +they may only be expanded.

    +

    +

    + + +NOTE: You must not use ReiserFS v3 for +your recordings. You will get corrupted recordings if you do. +
    +

    +

    Because of the size of the MythTV files, it may be useful to plan for future +expansion right from the beginning. If your case and power supply have the +capacity for additional hard drives, read through the +LVM and +Advanced Partition Formatting sections for some pointers.

    +

    +

    +

    Video Capture Device

    + +

    In order to capture video, MythTV will need one or more video capture +devices with Linux drivers. There are a number of classes of hardware +available for capturing video.

    +

    Frame Grabbers.

    + +

    This class of card is the simplest and is usually the cheapest. There is no +on-board encoding of the analog video; hardware known as a Digital-Analog +Converter (DAC) takes the video and presents it to the computer in an +essentially raw digital form.

    +

    For a list of video capture cards known to work with Linux, please see +/usr/src/linux/Documentation/video4linux/bttv for a partial +listing; even if your specific card is not listed, it may be that the vendor +is actually using a standard reference design and placing their own name on +it. See the video4linux mailing list ( +https://listman.redhat.com/mailman/listinfo/video4linux-list) for +more information and for specific hardware questions.

    +

    The most common inexpensive cards available use the Bt848, Bt878 or CX2388x +series of video capture chips; examples are the "Hauppauge WinTV Go" card and +the "AverTV Desktop PVR" card, both of which use the bttv kernel module.

    +

    +


    +
    +NOTE:  The ATI TV Wonder series and the ATI All-in-Wonder series of cards
    +are not the same.  The All-in-Wonder cards will not work with MythTV.
    +
    +
    +

    +

    +

    + + +
    + +
    + + +NOTE: The ATI All-in-Wonder cards (which are not the same +as the ATI TV Wonder, TV Wonder VE or TV Wonder Pro) will not work +as a MythTV capture device because the GATOS +http://gatos.sourceforge.net +drivers that are available provide only a limited subset of the V4L API. The TV Wonder series of cards are supported by the Bt8x8 Video4Linux driver. +
    +

    +

    After you have installed a suitable capture device, you can check that +the kernel sees it with lspci. Look for an entry labeled "Multimedia +video controller". To get more detailed information about the card, use +lspci -v or lspci -vv. Ensure that your system is loading +the bttv modules by typing: +

    +
    +# lsmod |grep bttv
    +
    +
    +

    +

    You want to see the bttv module listed.

    +

    Hardware MPEG-2 encoders.

    + +

    While inexpensive video-capture cards simply capture raw frames, leaving +encoding to software, some higher-end cards incorporate hardware-based +encoding. Using either a G200 MJPEG encoder card, or a MPEG-2 encoder card +supported by the IvyTV project +http://ivtvdriver.org such as the Hauppauge +PVR-150/250/350/500, Avermedia M179, Hauppauge "Freestyle" or Yuan M600 +cards will allow you to use dedicated hardware encoders rather than your +CPU. (The PVR-350 can simultaneously be used as an output device.) Using the +on-board MPEG-2 encoder greatly reduces the CPU requirements for +encoding.

    +

    The ivtv driver was incorporated into the Linux kernel starting at v2.6.22.

    +

    There is a Beta driver for the HVR-1600 card at +http://www.ivtvdriver.org/index.php/Cx18

    +

    NOTE: Motherboards with the Via chipset are notoriously bad with +DMA and have caused numerous issues with ivtv, including hard locks. See +the ivtv website +http://ivtvdriver.org +for the latest information on what works and what doesn't.

    +

    Here are some data points for encoding: +

      +
    • A Celeron 450 uses 2% CPU for encoding a 480x480 16Mbps MPEG-2 stream.
    • +
    +

    +

    Here are some data points for decoding:

    +

    +

      +
    • An Athlon 1800XP can decode a 720x480 8Mbps MPEG-2 file using 10% CPU
    • +
    • An Athlon 1GHz can decode a 720x480 16Mbps MPEG-2 file using 30-50% +CPU, can decode a 480x480 16Mbps MPEG-2 using 30% CPU and approximately 30% +for Live TV at 416x480.
    • +
    • A P3-550 can decode a 480x480 16Mbps MPEG-2 file with 55% CPU.
    • +
    • A Celeron 450 (no SSE) can decode a 480x480 16Mbps MPEG-2 file with +80% CPU.
    • +
    +

    + +

    DVB capture cards.

    + +

    DVB is a video standard primarily found in Europe (where it comes in +DVB-C, DVB-T and DVB-S varieties for Cable, Terrestrial and Satellite) and +is also used as the programming interface for HDTV capture cards in Linux. +To see if your DVB card is supported, see the list of cards in the +"Supported Hardware" section of the DVB Wiki at +http://www.linuxtv.org/wiki/index.php/Main_Page for more +information.

    +

    In the United States, you may use a card such as the TwinHan to obtain +unencrypted Free-To-Air satellite channels. See +http://www.lyngsat.com/ for the types +of content which is available.

    + +

    HDTV.

    + +

    There are a number of HDTV cards with Linux drivers which are known to +operate in the United States; a complete list of cards with DVB drivers can +be found at +http://www.linuxtv.org/wiki/index.php/ATSC_Devices Some cards +support capture of unencrypted digital cable TV (utilizing QAM256), others +will only work with Over The Air (aka "OTA") signals captured with an +antenna (with 8VSB).

    +

    Cards that have been reported to work include: +

      +
    • pcHDTV HD-2000, Air2PC PCI rev 1-3 (8VSB only)
    • +
    • SiliconDust HDHomeRun (8VSB, QAM256)
    • +
    • pcHDTV HD-3000/5500 (8VSB, QAM256)
    • +
    • Air2PC HD-5000 (8VSB, QAM256)
    • +
    • DViCO Fusion HDTV Lite/Gold 5 (8VSB, QAM256)
    • +
    +

    +

    NOTE: There are no known consumer-level capture devices which will +allow you to capture the HDTV output (DVI, HDMI, VGA, YPbPr / Component) +from a set-top box commonly found with digital cable systems or satellite +systems. None of the capture devices listed above +perform any encoding; they merely allow your computer to save a copy of a +HDTV stream which has already been converted to MPEG-2 at the broadcast +facility.

    +

    NOTE:: All of the cards listed above (except for the HD-2000 and +HDHomeRun) should be configured as DVB cards. The HD-2000 can be configured +as a pcHDTV card if you use the V4L drivers from +http://www.pchdtv.com and use Linux +kernel 2.6.9 or earlier. With kernel 2.6.10 and higher it must be +configured as a DVB card, but you lose access to the second antenna input in +ATSC mode. The HDHomeRun should be configured as two HDHomeRun cards, one +for each tuner.

    +

    To playback HDTV content, plan on a powerful CPU. "How powerful?" depends +on a number of factors, such as the capture resolution, whether the video is +progressive or interlaced, and whether your display card has hardware-assist +support for Linux.

    +

    The Simple Answer: Once you are in the 3.2 Ghz P4-class of CPU you should have +no issues with viewing HDTV.

    +

    The Complicated Answer:

    +

    For 720p content (1280x720), a 2.4GHz P4 should be sufficient.

    +

    For 1920x1080i->1920x1080p with the better deinterlacing methods +done in real time a 2.4GHz CPU is taxed, but should work if you use "Bob and +Weave" deinterlacing, or if you have an NVIDIA card with MPEG-2 hardware +acceleration. If you enable the hardware acceleration, you may be able to +use a 1.8GHz processor.

    + +

    Firewire.

    + +

    You may use the Firewire output of the Motorola DCT6200 or the SA3250. +If your provider uses 5C encryption on a particular channel, you won't be +able to get any content.

    + +

    DBoxII or other devices running Neutrino

    + +

    You may use the Ethernet port of an DBoxII or a similar device to capture +MPEG2. Your set top box has to be running the Neutrino GUI.

    + +

    USB Capture Devices.

    + +

    The Plextor ConvertX PVR devices are supported through Linux drivers +available from +http://www.plextor.com/english/support/LinuxSDK.htm. MythTV uses the +Plextor to capture hardware encoded MPEG-4, so the host CPU requirements are low.

    +

    Hauppauge WinTV-PVR-USB2 (driver available at +http://www.isely.net/pvrusb2/) +emulates a PVR-x50 card.

    + +

    IP Recorder (RTSP, RTS, UDP)

    + +

    MPEG-2, MPEG-4 and H.264 internet TS stream recording is supported using +the IPTV recorder in MythTV. This recorder expects the channels to be supplied +as a m3u playlist. If your DSL/Fiber provider supplies television service, +but does not provide a m3u playlist for the channels, you can construct one +for your own use. You do not need to download it from the same server as the +streams themselves, and can also read it from a file if this is more convenient.

    +

    NOTE: Some DSL providers only allow you to use one recorder at a +time, so you may need to limit yourself to one recorder in MythTV and turn +off any set top box the cable provider sold or rented to you with your +service. This limitation is independent of the bandwidth you have purchased.

    + +

    Hardware known NOT to work and other issues

    + +

    +

      +
    • Hauppauge WinTV-D or -HD (no driver)
    • +
    • Hauppauge WinTV-USB series
    • +
    • Hauppauge WinTV-PVR-usb (model 602), or WinTV-PVR-PCI (model 880) cards (no driver - this is not the PVR-250/350 +series of cards supported by the IvyTV driver)
    • +
    • ATI All-in-Wonder series
    • +
    +

    + +

    Sound card

    + +

    The system needs a sound card or an on-board equivalent on the motherboard +to play back and in most cases, to record sound. Any sound card that can be +operated by the ALSA (Advanced Linux Sound Architecture) kernel modules will +work with MythTV. However, some cards and drivers will provide better +quality or compatibility than others. In particular, many audio +devices included on motherboards can be problematic.

    +

    The usual practice for capturing the audio associated with the video is to +run a cable from an audio output on the video capture card to the Line input +on a sound card. However, some video capture cards provide on-board audio +capabilities that work with the kernel btaudio module instead, +thereby eliminating the need for a cable. This is useful if you will be +using multiple capture cards in a single chassis, since each capture card +will not need its own sound card. Note that a separate sound card is still +required for playback when using btaudio, and that often the audio +recorded in this way will be mono only. See the +btaudio section for more information.

    +

    +

    + + +NOTE: Analog video capture cards are the only ones which +require a soundcard for capturing audio. DVB, HDTV, and other hardware +encoder cards all provide a combined audio / video stream. +
    +

    +

    +

    + + +NOTE: Plugging a Line-level device into the Mic input is +not recommended. Line-level devices have higher voltages and can damage the +sound card. In addition, even if it doesn't break your card, you will be +getting Mono sound. See the Linux MP3 HOWTO at +http://www.tldp.org/HOWTO/MP3-HOWTO.html for additional information. +
    +

    + +

    Video Display Card

    + +

    MythTV will work with just about any video card. However, it is highly +recommended that you use a card which supports XVideo (XV) extensions. If +your card does not support XV, color conversion and scaling will be +performed by your CPU rather than the video card. This is very CPU +and memory intensive and will often result in dropped frames and a +corresponding degradation of quality. Check the X documentation +for details if you are uncertain about your preferred card. You may +also run xvinfo; look for your video card to be listed as one +of the adapters.

    + +

    If you want to use MythTV with a standard television, you will need a +physical connection from your video card to your TV set, which can either be +a TV-out port on the card itself or an external adapter that converts the +VGA signal to an appropriate video signal. "Appropriate" depends on a number +of factors, such as video standard (NTSC vs. PAL), the type of input +connection (Composite vs. SVideo), etc.

    +

    Note that with some video cards and X drivers, XVideo extensions are +only supported on the VGA output, and not on the TV output.

    + +

    Cards with TV-out

    + +

    The next section deals with a number of cards that are known to have +TV-out ports. The list is unlikely to be complete, so if you know of +others, please post a message to the mythtv-users mailing list so the +information can be included in future versions of the HOWTO. The list is +organized by manufacturer.

    +

    Reports here are based on what users of the cards have posted on the +mythtv-users mailing list, so if you need configuration details, please +search the archives at +http://www.gossamer-threads.com/lists/mythtv/ using +the card name in your search string.

    + +

    ATI

    + +

    ATI makes many cards with TV-out capability, but only offers Linux +drivers for Radeon 8500 and above cards. See the Drivers and Software +section of +http://www.ati.com for the +driver and additional information.

    +

    The enhanced ati.2 X driver created by the GATOS +http://gatos.sourceforge.net +project offers some support for TV-out on other ATI cards, but only in its +"experimental" version, available through CVS. There have been reports from +people who say they have made this driver work with one or another ATI card. +For example, Bruce Markey +mailto:bjm@lvcm.com writes (on the +mythtv-users mailing list): "I got this to work. You can quote me on that. +I've used TV-out on several models of ATI cards both All-In-Wonder and +regular cards with TV-out." See the "Adventurous Setup" section of +http://gatos.sourceforge.net/watching_tv.php for details. Also see +http://www.retinalburn.net/linux/tvout.html for more information.

    + +

    NVIDIA

    + +

    Some NVIDIA cards with TV-out can be run using the standard nv driver in +X, combined with the userspace application nvtv to control the TV-out +port. See +http://sourceforge.net/projects/nv-tv-out/ for details. Recent +versions of the NVIDIA driver have better support for overscan and other +features useful with TV-Out, so the nvtv application may not be +required.

    +

    Some NVIDIA cards can be run with a proprietary NVIDIA X driver made +available by NVIDIA. See +http://www.nvidia.com/object/unix.html for more information.

    +

    NOTE: It's strongly recommended that you use the proprietary +NVIDIA drivers; they have excellent support for XvMC and ship with a good +configuration utility. XvMC provides MPEG-2 hardware acceleration, which is +important if you want to display HDTV.

    + +

    Hauppauge PVR-350

    + +

    MythTV supports the TV-out and MPEG-2 decoder functions in the IvyTV +driver.

    +

    The PVR-350 is unique amongst the Hauppauge PVR-x50 cards in that it also +supports audio output, but you need to connect that audio output to +something. There are two courses of action you may take: +

      +
    1. Take the audio output from the PVR-350 and plug it into an input on a +sound card on your machine. You may then use MythTV's internal audio +controls.
    2. +
    3. Take the audio output from the PVR-350 and connect it directly to your +television / audio system. You must indicate that you are using external +audio control on the PVR-350 setup page.
    4. +
    +

    + +

    Other Options

    + +

    Some devices with on-board TV-out capability, such as Xboxes converted to +Linux and some laptops can be used as MythTV frontends to display on a +television screen. Please consult the mythtv-users mailing list for messages +that report the details of these special arrangements.

    + +

    External Adapters

    + +

    External adapters convert standard VGA output to a form suitable for +display on a television. The output format varies by region, since +different countries have different TV standards. People on the mythtv-users +list have mentioned these adapters:

    +

    +

      +
    • AITech Web Cable Plus, powered by external transformer or takes power +from PS/2 keyboard connector, support resolutions up to 1024x768, outputs +composite and SVideo, provides position adjustment.
    • +
    • Averkey lite, powered by a USB port, has Composite, SVideo, YPbPr +outputs; pan, brightness, overscan/underscan controls; supports up to +1024x768 outputs; and supports PAL and NTSC.
    • +
    • ADS TV Elite XGA
    • +
    • AverKey iMicro (comments are generally favorable)
    • +
    • AITech Web Cable (comments are generally unfavorable, different than +the "Plus" version above)
    • +
    • TVIEW Gold (mentioned once, favorably)
    • +
    +

    + +

    3.2 Software +

    + +

    There are a few ways of installing programs on Linux systems; you can +either use a pre-compiled package, or install from a tarball after +satisfying any prerequisites.

    +

    +

    + + +NOTE: you must have the MySQL database software installed on a +system to store the master database. This does not necessarily mean that +MySQL must run on one of the MythTV boxes. The minimum MySQL version is 5.0. +
    +

    + +

    Pre-compiled packages

    + +

    A number of people have created pre-compiled packages for MythTV that may +make your installation easier.

    +

    +

    + + +BIG FAT WARNING: This HOWTO assumes that you have not +installed MythTV from a package. All example command lines and file +locations are based on the MythTV tarball defaults. Some packagers have +modified the filenames, binaries and file locations to match what is +commonly found in that distribution. Any issues with MythTV installed via a +pre-compiled package MUST be raised with the packager. +
    +

    +

    If you use any of the pre-compiled packages you may not need to perform any +additional configuration steps in this HOWTO. The next logical step is +configuring MySQL, which you may or may not have to +perform. See your package documentation.

    + +

    Red Hat Linux / Fedora Core

    + +

    The definitive documentation on installing MythTV on Red Hat Linux / +Fedora Core can be found in Jarod Wilson's ( +mailto:jcw@wilsonet.com) HOWTO at +http://wilsonet.com/mythtv/ Just +like 3rd-party packages, any 3rd-party documentation problems should be +brought up with the 3rd-parties (maintainer, lists, bugzillas etc.). The +installation instructions which follow should be used as a guide only; refer +to Jarod's guide.

    +

    Red Hat Linux and Fedora Core packages for MythTV and all of its add-on +modules and some themes have been packaged by +mailto:Axel.Thimm@ATrpms.net and +are available at +http://ATrpms.net/topic/multimedia/. All of the prerequisites for +MythTV (such as XMLTV) are available as RPM packages. If you have problems +with the RPMs, please contact the ATrpms lists at +http://lists.ATrpms.net/ or file a +bug against +http://bugzilla.ATrpms.net/.

    +

    Given the large number of dependent RPMs you are advised to use tools like +apt or yum for automatic retrieval and installation of the required RPMs. +( +http://ATrpms.net/install.html) In this case a +special meta-package called mythtv-suite will allow you to install all of +MythTV and its add-ons, plus all dependencies.

    +

    If you don't have apt or yum on your machine, download and +install the atrpms-kickstart package from +http://ATrpms.net/name/atrpms-kickstart/. +Install the package with: +

    +
    +# rpm -Uvh atrpms-kickstart*
    +
    +
    + +Then run: +
    +
    +# apt-get update
    +# apt-get dist-upgrade
    +# apt-get update
    +
    +
    + +And finally: +
    +
    +# apt-get install mythtv-suite
    +
    +
    + +These steps however, do NOT perform the installation of any drivers required +for ALSA, capture cards, lirc kernel modules, etc., nor do +they set up your MythTV database. Check +http://ATrpms.net/topic/multimedia/ for the drivers you +need.

    + +

    Mandriva

    + +

    Thac has created RPMs for MythTV for Mandriva which may +be obtained from +http://rpm.nyvalls.se/ If you have problems with the RPMs, please +send him email directly at +thac@nyvalls.se.

    +

    Debian

    + +

    Debian packages for MythTV and most of its add-on modules are maintained +by Christian Marillat +mailto:marillat@free.fr and are available at +http://www.debian-multimedia.org/. +Installation instructions can be found on those pages as well. All of the +prerequisites for MythTV are available as Debian packages, most of them from +the official Debian archive.

    +

    If you have followed the instructions on the above page you should have added +

    +
    +deb-src http://www.debian-multimedia.org sid main
    +
    +
    +

    +

    to your /etc/apt/sources.list file. Running apt-get update and then +executing apt-get build-dep mythtv should install all the +pre-requisites required to compile MythTV.

    +

    +

    + + +NOTE: Due to the requirement for Qt 3.3+, there are no packages for +Debian woody/stable. +
    +

    + +

    The Debian packages are configured such that MythTV programs should be +run as the mythtv user, which is automatically created during +installation. This user has access to write new recordings to disk in the +default directory, read and write the database, access the audio and video +devices, and everything else that MythTV needs to do.

    + +

    See /usr/share/doc/packagename/README.Debian for more +information, including copies of the MythTV documentation. The +mythtv-doc package contains a copy of this HOWTO in +/usr/share/doc/mythtv-doc.

    +

    Manual installation

    + +

    You may use the graphical tools that come with your distribution, or you +can use command-line utilities. Either system will get the job done, and it +all depends on your comfort level with Linux.

    +

    In order to compile MythTV, we need to make sure that the software it needs +is installed. This list includes mysql, gcc, +freetype2-devel, xorg-xserver-devel, qt-devel and +lame. If you're going to use a remote control with MythTV, you're +going to need the cdialog package in order to compile +lircd if your distribution doesn't have a pre-packaged +lirc. If you are using XMLTV as a grabber, you will need +perl.

    +

    +


    +
    +NOTE:  Qt v3.3 or higher is required.
    +
    +NOTE:  MythTV DOES NOT WORK with Qt4.
    +
    +NOTE:  If you are going to be using RPMs to install various
    +components, you should be aware that not all packages include the necessary
    +headers for compiling.  If you're having trouble compiling, ensure
    +that you've installed the -devel version of a prerequisite.
    +
    +
    +

    + +

    Command-line installation

    + +

    This section details the various methods for installing prerequisites +from the command line.

    + +

    Mandriva

    + +

    NOTE: The following instructions should be considered out of +date as of 2006-09-10. If updated instructions are not submitted by the +release of v0.21 of MythTV they will be removed.

    +

    urpmi is the simplest tool for installation of packages from the +command line, but properly configuring it can be difficult. The +following website +http://easyurpmi.zarb.org/ will allow you to choose +a mirror site and then present the command-line configuration text for that +mirror. You will most likely need to add a "Contrib" mirror to your setup. +If you add a site from the "Penguin Liberation Front", you will be able to +load the lame library without compiling from source.

    +

    Open a shell, and execute the following. You may get +asked a number of questions regarding dependencies. It's best to answer +"YES". +

    +
    +$ su
    +# urpmi mysql gcc gcc-c++ freetype2-devel cdialog alsa-utils
    +# urpmi XFree86-devel perl
    +# urpmi libqt3-devel libMesaGLU1-devel
    +
    +
    +

    +

    +


    +
    +NOTE for Mandriva 9.1+ users: execute the following command.
    +
    +# urpmi libqt3-mysql
    +
    +
    + +However, you might get this when you execute the commands above: +
    +
    +everything already installed
    +
    +
    +

    +

    In that case, you're ready to move to the next +section. Once you have completed installing the pre-requisites, +exit out of the shell and start a new one to ensure that any environment +variables setup by the installation have a chance to take effect.

    + +

    Gentoo.

    + +

    NOTE: MythTV does not run on Qt4. +If Qt has not been installed on your system: Edit +/etc/make.conf and locate the "USE" variable. If the line is +commented out, remove the comment. The line should have at least: +

    +
    +USE="mysql alsa"
    +
    +
    + +Next you need to build Qt. If you don't plan on using the ebuilds as +described in the Gentoo section then you also need to install lame. +
    +
    +# emerge lame mysql qt
    +
    +
    +

    +

    If you have already installed Qt: you will need to rebuild because the +default installation doesn't include MySQL support, a requirement for MythTV. +To enable SQL support, add "mysql" to your USE variable in +/etc/make.conf and rebuild Qt by running +

    +
    +# emerge qt
    +
    +
    +

    +

    All the necessary files will be downloaded and built. Even on a fast machine +this may take a lot of time if you need to do a full Qt build.

    + +

    Debian.

    + +

    Build-dependencies for MythTV can be satisfied by adding the following to +your /etc/apt/sources.list +

    +
    +# Christian Marillat's packages (mplayer, lame)
    +deb http://www.debian-multimedia.org sid main
    +deb-src http://www.debian-multimedia.org sid main
    +
    +
    + +and executing: +
    +
    +# apt-get build-dep mythtv
    +# apt-get source mythtv --compile
    +
    +
    +

    + +

    4. System Configuration Requirements for Compiling MythTV.

    + +

    Before you compile MythTV from the current source tarball or from +subversion, you may need to modify your system configuration in a +few ways.

    +

    In general, if you install MythTV from pre-packaged binaries for your Linux +distribution/version, you don't need to be too concerned about the issues in +this section of the HOWTO - the install script for the packages should take +care of them. However, this section is still recommended reading which may +help if the packager skipped a step in their packaging.

    + +

    4.1 Software requirements for compiling MythTV +

    + +

    General requirements

    + +

    MythTV is written in C++ and requires a fairly complete, but standard, +compilation environment, including a recent g++ compiler, make, and +appropriate header files for shared libraries. Any standard Linux +distribution should be able to install a suitable compilation environment +from its packaging system. Section 3.2 of this HOWTO provides some details +of how to install the required environment for many distributions.

    +

    Subsequent sections of this chapter address the few oddities that you may +have to adjust by hand before you compile MythTV.

    +

    The reference compilation system for MythTV is Ubuntu.

    + +

    4.2 Shared-Library requirements for MythTV +

    + +

    Modifying /etc/ld.so.conf

    + +

    The runtime manager for shared libraries, /lib/ld.so, gets +information about the locations and contents of shared libraries from +/etc/ld.so.cache, a file created by ldconfig from +information in /etc/ld.so.conf. Because MythTV installs some +shared libraries in /usr/local/lib, that directory needs to be +added to the list of directories for ld.so to search when doing +runtime linking of programs, if it is not already there. +You do this, as root, by editing /etc/ld.so.conf, then +running ldconfig. There are many ways to do this; one that +works is to enter this series of commands:

    +

    +

    +
    +$ su -
    +# echo /usr/local/lib >> /etc/ld.so.conf
    +# /sbin/ldconfig
    +# exit
    +$
    +
    +
    +

    +

    4.3 Environment variable requirements for MythTV +

    + +

    General requirements

    + +

    QT libraries and binaries

    + +

    The compiler needs to be able to locate QT binaries and libraries in +order to compile MythTV. QTDIR needs to be set and the directory holding the +QT binaries needs to be added to your PATH. Your distribution may already +be making these changes as a part of the installation of the software +prerequisites detailed earlier.

    +

    One way to do this is as follows: +

    +

    Open a shell and execute the following: +

    +
    +$ echo $PATH
    +/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/usr/games:/usr/lib/qt3/bin:/home/mythtv/bin:/usr/lib/qt3/bin
    +$ echo $QTDIR
    +/usr/lib/qt3
    +$ which qmake
    +/usr/lib/qt3/bin/qmake
    +
    +
    +

    +

    For Mandriva, you should see a value like /usr/lib/qt3 for +QTDIR and /usr/lib/qt3/bin should be in $PATH.

    +

    For Gentoo, you should see a value like /usr/qt/3 for QTDIR +and /usr/qt/3/bin should be in $PATH.

    +

    If you don't, do not proceed past this step until you have resolved this +error. You may need to manually specify the QTDIR and PATH at the shell +prompt before compiling.

    +

    Also, check that there has been a link created in +/usr/lib/qt3/mkspecs (/usr/share/qt3/mkspecs for Debian) +called default. If not, you'll get errors during the compile. See +the Troubleshooting Section for more information.

    +

    Distribution-Specific Notes

    + +

    Mandriva

    + +

    The following instructions work for Mandriva using +bash as the shell, and may be applicable for a distribution which +uses /etc/profile.d.

    +

    +

    + + +NOTE: Mandriva 10 installs a /etc/profile.d/qtdir3.sh +file, but it doesn't include the addition of the PATH variable. If you're +running Mandriva 10, don't create a mythtv.sh file as detailed +below; edit the qtdir3.sh file and add the PATH statement within +the if / fi block. +
    + +As root, create the following file in /etc/profile.d The example +filename is "mythtv.sh". Use what you feel is appropriate.

    +

    Open a shell, and switch to superuser mode.

    +

    +

    + + +NOTE: ^D means press CTRL and d at the same time. +
    + +
    +
    +$ su
    +# cd /etc/profile.d
    +cat > mythtv.sh
    +export QTDIR=/usr/lib/qt3
    +export PATH=$PATH:/usr/lib/qt3/bin
    +^D
    +
    +# chmod a+x mythtv.sh
    +# exit
    +$ exit
    +
    +
    + +The last two commands are to exit out of the shell. This way, when you next +open a shell your new commands +will take effect.

    + +

    Device Permissions

    + +

    MythTV will need access to the video4linux devices on your system. By +default, your distribution may restrict access to these devices to the +logged-in user, so if you will be automatically starting +mythbackend from a script rather than an interactive terminal +session you will need to make some adjustments.

    +

    NOTE: The following instructions are accurate for Mandriva.

    +

    Check for a file called /etc/security/console.perms. Open the file +in your favorite text editor and look for a line that has: +

    +
    +<console>  0600 <v4l>        0600 root.video
    +
    +
    + +and replace it with +
    +
    +<console>  0666 <v4l>        0666 root.video
    +
    +
    +

    +

    What we're doing is allowing read and write access to the files in the +video4linux directory.

    +

    5. Downloading and compiling.

    + +

    Get MythTV from the +http://www.mythtv.org web site. There are two installation methods +you may choose from. The first is to download the latest release in tarball +format and compile. The tarball release of MythTV should work on a wide +variety of systems and should be the preferred method for new users. If you +wish to use the subversion copy of MythTV you may obtain it from +http://svn.mythtv.org

    +

    +

    + + +NOTE: If you are going to use subversion to +compile MythTV rather than using the distribution tarball, you must +join the +http://www.mythtv.org/mailman/listinfo/mythtv-commits/ and +http://www.mythtv.org/mailman/listinfo/mythtv-dev/ mailing lists to +keep up to date with the current status of the code. Code obtained from +subversion has no guarantees regarding stability, etc. +
    +

    +

    If you are in North America you will use the Schedules Direct grabber which is +built-in to MythTV. You do not need to install XMLTV (so you may +skip XMLTV-related instructions), but you need wget version 1.9.1 +or higher.

    +

    Get XMLTV from +http://xmltv.sourceforge.net. Download the latest version (0.5.51).

    +

    +


    +
    +NOTE for Mandriva users:  If you have added a "PLF" mirror, you may skip the
    +next step and type:
    +
    +# urpmi libmp3lame0 libmp3lame0-devel
    +
    +After downloading, be sure to install both:
    +# rpm -Uvh lame*
    +
    +
    +

    +

    Get lame from +http://lame.sourceforge.net/. Download the source code to v3.96.1 +by following the links from "Using" through "Download...".

    + +

    5.1 Building LAME +

    + +

    Open a shell and switch to the directory where you saved lame. +

    +
    +$ tar -xzf lame-3.96.1.tar.gz
    +$ cd lame-3.96.1
    +$ ./configure
    +$ make
    +$ make test
    +$ su
    +# make install
    +
    +
    + +Check that it worked: +
    +
    +# ls -l /usr/local/lib
    +-rw-r--r--    1 root     root       381706 Nov  4 14:22 libmp3lame.a
    +-rwxr-xr-x    1 root     root          674 Nov  4 14:22 libmp3lame.la*
    +lrwxrwxrwx    1 root     root           19 Nov  4 14:22 libmp3lame.so ->
    +libmp3lame.so.0.0.0*
    +lrwxrwxrwx    1 root     root           19 Nov  4 14:22 libmp3lame.so.0 ->
    +libmp3lame.so.0.0.0*
    +-rwxr-xr-x    1 root     root       360197 Nov  4 14:22
    +libmp3lame.so.0.0.0*
    +
    +# exit
    +$ 
    +
    +
    +

    + +

    5.2 XMLTV +

    + +

    Red Hat Linux and Fedora Core:

    + +

    RPMs for XMLTV and all of its dependencies can be obtained from +http://ATrpms.net/name/xmltv/. The web page has a +list of all the dependent packages you must download and install. +

    +
    +# rpm -Uvh xmltv* perl*
    +
    +
    +

    +

    If you install from this location you may skip to +Manually building MythTV.

    +

    Mandriva

    + +

    RPMs for XMLTV and all of its dependencies are located in +Mandriva's "contrib". If you have added a contrib mirror, try installing +XMLTV: +

    +
    +# urpmi xmltv xmltv-grabbers
    +
    +
    + +If this does not work, it is possible that contrib for your Mandriva version +does not have XMLTV, so you may install the XMLTV prerequisites by typing: +
    +
    +# urpmi perl-xml-twig perl-xml-writer perl-datemanip perl-libwww-perl
    +
    +
    +

    +

    and skip straight to the XMLTV compilation step.

    + +

    Manual installation

    + +

    + Untar the xmltv file: +

    +
    +$ tar -xjf xmltv-0.5.51.tar.bz2
    +
    +
    + +Install the xmltv prerequisites. The following prerequisites are the +minimum required; when you actually start running the xmltv setup program it +may alert you to other modules that are required.:

    +

    +

    +
    +$ su
    +# perl -MCPAN -e shell
    +cpan> install XML::Twig
    +cpan> install Date::Manip
    +Date::Manip is up to date.
    +cpan> install LWP
    +cpan> install XML::Writer
    +cpan> exit
    +
    +
    +

    +

    Change to the XMLTV directory and compile it: +

    +
    +$ cd xmltv-0.5.51
    +$ perl Makefile.PL
    +
    +
    + +You can answer "N" to the tv_check, tv_pick_cgi questions. Say "yes" to +the grabber required for your location.

    +

    You may get errors about modules not being installed. You will need to +resolve any missing dependencies at this point, or your grabber may not work +correctly. +

    +
    +$ make
    +$ make test
    +$ su
    +# make install
    +# exit
    +
    +
    +

    + +

    5.3 Configuring the Schedules Direct service +

    + +

    As of 2007-09-01, Tribune Media Services will no longer offer free guide +data. Schedules Direct is a non-profit organization which has licensed the +data to make it available to users of Freeware and Open Source applications.

    +

    If you wish to use Schedules Direct, you'll need to establish a user +account. Go to +http://www.schedulesdirect.org and click on the "Membership" link.

    +

    Once you've read and agreed to the Subscriber Agreement, Terms of Use and +Privacy Policy proceed to the lineup choices and configure your account for +your particular location and the channels that you have. This configuration +will be imported into MythTV when you first run the mythtv-setup +program.

    + +

    +

    +

    5.4 Manually building MythTV +

    + +

    If you are going to use subversion, execute the following +instructions to obtain the latest version of MythTV:

    +

    +

    +
    +$ mkdir mythtv
    +$ svn co http://svn.mythtv.org/svn/trunk/ mythtv
    +$ cd mythtv
    +
    +
    +

    +

    To use a release version, you can execute: +

    +
    +$ mkdir mythtv-release-0.21
    +$ svn co http://svn.mythtv.org/svn/branches/release-0-21-fixes/ mythtv-release-0.21
    +$ cd mythtv-release-0.21
    +
    +
    +

    +

    NOTE: Using a svn version of the code allows you to stay +up-to-date with changes. So, if there's an update to the 0.21 release and +you originally obtained it using svn, you could enter the +mythtv-release-0.21 directory and type "svn up", which will update your copy +with the fixed version from the website. You would then recompile and +install the updated 0.21 code.

    +

    If you are using the tarball, then unpack it: +

    +
    +$ tar -xjf mythtv-0.21.tar.bz2
    +$ cd mythtv-0.21
    +$ ./configure
    +
    +
    +

    +

    If you wish to change options, run ./configure --help to +see what is available and to override and automatically detected options. +See the config.log file after running configure to see +previous runs.

    +

    To compile: +

    +
    +$ make -j 2
    +
    +
    +

    +

    The MythTV compile can take advantage of multiple CPUs, SMP and +Hyperthreading. If you want to build MythTV on a multi-CPU machine (or with +distcc), specify "-j numjobs", where "numjobs" is greater than 2. +In the above example, we had two concurrent jobs executing, which is +recommended for a single CPU system. Do not set the number of jobs too +high, or your compile will actually take longer to complete than it would if +you did a "normal" build.

    +

    If you are using distcc, and you had two other host machines (red, blue) +participating, you would do something like: +

    +
    +$ export DISTCC_HOSTS='localhost red blue'
    +$ make -j 6 CXX=distcc
    +
    +
    +

    +

    The actual speed-up, if any, is dependant on a number of factors, such as +number of CPUs / hosts, etc. The distcc documentation recommends +using a -j value of twice the number of CPUs available to keep all +of them busy.

    +

    Some timing information. The following should only be used for +illustration; your actual results may vary. The test involves a complete +make distclean to the final binary. +

      +
    • P4 3.2Ghz HT: "standard" make: 12m 49s
    • +
    • P4 3.2Ghz HT: make -j 2: 11m 24s
    • +
    +

    +

    In the above example, we see that with a single CPU, a multi-stage +make does not significantly decrease compile time.

    +

    Once the compile is done, switch to superuser: +

    +
    +$ su
    +# make install
    +# exit
    +
    +
    +

    +

    +

    + + +NOTE: subsequent configuration steps assume that you are within +the MythTV directory that you cd'd to above. +
    +

    + +

    Enabling real-time scheduling of the display thread.

    + +

    MythTV supports real-time scheduling of the video output thread. There +are three ways to go about enabling this: You can use rlimits, you can use +the realtime security module, or on older systems you can SUID the +executable. Enabling real-time scheduling is optional, but can make the +video display smoother, especially if you are decoding HDTV.

    + +

    rlimits

    + +

    The rlimits method is the preferred method and is included in Linux +2.6.12 and above. Unfortunately, you need PAM version 0.79 or above, which +may not be supported by your distribution yet. Assuming anyone running +mythfrontend is in the audio group and rlimits are supported, all +you need to do is place this in your /etc/security/limits.conf

    +

    +

    +
    +*               -       rtprio     0
    +*               -       nice       0
    +@audio          -       rtprio     50
    +@audio          -       nice       0
    +
    +
    +

    + +

    realtime module

    + +

    The second option is to use the Linux realtime kernel module. +This is will be phased out over time, but is currently supported +by many distributions that do not yet support rlimits. If you are +not using the distribution kernel you must configure your kernel +with: +

    +
    +Security options : [*] Enable different security models
    +Security options : [M] Default Linux Capabilties
    +
    +
    + +You may also need to install the realtime module, using your distribution's +realtime package. Assuming the users who will be running +mythfrontend will be in the audio group you can get the GUID of a named +group like so: +
    +
    +$ grep audio /etc/group
    +
    +
    + +If the number printed out from the grep was 18, you can now load +this module as root before starting mythfrontend: +
    +
    +# modprobe realtime gid=18
    +
    +
    +

    + +

    run as root option (not safe)

    + +

    The final and least preferred option is to set the sticky bit +on the mythfrontend executable. This opens a security hole, +but is the only option on systems that do not support either +rlimits or the realtime module. This does not work on modern +distributions either, and is not recommended +on any system connected to the Internet. This may also make it +impossible to debug MythTV without running gdb as root. If you +would still like to do this, you just need to run this as root: +

    +
    +# chmod a+s /usr/local/bin/mythfrontend /usr/local/bin/mythtv
    +
    +
    +

    + +

    Frontend-only configuration

    + +

    Since MythTV uses a client/server architecture, multiple frontend +computers can simultaneously access content on a Myth system. Live TV, +watching and scheduling recordings, etc. are all possible from multiple +frontends.

    +

    To get a better picture of what is needed to run a frontend, note the +following: +

  • You do NOT need the MySQL server installed on your remote frontend
  • +
  • You do NOT need XMLTV installed on your remote frontend
  • +
  • You do NOT need to run the mythtv-setup program on +your frontend machine
  • +

    +

    Other than the exclusion of the MySQL server and XMLTV, the MythTV +compilation procedure is the same as when you're setting up both a backend +and a frontend. However, you will need to install the database +access libraries.

    +

    Once MythTV is compiled and installed: +

  • Run the mythtv-setup program on your Master backend. Under the "General" +menu, change the IP address of the current machine (by default, "127.0.0.1") +to the real external IP address - 127.0.0.1 is the loopback address and no +external machine can access it. Change the Master Server IP setting to the +same IP address as well.
  • +
  • Run the mythfrontend program on your frontend machine, +and a "Database Configuration" screen should appear. +Set the "Host name" field to point to your Master backend's IP address.
  • +

    + +

    5.5 Gentoo +

    + +

    Installation of MythTV on Gentoo consists of simply emerging the desired +ebuild because all of the packages are now part of the official Portage tree. +

    +
    +$ su -
    +# emerge --sync # make sure portage is up to date.
    +# vi /etc/make.conf
    +
    +
    + +Add mysql to your USE variable. i.e. USE="mysql ...." +
    +
    +# emerge mythtv
    +
    +
    +

    +

    6. MySQL.

    + +

    When you install MySQL 5.x you will also want to comment +out "log-bin" in your my.cnf configuration file. This option will +quickly fill your "/var" disk partition with many gigabytes of data, +unless you are doing database replication and deleting these files regularly.

    +

    6.1 Distribution-specific information +

    + +

    Mandriva

    + +

    If this is the system maintaining the database, make sure that MySQL is +running and started at boot. Click on Mandriva Control +Center->System->Services, find MySQL and click the "On Boot" button and the +"Start" button if the MySQL status shows that it isn't running yet.

    +

    +

    + + +NOTE: There have been reports that MySQL isn't starting at boot. +If this is happening to you, try running the following commands. +
    + +
    +
    +$ su
    +# chkconfig --level 35 mysql on
    +# /etc/rc.d/init.d/mysql start
    +# exit
    +
    +
    +

    + +

    Red Hat Linux and Fedora Core

    + +

    If this is the system maintaining the database, make sure that MySQL is +running and started at boot. Click on Redhat menu>Server Settings>Services +and enter the root password when asked. Check "mysqld" and then click Start. +Click Save, then close the window.

    +

    This can be done from the command line by typing: +

    +
    +# /sbin/chkconfig mysqld on
    +# /sbin/service mysqld start
    +
    +
    +

    + +

    Gentoo

    + +

    After installing MySQL you need to initialize the database by running +mysql_install_db as root.

    +

    6.2 Setting up the initial database +

    + +

    This step is only required on the system maintaining the database, which +may or may not be one of your MythTV boxes. If the database is on a +non-MythTV machine you'll need to copy the database/mc.sql file to it.

    +

    To setup the initial MySQL databases: +

    +
    +$ cd database
    +
    +
    +

    +

    Mandriva and Red Hat Linux/Fedora Core

    + +

    +

    +
    +$ mysql -u root < mc.sql
    +
    +
    +

    +

    Debian 3.0

    + +

    +

    +
    +$ mysql < mc.sql
    +
    +
    +

    +

    Gentoo

    + +

    +

    +
    +$ su
    +# mysql < /usr/share/mythtv/database/mc.sql
    +
    +
    + +
    + + +NOTE: It is good practice to set a root password for MySQL. Instructions for doing so can be found on MySQL's web site at +http://www.mysql.com/doc/en/Security.html. +
    +

    +

    Modifying access to the MySQL database for multiple systems

    + +

    If you're going to have multiple systems accessing a master database, +you must grant access to the database from remote systems. By default, the +mc.sql script is only granting access to the local host.

    +

    To allow other hosts access to your master database, you can either set it +up for no security at all, or with more granularity. Note that the "%" is +the wildcard character in MySQL.

    +

    +

    + + +NOTE: The "no security" option is very dangerous unless +you're in a controlled environment. +
    + +This example has no security at all, and allows access from any host. +
    +
    +$ mysql -u root mythconverg
    +mysql> grant all on mythconverg.* to mythtv@"%" identified by "mythtv";
    +mysql> flush privileges;
    +
    +
    +

    +

    For a more secure setup, you can restrict which machines or subnets have +access. If you have a complete DNS system operational, you could do the +following: +

    +
    +$ mysql -u root mythconverg
    +mysql> grant all on mythconverg.* to mythtv@"%.mydomain.com" identified by "mythtv";
    +mysql> flush privileges;
    +
    +
    +

    +

    Finally, if you just want to restrict by IP subnet (in this example, the +192.168.1. network): +

    +
    +$ mysql -u root mythconverg
    +mysql> grant all on mythconverg.* to mythtv@"192.168.1.%" identified by "mythtv";
    +mysql> flush privileges;
    +
    +
    +

    +

    You'll also need to check that the "networking" feature of MySQL is turned +on. Check that /etc/mysql/my.cnf does not contain +skip-networking. If it does, remove it. Also verify that +bind-address is set to your IP address instead of +127.0.0.1. If you change either of these items, restart +MySQL.

    +

    NOTE: Your distribution may have a customized MySQL configuration +file; in Mandriva, check /etc/sysconfig/mysqld for additional +configuration.

    + +

    7. Configuring Sound.

    + +

    If your video doesn't appear to be in-sync with your audio and you're +using an analog video capture card and a soundcard to capture audio, it +could be because you are listening to the real-time audio from your video +card rather than after it's been processed and synchronized to the video by +MythTV. Because MythTV is a personal video recorder, "Live TV" isn't really +live - to let you pause live TV, MythTV is actually encoding the video, +saving to disk, and then playing it back. This procedure puts your MythTV +"live" TV about 2 seconds behind real-time, so it's important that you're +not listening to the live audio. However, if you're having an issue where +the audio and video aren't synchronized by small but varying amount, it's +most likely because the sound driver that you're using doesn't have the +DSP_CAP_REALTIME capability. This was the case with ALSA (0.5), but not +with newer versions. See the +Troubleshooting Audio section for more information if you're having +issues with sound. Also, ensure that no other programs are grabbing the +audio output, like arts or esd.

    +

    What you need to do is to mute the "line-in" of your sound card and also +set it as the recording source.

    +

    There are two ways to do this. Graphically, and from the command line.

    + +

    7.1 Graphically setting up the mixer +

    + +

    Mandriva and Red Hat Linux/Fedora Core

    + +

    Open Kmix by clicking K->Multimedia->Sound->Kmix for Mandriva, or +

    +RedHat Menu>Sound & Video>Volume Control
    +
    + on Red Hat/Fedora.

    +

    Click on Settings->Configure Make sure that "Tick Marks" and "Show +labels" have "X"'s in them. This will make it easier to find the correct +audio source. Click OK.

    +

    On the mixer page, look for Line-In on your sound card. You should see +two LED's - a green one at the top, and a red one at the bottom. The green +one at the top is for muting; you want to make sure that the green LED is a +dark green, meaning that it's "off". You also want to click on the red LED +so that it turns bright red, indicating that it's "ON"; this insures that +the Line-in is used as the source. Click OK, and make sure that you save +the settings so that this is your default.

    + +

    Using ALSA.

    + +

    To use ALSA, you'll need to correctly setup your +asoundrc file. Configuring this file is beyond the scope of this +HOWTO. Once ALSA is working correctly, change the output sound device in +mythfrontend->setup->Audio from /dev/dsp to ALSA:default. +This field may be edited to suit your ALSA requirements.

    + +

    7.2 Setting the mixer from the command line +

    + +

    If you have installed the alsa-utils package, then the amixer +program can be used to setup the mixer. The "Master" volume setting is only +required on a frontend machine to ensure that the sound channels are unmuted +and configured for outputting sound. The "Line" and "Capture" controls are +required for your sound card to actually capture audio from the external +Line-in if it's connected to an analog frame grabber. Not all sound cards +have a "Capture" control, but if yours does and you don't set it then MythTV +will not capture audio.

    +

    +


    +
    +Note the spelling in the following commands.
    +
    +
    + +
    +
    +$ amixer set Master,0 100%,100% unmute
    +$ amixer set PCM,0 100%,100% unmute
    +$ amixer set Line,0 75%,75% mute captur
    +$ amixer set Capture,0 100%,100% captur
    +$ su
    +# alsactl store
    +# exit
    +$ 
    +
    +
    +

    +

    If you have multiple sound cards, then use the -c parameter to +specify which card to adjust. Note that the first card will be "0", the +second will be "1", etc.

    +

    That takes care of setting the volume correctly, and the ALSA startup script +will restore the volume after a reboot. If you find that your sound is +distorted, it's possible that the levels in the above examples are too high +for your particular hardware combination. Try reducing the percentages by +5-10% and checking again. Once you're satisfied, re-run the alsactl +store command.

    +

    You may also use the alsamixer program to set the volume. If you +are using an ALSA version after 1.0.6, use alsamixer -V all First, +start alsamixer from the command line. You should start out on the +"Master" volume control slider. Use the up and down cursor to set the +master volume to around 75%. Next, use the left and right cursor keys to +move around on the screen until you find the "Line" slider. Press SPACE to +set it as the capture source, set the level to around 50-75% and press "M" +to mute it. You can now press ESC to exit out of the alsamixer +program. You can also have MythTV manage all volume and mute settings, but +this will only affect the "Master" or PCM volume, not the capture volume. See +the mythfrontend setup page for options.

    +

    Finally, if you've performed all of the above steps, and you still don't seem to have any sound, it's possible that your video capture device is muting the audio output. +

    +
    +$ v4lctl -c /dev/video0 setattr mute off
    +
    +
    +

    + +

    8. Setting up a remote control.

    + +

    MythTV does not have native remote control receiver and decoder software +built-in. Instead, remote control functions are implemented by cooperating +with lirc, the Linux Infrared Remote Control program. lirc +handles the IR hardware and passes keystrokes to MythTV, which then acts as +if the user had pressed the keys on the keyboard. The file +keys.txt describes the keys used to control MythTV.

    +

    +

    + + +NOTE: If you are running Mandriva, you may install +lirc by executing: # urpmi lirc lirc-remotes and bypass +the manual compilation steps described below by jumping to the +Completing the lirc install section. See the contrib/mandrake91.etc.sysconfig.lircd file for an example of how to +configure lircd. +
    +

    +

    Some IR devices require a kernel recompile, and some don't. However, all at +least require having the kernel source available as a resource for the lirc +build process.

    + +

    8.1 Gentoo +

    + +

    To install lirc on Gentoo, all you need to do is: +

    +
    +# emerge lirc
    +
    +
    +

    + +

    8.2 Obtaining and compiling lirc +

    + +

    You're going to need to download and compile lircd. Go to +http://www.lirc.org and download lirc; as +of 2006-01-21, the version available is 0.8.0. Grab the remotes.tar.bz2 file as +well. +

    +
    +$ tar -xjf lirc-0.8.0.tar.bz2
    +$ cd lirc-0.8.0
    +$ ./setup.sh
    +
    +
    + +You're going to need to know what sort of receiver you have and where it's +connected. In the case of the Pinnacle Studio TV card, with the IR receiver +connected to COM1 (/dev/ttys0), once the configuration menu comes up, +perform the configuration by going to Driver Configuration->Other Serial +Port Devices->Pinnacle Systems Receiver->OK and on the next page select +COM1->OK.

    +

    Each remote is different; some remote receivers connect directly to your +capture card and not to a serial port, so make sure that you've got the +correct one.

    +

    You then click "Save Configuration and run configure" to continue.

    +

    Make sure you read the last text generated by the configure step. It will +tell you if you require a kernel recompile, and what the name of your kernel +module will be (if necessary). For instance a home-built receiver may +require a kernel recompile, so you would be notified that you will have to +load the lirc_serial module. If you did not get any such messages skip the +kernel recompile steps below and go directly to making and installing the +lirc driver.

    +

    Once the configuration step is complete: +

    +
    +$ make
    +$ su
    +# make install
    +# chmod 666 /dev/lircd
    +
    +
    +

    +

    At this point, if you're using a serial receiver, check that there's a +lirc device in /dev: +

    +
    +$ ls -l /dev/li*
    +lr-xr-xr-x    1 root     root            5 Jan 27 09:00 /dev/lirc -> ttyS0
    +srw-rw-rw-    1 root     root            0 Jan 27 15:01 /dev/lircd=
    +prw-r--r--    1 root     root            0 Jan 27 09:00 /dev/lircm|
    +
    +
    +

    +

    As you can see, there's a link from /dev/lirc to ttyS0, a.k.a. "COM1", which is +appropriate for the Pinnacle Systems PCTV Pro. However, you may notice +something like this: +

    +
    +crw-------    1 root     root      61,   0 Dec 31  1969 lirc
    +
    +
    + +Some IR receivers (including some homebrew units) use a character device as +their data interface as opposed to a link to a serial port. If the make +install step has created a character device for you, don't replace it +with a link to a COM port.

    +

    So, if the link or character device was not created (but should have been), +ensure that you ran the make install step as root. If it still +doesn't work, then there are three options. The first option is to re-read +the lirc documentation to determine whether your IR receiver is a +character device or should be a link to a serial port and to create the +link/character device manually. In this example, the IR device is connected +to ttyS0. If it were connected to "COM2", then use ttyS1, etc. +

    +
    +$ su
    +# cd /dev
    +# ln -sf ttyS0 lirc
    +# exit
    +$
    +
    +
    +

    +

    +

    + + +NOTE: The above example assumes that your receiver uses the +standard serial driver. Some receivers do not, including receivers that +plug into a TV capture card. Check the lirc documentation, but it may be +necessary to replace the link created above with a character pipe: +
    + +
    +
    +# mknod /dev/lirc c 61 0
    +
    +
    +

    +

    See the lirc documentation for additional information. The lirc +installation should create this for you, so manually creating it +indicates that your lirc installation may have other issues.

    +

    The second option is to post your issue to the lirc list, not the +mythtv-users list. The lirc programmers will be the ones that can assist +you best.

    +

    The third option is to dispense with lirc altogether by purchasing an IR +keyboard (various options exist, although Chicony appears to work for some +people) and a learning remote control. The IR keyboard receiver plugs into +the PS/2 keyboard port on your PC and you would train your learning remote +to emulate the various keystrokes from keys.txt of your IR +keyboard. Using this method removes lirc entirely from the picture - your +remote will be sending keypresses that your PC "sees" on the keyboard port.

    + +

    8.3 Completing the lirc install +

    + +

    +

    + + +NOTE to Mandriva 9.1 users: skip to the manual start paragraph +below. +
    +

    +

    If the lirc configure program / compile did not mention anything about a +kernel module, then you are finished. If it did mention a kernel module, you +must edit the /etc/modules.conf file. Add this line as the first +thing in the file. It must come first, or it may not work. +

    +
    +alias char-major-61 XXX
    +
    +
    +

    +

    replace XXX with the name which you determined earlier, which in this +example was "lirc_serial" +

    +
    +$ su
    +# modprobe lirc_serial
    +# /sbin/ldconfig
    +
    +
    +

    +

    Next, we're going to manually start lircd the first time. Mandriva 9.1 +users, type: # /etc/rc.d/init.d/lircd start instead of: +

    +
    +# /usr/local/sbin/lircd
    +
    +
    +

    +

    NOTE: Read this next section if you're not familiar with how lirc works!

    +

    There are two separate files used by lirc, and both are required for your +remote control to do anything useful. First is the lircd.conf file. +lircd.conf tells the lirc daemon how to interpret the IR pulses +that it receives from a remote control and what name to assign to each +sequence of pulses. Without getting too involved, a particular series of +pulses may correlate to "Channel Up". The lircd.conf file will +then contain a line that looks something like this:

    +

    +

    +
    +          ChannelUp                0x0000000000001020
    +
    +
    +

    +

    The lircd.conf file can have multiple remote controls defined.

    +

    The second file is lircrc, which takes the name of the button which +was pressed ("ChannelUp") in the above example, and correlates that to an +action to be performed by a program using the remote control. So in MythTV, +ChannelUp means one thing, while in mplayer it means something +different. lircrc gives you the flexibility of taking the name of +the button and having it perform different actions depending on which +program you're using at the time.

    +

    NOTE: The definitions in lircd.conf come from the user +community, and there is no standard for the common button names. One +lircd.conf file may contain a definition for a button called +"ChannelUp", while another may contain a definition for "Chan+". Your +lircrc file must therefore be configured appropriately, or it won't +work.

    +

    If this fails, complaining of a missing lircd.conf file, then you +must find or make one. First look for a pre-made configuration file at +http://lirc.sourceforge.net/remotes/. Mandriva 9.1 users, look in +/usr/share/lirc-remotes. If you find one your remotes either on the +website or in /usr/share, download or copy the file, name it +lircd.conf and put it in your /etc directory. If you +couldn't find your remote, you must make your own lircd.conf file.

    +

    To make your own lircd.conf file +

    +
    +$ irrecord myremote
    +
    +
    +

    +

    Follow the on-screen directions to train your remote and define keys. If +your remote ends up working well, you should consider submitting your +lircd.conf file back to the lirc developers. Once finished: +

    +
    +$ su
    +# cp myremote /etc/lircd.conf
    +
    +
    +

    +

    now try to start lircd again: +

    +
    +# /usr/local/sbin/lircd
    +
    +
    +

    +

    Now, we're going to add the commands necessary for lircd to run each time we +boot. Mandriva 9.1 users, you can execute: +

    +
    +$ su
    +# chkconfig --level 35 lircd on
    +# exit
    +
    +
    +

    +

    All other distributions: +

    +
    +# cd /etc/rc.d
    +# cat >> rc.local
    +echo "Starting lircd"
    +/usr/local/sbin/lircd
    +^D
    +# exit
    +$ 
    +
    +
    +

    +

    This takes care of the lircd portion, which "listens" for the IR signals. If +everything went well, the install script for lircd put an appropriate +configuration file for your remote into /etc/lircd.conf This file +maps the buttons on the remote control to the IR pulses coming from the +receiver.

    +

    The next step is to convert those signals into something that can be used +to control MythTV. MythTV now includes native support for lirc and can +interact directly with

    +

    +

    +
    +$ cd ~/mythtv-0.21/contrib/configfiles
    +$ cp lircrc.example ~/.lircrc
    +
    +
    + +or +
    +
    +$ cp lircrc.example.pinnaclestudiopctv ~/.lircrc
    +
    +
    + +if you've got a Pinnacle Studio PCTV remote. +
    +
    +$ irw
    +
    +
    + +Start pressing the keys on your remote; irw will +print the name of the button as it is defined in your +/etc/lircd.conf. If you don't see anything at this point, you need +to troubleshoot further by going back to the lirc home page and investigating +from there.

    +

    If it is working, then press CTRL-C to abort the program. Once you +know that your remote is working, you can either recompile MythTV with +native lirc support by enabling it in configure or you +need to run the irxevent program, which takes the key presses and +sends them to MythTV. If you use native lirc support, you don't need to run +irxevent. If you are going to use irxevent, then you need to run +it like this: +

    +
    +$ irxevent &
    +
    +
    + +If irxevent isn't running, then MythTV will not respond to your remote +control unless you're using native lirc support.

    + +

    8.4 Additional information for lirc +

    + +

    Take a look at the lircrc.example files in the contrib/configfiles/ +directory. In my case, (Pinnacle Studio card) the channel up and down functions +weren't working, due to the fact that the button names were different than +the default lircrc.example file that came with MythTV.

    +

    The lircrc.example file has this: +

    +
    +begin
    +    prog = irxevent
    +    button = ChannelUp
    +    config = Key Up CurrentWindow
    +end
    +
    +begin
    +    prog = irxevent
    +    button = ChannelDown
    +    config = Key Down CurrentWindow
    +end
    +
    +
    + +but the /etc/lircd.conf that comes in the lircd package +defines the buttons for the Pinnacle Studio PCTV as: +
    +
    +          channel+                 0x0000000000000017
    +          channel-                 0x000000000000001C
    +
    +
    + +rather than "ChannelUp" and "ChannelDown". I added the +following to my /home/[yourusername]/.lircrc file: +
    +
    +begin
    +    prog = irxevent
    +    button = channel+
    +    repeat = 3
    +    config = Key Up CurrentWindow
    +end
    +
    +begin
    +    prog = irxevent
    +    button = channel-
    +    repeat = 3
    +    config = Key Down CurrentWindow
    +end
    +
    +
    + +which took care of basic functionality. Because the PCTV Studio remote +has additional buttons, look at the +contrib/configfiles/lircrc.example.pinnaclestudiopctv for an example of how +to define additional buttons, and how to debug potential button name +conflicts between the lircrc.example file and how your +remote defines the button names.

    +

    By examining the button names defined in /etc/lircd.conf and using +the irw program to make sure that your remote is working, you can +create the appropriate mappings in .lircrc to get excellent remote +functionality with MythTV.

    +

    Note the repeat = parameter. This informs the irxevent +program to pass through every third keypress. By default, lirc +will only send one keypress to the application, even if you're holding down +the key. The actual repeat = number will vary from system to +system, so experiment and see which value works best for you.

    + +

    8.5 Configuring lirc for use with an IR blaster +

    + +

    Lirc has support for various IR transmitters. A popular model is the Actisys +IR-200L +http://store.snapstreamstore.com/accessories.html. It was +originally designed for IRDA communication, but can be used to transmit A/V remote +control codes. By using the lirc SIR driver, this device can easily be +integrated with MythTV. I have tested this device with an AT&T DCT2000 +digital cable box but the instructions can be used to configure other IRDA +devices and A/V remotes.

    +

    Follow the steps in the previous section. When you run setup.sh, select +option 1, driver configuration. From here select option 6, IrDA hardware. +Select your appropriate device and the corresponding serial port, then Save +configuration & run configure from the main menu. Once configure is done +type: +

    +
    +$ make
    +
    +
    +

    +

    Please note: unlike the Pinnacle receiver above you will be compiling lircd +in addition to a kernel module for the SIR transmitter. Depending on whether +you have your serial port driver configured as a kernel module you might see +the following message during make: +

    +
    +lirc_sir.c:56:2: warning: #warning
    +"******************************************"
    +
    +lirc_sir.c:57:2: warning: #warning "Your serial port driver is compiled into "
    +
    +lirc_sir.c:58:2: warning: #warning "the kernel. You will have to release the "
    +
    +lirc_sir.c:59:2: warning: #warning "port you want to use for LIRC with:"
    +
    +lirc_sir.c:60:2: warning: #warning "setserial /dev/ttySx uart none"
    +
    +lirc_sir.c:61:2: warning: #warning
    +"******************************************"
    +
    +
    +

    +

    If you do receive this statement make sure to run the setserial command +before you load the lirc_sir module. Follow this with the install: +

    +
    +$ su
    +# make install
    +
    +
    +

    +

    You will notice that lirc installs the kernel module in +/lib/modules/uname -a/misc.

    +

    The configuration for starting lircd differs if you're going to be +sending and receiving IR versus just receiving. +

    +
    + 
    +# cd /etc/rc.d
    +# cat >> rc.local
    +echo "Starting lircd"
    +setserial /dev/ttySx uart none        # (if required)
    +modprobe lirc_sir
    +/usr/local/sbin/lircd
    +^D
    +# exit
    +$ 
    +
    +
    +

    +

    At this point you have to populate the /etc/lircd.conf file with the proper +codes for your A/V remote. You should be able to find your remote within the +lirc remote tar file located at +http://www.lirc.org/remotes.tar.bz2. In my case I +extracted the file from remotes/motorola/DCT2000 (gi-motorola-dct2000)

    +

    To test the lirc_sir module you can run irw to verify the codes are being +received. If everything is configured correctly +you should see something similar to the following: +

    +
    +$ irw
    +0000000000007ff0 00 1 gi-motorola-dct2000
    +000000000000bff8 00 2 gi-motorola-dct2000
    +000000000000f7f0 00 ENTER gi-motorola-dct2000
    +
    +
    +

    +

    Once you've verified lirc is working you can press CTRL-C to exit +irw and configure the channel changing script.

    +

    The path to the channel changing script will need to be entered on the +mythtv-setup screen for Input Connections.

    +

    This csh script will be called each time MythTV needs to change the channel. +Below is a copy of the script followed by the corresponding perl script. +Make sure both are in your path. Also make sure you leave the #!/bin/csh +setting and not change it to Bourne or bash. This will create a frustrating +symptom to diagnose where MythTV cannot open /dev/device. Unlike Bourne or +bash, csh scripts automatically close parent file descriptors before they +start. +

    +
    +$ cd /usr/local/bin
    +# su
    +# cat > change_channel.csh
    +#!/bin/csh
    +echo "changing to $1"
    +/usr/local/bin/channel.pl $1 &
    +^D
    +# chmod a+x change_channel.csh
    +# exit
    +$ exit
    +
    +
    +

    +

    See contrib/channel.pl for the actual file. Copy it to +/usr/local/bin/

    +

    The last statement within the perl script is the lirc rc command. This is +the command that transmits the code to your cable/DSS box. Make sure to have +the IRDA device within a few feet of the box.

    + +

    9. Configuring MythTV.

    + +

    By this point, all of the compile-time prerequisites have been installed, +mysql is running and has had its initial database setup. It's now +time to configure MythTV. +

    + + +NOTE: If you're running Debian unstable and you have compiled +MythTV from source, you will need to install an additional package before +you will be able to run MythTV. Execute the following to install the MySQL +driver for QT. +
    + +
    +
    +$ su -
    +# apt-get install libqt3c102-mt-mysql
    +# exit
    +
    +
    +

    +

    9.1 Configuring the Master backend system +

    + +

    Open a shell and decide where you will store your video files. This may +be one directory or multiple directories on the same or different +filesystems. There is no default directory used for new recordings, you +must create at least one storage directory and configure Myth to +use it by running mythtv-setup. If you do not do this, then MythTV +will be unable to record anything. The following example is specific for +/var/video, but the same instructions would apply for any directory +name you choose to use. See the +Advanced Partition Formatting section for hints on creating a +partition for MythTV.

    +

    +

    +
    +$ su
    +# mkdir /var/video
    +# chmod a+rwx /var/video
    +# exit
    +
    +
    +

    +

    NOTE: The last slash "/" is not required.

    +

    + +TIP: Try not to have your video mount point on the same partition +as your root partition, which could lead to the filling up of your root +partition with video data if the mount fails. For example:

    +

    If /var/video is created on your root partition and you then +perform a mount of another drive to this directory there won't be any +problems if everything is working the way it should. However, if the mount +fails for some reason, /var/video still exists, so MythTV will find +the directory and write files to it. If your / mount point is +space limited, /var/video will also be space limited, and +it won't take long to fill the partition. This will cause a number of +side-effects, most of them bad. Instead, create subdirectories as the +destination for the storage group.

    +

    Your directory structure could then look something like this: +

    +
    +/mnt/video/drive1/video
    +/mnt/video/drive2/video
    +
    +
    +

    +

    Your /etc/fstab would look like this: +

    +
    +/dev/hdb1 /mnt/video/drive1
    +/dev/hdc1 /mnt/video/drive2
    +
    +
    +

    +

    Because the Storage Group path is /mnt/video/drive1/video, if the +mythbackend can only find /mnt/video/drive1 it will not +write files to that share.

    +

    After you create the desired directory or directories for storing your video +files, you will need to add them to the proper Storage Group using +mythtv-setup. This procedure is described below in the +Storage Groups section.

    +

    The first thing to configure is the Master backend system. If you are +running multiple backend systems, the Master backend will make all +decisions about which programs will be recorded on which tuners. If you +have only one backend, then it will be its own master.

    +

    The Master backend will always choose the first available tuner in the same +order as you add cards through "mythtv-setup". In other words, the second +card you add will only be used when there are two overlapping recordings, +the third when there are three, and so on. + Therefore, you will want to have +the greatest amount of disk space on the Master backend because its tuner +will always be the first choice. You will then want to add your +other backends in the order of your +preference for recording.

    +

    +

    + + +NOTE: It is possible to not have the cards on the Master +backend be the first ones used. However, if you are new to MythTV it is +easier to configure the Master backend first before moving on to the Slaves, +at least until you become more familiar with the MythTV system. See +Advanced Backend Configurations for +information on configuring multiple backend systems in various ways. +
    +

    +

    Because MythTV uses a database to store all configuration variables, +part of the bootstrap of MythTV is to indicate the location of the MySQL +database server. If the frontend, backend and MySQL database server are all +going to be running on the same box, you can continue to the next step. If +not, you'll need to change the Host Name in the "Database Configuration" +screen of the mythfrontend program.

    +

    +

    + + +NOTE: Users that have been running the frontend and the backend on +different machines have stated that they have been having issues with remote +access to the MySQL database. The following instructions may or may not +work. Add the following to /etc/my.cnf on the backend machine and +restart MySQL. +
    + +
    +
    +skip-innodb
    +set-variable=thread_stack=256k
    +
    +
    +

    +

    Run the setup program: +

    +
    +$ mythtv-setup
    +
    +
    +

    +

    The backend setup program will start and offer you a number of choices. It +is strongly recommended that you go through them in order.

    +

    The first question will ask if you wish to clear out your existing +configurations for your capture cards. Initially, you should say "YES" so +that there are no surprises later.

    +

    The next question will ask you if you wish to clear out your video source +information. You should answer "YES" to this as well.

    +

    Once the graphical setup starts, you'll see that there are six choices

    +

    +

    + + +The Storage Directories feature is available only in the SVN version of MythTV. +
    +

    +

    +

      +
    1. General
    2. +
    3. Capture Cards
    4. +
    5. Video Sources
    6. +
    7. Input connections
    8. +
    9. Channel Editor
    10. +
    11. Storage Directories
    12. +
    +

    +

    Use the arrow keys to move around, and press the space bar to select which +option you wish to configure.

    + +

    General

    + +

    The first screen of the General configuration deals with IP addresses of the +system that you're running mythtv-setup on and any master backend you may have. +If you've only got one machine, then the default values are fine and you can +move to the next page by pressing the space bar. If you need to move around +the screen, use the arrow keys to move focus between settings, not the +mouse.

    +

    If you will be deploying multiple backends, or if your backend is on one +system and you're running the frontend on another machine then do +not use the "127.0.0.1" IP address.

    +

    NOTE: If you modify the 127.0.0.1 address and use a "real" IP +address, you must use real IP addresses in both fields, otherwise your +frontend machines will generate "Unexpected response to MYTH_PROTO_VERSION" +errors.

    +

    Changing any of the port settings is very strongly discouraged. +(If you do accidentally change them, the defaults are 6543 for +the master/backend server, and 6544 for the HTTP requests)

    +

    Once you're satisfied with the values, move the focus down to Next and hit +the space bar.

    +

    The next screen details the Host-specific Backend setup. This is where you +will set the specific directory paths for this particular backend. Make +sure that you've followed the steps at the beginning of this section and +created a directory that exists and that MythTV will have write privileges +to. When you're done, press Next to continue, taking you to the Global +Backend Setup.

    +

    On the Global Backend Setup configure your backend with the appropriate +settings. Use the left and right arrow keys to iterate through the choices +available on each setting, and the up and down keys to move between +settings. Move to Finish when you're done and press the space bar, taking +you back to the main configuration screen.

    + +

    Capture Cards

    + +

    You should have no capture cards defined, so the highlight will be on +(New Capture Card). Press space to begin.

    +

    Choose the appropriate settings for your particular tuner. Use the arrow +keys to move around and to make your choices, and press RETURN when +complete. Pressing RETURN will take you back to the Capture Cards screen; +if you have additional capture cards in this machine, press the space bar +when the highlight is on the (New Capture Card) row to define another card.

    +

    If you have made a mistake, you can delete a card by highlighting it and +pressing the 'D' key, or you can highlight it and press the RETURN or 'E' +key to edit it.

    +

    Once you have no additional cards to setup, press ESC.

    +

    +

    + + +NOTE: If you have a dual digital/analog card, such as the pcHDTV +cards and some DViCO cards, then you should not configure this as two +separate cards. Configure the digital portion as a DVB card, then click +on the "Analog Options" button within the DVB configuration panel for +the card and configure the analog portion of the card there. +
    +

    + +

    Video Sources

    + +

    When you start, the highlight should be on (New Video Source). Press the +space bar to begin. The first field asks for the name of the video source. +You may choose something easy to remember, like "Antenna" or "Cable". Once +you've chosen a name, press the down arrow to move to the next field.

    +

    If you're in North America, change the grabber to +"SchedulesDirect.org(Internal)", then continue pressing the down arrow to +move to the next field. Fill in the username (lowercase only) and password +that you have established with Schedules Direct, then move to the "Retrieve +Listings" button and press the space bar.

    +

    NOTE: You need wget version 1.9.1 or higher to use +Schedules Direct.

    +

    The mythtv-setup program will contact the Schedules Direct servers and get +your account information. Once you're done, you may click the Finish button +and skip the next few paragraphs in this document since they only apply to +users that are using the external XMLTV script to get their guide data.

    +

    If you wish to continue using the XMLTV grabber, then move to the Zip/postal +code field and put in the appropriate value.

    +

    If you're outside of North America, then some manual interaction will be +required with XMLTV. You may need to switch from the MythTV setup program +to the console it was run on to interact with XMLTV.

    +

    Once you have chosen your provider, press RETURN to continue. XMLTV will +now begin collecting the initial data for your location. The screen may +blank for a few seconds to several minutes, depending on the load of the +listings provider and the speed of your connection to the Internet. Be +patient!

    +

    You will then be returned to the Video Sources screen. If you have multiple +video sources available, such as Antenna, Cable, etc, go ahead and define +them all, even if they're not all going to be physically connected to the +master backend server. Once you're done, press ESC to return to the main +screen.

    + +

    Input Connections

    + +

    The final configuration item is Input Connections. On this screen, you +will associate the various video sources you defined earlier with a physical +input to a encoder card. It's entirely possible that you have multiple +tuners, and each tuner has a different input, so on this screen you let +MythTV know which device will connect to which input source.

    +

    When you start this screen, you should see a listing of the various input +connections available on each of the Capture cards you defined earlier. For +example, you may have a capture card with a tuner, a SVideo and a Composite +connection. If you wanted to associate the tuner (a.k.a., "Television") +with an "Antenna" source you defined in Video Sources, you would move to the +/dev/videodevice (Television) -> line and press the space bar. +Using the left and right arrow keys will show you the various choices you +have already created for video source. In our case, you would use the +left/right cursor keys until "Antenna" was shown in the Video Source field. +Press down to move to the next setting.

    +

    On the connection pane there is a "Scan for channels" button, if you are +configuring a digital source such as a DVB card, you need scan for channels +and you must do this before pressing the "Fetch channels from listings +source" button. You may scan for analog channels on an analog input, but +this is not needed.

    + +

    The other button is called "Fetch channels from listings source". As long as +you have a real listings source you should fetch channels from them for +analog channels. You can do this for digital sources as well (unless the +listing source is transmitted EIT data). If you are using XMLTV, you may need +to switch from the MythTV setup program to the console it was run on to +interact with XMLTV after pressing this button. It is possible to fetch the +channels on the command line using mythfilldatabase. But if you need to do +this, you will probably need to re-enter the MythTV setup program to +configure the "Starting channel" setting for this source->input connection.

    +

    +

    + + +NOTE: If you have a Hauppauge PVR-500, you must think of +it has two PVR-150's on a single PCI card. For example, if you have a +single PVR-500 card, it will appear as /dev/video0 and +/dev/video1. Each /dev/video device will have a Tuner input. +
    + +Once you're done, press RETURN to go back to the Input Connections screen. +You would then finish associating the video sources to any other hardware +devices you have available.

    +

    +

    + + +NOTE: Don't add a video source to a hardware input if you don't +actually have anything connected there. For example, adding "Cable" to the +Tuner and to the Composite inputs without having something connected to +Composite will lead to blank recordings. +
    +

    +

    Press ESC to return to the main menu, and press ESC again if you have no +further items to configure, thereby returning you to the command line.

    + +

    Channel Editor

    + +

    The channel editor is used to globally alter channel information, +including items like hue, contrast, fine tuning and others. Users in North +America shouldn't run the channel editor until you've completed the initial +mythtv-setup and ran mythfilldatabase at least once to populate the +database.

    + +

    Storage Groups

    + +

    +

    + + +New in MythTV 0.21 +
    +

    +

    Introduction.

    + +

    Storage Groups are lists of directories that are used to hold MythTV +recording files giving you a flexible way to allow you to add capacity to +your MythTV system without having to use exotic solutions such as LVM, +filesystem expansion or RAID Online Capacity Expansion. You can also use +Storage Groups to organize recordings and to put recordings of a certain +type into one subdirectory.

    +

    Storage Groups do not offer redundancy in case of hard drive failure, but +unlike LVM, if you lose a hard drive, you only lose the recordings that were +on that drive. With LVM, if you lose a hard drive, you will most likely +lose everything.

    + +

    How to use Storage Groups.

    + +

    By default, there is only one Storage Group called "Default", and it is +used for all recordings and Live TV.

    +

    +

    + + +NOTE: You need to add at least one directory to the Default +Storage Group or else you will not be able to record anything with MythTV. +
    +

    +

    For example, if you have 5 hard drives in your system, your first hard drive +could be your "boot" drive, and the remaining four could be dedicated to +media storage. You could format the drives and mount them as +/mnt/store/d2, /mnt/store/d3, /mnt/store/d4 and +/mnt/store/d5.

    +

    Within each mount point, it's strongly recommended that you use a +sub-directory and make that the destination path for the Storage Group. See +the +Tip in the "Configuring the Master +backend" section for additional information.

    +

    You would then add the four subdirectories you created under the mount +points (/mnt/store/d1/video, etc) into the "Default" Storage Group.

    +

    At recording time, if there were four simultaneous recordings, MythTV would +put one recording onto each drive.

    +

    Or, say that you originally installed MythTV to a 80GB hard drive, and that +hard drive is now filling up. You could simply add a new drive to your +system, mount it and update the Storage Group to add additional space.

    +

    You may create additional Storage Groups to store specific recordings in +their own directories. Storage Groups are edited via the 'Storage +Directories' section of mythtv-setup.

    +

    You can also create multiple Storage Groups to group recordings together; +recording schedules now have an option to specify which Storage Group to +use.

    +

    MythTV will balance concurrent recordings across the available directories +in a Storage Group in order to spread out the file I/O load. MythTV will +prefer filesystems that are local to the backend over filesystems that are +remote until the local filesystem has 2 concurrent recordings active or +other equivalent I/O, then the next recording will go to the remote +filesystem. The balancing method is based purely on I/O, Myth does not try +to balance out disk space unless a filesystem is too low on free disk space +in which case it will not be used except as a last resort.

    +

    Storage Groups are global, but can be overridden on a slave backend by +creating a local Storage Group by running mythtv-setup on the +slave. If a problem occurs and the slave backend is unable to use the +desired Storage Group, it will fail back and try the directories defined in +the master's Storage Group.

    +

    There's also a special 'LiveTV' Storage Group, but the directory list starts +out empty. If you add a directory to the Storage Group, it will be used +instead of putting LiveTV recordings in the Default Storage Group. This +will allow you to put your LiveTV recordings on their own filesystem, which +is similar to the old MythTV method which used a RingBuffer for LiveTV. Of +course, you don't have to do anything, and Live TV recordings will just go +into the Default Storage Group where they'll be the first programs eligible +for expiration if the system needs free space for recordings.

    +

    Usage information for all Storage Group directories is visible on the +mythfrontend status screen as well as the mythbackend status webpage. +MythTV is smart enough to determine which directories are on shared +filesystems so it should not count free or used space multiple times if you +have more than one directory on the same filesystem.

    + +

    Migrating to Storage Groups.

    + +

    Migrating to Storage groups is very simple: if you have existing +recordings in a storage directory, then the system will automatically add +that directory to the Default Storage Group. If you then add additional +directories to a storage group, the system is flexible enough to check +all Storage Groups for a file before deciding that it can't be +found, which means that you can use the mv command from the Unix +command line to arrange files however you'd like.

    + +

    Advanced: Algorithm used by the Storage Group

    + +

    This section details the logic of the Storage Group allocation engine.

    +

    The current load-balancing preferences (in order) are: +

      +
    • Local filesystems over remote
    • +
    • Less-busy (less weight) over more-busy (more weight)
    • +
    • More Free Space over Less Free Space
    • +
    +

    +

    The 'business' of a filesystem is determined by weights. The following +weights are added to a filesystem if it is in use for the following things: +

      +
    • recording = +10
    • +
    • playback = +5 (mythfrontend)
    • +
    • comm flagging = +5 (mythcommflag)
    • +
    • transcoding = +5 (mythtranscode)
    • +
    +

    +

    If a recording is due to end within 3 minutes, it is not counted against +the weight of a filesystem. This is done to account for the pre/post-roll +and start-early/end-late settings.

    + +

    9.2 Post-configuration +

    + +

    Run the mythfilldatabase program as directed. The master +backend will obtain guide data for all the video sources you defined during +setup.

    +

    NOTE: If you are using Schedules Direct and watching the output messages +on the console or the log file it is normal to see a "401 Unauthorized" +error followed by a "200 OK" when the connection to Schedules Direct is being +established. +

    +
    +From : Sun Jun 13 05:00:00 2004 To : Mon Jun 14 05:00:00 2004 (UTC)
    +--02:58:01--
    +http://datadirect.webservices.zap2it.com/tvlistings/xtvdService
    +           => -'
    +Resolving datadirect.webservices.zap2it.com... 206.18.98.160
    +Connecting to datadirect.webservices.zap2it.com[206.18.98.160]:80...
    +connected.
    +HTTP request sent, awaiting response... 401 Unauthorized
    +Connecting to datadirect.webservices.zap2it.com[206.18.98.160]:80...
    +connected.
    +HTTP request sent, awaiting response... 200 OK
    +Length: unspecified [text/xml]
    +
    +    [    <=>                              ] 114,125       63.57K/s
    +
    +02:58:03 (63.53 KB/s) - -' saved [114125]
    +
    +Your subscription expires on 08/20/2004 12:00:00 AM
    +Grab complete.  Actual data from Sun Jun 13 05:00:00 2004 to Mon Jun 14
    +00:00:00 2004 (UTC)
    +
    +
    +

    +

    Once mythfilldatabase has finished, start the master server before +continuing. +

    +
    +$ mythbackend
    +
    +
    +

    +

    mythbackend will print information about connections and what it's doing to +the console. If you'd like to see the options that are available for +mythbackend, type mythbackend -h for help.

    +

    As of MythTV v0.21, the available options are: +

    +
    +$ mythbackend --help
    +Valid options are:
    +-h or --help                   List valid command line parameters
    +-l or --logfile filename       Writes STDERR and STDOUT messages to filename
    +-p or --pidfile filename       Write PID of mythbackend to filename
    +-d or --daemon                 Runs mythbackend as a daemon
    +-v or --verbose debug-level    Use '-v help' for level info
    +--printexpire                  List of auto-expire programs
    +--printsched                   Upcoming scheduled programs
    +--testsched                    Test run scheduler (ignore existing schedule)
    +--resched                      Force the scheduler to update
    +--nosched                      Do not perform any scheduling
    +--nojobqueue                   Do not start the JobQueue
    +--noautoexpire                 Do not start the AutoExpire thread
    +--version                      Version information
    +
    +
    +

    +

    Running mythbackend as a daemon and using the logfile option will allow you +to have mythbackend automatically start up during boot. You can follow the +steps outlined in the section called +Automatically starting mythbackend at system boot time for +configuration steps.

    +

    If you enable the -l parameter, you will want to keep your logfiles +rotated (so that they don't fill up a partition). See the section called +Automatically rotating logs for more +information.

    + +

    9.3 Configuring a non-master backend +

    + +

    Ensure that you've granted access to the master MySQL database for remote +backends as discussed in the section titled +Modifying access to the MySQL database for multiple systems and that +you have the correct IP address for the database server in the "Database +Configuration" screen of the mythtv-setup application on this slave backend.

    +

    +

    + + +NOTE: Slave backends must not run a local MySQL +daemon. By default, they will connect to their local daemon rather than the +central database, causing unexpected behavior such as empty "Watch +Recordings" lists and a failure to locate the Video Sources defined on the +master backend. Modify the /usr/local/share/mythtv/mysql.txt file +on all slave backends to ensure that the DBHostName has the address +of the MySQL server. +Caveat: You may make a slave backend the primary MySQL server, or run a +non-MythTV database on a slave backend as long as you have edited the +mysql.txt file on all systems and made it consistent. There can be only one authoritative MySQL database in a MythTV system - +errors such as the one above ensue if backends and frontends have differing +ideas of which MySQL database they should talk to. +
    +

    +

    Make sure that the IP addresses on the General setup screen are accurate. +If the slave backend can't communicate with the master backend due to IP +address misconfiguration then MythTV will not function properly.

    +

    Configuration of a non-master backend follows the same general procedure +as that of the master backend, with the exception that you skip over the +"Video Sources" step. All possible video sources need to be defined on the +master backend system; only the master backend will query a listings +provider to obtain guide data for all the non-master backends.

    +

    +

    + + +NOTE: Do not run mythfilldatabase on a non-master backend. +
    +

    +

    9.4 Configuring and running mythfilldatabase +

    + +

    +

    + + +NOTE: mythfilldatabase might take a while to complete, +depending on any number of factors, most of which you can't control. It's +best to just let the program run to completion. +
    + +mythfilldatabase --help will give a full listing of the options +available.

    +

    mythfilldatabase --manual is another option; the manual option will +allow you to fine tune channel frequencies and specify which channels will +be added to the database.

    +

    mythfilldatabase --file is an option if there isn't an XMLTV grabber +for your country, but you do have an XML formatted listings file +created by some other program.

    +

    mythfilldatabase --xawchannels is an option if you have used +xawtv to fine-tune your channels and would like to import the fine +tuning offsets into MythTV.

    +

    mythfilldatabase --refresh-today will only pull guide data for +today (in case of late-breaking changes to the schedule).

    + + +

    Periodically running mythfilldatabase

    + +

    In order to keep your database filled, mythfilldatabase should be +run once a day.

    +

    To use MythTV's built-in capability, you'll need to run the +mythfrontend Setup option. From the mythfrontend, enter the +Setup>General screen and advance to "Mythfilldatabase", the fourth screen. +Select the checkbox, then complete the options as you see fit. The +mythbackend program will now run mythfilldatabase for you.

    + +

    9.5 Grabbing channel icons for Schedules Direct users +

    + +

    While the Schedules Direct TV listings service has several advantages, it +does not support grabbing logo icons for the stations you receive. However, +there are utilities provided with MythTV which you may use to grab your +initial set of icons and to keep them updated if your lineups change.

    +

    First, you need to generate or obtain an XML file with the information for +your stations.

    +

    If you have XMLTV software installed, there is a perl script in MythTV's +contrib/ directory which will generate this file for you. Run the +command: +

    +
    +$ perl mkiconmap.pl
    +
    +
    +

    +

    You will be asked for your zip code and the service that you use. If there +are no errors, the iconmap.xml file that you need for the next step +will be created.

    +

    If you do not have XMLTV software installed and do not want to install it +for the sake of this minor task, there is a generic +contrib/master_iconmap.xml which you can copy and use but this may +not be as complete as using the specific information for your service.

    +

    Once you have an iconmap.xml file, add the icon information to your +database and grab any new icons with the command: +

    +
    +$ mythfilldatabase --import-icon-map iconmap.xml --update-icon-map
    +
    +
    +

    + +

    10. Configuring mythfrontend.

    + +

    Once you have completed configuration of your backend systems, the next +step is to configure the frontend client.

    +

    When you start mythfrontend for the first time, it will attempt to connect +to a configuration database on the local machine. If there is none, a +"Database Configuration" screen will appear, and you will need to fill in +some details. The "Host name" field needs the backend or database server's +IP address or DNS name, and the User or password fields may need to be set +to match your database user accounts. After editing those fields, press +Enter twice to write these configurations on your local machine, and attempt +to connect to the database. If you make any mistakes, the screens will pop +up again.

    +

    Now that mythfrontend has started up, you should have a number of +buttons/choices. Before doing anything, go to TV, then to Setup and +configure the frontend client. +

    + + +NOTE: You should go through the various setup screens in +mythfrontend before using any other modules to ensure that the the database +is correctly initialized. +
    +

    +

    10.1 General +

    + +

    The General screen has configuration items that don't really fit anywhere +else. The first few configuration items ask you to indicate the number of +seconds to record before or after a program, which is useful if the +broadcast network or your system clock are out of sync and will help prevent +you missing the beginning or end of a program.

    +

    To change the value, use the left and right arrow keys to increment and +decrement the number of seconds. When you're satisfied with the result, use +the down arrow to put the input focus on the Next button or press RETURN to +continue to the next page.

    +

    The next page has a number of options to do with how channels are displayed +on your system. The help text will give you more information. Move the +focus to Next and press the space bar to continue.

    +

    The last General page sets up some final configuration items. See the help +text for more information.

    + +

    10.2 Appearance +

    + +

    This set of screens is mostly concerned with how MythTV will look on your +system. From here, you can choose different themes and set the resolution +of your system.

    + +

    10.3 Program Guide +

    + +

    Fairly self explanatory. Note that the alternate program guide does not +use the same font settings as defined in Appearance, so if the EPG is +unreadable this is where you make the adjustments to fonts, number of +elements displayed, etc.

    + +

    10.4 Playback +

    + +

    The one configuration item which may cause problems on your system is the +"Deinterlace playback" setting. MythTV uses a linear blend algorithm for +deinterlacing, which will improve how the image looks on your screen. +Deinterlacing requires that your processor support SSE. (Streaming SIMD +Extensions, aka "MMX2"). Early Intel Celeron (those that don't use the +Coppermine 0.18um core and are usually <600MHz), Pentium Pro and Pentium II +CPUs do not have SSE, so make sure you haven't enabled deinterlacing if +your processor doesn't support it. If you enable it, and your processor +doesn't support SSE, you will get "Illegal Instruction" errors.

    +

    To determine if you've got SSE on an Intel processor, you can: +

    +
    +$ cat /proc/cpuinfo
    +[snip]
    +flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca
    +cmov pat pse36 mmx fxsr sse
    +
    +
    +

    +

    Notice the sse at the end of the line - this tells you that this +processor will be able to deinterlace correctly.

    +

    On an AMD processor, look for "3dnow" in the cpuinfo line; "3dnow" is AMD's +implementation of SSE instructions, so if your processor has 3dnow you +shouldn't have any issues with deinterlacing.

    +

    Video Filters

    + +

    MythTV provides a means of employing video filters while recording and +during playback. These filters can be used to improve or modify the video +image, including hiding the effects of an interlaced image or reducing the +impact of noise in a poor video signal. The following is a brief +introduction to introduce you to the filters that are available in MythTV +version 0.20 and higher.

    +

    Applying filters

    + +

    One or more filters can be included in a "filter chain". The filters to +be used are identified in a "filter string". A filter string is a group of +filter names and parameters separated by commas. To include parameters, the +filter name is followed by "=" and the parameter information. There should +be no spaces in the filter string. Here is an example filter string:

    +

    With parameters: kerneldeint=10:1,denoise3d=12

    +

    Without: kerneldeint,denoise3d

    +

    Recording filters are set for each individual channel. These may be used +when encoding in software (MPEG-4, RTjpeg) but do not apply when using a +capture card with hardware encoding such as those supported by the ivtv +driver, DVB, HDTV or MJPEG cards. You can run MythTV's "setup" program and +select the "Channel Editor". On the first page for each channel, you can +enter a filter string in the box titled "Video filters". If you are running +"mythweb" on your web server, you can click on "Settings" then "Channels" +and enter filter strings in the "videofilters" column.

    +

    Playback filters are per-host and apply to any recording you watch from the +frontend where filters have been applied. Playback filtering can only +work with software decoding so the viaslice, xvmc, and ivtv outputs ignore +filters entirely. From "mythfrontend" go to Setup->TV Settings->Playback. +Enter your filter string in the box titled "Custom Filters".

    + +

    Currently Available Filters

    + +

    "Deinterlace Playback" checkbox.

    +

    This implements special behavior needed for the "bobdeint" filter but can +also be used to choose any of the deinterlace filters. If you prefer, you +may leave this unchecked and include any of the deinterlace filters, other +than "bobdeint", in your custom filter chain.

    +

    o The "invert" filter

    +

    Invert ignores any parameters and inverts the pixel values of the video +frames. In other words, a negative image. This would rarely be useful but +may be a good example to verify that your filter strings take effect.

    +

    o The "linearblend" filter

    +

    It is a simple deinterlacing filter that ignores parameters and works by +blending adjacent lines. It replaces combing in interlaced video with a +less distracting "ghost" image.

    +

    o The "bobdeint" filter

    +

    This filter splits the interlaced image into two separate fields that +can be line doubled then displayed at twice the frame rate. If the +display is at the same refresh rate as the recording (59.92Hz NTSC or +50Hz PAL) this will cause each refresh to show objects in motion in +a new position with no jagged edges. However, if the display is not +synchronous, it will cause flickering or the appearance of the picture +moving up and down by one line.

    +

    +

    + + +NOTE: This filter requires the frame rate to be doubled +and therefore can only be used with the "Deinterlace Playback" checkbox. +Do not include this in your filter chain. +
    +

    +

    o The "kerneldeint" filter

    +

    Kerneldeint is a more complex deinterlacing filter which applies a filter +kernel using input from several lines. It generally removes combing without +a "ghost" image, sometimes leaving a faint outline of the image from the +other field. It is considered to be less distracting to watch than +linearblend or no filter at all. It accepts one or two integer parameters +separated by a colon.

    +

    The first parameter is the filter threshold and defaults to 12. Adjacent +lines differing by more than the threshold value are filtered. The second +option defaults to 0. If set to a non-zero value, it will cause the filter +to skip chroma, and filter only the luminance. It may be useful on some +capture cards which do not capture the chroma fields of interlaced video +correctly.

    +

    o The "onefield" filter

    +

    This is a simple one-field deinterlacing filter that uses only one field of +the interlaced video. By default it keeps the top field, though passing the +parameter "bottom" will cause it to keep the bottom field instead.

    +

    This filter is primarily useful for those who display 1080i HDTV signals +with a video mode that has 540 pixels vertically. The advantage over other +deinterlacing filters is that scenes with motion never show combing or +ghosting.

    +

    o The "adjust" filter

    +

    This filter adjusts the digital values for luma and chroma to ensure that +they will fall within the ranges specified in the ITU-R601 standard. By +default, this corrects a known problem for the luma range used by bt8x8 +chips which causes video to look washed out. If parameters are passed, there +need to be exactly six. However, passing a single parameter of "-1" will +disable the filter.

    +

    1: luma minimum input value (int) +2: luma maximum input value (int) +3: luma gamma correction (float) +4: chroma minimum input value (int) +5: chroma maximum input value (int) +6: chroma gamma correction (float)

    +

    The default bt8x8 correction values are equivalent to +"16:253:1.0:2:253:1.0". Output ranges are fixed at ITU-R601 values (16-235 +luma, 16-240 chroma).

    +

    NOTE: If it is not already specified in the filter chain, this +filter will be automatically applied when recording with the "bttv" driver.

    +

    o The "quickdnr" filter

    +

    A fast temporal denoiser. This can take 1, 2 or 4 parameters, each being a +value from "0" for the least filtering to "255" for the greatest filtering. +With one parameter, the filter will compute the values it should use for all +of its variables. Two parameters will set the filter strength for luma and +chroma independently. If you are interested in how the algorithm works, you +may examine the source code to see how four parameter are used.

    +

    o The "denoise3d" filter

    +

    A slower denoiser that applies a spatial and temporal low-pass filter. The +spatial filter can remove some noise that quickdnr can't, but a more +powerful CPU is needed. This filter accepts 3 float parameters:

    +

    +

      +
    • luma spatial filter strength
    • +
    • chroma spatial filter strength
    • +
    • luma temporal filter strength
    • +
    +

    +

    Reasonable defaults will be selected for omitted parameters. The chroma +temporal filter strength is calculated from the other filter strengths.

    +

    o The "crop" filter

    +

    Covers edges of video with black bars. This helps improve video quality +when the edges of the frame are distorted. By default, this removes 16 +pixels from each edge. This can optionally take four parameters representing +top:left:bottom:right. The number times 16 is the number of pixels to remove +so, for example, the default is "=1:1:1:1".

    +

    o The "forceyv12" and "forceyuv422p" filters

    +

    These force the filter manager to use the given format. You can use one of +these at the head of a filter chain to change the capture format. The most +likely use would be forceyuv422p to use YUV422P capture on cards with known +chroma interlacing problems with YV12.

    +

    There are some filters included in the MythTV source code that should +not be used:

    +

    o The "forcergb24" and "forceargb32" filters

    +

    The two RGB formats should not be used because there is no conversion filter +for them yet.

    +

    o The "convert" filter

    +

    It exists but don't use it. The filter manager uses this filter +automatically when it is unable to match the input/output formats of two +adjacent filters.

    +

    o The "postprocess" filter

    +

    While this exists in MythTV source code, it is currently not recommended for +use.

    + +

    Usage Considerations

    + +

    There are trade-offs to consider when deciding if it would be wise to use +a filter. Any processing will modify the original image so you should assess +if the filter has made a noticeable improvement to the picture in order to +justify the impact of the processing. Adding any filter will inherently +increase CPU usage. The impact can vary dramatically depending on your CPU +type and speed, the resolution of the recording, which filters you are using +and other factors. You can only determine what is right for you through +experimentation. However, as a starting point, here are some filter strings +that you may find useful:

    +

    For typical broadcast stations: "kerneldeint,quickdnr"

    +

    For stations with poor signal quality: "linearblend,denoise3d=12"

    +

    For synchronous TV-out: check Deinterlace with "Bob (2x framerate)"

    + +

    10.5 Recording +

    + +

    Depending on your capture card, MythTV offers different video encoders. +The following types of hardware encoding cards are supported: +

    + +For cards without hardware encoding capabilities (all cards supported by +V4L not listed above), Myth includes two methods for software encoding: +RTjpeg and MPEG-4. RTjpeg has significantly fewer CPU demands than MPEG-4, +but it generates larger files than MPEG-4 for a given recording.

    +

    For DVB and HDTV cards, no further configuration is required after +setting up the card using the 'mythtv-setup' program. +For all other cards, configuration is done through MythFrontend. +Selecting 'Recording Profiles' from the 'TV Settings' screen will list +the profiles currently available for the cards in your system. +Depending on what types of cards you have installed you may see: +

    +
    +(Create new profile group)
    +Software Encoders
    +Hardware MPEG Encoders
    +Hardware MJPEG Encoders
    +Transcoders
    +
    +
    + +The '(Create new profile group)' option will allow you to create custom +profiles in case you have multiple backends. Note that custom profiles +are per backend and card type. If you have 2 MPEG-2 encoders in a given +backend system, creating a custom profile will affect both of them. This +option should not be needed otherwise.

    +

    The 'Transcoders' group is a little different from the others. Selecting +this group will result in a menu with the following options: 'RTjpeg/MPEG-4' +and 'MPEG-2'. These types indicate what transcoder options will be used for +a given input type (i.e. the 'MPEG-2' settings would be used to transcode +MPEG-2 files into MPEG-4. The source of the MPEG-2 stream (DVB, HDTV, or +PVR-x50) does not matter. Configuration of the options is the same as below +(although any resolution settings will be ignored).

    +

    Selecting any of the other options will show a new screen with a list of +four profiles: +

      +
    • Default
    • +
    • Live TV
    • +
    • Low Quality
    • +
    • High Quality
    • +
    +

    +

    The Default profile will be used for any recording which does not otherwise +have a specific profile assigned. The 'Live TV' profile will be used when +watching TV. The remaining two profiles are available for customizing to +allow for more precise control over what quality is used for a given +program.

    +

    Selecting a profile will allow you to adjust the relevant options for that +card. The most significant setting is the recording resolution, but you can +also choose encoding format, audio format, and tweak other encoder specific +properties.

    +

    +

    + + +NOTE: although the width and height can be changed to almost +anything, if you start MythTV and don't see video or you get "segmentation +fault" errors, it is likely that the video4linux (v4l) subsystem did not +like the height and width parameters specified. It's best to leave the +default as-is until you're sure that MythTV is operational. +
    +

    +

    See the +What capture resolution should I use? How does video work? section for more information.

    + +

    10.6 Xbox Frontends +

    + +

    MythTV is able to control the LED on the Xbox to indicate backend +recording status.

    +

    To control the LED, you will need the blink program from the +xbox-linux project, which is installed as /bin/led on GentooX. On +Xebian (the new Ed's Debian) you must install it yourself. On other +distributions it may or may not be installed as a program called +blink and should be located in your path. (Type which +blink to see if the program is available.) If you do not have +blink, you may obtain it from the Xbox-Linux project site at +http://xbox-linux.sf.net/. The +program you need is part of the eds_i2c_staff module in CVS. Note +the spelling.

    +

    Once you have installed blink you will need to set permissions. +blink needs write permission to the i2c device to function +properly. There are three methods to accomplish this. First, you could run +mythfrontend as root, which is the simplest method, but could +potentially be a security risk. Next, you may make the blink +binary setuid root, which allows non-privileged users to run a program with +root capability. This is done by typing the command: +

    +
    +$ su
    +# chmod u+s /path/to/blink
    +
    +
    + +The final technique would be to set the /dev/i2c/0 device read/write +for all users, but this is the least preferred method.

    +

    Now it's time to setup MythTV for Xbox hardware. Enter Setup -> General. +On the second page check the 'Enable Xbox Hardware' option. Upon reentering +the settings, you should have a new option named 'Xbox'. Within this option +you may select the distribution, LED colors for recording and the update +interval. If you select GentooX as the distribution led will be +used as the blink binary name, otherwise, blink is used. +Colors should be self explanatory. The update interval determines how often +the frontend should poll the backend to determine if the status has changed.

    + +

    11. Using MythTV.

    + +

    +

    + + +NOTE to Red Hat/Fedora 4 users: Red Hat Linux and Fedora Core ship +with Gnome as the default desktop environment. However, Gnome seems to have +issues with window focus and window switching which sometimes cause +mythfrontend to obscure the video. KDE does not seem to have any such +issues. Therefore you will need to switch to KDE by selecting +RedHatMenu>Extras>System Settings>Desktop Switching Tool and choose "KDE". +NOTE to Fedora Core 5 and 6 users: Fedora 5 and 6 no longer have +this tool in the Menu. Use "switchdesk KDE" from a command line. Read "man +switchdesk" for further information about changing to other desktop +environments. +
    +

    +

    11.1 Keyboard commands +

    + +

    The keys.txt file describes what the various keyboard commands are. +If you have loaded mythweb, you may change the default keys to your liking.

    +

    mythfrontend

    + +

    +

    +
    +Arrow keys used to move the highlight point around
    +ALT-F4 exit out of the application
    +Space/Enter take action on the item under the highlight point
    +P play in both "Watch a Recording" and "Delete a Recording"
    +D delete in both "Watch a Recording" and "Delete a Recording"
    +U to view details for the currently selected show on the Watch or Delete screens, EPG, "Program Finder", "Fix Scheduling Conflicts" and search results screens
    +O to list the upcoming episodes for the currently selected show on the EPG, "Program Finder", "Program Recording Priorities", "Fix Scheduling Conflicts" or search results screens
    +I edit recording options from the EPG, "Program Finder", "Program Recording Priorities", or "Fix Scheduling Conflicts" screens. From the Playback and Delete screens, 'I' presents options for recorded shows such as Auto Expire or Stop Recording. Pressing 'I' while on the Recording Options screen will take you to the Advanced Recording Options screen. +
    +

    +

    +

    Watching TV or a recording

    + +

    +

    +
    +Up or down keys change the channel
    +num pad Type a number to enter a channel number or jump amount (HHMM format)
    +P pause / play. You may also add an explicit keybinding for 'Play' through MythWeb, returning you to normal speed if you are in slow motion, rewind fast forward or pause mode.
    +C change inputs on TV Tuner card
    +ESC quits
    +I puts the On-screen Display up again. During playback, 'I' toggles between position and show description info. If a jump amount is entered, jump to that position.
    +M brings up the electronic program guide (Grid) -- see the EPG section
    +Page Up jump back the configured number of minutes (default is 10)
    +Page Down jump ahead the configured number of minutes (default is 10)
    +End or Z skip to next commercial break marker
    +Home or Q skip back to previous commercial break marker
    +T toggle close caption support Pressing 0-9 (preferably 3 times) + T changes teletext page and turns on teletext.
    +F rotate between the various Picture Adjustments (Colour, Hue, etc.) While Picture Adjustment is on-screen, use Left and Right arrows to adjust. These settings adjust the look of the video playback, and are independent of the G-key settings used at record-time.
    +[ or F10 decrease volume
    +] or F11 increase volume
    +| or F9 toggle mute
    +/ jump to the next "favorite" channel
    +? mark/unmark the current channel as a "favorite"
    +U increase the play speed
    +J decrease the play speed
    +A Adjust time stretch (speed up or slow down normal play of audio and video
    +W cycle through zoom and fill modes: 4:3 aspect ratio, 16:9, 4:3 Zoom  (like Pan and Scan), 16:9 Zoom, and 16:9 Stretch (eliminates black  sidebars in TV signal)
    +F8 toggle the sleep timer 30m->1hr->1hr30m->2hr->Off
    +CTRL-B Jump to the beginning of the recording / ringbuffer
    ++ Switch between audio streams
    +Left (if a jump amount is entered) to jump back that amount
    +Right (if a jump amount is entered) to jump ahead that amount
    +
    +
    + Without the stickykeys option selected
    +Left rewind the configured number of seconds (default is 5)
    +Right fast forward the configured number of seconds (default is 30)
    +< starts rewind mode as if stickykeys are selected
    +> starts fast forward mode as if stickykeys are selected
    +
    +
    + With Stickykeys option selected
    +Right starts fast forward mode
    +Left starts rewind mode
    +
    +
    + In fast forward or rewind mode:
    +Left/Right increases the ff/rew speed
    +0 plays at normal speed, but leaves the time indicator on screen
    +1 or 2 plays back more slowly than normal ff/rew speed (1 is slowest)
    +3 plays back at normal ff/rew speed
    +4-9 plays back faster than normal ff/rew speed (9 is fastest)
    +Space exits fast forward or rewind mode
    +
    +
    + While video is paused:
    +Left rewind 1 frame
    +< rewind 1 second
    +Right advance 1 frame
    +> advance 1 second +
    +

    +

    +

    Watching TV only

    + +

    +

    +
    +G rotate between the various Picture Adjustments (Colour, Hue, etc.) for recording. These values affect the look of the resulting .nuv file, and are independent of the playback picture settings. While Picture Adjustment is on-screen, use Left and Right arrows to adjust.
    +H Channel history. Each repeat steps back through the previous channels.
    +O Turns on 'Browse' mode, allowing user to browse channels and program info while watching current show FullScreen.
    +Y switch between multiple capture cards.  NOTE: you will lose your LiveTV buffer on your current card. Useful for different-sourced cards (such as Dish Network on one, HDTV over-the-air on another card.)
    +
    +

    +

    +

    LiveTV Browse Mode

    + +

    +

    +
    +Left browse program prior to current listed program
    +Right browse program following current listed program
    +Up browse program on channel above current listed channel/program
    +Down browse program on channel below current listed channel/program
    +/ browse program on next favorite channel
    +0-9 enter a channel number to browse
    +Space/Enter change channel to channel of current listed program
    +R/r Toggle recording of current program (cycles through types)
    +ESC/O Exit Browse mode +
    +

    +

    +

    Playback Recording Zoom Mode

    + +

    +

    +
    +Left Move video to Left
    +Right Move video to Right
    +Up Move video Up
    +Down Move video Down
    +PageUp Zoom In
    +PageDown Zoom Out
    +Space/Enter Exit Zoom mode leaving picture at current size and position
    +ESC Exit Zoom mode and return to original size +
    +

    +

    +

    If you have two or more tuner cards

    + +

    +

    +
    +V toggle Picture-in-picture on or off
    +B toggles the window focus (lets you change channels on the PiP window)
    +N swaps the two channels by changing channels on both cards +
    +

    +

    +

    Watching a recording only

    + +

    +

    +
    +Space/Enter set a bookmark at that point. Next time you start the recording, you will automatically jump forward to this point and clear the bookmark.
    +X queues the current recording for transcoding
    +O brings up menu to allow toggling settings such as Commercial Auto-Skip, Auto-Expire, etc.
    +D exits the current recording and displays the Delete menu
    +E or M enters/exits edit mode.
    +
    +
    + In edit mode
    +Left/Right move forward and backward
    +Up/Down alter the amount of time you jump forward and backward. Increments are: nearest cutpoint, nearest video keyframe, 1 frame, 0.5 seconds, 1 second, 20 seconds, 1 minute, 5 minutes, and 10 minutes.
    +PageUp/PageDown move forward and backward to the nearest cut point
    +< or > move forward or backward by 10 times the normal jump amount
    +Space/Enter allows you to set or delete a cut point
    +Z loads the commercial skip list (if one exists) into the cutlist
    +C or Q clear all cut points in the cutlist
    +I Inverts the cutlist +
    +

    +

    +

    EPG

    + +

    +

    +
    +Arrows are used to move the highlighted program point around
    +A, D, S, W perform the same as left, right, down and up
    +PageUp/PageDown move the channel list up or down a page
    +Home/End move the highlight left or right by one day
    +Ctrl+Left or < move the highlight left by one page
    +Ctrl+Right or > move the highlight right by one page
    +9, 3, 7, 1 (like a numeric keypad) perform the same as PageUp, PageDown, Home and End
    +I bring up more information about a show, and allow you to schedule a recording. If you select "Record this showing" while watching Live TV you can "Instant Record" a program.
    +Space/Enter allow you resolve conflicts or change overrides. If the program is not already scheduled to record, it will instead act like pressing 'I'.
    +M when on a channel will change to that channel
    +ESC or C exits without changing the channel
    +R change the current item from Recording/Not-Recording. Successive keypresses cycle through the scheduled recording type list.
    +X change the channel to the currently selected channel without leaving the EPG (Most useful in the alternate EPG)
    +? mark/unmark the current channel as a "favorite"
    +/ or 4 toggle the guide listing between all channels and filtered "favorites" +
    +

    +

    +

    Setting Program or Channel Recording Priorities

    + +

    +

    +
    +Right increases priority value
    +Left decreases priority value
    +1 sorts by title
    +2 sorts by priority
    +Home/End toggle sort priority
    +I edit recording options
    +ESC commits changes and exits +
    +

    +

    +

    Viewing Scheduled Recordings/Resolving Conflicts

    + +

    +

    +
    +1 show all recordings
    +2 show only important recordings
    +Home/End toggle show showing all/important
    +I edit recording options
    +Space/Enter resolve conflict or override +
    +

    +

    +

    Viewing Search Listings

    + +

    +

    +
    +Home change to the previous view if applicable
    +End change to the next view if applicable
    +M select another view if applicable. In the title and description search popup, press M again to edit or delete the selected view. +
    +

    +

    +

    Recording Profiles Setup Screen

    + +

    +

    +
    +D on a custom profile group displays a popup to delete the group
    +
    +

    +

    +

    Recording Groups

    + +

    In the Watch Recordings screen, Recording Groups allow you to separate +programs into user-defined categories, such as "Kids", "Alice", "Bob", etc. +This can be used to reduce clutter, or to segregate content if you use the +PIN function. +

    +
    +M change the view or to set a group password
    +I move a program from one Recording Group to another +
    +

    +

    +

    Watch Recordings Screen

    + +

    +

    +
    +1 or F1 Meaning of the icons
    +/ Tags a recording. Tagged recordings can be played either in order or shuffled and deleted as a group. You can also change the recording group for several recordings at once by tagging them and using the  Menu (m) button, selecting "Playlist options",  then "Change Recording Group".
    +? Clear the tagged list. +
    +

    +

    +

    Remote Controls

    + +

    If you are using MythTV with just a remote control then it is suggested that you +map the remote control keys as described below. Your remote control may not +have the same set of keys as those named below, the names are only a suggestion +that roughly correspond to the function.

    +

    If you are adding new key bindings to the program then consideration of this +suggested list will help users with remote controls.

    +

    This list assumes a minimal remote control that only has 20 keys, nearly all +features can be used with this configuration. If you have more keys then you +can access all of the features. With only 16 keys most features are usable. +

    +
    +REMOTE CONTROL LIRC KEYSTROKE FUNCTION
    +0 - 9 0 - 9 channel selection, EPG navigation, ff/rew speed setting (with stickykeys)
    +Left Arrow Left scroll left, rewind
    +Right Arrow Right scroll right, fast forward
    +Up Arrow Up scroll up, channel change up
    +Down Arrow Down scroll down, channel change down
    +Select / OK / Play Space Select item, play (with stickykeys) set bookmark
    +Cancel Escape Cancel, quit playback
    +Menu m EPG (from watching TV) edit (from playback).
    +Pause p Pause
    +Other key 1 i Information
    +Other key 2 c Change tuner card input +
    +

    +

    + +

    11.2 Using themes with MythTV +

    + +

    MythTV is "themeable", meaning that the visual appearance of the program +can be modified by the user without re-compiling or altering the program +functionality. Download the MythThemes tarball from the website and untar it:

    +

    +

    +
    +$ tar -xjf myththemes-0.21.tar.bz2
    +$ cd ~/myththemes-0.21
    +$ qmake myththemes.pro
    +$ su -
    +# make install
    +# exit
    +$
    +
    +
    +

    +

    The theme will now be available in the mythfrontend Appearance section.

    + +

    11.3 Adding DishTV information to the database +

    + +

    A script for adding Pay Per View information into the MythTV database for +DishTV subscribers is available at +http://www.mythppv.com/.

    + +

    11.4 Adding support for an external tuner +

    + +

    MythTV supports changing the channel on an external tuner. If you have +an external tuner, such as a DirecTV or digital cable set top box, you +should add /usr/local/bin/changechannel to your Input Connections in the +mythbackend configuration GUI.

    +

    However, there is not changechannel program per-se, because this is +going to be dependent on what sort of external tuner you have. Look in the +contrib/channel_changers directory for a number of programs and +scripts which may be used to change channels. Once you find one which +works, copy it to /usr/local/bin/changechannel.

    +

    Feel free to browse some of what sort of hardware is available at +http://store.snapstream.com/accessories.html, or if you wish to +assemble your own, rather than purchase, the following may be helpful: +http://www.dtvcontrol.com/ for +cable pinouts.

    + +

    11.5 Using Shutdown/Wakeup +

    + +

    What does the MythTV Shutdown/Wakeup function do? The scheduler on the +Master backend (MBE) keeps track of the idle status of the entire MythTV +system, including the Slave backends (SBE). If it considers the system to be +idle, and thus ready to shutdown, it sets the wakeuptime to the time of the +next recording and then proceeds to shut down all Slave backends and then +itself. Once it is time to begin recording, the Master backend and the Slave +Backends are automatically woken up. This system allows MythTV to record +like a normal VCR, thereby conserving power when not in active use.

    +

    In order to use the Shutdown/Wakeup function there must be some method of +waking up the Master backend. There are any number of solutions, but we +will discuss in detail two possibilities:

    +

    +

      +
    • Use another server that runs 24/7 and have it send a WakeOnLAN (WOL) +packet to wake the Master backend. This assumes that you have the WOL tools +installed, and that your Master backend motherboard supports WOL.
    • +
    • Use your motherboard's BIOS wakeup capability. You'll need a motherboard +that supports BIOS wakeup, and some tools. Two that work are: +http://sourceforge.net/projects/nvram-wakeup and +http://www.malloc.de/tools/wakeup_clock.html
    • +
    +

    + +

    A deeper look into the operation

    + +

    The scheduler keeps track of the idle status of the MythTV system. To +determine whether or not the MythTV system is idle, the following conditions +must be met for a period of time defined in the "Idle timeout (secs)" +parameter. +

      +
    • no client is connected to the server
    • +
    • no recording (neither LiveTV nor a regular recording) is currently taking place
    • +
    • no recording starts within a definable amount of time ("Max. wait for recording (min)")
    • +
    • the "pre Shutdown check-command" returns 0
    • +
    +

    +

    If we get to this idle state the Master backend will set the wakeuptime using the "Set +wakeuptime command", which is the same for WOL and BIOS wakeup. The Master backend will +then shut down the Slave backends and itself using the "Server halt command".

    +

    One caveat is that the scheduler tries to guess if the Master backend was started by a +wakeup call or by the user. If it thinks it was woken up by a user, it +blocks shutdown until a client connects to the Master backend, after which it will +behave as described above. To disable this feature, unset "Block shutdown +before client connected" in the mythfrontend Setup->Setup->General screen.

    +

    Once it is time to startup the system, the Master backend is woken up first and will +wakeup the Slave backends using the "Wake command for slaves". At this time, there is +no support for starting only the required Slave backend, so all Slave backends will startup.

    + +

    Setting up the MythTV side of this extension.

    + +

    There are a number of options that are used to control the Shutdown / +Wakeup feature.

    +

    Shutdown/Wakeup Options: +

      +
    • "Idle timeout (secs)" is the time the server waits while idle until a +shutdown occurs.
    • +
    • "Max. wait for recording (min)" is the time the Master backend waits for a recording +without shutting down. For example, this would be used to prevent a 10 +minute system shutdown if a recording is set to start 15 minutes from now.
    • +
    • "Startup before rec. (secs)" Sets how long before a programmed +recording the MythTV system will be woken up. This should be roughly be the +time your systems need to bootup, and if you have Slave backends, you'll +need to ensure this value is long enough for all your machines to perform +their bootup cycle.
    • +
    • "Wakeup time format" is the format of the wakeup time that is given in +the "Set wakeuptime command" as a parameter "$time". You need to set this +according to your wakeup mechanism. If you need seconds since the epoch +(1970-01-01) set the "Wakeup time format" to "time_t".
    • +
    • "Set wakeuptime command" is the command executed to set the new wakeuptime.
    • +
    • "Server Halt Command" is the command executed to shutdown the Master +backend and the Slave backends.
    • +
    • "pre Shutdown check-command" is used to give a +"Go/NO-GO" decision from a non-MythTV source. This command is executed +immediately before the shutdown would occur. The return value is use to make +the following choices: +
        +
      • If it returns a "0" the shutdown will occur as scheduled.
      • +
      • If it returns a "1" the "idle timeout" will be reset and the system +waits again for the timeout.
      • +
      • If it returns a "2" the entire shutdown sequence is reset. This means +that a new client connect is needed before a shutdown occurs, unless you have +the "Wait for client connect" setting disabled, in which case this is the same as +returning "1". An example of a use for this return value is to prevent the shutdown +if a user is currently logged in, or if a specific program (i.e. transcode, +automatic updates, etc.) is currently running. If you don't need it, leave +the field blank.
      • +
      +
    • +
    +

    +

    The "WakeOnLan settings": +These settings have nothing to do with using BIOS or WOL wakeup, they are +the same for both. +

      +
    • "Master backend" This setting defines timings for the frontends to +wakeup the Master backend using WOL. Useful if your frontend can emit a WOL +packet so you don't need to physically go to the Master backend if you're +trying to watch TV.
    • +
    • "Reconnect wait time (secs)" is the time the frontend waits after +executing the "Wake command" before attempting to retry the connection. This +should be roughly the amount of time your Master backend needs for bootup. +Set to "0" to disable. The frontends will retry to connect for "Count of +reconnect tries" times before giving up.
    • +
    • "Wake command for slaves" is the one command executed to wake +your Slave backends. This should be a script that contains the calls to +wakeup all Slave backend systems.
    • +
    +

    + +

    Using WOL to wake your Master backend.

    + +

    To use WOL to wake your Master backend you will need a WOL capable Master +backend, a machine that runs 24/7 which can execute an at-job and nc (netcat) +on the Master backend. I use some little bash scripts to make my DSL router +wakeup my mythbox if required.

    +

    Replace $SERVER and $PORT with your own settings! +On my Master backend I have a script that gets called as 'setwakeuptime command' which +looks like the following: +

    +
    +#! /bin/sh
    +echo $@ | nc $SERVER $PORT
    +
    +
    + +This simply cats the parameters (that is $time) to my 24/7 server. On my +$SERVER I have (x)inetd listening on $PORT starting a little script which +cares about setting the at-job. The following additions are necessary on the +$SERVER:

    +

    If you use inetd:

    +

    In /etc/inetd.conf add: +

    +
    +mythwake stream tcp nowait mythtv /usr/sbin/tcpd /usr/local/bin/mythwake
    +
    +
    + +If you use xinetd, save the following as mythwake in your +/etc/xinet.d/ directory: +
    +
    +service mythwake
    +  {    
    +        socket_type     = stream
    +        wait            = no
    +        user            = mythtv        
    +        protocol        = tcp
    +        id              = mythwake
    +        server          = /usr/local/bin/mythwake
    +  }
    +
    +
    + +and add the following to /etc/services: +
    +
    +mythwake        $PORT/tcp
    +
    +
    +

    +

    Finally, /usr/local/bin/mythwake looks like: +

    +
    +#! /bin/bash
    +#this should be a command to wake your server
    +WAKECMD="#!/bin/sh\n /usr/local/bin/wakeMBE"
    +#first we need to delete all wake jobs in queue
    +for JOB in atq | cut -f 1 ; do
    +    atrm $JOB;
    +done
    +#now we read the date from 'nc'
    +read date;
    +#now set the atjob
    +echo -e "$WAKECMD" | at $date ;
    +
    +
    + +SECURITY WARNING: +Be sure to secure $SERVER:$PORT from untrusted networks, because this +allows 3rd parties to run arbitrary code on your server!

    + +

    Using BIOS wakeup to wake your Master backend.

    + +

    Since I don't use this, I cannot say much about this. If your motherboard +supports any wakeup tool you have to call that tool as "Set wakeuptime +command" with the "Wakeup time format" suitable for that tool.

    +

    Wakeup the MySQL server using WOL

    + +

    If your MySQL server and your Master backend are not on the same machine, +you can have the Master backend wake your MySQL server using WOL. You will +find the settings for this in the second page of the mythtv-setup program, +or at the end of mysql.txt. The meanings are the same as +discussed in "The WakeOnLan settings" above.

    + +

    Tips/Tricks:

    + +

    If, for example, one of the Slave backends is also your desktop computer, +you could simply use a little script as 'server halt command' which first +calls /sbin/shutdown -t TIMEOUT where TIMEOUT is a value sufficient +for you to react. You could then popup a window using *dialog, asking for +permission to shutdown. If you cancel the shutdown, simply call +/sbin/shutdown -c.

    +

    If you get "nvram-wakeup: /dev/rtc: Device or resource busy" your +set-wakeuptime-script should stop the program that uses /dev/rtc before +setting the wakeuptime.

    +

    11.6 Controlling the mythfrontend via telnet +

    + +

    To use this feature you must first enable it in Settings>General>General

    +

    The network control listens on port 6546, as demonstrated below:

    +

    +

    +
    +$ telnet basement 6546
    +Connected to basement.
    +Escape character is '^]'.
    +MythFrontend Network Control
    +Type 'help' for usage information
    +---------------------------------
    +# help
    +Valid Commands:
    +---------------
    +jump               - Jump to a specified location in Myth
    +key                - Send a keypress to the program
    +play               - Playback related commands
    +query              - Queries
    +exit               - Exit Network Control
    +
    +Type 'help COMMANDNAME' for help on any specific command.
    +
    +# help jump
    +Usage: jump JUMPPOINT
    +
    +Where JUMPPOINT is one of the following:
    +channelpriorities    - Channel Recording Priorities
    +channelrecpriority   - Channel Recording Priorities
    +deletebox            - TV Recording Deletion
    +deleterecordings     - TV Recording Deletion
    +guidegrid            - Program Guide
    +livetv               - Live TV
    +livetvinguide        - Live TV In Guide
    +mainmenu             - Main Menu
    +...snip...
    +# exit
    +$
    +
    +
    +

    +

    Please note that this feature only allows one connection at a time, so any +new connections will automatically terminate prior ones.

    + +

    12. Scheduling Recordings.

    + +

    The MythTV master backend is responsible for managing the schedule for +all TV tuner cards on the master and any slave. Its job is to search the TV +listing for the shows you have requested and assign recordings to the TV +tuner cards. If none of the shows that you've chosen overlap, it simply +records all of them. However, if there are shows where the beginning +and end times overlap, the scheduler follows rules that you've specified or +makes logical decisions about what would be best if you haven't expressed your +preference. Further, the "Upcoming Recordings" page allows you make specific +decisions about what you really do and don't want to record.

    + +

    12.1 Record Types +

    + +

    When you choose a show that you would like to record from the +Options Page, there are eight different types of rules to help the +scheduler find which showings you would like to record.

    +

    +

      +
    • Single Record -- record only this title at this specific time and +this station. This is the best way to be sure that a certain showing will +be recorded. However, if the TV listings change and the show is not broadcast +at that time, the show will not be recorded but will be marked as Not Listed +to let you know that you should investigate. +
    • +
    • Find One -- this will record a title once from any of the times +that appear in the TV listings. This is useful for recording a movie +or special that has multiple showings because it allows the scheduler +to choose one that doesn't conflict. It is not a good choice for +recording a single episode of a series because it records the first +available showing of the title without regard to the episode +information. +
    • +
    • Record Weekly -- this records a show whenever the title is listed +on the same channel, weekday and time. Note that if the TV station +changes the schedule for a special episode, it would not be +recorded. However, you can add a Single record for the special +episode. If there are no matching showings in the TV listings, +a Not Listed item will be added to your schedule for the next +time slot to let you know that you should investigate. +
    • +
    • Find Weekly -- this will record a title once per week from any +of the times that appear in the TV listings beginning from the time of +the showing that was selected when the rule was set. This is useful +for news, current events or other programs where the same episode is +shown several times each week but the listings may not include +descriptive information. This may not be a good choice if there are +different episodes shown during the week. +
    • +
    • Record Daily -- this records a show whenever the title is listed +for the time and station on any day of the week. Here again, a show +will not be recorded if the time was altered by the station. If there +are no matching showings in the TV listings, a Not Listed item will be +added to your schedule for the next time slot to let you know that you +should investigate. +
    • +
    • Find Daily -- this will record a title once per day from any +of the times that appear in the TV listings beginning from the time of +the showing that was selected when the rule was set. This is useful +for news, current events or other programs where the same episode is +shown several times each day but the listings may not include +descriptive information. This may not be a good choice if there are +different episodes shown during the day. +
    • +
    • Channel Record -- records one showing of each unique episode from +any of the times the title is listed on this station. This is perhaps +the most common rule to use for most shows. +
    • +
    • Record All -- records one showing of each unique episode from +any of the times this title is listed on any channel. This can be +useful if a station has sister stations where shows are rebroadcast +allowing the scheduler to record rebroadcasts on the other station +when the original airing cannot be recorded.
    • +
    +

    + +

    12.2 Scheduling Options +

    + +

    Priority

    + +

    By default, all shows you select have equal value to the +scheduler. There are a set of rules to make good choices when +two or more shows are in conflict. However, priority values let the +scheduler know what you prefer so that it can set the schedule based +on your preferences.

    +

    Initially, recording rule priority values are set to zero. You may choose +to leave everything at "0" and let the scheduler follow rules to guess +what you might prefer when there are conflicts. However, if you have +one or two favorite shows, you may want to increase the priority +value so the scheduler will know that you would prefer recording +these over other shows. You might use certain values to rate shows +so that all favorites are 2. good shows are 1 and extra 'filler' +shows are all -1 for example. You could sort each title on the "Set +Priorities" page to have a unique value so the scheduler can know +which show you'd prefer versus any other show. The choice and style +are entirely up to you. However, the more information you give to +the scheduler, the more likely it will make the choices you would +prefer in the first place.

    +

    The scheduler choices are based on the total priority for a showing by +adding up all priority factors that match the showing. By default, most +of these factors are "0" but you may use any combination to express your +likes and needs.

    +

    +

      +
    • Per record rule -- this is the "priority" selection in the "Scheduling +Options" section of the options page and this value is included for any +showings that match the recording rule. You may choose to only use these +values and not use the other factors for the sake of simplicity and clarity.
    • +
    • Per record type -- Setup->TV Settings->Recording Priorities->General allows +you to add to the priority based on the type. It may make sense to increase +the value for "Single" so that by default they have an extra advantage over +other shows. The default is +1. You may want to decrease the value for Find +rules so that they will be less likely to interfere with regularly scheduled +shows and will be more likely to record in a non-conflicting time instead. +The default is -1.
    • +
    • Per channel -- Setup->TV Settings->Recording Priorities->Channel Priorities +can be useful if you believe that you prefer any of the shows on certain +channels. This would give all shows on a channel an advantage by default.
    • +
    • Input priority -- in the "mythtv-setup" program, the "Input Connections" +section allows you to add additional priority in the "Input priority". +This is simply another priority factor but has an interesting effect. If a +card input has a higher value than the other cards, the scheduler will see +that you would rather record showings of episodes on this input rather than a +showing on other inputs. If you have multiple cards of different quality, +you may want to set input priority to encourage the scheduler to record +shows on your best card(s) whenever possible. This can also be useful if you +have multiple video sources which include the same stations. For example, +with digital and analog cable you could increase the digital cable input +preference by 1 to tell the scheduler that you want to record from the +digital channel whenever possible but the channel on the analog input could +still be used when the digital input is busy.
    • +
    • Custom Priority -- this allows you to add any specialized factors you +would like in order to influence scheduling decisions. See the +Custom Priority section below.
    • +
    + +For any single showing of any show you've chosen to record, these factors +are added together to find the "total priority". This is the priority that +the scheduler uses to decide which showings are given the first choice when +filling in the schedule.

    +

    The scheduling priority of a show may also be used to determine +auto-expiration of recordings when disk space gets full (see +Auto-Expire, below).

    + +

    Duplicates

    + +

    Singles will record without regard to duplicate matching.

    + +

    The standard recurring methods of All, Channel, Weekly and Daily use the +descriptive information in the TV listings to try to record only one showing +of each unique episode. However, This goal is sometimes complicated by the +fact that the stations may not include a description for a specific episode +but use a generic description for the series instead. When there is a +generic description, the default behavior is to assume that it may be an +episode that you have not seen and to record it for you. One of the +duplicate matching options is "Record new episodes only". If this is +selected, listing that have an original air date of more than 14 days +earlier are considered repeats and are not eligible to record. Generally, +generic episodes will be marked as repeats also.

    + +

    Because of generic episodes and other situations, MythTV offers an +alternative approach where shows may be recorded by choosing from multiple +showings even when the descriptive information is not reliable. All of the +"Find" record types look for matching titles in the listings. If there is a +showing with specific episode information and that episode has recorded +before, that showing is marked as previously or currently recorded. The +scheduler will then choose to record the earliest non-conflicting showing +from any of other remaining showings regardless of the descriptive +information. Generally, Find One is most useful for movies or specials and +the Find Daily and Find Weekly rules are best for news or current events +shows that are repeated. However, these may be useful in other situations +where the standard recording rules may not work correctly.

    + +

    Conflicts

    + +

    As you add more shows that you would like to record, the scheduler +will eventually encounter conflicts. If there are two shows at the +same time and you have two or more TV tuner cards, both shows will +record. However, if there are more shows than cards, the scheduler +will have to decide what it thinks it should not record based on the +information you have given. If you see an unexpected situation you +are not "stuck" with the scheduler's choice. You can still tell the +scheduler exactly which shows you do want to record and/or don't +want to record in any situation.

    + +

    Scheduling decisions

    + +

    Here are the actual decisions made by the scheduler as it fills in the +schedule.

    +

    +

      +
    • Currently recording beats not currently recording -- A recording +in progress can not be moved to another input or time so it "wins" +its current timeslot. +
    • +
    • Single, Daily, or Weekly rules with no match are marked Not Listed -- +If these or Overrides do not match the current listings because the +listings have changed, they are added to the schedule and marked to +indicate that they will not record. +
    • +
    • Rules that could record beat rules that can not record a showing -- +If two rules match the same showing of a program, a rule marked as inactive +or a showing marked as a repeat, for example, yield to the other rule. +
    • +
    • More specific record type is used in place of less specific -- If +two rules match the same showing of a program, preference is given to +Don't Record then Override, Single, Find One, Record Weekly, Find Weekly, +Record Daily, Find Daily, Channel and finally All. +
    • +
    • Higher total priority beats lower total priority -- This is the +core of the scheduling process. Episodes of the highest priority show +are placed on the first available input followed by the next highest +priority show and so on. +
    • +
    • Future start time beats past start time -- If there is an +episode in progress and also a later showing of the same episode, it +is better to record the complete episode. If there isn't another +showing, it will start recording immediately to record the remaining +portion. This should only happen if you add a new rule while the show +is in progress or if the master backend is started after the start time +of a scheduled show. +
    • +
    • More specific record type beats less specific record type -- If +two shows are on at the same time and have the same total priority but +different types they will be sorted by Single then Find One, Record +Weekly, Find Weekly, Record Daily, Find Daily, Channel and finally +All. This only applies if the priorities are the same. +
    • +
    • If both start times have passed, later start time beats earlier start +time -- This attempts to miss the least amount of time. +
    • +
    • If neither start time has passed, earlier start time beats later +start time -- This helps assure that the earliest showing of an episode +has the advantage. +
    • +
    • Lower input id beats higher input id -- The scheduler fills in +open time slots on the first available input for the video source. The +next input is used when there is another show already placed for the +card of the first input. +
    • +
    • Older record rule beats newer record rule -- If two shows are still +equal after all of these other checks, the show whose record rule was added +first is preferred over a more recent addition. +
    • +
    • Postpone showings to resolve conflicts -- If Reschedule Higher +Priorities is set or if a conflict has the same priority as a show +that was scheduled at the same time, the scheduler will check to see +if a scheduled show can be moved to another input or later matching +showing without creating a new conflict so that the conflicting show +can be scheduled to record. +
    • +
    +

    + +

    Reschedule Higher Priorities

    + +

    Setup->TV Settings->Recording Priorities->General has a checkbox for +"Reschedule Higher Priorities" which tells the scheduler to try to be a +little smarter in certain situations. If this is checked, the scheduler will +look for situations where a show cannot record because all inputs for the +channel are used for higher priority shows. It will check to see if any of +the other shows could be recorded at another time so that the conflicting +show can be recorded in its place.

    +

    Generally, this is a good strategy but there are tradeoffs. If a higher +priority show is postponed, you will not get to watch it until it is +recorded in the later timeslot. There is also a risk that the TV listings +may change and the later showing may go away. In this rare case the higher +priority show may never record. On the other hand, if you do not use this +option you will miss recording some lower priority shows unnecessarily +unless you manually make similar changes.

    +

    By using Reschedule Higher Priorities, the scheduler will do a better job of +recording as many of your shows as possible when left unattended. It will +also be easy to see that shows have been marked to record at a later time. +You can then decide for yourself when you would prefer to record the first +showing by clicking "Record anyway".

    + +

    Controlling Your Schedule

    + +

    The Manage Recordings->Upcoming Recordings page is your control center +for the MythTV scheduler. Unlike other DVR systems, this one page gives you +all of the information and tools you need to see all of your alternatives +and make whatever adjustments you desire.

    +

    The upper half of the screen has a scrollable box listing items that match +your record rules sorted by time. The lower half shows the details for the +highlighted item. There are two 'views' available. Press "1" to include all +of the items that match record rules even if they do not need to be +recorded. Press "2" to focus on just the things that will record and items +that may need your attention. The message in the upper right-hand corner +will remind you when there are conflicts that would prevent one or more +shows from being recorded.

    +

    The items in the list are colored in the record color for things that +will record, white for things that may need attention, gray for those +that do not need to record and yellow when there is a time conflict. +Items at the top of the list may also be highlighted indicating that the +recording is in progress.

    +

    Along with the channels, start times and titles, the right-hand column has +a status code. Numbers indicate which card number has been assigned to +record the show. Letters are used to indicate the reason that something +will not be recorded. Just below the box is a short status message for the +highlighted item that indicates the type of record rule that was matched, +the "total priority" for this showing and a one or two word explanation of +the status code. If you press SELECT, you will see more information about +the status.

    +

    There are a few status codes that may require your attention. "C" indicates +that there are more overlapping shows to record than there are TV tuners to +record them. "L" indicates that the scheduler found that it may be better to +record a later showing of this episode. These states happen as a result of +your choices and should normally reflect your preferences. However, you may +notice situations where you would like to modify the scheduler's initial +choices.

    +

    The first thing you can do is to highlight an item and press INFO to +see the recording options page. From this page you can change the +record rule type, the duplicate matching rules, or raise or lower the +priority to resolve whatever problem you noticed.

    +

    Additionally, you can treat any individual showing as an exception that you +do want to record or don't want to record. To use these "override" features, +highlight the item and press SELECT. You will see a message explaining the +current status and at least an "OK" button to exit without making changes.

    +

    For items scheduled to record, there will be a button for "Don't record" +which will prevent recording this showing but will still allow the same +episode to record in the future. If there is episode description +information, you may also see a button for "Never record". This prevents +recording this showing and tells MythTV to remember that this is an episode +that you've seen or don't need to see if it is ever in the TV listings +again.

    +

    For items that are not scheduled to record, the message will describe the +reason and in the case of "C" or "L" it will include a list of the shows +that are scheduled to record instead. For any item that could potentially be +recorded there will be buttons for "Edit Options" and "Add Override". "Edit +Options" will allow you to change the options for the existing record rule +such as raising the priority so that the show will record. These changes +would apply to this and all future showings that match this record rule. +"Add Override" will allow you to set options that apply to the specific +showing without affecting the recurring record rule.

    +

    If you return to an override page after an override has already been set, +you will also see a "Clear Override" to undo your changes. This option makes +it very easy to try out some "what if" attempts when deciding on your best +strategy in a difficult situation.

    +

    For a recording in progress, there will be a "Change Ending Time" button. +This will take you to the options page for a Single or Override or create +an Override if it is a recurring rule. Here you can go to the Recording +Options section to change the program end time offset. If you extend the +end time so that it overlaps upcoming recordings, the schedule will change +to accommodate the new end time. This may cause a conflict or later showing +even for a show with higher priority. Therefore, it is a good idea to +check your schedule after changing the end time of a recording in +progress.

    + +

    12.3 Storage Options +

    + +

    Recording Profile

    + +

    Each recording rule can be configured with a different recording +profile. For example, colorful cinematography can be configured with a +"High Quality" profile, while 'talking heads' interviews shows can be +configured with a "Low Quality" profile. These recording profiles need to +be configured before using them (see +Recording, +above).

    + +

    Recording Group

    + +

    For organization of the "Watch Recordings" screen and the MythWeb +interface, recordings can be assigned into "recording groups".

    + +

    Storage Groups

    + +

    This allows you to select any special "Storage Groups" you may have +created to determine where recordings from this rule should be stored +on your disks. The "Default" storage group is always available.

    + +

    Playback Group

    + +

    This selects a set of pre-configured playback parameters which can be +created and edited in Setup->TV Settings->Playback Groups. When the +recording is played, the values from this playback group will be +used. This allows you to choose a default time stretch value, skip and +jump amounts appropriate for this type of television program.

    + +

    Auto-Expire

    + +

    MythTV will "autoexpire" old recordings to make room for new recordings +when disk space gets filled up. This option can be set to "Don't allow +auto expire" to prevent these recordings from being automatically deleted +when disk space fills up.

    + +

    The default setting is for all scheduled recordings to be eligible +for auto-expiration; this can be changed in the Settings->TV +Settings->General page by manipulating the "Auto Expire Default" +checkbox.

    + +

    The default auto-expire policy is "Oldest Show First"; the oldest +recordings are deleted first. The "Lowest Priority First" method +chooses to expire the lowest-priority recordings first.

    + +

    Episode Limit

    + +

    An episode limit can also be configured to limit the maximum number +of episodes recorded of a single series, to restrict that series' disk +usage. If this is set, you can further decide what to do when this +limit is reached; either stop recording that series, or to delete the +oldest episodes in favor of the new ones.

    + +

    12.4 Post Recording Processing +

    + +

    Commercial Flagging

    + +

    Select whether or not to automatically flag commercials for these +recordings. Commercial Flagging parameters can be set in +Setup->TV Settings->General.

    + +

    Transcoding

    + +

    Select whether or not to automatically transcode recordings to save +disk space. Before using this, you must first enable auto-transcode in +the recording profile and configure the transcoding parameters; see +Recording, above.

    + +

    User Jobs

    + +

    User Jobs allow you to configure up to 4 custom commands to run on +recordings. They can be configured in mythtv-setup. The following +tokens have special meaning when used in the User Job commands:

    +

    +

      +
    • %DIR% - the directory component of the recording's filename
    • +
    • %FILE% - the filename component of the recording's filename
    • +
    • %TITLE% - the title of the recording (e.g., name of the series)
    • +
    • %SUBTITLE% - the subtitle of the recording (e.g., name of the +episode)
    • +
    • %DESCRIPTION% - description text for the recording (from guide +data)
    • +
    • %HOSTNAME% - the backend making the recording
    • +
    • %CATEGORY% - the category of the recording (from guide data)
    • +
    • %RECGROUP% - the +recording group
    • +
    • %CHANID% - the MythTV channel ID making the recording
    • +
    • %STARTTIME% - the recording start time (YYYYMMDDhhmmss)
    • +
    • %ENDTIME% - the recording end time (YYYYMMDDhhmmss)
    • +
    • %STARTTIMEISO% - the recording start time in ISO 8601 format +(YYYY-MM-DDTHH:MM:SS)
    • +
    • %ENDTIMEISO% - the recording end time in ISO 8601 format
    • +
    • %PROGSTART% - the recording's start time (from guide data; +YYYYMMDDhhmmss)
    • +
    • %PROGEND% - the recording's end time (from guide data)
    • +
    • %PROGSTARTISO%, %PROGENDISO% - the recording's start and end +time in ISO 8601 format.
    • +
    +

    + +

    12.5 Advanced Recording Options +

    + +

    Creating Power Search rules with Custom Record

    + +

    MythTV's "Custom Record" feature gives you unlimited control for creating +specialized search recording rules to meet your needs. It allows you to +choose your criteria to search for matching shows based on any of the +information in the program listings, channel information, time functions and +more. This goes beyond the capabilities of any other DVR system and it is +unlikely that this level of scheduling customization will ever be available +in any commercial DVR system.

    + +

    Getting Started

    + +

    Go to Schedule Recordings->Custom Record. This page, helps you build a +database search one clause at a time. Each added clause further limits +which showings will be matched in the TV listings. You can test the +search at any time and when you are done, you can save your search as a +recording rule.

    +

    To familiarize yourself with how you can create custom rules, create a +simple rule to record "Nova" only in primetime.

    +

    The first item at the top of the page allows you to edit an existing rule +or create a new rule. Leave it on "<New rule>". Arrow down to the +third item which says "Match an exact title". Right and left arrows would +allow you to select any of several prefabricated pieces or full examples +but leave it on the default for now. Arrow down to "Add this example +clause" and press SELECT (Enter or Space on a keyboard). The large text +box should now show: +

    +
    +     program.title = 'Nova'
    +
    +
    + +As you have probably guessed, this says that we want to search for all +programs with the title "Nova" regardless of the time, day, channel, etc.

    +

    If you do not receive a PBS station that carries "Nova" or would like to use +another title, edit the title by pressing the down arrow to highlight the +text box and right arrow over the the word "Nova". If you are using a +keyboard you can simply delete the four letters and type a different title +between the quotes. With a remote control, you can do 'cell phone' style +text entry with the number pad. The delete key is the "X" in the grouping +for "1", zero is grouped with "9" and "0" acts as the "Caps Lock" key. You +can press ENTER in the text box to popup a virtual keyboard.

    +

    Note: the text box honors many familiar Emacs control keys. It is also +possible to cut and paste text into the text box so you can edit with a +favorite editor or insert a rule sent in email or from other sources.

    +

    In any case, choose a title that is shown both in primetime and late night +or daytime. Next, click the "Test" button. You should see a list of the +upcoming episodes for "Nova" just as if you had clicked the Upcoming +button for "Nova" elsewhere in MythTV.

    +

    Press ESC to go back to the Custom Record page. Move to the example +selector then press the right or left arrows until you find "Only in +primetime". Click "Add this example clause". You should now see: +

    +
    +            program.title = 'Nova'
    +            AND HOUR(program.starttime) >= 19
    +            AND HOUR(program.starttime) < 23
    +
    +
    + +Click "Test". You should now see a shorter list with only the showings that +begin between 7PM and 11PM. To create a rule for this, press ESC to go back +to the custom page and move to "Rule Name:" then type "Nova" or anything +else you would like. This is only a label and will not affect the search +results. Once a name has been entered, the "Record" button will light up. +Click this to enter the recording options page. If you named it "Nova" the +title will say "Nova (Power Search)". Set whatever options you would like +then click "Save these settings". You now have a special rule to record +"Nova" but only when it is shown in primetime.

    +

    You can make further modifications to this rule by returning to the Custom +Record page then press the right or left arrow keys on "Edit Rule:" until +you find "Nova". You can experiment and test but the saved rule will not +be updated until you click "Record" then "Save these settings".

    +

    To remove this, or any other rule, you can go to the "Recording Priorities" +page, arrow down to the title, press Enter and change the the recording type +to "Do not record this program" then "Save these settings".

    + +

    How it Works

    + +

    MythTV stores TV program information in a database and uses the Structured +Query Language (SQL) to access the data. Information about each TV program +is stored in the 'program' table and information about each TV station you +receive is stored in 'channel'. These two tables are used in the scheduler +queries and their columns are available to be used in your rules. The rules +you create are stored in 'record'.

    +

    Normal rules in MythTV simply match the title in the rule with the titles +in the 'program' table. MythTV also has search rules for "Titles", +"Keywords" and "People". These store the key phrase in the description +column of the rule and includes them in specialized SQL replacements for +the normal title check. There is also a type called "Power Search" which +takes the raw SQL in the description as the replacement for title +matching.

    +

    Custom Record is a tool to help you build valid SQL for Power Search rules. +You do not need to be a SQL expert to use Custom Record because the +examples are known to work correctly and are usually self-explanatory so you +can choose the pieces you need then modify them. Many powerful solutions to +unique problems are possible by combining the examples. With some creativity +and some knowledge of SQL, the possibilities are limitless.

    + +

    Common Tricks and Tips

    + +

    The example clauses marked "complete example" are actual rules that have +been used to address specific problems. You may find that some of these +are useful for you as-is or with slight modifications. These show off how +powerful custom rules can be but there are also several simple idioms that +you may find useful for many of the shows you would like to record.

    +

    Wait for a known title -- If there is a movie that you anticipate will be +televised in the coming months but is not yet in the listings, you can +select "Match an exact title", edit the movie title, click "Record" then +choose "Record one showing of this title". The rule will wait weeks, months +or years until this title shows up in your listings then it will record one +showing. These rules have no impact on the scheduler throughout the day and +only take a tiny fraction of a second when the master backend starts or when +the listings are updated.

    +

    Silence series out of season -- "Celebrity Poker Showdown", for example, +will have new episodes for a while then long periods where reruns are shown +dozens of times per week. By checking the previously shown flag you can +create a rule that will only match new episodes. Therefore, your schedule +won't be polluted with dozens of entries marked as "Repeat" or "Previously +Recorded". +

    +
    +       program.title = "Celebrity Poker Showdown"
    +       AND program.previouslyshown = 0
    +
    +
    + +This allows you to keep rules for your favorite shows that are dormant while +out of season but will spring back to life when new episodes appear.

    +

    Choose showings on certain days -- Several cable stations will show their +highest rated shows a dozen on more times per week. However, the scheduler +only needs two or three choices to do a good job of making a flexible +choice. +

    +
    +       program.title LIKE "Celebrity Fit Club%"
    +       AND DAYNAME(program.starttime) = "Sunday"
    +
    +
    + +This says to choose any showing of an episode that hasn't been recorded +when it appears on Sunday. This prevents all the other showings during the +week from being listed in the schedule.

    +

    Notice the word "LIKE" and the "%" at the end. This does wildcard matching +so that this would match even if the title ended with "2". "III" or +":Revenge of the Snapple Lady". This can be useful where the title may +change from one season to the next like "Survivor: %", "Big Brother%" or +"The Amazing Race%".

    + +

    Working with SQL

    + +

    As you experiment, it is possible that you may misplace a quote or mistype a +word. If there is a mistake when you press "Test" or "Record" you will see +an error message returned from the database. This will usually give you a +good idea about what needs to be fixed. However, for more subtle MySQL +syntax errors, you can find more information in the documentation at +http://dev.mysql.com/doc/mysql/en/. This contains a lot of +information that can be useful for Power Search rules such as the "Date and +Time Functions". There are many other good resources for SQL on the Web.

    +

    While the example clauses demonstrate how to use many of the data columns, +you can get a more complete list of all the columns that are available by +using a MySQL client program: +

    +
    +$ mysql -u mythtv -pmythtv mythconverg
    +mysql> describe program;
    +mysql> describe channel;
    +
    +
    + +This will show the names of all of the columns along with their type and +default value. Most are easy to understand but a few need some explanation +in order to use them effectively with Power Search. +
      +
    • "program.category_type" holds one of these exact four strings: "movie", +"series", "sports" or "tvshow". +
    • +
    • "program.airdate" is a string representing the year of release for +movies and may have no meaning for other types of shows. +
    • +
    • "program.stars" is a floating point number from 0.0 to 1.0. On a +four star scale, 1.0 would be four stars, 0.75 would be three stars and so +on. +
    • +
    • "program.originalairdate" if provided is the date when a show +was, or will be, first televised. This may be useful for finding +episodes before or after a certain date such as finding just the +original series of "Battlestar Galactica". +
    • +
    • "program.previouslyshown" is a column created by MythTV to try to +determine if a showing is more than 14 days after its original air date or +if the show was marked as a repeat and did not have a date for the first +airing. If this is "0" it usually means that this is a brand new show or a +rebroadcast within the first two weeks. +
    • +
    • "program.generic" is a column created by MythTV to try mark +showings for a series where the specific episode information is not +included. When these generic showings appear, it is impossible for the +system to determine if they are repeats of the same episode(s) or if +they are all different episodes. +
    • +
    • "program.first" is a column created by MythTV to mark the first +showing in the current listings for each episode, movie or special. +Choosing to match only the "first" showing can be useful for sports +that are brodcast live then repeated. +
    • +
    • "program.last" is a column created by MythTV to mark the last +showing in the current listings for each episode, movie or special. +If a showing is marked both "first" and "last" then it is the only +showing of that program in the current TV listings. +
    • +
    • "program.programid" is the Tribune Media Service database record +identifier for each program description. In general, these start with a two +letter prefix, MV, EP, SP or SH that correspond to the +"program.category_type". For most, the last four digits are "0000" except +EP where the last four digits are the episode number in the series. Note +that these are generated by TMS and not the show's producers but they are +usually in the same order as the original air dates for the episodes. +
    • +
    • "program.videoprop" also "audioprop" and "subtitletypes". +These columns contain bit flags for a variety of attributes that +may be associated with a program. These are filled with information +offered by the TV listings provider. However, your listings source +will not have information for all of the available flags. Therefore, +some of these may not be useful for your search rules. This information +is organized in "sets" and the MySQL function FIND_IN_SET() can be used +to test for any of these flags. For example: +
      +
      +FIND_IN_SET('SURROUND', program.audioprop) > 0
      +
      +
      + +would be true for the programs where the surround sound bit is present. +To see all of the available attribute names: +
      +
      +$ mysql -u mythtv -pmythtv mythconverg
      +mysql> SHOW COLUMNS FROM program LIKE '%prop'\G
      +mysql> SHOW COLUMNS FROM program LIKE 'subtitletypes'\G
      +
      +
      +
    • +
    + +Finally, if you are doing something very experimental and a column is not +giving you the results you had anticipated, you can always check the MythTV +source code to see exactly how a column is used. The open source for MythTV +is available from +http://www.mythtv.org/ .

    + +

    12.6 Scheduling with more than one Input +

    + + +

    MythTV is designed to allow recording television programs from one or more +service providers, or video source, on one or more video input from each +provider. Some inputs may not be allowed to record at the same time as +each other while others may record simultaneously.

    +

    A television station may be broadcast on more than one channel from one +provider or may be available on channels from two or more providers. If a TV +station is available from more than one source, the video quality or type of +broadcast may differ. Therefore, MythTV allows you to control how you would +like the scheduler to select the best channel and input for a show which is +available on more than one input or more than one channel.

    + +

    Mutually Exclusive Inputs

    + +

    A single TV capture card may have video connections to more than +one of its inputs and each input may be from a different service. The card +may only be allowed to record from one of these inputs at one time because +there is only one encoder on the card that actually captures the content.

    +

    +

    + + + +
    +

    +

    These are mutually exclusive meaning that only one input or the other +may record at a given time but not both.

    +

    Usually, inputs on different cards can record at the same time +but two or more inputs on the same card cannot. However, there are cases +where inputs on different cards should not be allowed to record at the +same time, for example, a firewire card and s-video analog card connected +to the same set top cable box.

    +

    +

    +
    +|
    +|   coax +--------------+ firewire    ------------------+
    +|     .-=|Cable Provider|=------------=| Card 1 input 1 | HDTV
    +|     |  |HD/Cable STB  |=--.          +-----||||||||||||
    +|     |  +--------------+   | s-video ------------------+
    +|     |                     `---------=|        input 2 | Digital
    +|wall |               coax             | Card 2         |
    +|=---=^=------------------------------=|        input 3 | Cable
    +|                                      +-----|||||||||||| 
    +
    +
    +

    +

    Input 1 and input 2 receive content from the same set top box and the +channels can not be tuned independently. Therefore only one of these two +inputs should be used at any given time. The solution is to create an "Input +Group" with mythtv-setup in "Input connections". Including these +two inputs in the same Input Group will tell the scheduler that these are +mutually exclusive and may not record at the same time. Inputs 2 and 3 are +automatically mutually exclusive because they are on the same card so there +is no need to create an Input Group for these inputs.

    +

    Cards such as the Hauppauge PVR-500 are able to record as two cards +simultaneously because it has two MPEG-2 encoders and each encoder appears +as a separate device. DVB cards may be allowed to capture content from more +than one channel at a time if the channels are in the same MUX.

    + +

    Stations, Channels and Video Sources

    + +

    Although we may be accustomed to thinking of a broadcast station and its +channel number as being synonymous, stations and channels are very different +things. A "station" is in a building with wires and employees. A "channel" +is a carrier frequency or digital ID that carries a broadcast stream. The +same TV station may be broadcast over different frequencies in different +cities or by different providers in the same city. The same frequency will +carry different stations in different cities. In the digital realm of DVB +and ATSC (HDTV), it is even possible for a single frequency to carry +multiple program streams but each of these streams of content are actually +different channels that the receiving devices can 'tune' to independently.

    +

    +

      +
    • Station: building
    • +
    • Channel: frequency
    • +
    +

    +

    In MythTV, a "video source" is a set of channels from a provider, or over +the air, that can be received by an input. The set defines the channels and +the broadcasters primarily associated with each of those channels. If you +have more than one device or cable from the same provider connected to more +than one card and input, you only need to create one video source in +mythtv-setup then associate that one source with each of these connected +inputs. This will let your MythTV system know that the same channels and +their TV listings are available to be recorded from any of these inputs.

    +

    For example. A MythTV system may have two capture cards. Both have a cable +connected to the coaxial connectors. These cables carry the local cable TV +service. In mythtv-setup, the user should create one "Video source" called +"Cable", for example. Under "Input connections", "Cable" should be +associated with each of the two tuner inputs. The scheduler will then know +that any program on one of the channels from the "Cable" source could be +recorded by either card from the card's tuner input.

    +

    You need to create a different video source for each provider or service +that has a different set of channels. Each input with a connection to that +service should be associated with the video source for that service so the +system will know which set of channels are available for each of your active +inputs.

    +

    Let's say that this user also has one digital cable set top box. The digital +cable service carries channels that are not available over basic cable. The +user would create another source called "Digital". This set top box is +connected to the second card by S-Video so under "Input connections", +"Digital" is associated with the S-Video input of card 2. The system would +then know that programs on channels from the Digital source can only be +recorded from this input. Further, the scheduler understands that it can +only record one show at a time from card 2 so it can assign Cable or Digital +shows to the card but not both at the same time.

    +

    Some TV stations may be broadcast over a channel from the Cable source and +also broadcast over a channel from the Digital source. Note that two +channels carrying the same primary station may not have the same TV listings +due to carrying the primary station part time, including local programming +exclusive to one of the channels, the channels may be in different +timezones, etc. Listings information must be associated with each channel +even if two or more channels report that they carry the same station.

    + +

    Order of Inputs

    + +

    By default the scheduler chooses the first (lowest numbered) input which has +a showing of the scheduled program as it fills the schedule. If a lower +priority show is on at the same time as a higher priority show that has been +assigned to input 1, then input 2 will be used next and so on. Therefore, +configure your best card and input first and next best card and input +second. There may be differences in the type or brand of capture card, +signal quality from the cable, system resources such as disk space, CPU, +etc. By configuring your best input first, more recordings, and your highest +priority recordings, will use that input.

    +

    A common situation is that a newer and better card is added last. For +example, you may initially setup your system with two analog cable cards and +then add a HDTV card. If NBC is on a cable channel and "The Apprentice" is +shown in HDTV on an NBC HD channel, the scheduler would still prefer analog +inputs 1 and 2 over the new HD input 3.

    +

    So, if you'd like the scheduler to prefer a new source, the simplest thing +is to run mythtv-setup and "Delete all capture cards" then enter +your cards and inputs in your preferred order. This will not remove your +sources and channels - you want to keep those and only renumber your cards +and inputs. In this example, once the changes have been made and the Master +Backend is restarted, the scheduler would then choose "The Apprentice" in HD +on the new input 1 and only use the analog inputs (now numbered 2 and 3) +when the HDTV input was occupied with another show.

    + +

    Matching Callsigns

    + +

    If a recording rule is a type that can record from any channel, "The +Apprentice" would match for any channel that shows episodes which may +include CNBC or BRAVO. However, for Single, Timeslot, Weekslot or Channel +rules, "The Apprentice" would only match showings on the selected station as +identified by the "callsign". For example, KVBC is an NBC affiliate on +channel 3. Channel 733 is KVBCDT which is HDTV over cable from the same +station. If a Single record rule was set for "The Apprentice" on KVBC +channel 3, it could not record this showing from KVBCDT on 733. If 733 was +chosen when the rule was saved, channel 3 could not be used to record.

    +

    However, the "Channel Editor" in mythtv-setup can be used to change the +Callsign for channel 733 to "KVBC". MythTV would then understand that both +of these channels are from the same broadcast station. Assuming the HDTV +input was input number "1", "The Apprentice" would record on 733. If, +however, this HDTV input already had a higher priority show assigned to it +in that time slot, "The Apprentice" would be assigned to KVBC channel 3 on +input 2.

    +

    Having two channels with the same callsign may affect how program +information is shown in mythfrontend. If two sources have the same callsign +and channel number, the program guide and program lists will only show one +instance of the channel number and callsign. If the same callsign is on two +different channel numbers, both will be shown and if two sources have +different callsigns with the same channel number, both of those will be +shown.

    +

    Continuing with the example above, the Electronic Program Guide would +include rows for both "3 KVBC" and "733 KVBC". If channel 3 KVBC was also +included in the Digital cable source, the EPG would still include just one +line for "3 KVBC" even though there are two different channels, Cable and +Digital, with this identification. Regardless of how these are displayed and +which "KVBC" channel you select to add a rule to record "The Apprentice", +the scheduler will pick the best channel, source and input to record "The +Apprentice" on "KVBC".

    + +

    Using Priorities to Prefer an Input

    + +

    The fundamental concept to keep in mind is that the MythTV scheduler will +choose the lowest numbered input available when showings have the same +priority. If there are factors that cause two showings of the same show to +have different priorities then the higher priority showing will be +considered before the showings with lower priority.

    + +

    Input Priority

    + +

    "Input Connections" in mythtv-setup includes a box to set "Input priority" +which defaults to "0". If a value is set, that amount will be added to the +"total priority" for showings on that input. This can be used to influence +using favored cards or not using less favored cards unless necessary.

    +

    Let's say the "The Apprentice" is on at 8:00pm with a priority of 3. "Who +Cares" is -2 and an episode is shown at 8:00pm then repeated at 11:00pm. The +scheduler would assign "The Apprentice" to card 1 and "Who Cares" to card 2 +at 8:00pm. If the input priority for the input on card 2 was changed to -1, +"Who Cares" would have a total priority of -2 for showings on card 1 and -3 +for showings on card 2. The scheduler would assign "The Apprentice" to card +1 at 8:00pm and "Who Cares" to card 1 at 11:00pm when the better card is +available. If there was another higher priority show at 11pm, the next best +choice for "Who Cares" would be card 2 at 8pm with the priority -3.

    +

    Card 1 and 2 have input priority "0":

    +

    +

    + + + +
    +

    +

    +

    +
    + Time  Title     Priority  Card  Status
    + 8:00  The Apprentice  +3  1     Will Record
    + 8:00  Who Cares       -2  2     Will Record
    +11:00  Who Cares       -2  1     Earlier Showing
    +
    +
    +

    +

    Card 2 with input priority "-1":

    +

    +

    + + + +
    +

    +

    +

    +
    + Time  Title     Priority  Card  Status
    + 8:00  The Apprentice  +3  1     Will Record
    + 8:00  Who Cares       -3  2     Later Showing
    +11:00  Who Cares       -2  1     Will Record
    +
    +
    +

    +

    Card 2 at "-1" but higher priority shows at both 8 P.M. and 11 P.M.:

    +

    +

    + + + +
    +

    +

    +

    +
    + Time  Title     Priority  Card  Status
    + 8:00  The Apprentice  +3  1     Will Record
    + 8:00  Who Cares       -3  2     Will Record
    +11:00  The Daily Show  +1  1     Will Record
    +11:00  Who Cares       -3  2     Earlier Showing
    +
    +
    +

    +

    Note the two different effects, each of which may be what you desire +depending on circumstance. If input priorities are equal, shows will record +at the earliest time if any input is available. If input priorities differ, +shows may be postponed to a later time in order to record on the best input.

    + +

    Channel Priority

    + +

    Priority can be added for individual channels (remember, frequencies from a +video source, not stations). This can be used to tell the system that you +generally prefer the content of the station on a channel over the formats of +other stations. You may want to raise the priority for ESPN, SciFi, Comedy +Central or lower the priority for CSPAN, CourtTV, etc. If the same station +is on two different channels, you can use channel priority to have the same +effect for these channels as input priority would have for whole inputs.

    +

    For example, say CNN is on analog channel 20 and there is an HD CNN on 750. +You may not want to tie up the HD input for news originating in standard +definition. Under TV Settings->Recording Priorities->Channel Priorities you +could set channel 750 to -1. The scheduler would then prefer to record CNN +shows on any analog channel 20 before considering using 750 only when there +are no analog inputs available.

    + +

    Preferred Input

    + +

    For an even finer grain of control, there is a per rule option to specify +which input should be preferred for showings that match the rule. By +default, this adds +2 to the priority for showings on the specified input.

    +

    For illustration, let's say there will be a Space Shuttle launch on CNN that +will be broadcast in high definition. Adding a rule to record the launch +with priority "0" should default to channel 20 on input 2. Channel 750 would +have this at -1 due to the channel priority set in the previous example. If +on the recording options page for this rule, the "Scheduling Options" had +the input set to prefer the HD input on card 1, then the showing on channel +750 for this input would be increased in value by +2 for a total of +1 and +would be the best choice for this launch coverage. While this one rule +would prefer the HD input with channel 750, all other rules that match shows +on CNN would still prefer channel 20.

    +

    Note that this will not work properly if the preferred input priority does +not out weigh differences in input and channel priorities. The value of the +priority boost when this option is chosen defaults to +2 but can be modified +in TV Settings->Recording Priorities->Set Recording Priorities.

    + +

    HDTV Priority

    + +

    In the preceeding fictious example, the Space Shuttle launch is broadcast in +high definition and a preferred input is selected to give preference to the +HD input. However, TV listings from zap2it.com through the DataDirect +service may allow this to work without having to use this per rule option.

    +

    In Settings->Recording Priorities->Set Recording Priorities there is an +option for "HDTV Recording Priority". This value will be added automatically +if the listings for the show have the "hdtv" flag set. DataDirect will set +this flag for shows known to be broadcast in HDTV on HD channels. However, +the flag is not set for standard definition channels. This is another +example of the listings being different for the same station on a different +channel. If the HDTV priority is set to "+2", the shuttle launch would +automatically have a total priority of +1 so that channel 750 would be +preferred over channel 20 for this HDTV broadcast.

    +

    Channel "750 CNN" at priority "-1" and HDTV broadcast priority at "+2":

    +

    +

    + + + +
    +

    + +

    Custom Priority

    + +

    +

    + + +New for MythTV 0.21 +
    +

    +

    While Input, Channel, and HDTV Priority can be used for indicating a +preference for certain programs and inputs, there may be circumstances that +cannot be resolved easily with these standard features. MythTV version 0.21 +includes a feature for "power priority". The Custom Priority editor in +mythfrontend's "TV Settings" screen is similar to Custom Record, however, +Custom Priority allows you to create specialized power priority factors to +influence scheduling decisions.

    +

    For example, the 'program.closecaptioned' flag can be used in a +similar way as the 'program.hdtv' flag.

    +

    +

    +
    +Priority Rule Name: Closed Captioned priority
    +Priority Value: 2
    +program.closecaptioned > 0
    +
    +
    +

    +

    This will raise the priority of shows marked with "CC" over those that are +not by applying the "Priority Value" whenever the SQL fragment evaluates to +true. If the expression evaluates to false for a showing, the "Priority +Value" is not applied.

    +

    +

    +
    +Priority Rule Name: Priority when shown once
    +Priority Value: 1
    +program.first > 0 AND program.last > 0
    +
    +
    +

    +

    The "first" and "last" flags for an episode will only be set for the +same showing when there is only one showing of that episode in the +current TV listings. This rule would raise the priority in these cases +so that these shows would have an advantage to record in their only +available time slot.

    +

    +

    +
    +Priority Rule Name: Input 1 signal quality
    +Priority Value: -1
    +cardinput.cardinputid = 1 AND
    +channel.channum IN (3, 5, 39, 66)
    +
    +
    +

    +

    A common issue with two or more analog capture cards is that one of +the cards may have more interference on some channels than the same +channels on other cards. This example gives a disadvantage to the +channels in this list but only for the first input. Therefore, a show +on channel 39 would choose input 2 or 3 if possible but for channels +not in this list, input 1 is still the first choice.

    +

    The Custom Priority editor includes many example fragments and complete +examples that can be used or you can create your own to suit your needs.

    + +

    13. MythPlugins.

    + +

    MythTV has a rich set of plugins available. Once you have downloaded +the tarball, untar it and run the configure script:

    +

    +

    +
    +$ tar -xjf mythplugins-0.21.tar.bz2
    +$ cd mythplugins-0.21
    +$ ./configure --help
    +
    +Usage:   configure [options]
    +Options: [defaults in brackets after descriptions]
    +NB:      all --enable-* options can be reversed with --disable-*
    +
    +Generic options:
    +  --help                   print this message
    +  --enable-all             Enable all options
    +  --enable-opengl          enable OpenGL (Music and Gallery) [default=no]
    +
    +MythBrowser related options:
    +  --enable-mythbrowser     build the mythbrowser plugin [default=yes]
    +
    +MythDVD related options:
    +  --enable-mythdvd         build the mythdvd plugin [default=yes]
    +  --enable-transcode       enable DVD ripping and transcoding [default=no]
    +  --enable-vcd             enable VCD playing [default=no]
    +
    +MythGallery related options:
    +  --enable-mythgallery     build the mythgallery plugin [default=yes]
    +  --enable-exif            enable reading of EXIF headers [default=no]
    +
    +MythGame related options:
    +  --enable-mythgame        build the mythgame plugin [default=yes]
    +
    +MythMusic related options:
    +  --enable-mythmusic       build the mythmusic plugin [default=yes]
    +  --enable-fftw            enable fftw visualizers [default=no]
    +  --enable-sdl             use SDL for the synaesthesia output [default=no]
    +  --enable-aac             enable AAC/MP4 audio file decompression [default=no]
    +
    +MythNews related options:
    +  --enable-mythnews        build the mythnews plugin [default=yes]
    +
    +MythPhone related options:
    +  --enable-mythphone       build the mythphone plugin [default=yes]
    +  --enable-festival        enable festival TTS Engine [default=no]
    +
    +MythVideo related options:
    +  --enable-mythvideo       build the mythvideo plugin [default=yes]
    +
    +MythWeather related options:
    +  --enable-mythweather     build the mythweather plugin [default=yes]
    +
    +
    +

    +

    The sections detailing configuration of the plugins assume that you are +already in the ~/mythplugins-0.21/ directory.

    +

    Note that a single configure script now does configuration for all +modules. By default, it will compile all modules. If you do not wish to +compile a module, either because it is of no use to you, or you do not have +the prerequisites, the simplest course of action is to go through the +various sections below, satisfying the prerequisites, and then compile all +modules at once.

    +

    For example, you would only like to compile and install MythGallery and +MythMusic. For MythGallery, you would like to use the EXIF data in the .JPG +file to present additional information onscreen. For MythMusic, you would +like to enable support for the opengl and FFT visualizations. The command +line would look like:

    +

    +

    +
    +$ cd ~/mythplugins-0.21 
    +$ ./configure --disable-all --enable-opengl --enable-mythgallery --enable-exif --enable-mythmusic --enable-fft
    +$ qmake mythplugins.pro
    +$ make
    +$ su -
    +# make install
    +# exit
    +$
    +
    +
    +

    +

    For simplicity, the examples below will disable compilation of all other +modules other than the one being discussed.

    + +

    14. MythWeb.

    + +

    MythWeb allows you to use a web page to control various aspects of your +MythTV system. MythWeb is a separate application, but it's dependent on +MythTV being installed and operational.

    + +

    14.1 Installation and prerequisites +

    + +

    Mythweb is a part of the mythplugins package. See +MythPlugins for instructions on downloading the +tarball. The next step depends on whether your distribution has a web server +and if you have PHP support.

    + +

    Mandriva

    + +

    Mandriva has apache and PHP pre-packaged, so +installation is quite simple.

    +

    +

    + + +NOTE: Mandriva 9.1 users, perform the following: +
    + +
    +
    +# urpmi apache2 apache2-mod_php php-mysql
    +# chkconfig --level 345 httpd on
    +# /etc/rc.d/init.d/httpd restart
    +
    +
    +

    + +

    14.2 Completing the installation +

    + +

    +

    +
    +$ cd ~/mythplugins-0.21/mythweb
    +$ su
    +# mkdir /var/www/html/mythweb
    +# cp -r . /var/www/html/mythweb
    +# exit
    +$ 
    +
    +
    +

    +

    By default, MythWeb uses an Apache .htaccess file to restrict +access to the website and to configure some variables.

    +

    To create the password file for Apache (if your system doesn't already have +one), you could do something like this: +

    +
    +# cd /var/www
    +# htpasswd -c htpasswd mythtv
    +New password:
    +Re-type new password:
    +Adding password for user mythtv
    +
    +
    +

    +

    See the man page for htpasswd for more examples.

    +

    To access the web page, open a web browser and use http://[name or ip +address]/mythweb/

    +

    +

    + + +NOTE: Make sure that you have a trailing slash on the URL, +otherwise you will get a 404 Page not Found error. +
    +

    +

    14.3 Resetting the key binding table +

    + +

    MythWeb allows you to configure which keys are bound to which actions +within MythTV. If you'd like to reset this back to the default, execute the +following command: +

    +
    +$ echo "delete from keybindings ;" | mysql -u mythtv -pmythtv mythconverg
    +
    +
    +

    +

    14.4 Resetting the theme. +

    + +

    If you find yourself wedged into a theme that isn't working, open your +web browser and go to site: +http://mythweb_name_or_ip_address/mythweb/settings.php?RESET_THEME=yes

    +

    15. MythGallery.

    + +

    MythGallery is a photo and slideshow application. MythGallery is a +separate application, but it's dependent on MythTV being installed and +operational.

    +

    15.1 Installation and prerequisites +

    + +

    MythGallery is a part of the mythplugins package. See +MythPlugins for instructions on downloading the +tarball.

    +

    There are a number of transitions available, some requiring OpenGL +support. You will also need to install a TIFF library. Under Mandriva, you +would perform the following command: +

    +
    +# urpmi libtiff3-devel
    +
    +
    + +Once you have satisfied the prerequisites for your distribution, install the application: +
    +
    +$ cd ~/mythplugins-0.21
    +$ ./configure --disable-all --enable-opengl --enable-mythgallery
    +$ qmake mythplugins.pro
    +$ make
    +# su
    +# make install
    +# exit
    +$ 
    +
    +
    + +The configuration for MythGallery is accessed through the main Setup option +in mythfrontend. Make sure you set your pictures directory to wherever +you're storing your photos.

    +

    The controls for MythGallery can be found in the README that comes with the +application.

    +

    15.2 Using MythGallery +

    + +

    When you first start MythGallery, you will see a thumbnail view of any +folders and pictures in the Gallery Directory you specified in setup. If +this is the first time you have accessed this directory, the thumbnails will +be generated on the fly. If the Gallery Dir is writable, these thumbnails +will be cached thus speeding up future access. On the left is a greyed-out +menu of options.

    +

    Use the arrow keys to select a folder or picture to open/view with the +Select key, or use the Menu key to toggle access the menu on the left. The +menu options are as follows: +

      +
    • Slideshow - Will cycle through all the pictures in the current folder. +The currently selected item must be a picture (not a folder) for this to +work. It does not currently traverse subfolders.
    • +
    • Rotate CW - Rotate the current image 90 degrees in the clockwise +direction. This change persists if the current directory is writable.
    • +
    • Rotate CCW - As above except the direction of rotation is counter(anti) +clockwise.
    • +
    • Import - Import pictures into your Gallery Dir. This option is +described in the next section.
    • +
    • Settings - Access the MythGallery settings screen.
    • +
    +

    +

    15.3 Importing Pictures +

    + +

    The import path in the setup dialog is a colon separated list of +directories and/or executable files. When the import key is pressed, a new +directory (the destination directory) under the current directory will be +created and the import path will be searched. If the item in the import +path is a directory (the source directory), the contents of that directory +will be copied to the destination directory. If you would like the source +directory to be that of a removable device, it might be a good idea to use +autofs. See the automount howto at +www.linuxdoc.org for info on how to get it working.

    +

    If the item in the import path is an executable file, MythGallery will +attempt to execute it with the destination directory as its sole argument. +Be careful when using executable scripts that the script runs unattended +(doesn't need user intervention) and returns properly, otherwise it could +create the appearance of MythGallery hanging (e.g. running +smbclient and prompting for password). Also be sure that scripts +have executable permissions set.

    +

    Here is an example script that a user may want to run +on import: +

    +
    +#!/bin/csh
    +
    +if ($#argv == 0) then 
    +        echo "Usage: $0 dest_dir" 
    +        exit 
    +endif 
    +
    +cd $argv[1]
    +
    +# get stuff over the network
    +wget http://www.somesite.dom/dir/file1.jpg 
    +wget http://www.somesite.dom/dir/file2.jpg
    +wget http://www.somesite.dom/dir/file3.jpg
    +
    +# stuff that requires manual module loading and/or fs mounting
    +modprobe camera_module
    +mount /dev/camera /mnt/camera
    +cp /mnt/camera/* $argv[1]
    +umount /mnt/camera
    +rmmod camera_module
    +
    +# perform some processing
    +foreach pname (`ls *.jpg`)
    +        jpegtran -flip vertical $pname > $pname.new
    +        mv $pname.new $pname
    +end
    +
    +
    +

    + +

    16. MythGame.

    + +

    MythGame can used as a frontend to start any emulator that your host OS +runs. This is an example of how to set up xmame on Linux. +http://www.mameworld.net/ is +an excellent resource for all things mame.

    +

    Installation overview: +

      +
    1. Setup directory structure
    2. +
    3. Download and install xmame
    4. +
    5. Download and place extra files (artwork/catver.ini/etc..)
    6. +
    7. Download and install MythGame plugin
    8. +
    9. Setup xmame in MythGame
    10. +
    11. Hints
    12. +
    +

    +

    16.1 Setup Directory Structure +

    + +

    To keep things organized, create the following directories for xmame to use +in /usr/local/share/xmame: hiscore, roms, and snaps.

    +

    +

    +
    +$ mkdir -p /usr/local/share/xmame/{highscore,roms,snaps}
    +
    +
    +

    + +

    16.2 Download and Install xmame +

    + +

    NOTE: There may be pre-packaged versions of xmame +available for your distribution. Check +http://x.mame.net/download.html for the latest version.

    +

    Download the source to xmame from +http://x.mame.net/download/xmame-0.103.tar.bz2

    +

    +

    +
    +$ wget http://x.mame.net/download/xmame-0.103.tar.bz2
    +$ tar -xjf xmame-0.103.tar.bz2
    +$ cd xmame-0.103
    +
    +
    +

    +

    Edit the Makefile with your favorite editor. Adjust the options as required for your system. +

    +
    +$ joe Makefile
    +
    +
    +

    +

    Then make and install xmame +

    +
    +$ make
    +$ su
    +(enter password)
    +# make install
    +# exit
    +
    +
    +

    +

    After mame has been installed, we need to create some defaults. +

    +
    +$ mkdir ~/.xmame
    +$ cp docs/xmamerc.dist ~/.xmame/xmamerc
    +
    +
    +

    +

    Because some ROMS work better with different display toolkits, or possibly +even older versions of xmame, it's convenient to keep all of your +xmame binaries and to rename them to include the version number. +MythGame allows you to match individual roms to preferred binaries.

    +

    +

    +
    +$ su
    +(enter password)
    +# mv /usr/local/bin/xmame.x11 /usr/local/bin/xmame-0.103.x11
    +# exit
    +
    +
    +

    +

    NOTE: Depending on how you compiled xmame, you may have +xmame.X11, xmame.SDL or xmame.xgl based on what +display toolkit you used. Also, you may need to remove and recreate +xmamerc after upgrading since some of the default options may have +changed.

    +

    Edit ~/.xmame/xmamerc to include your paths. +

    +
    +### Fileio Related ###
    +rompath                         /usr/local/share/xmame/roms
    +snapshot_directory              /usr/local/share/xmame/snaps
    +cheat_file                      /usr/local/share/xmame/cheat.dat
    +hiscore_file                    /usr/local/share/xmame/hiscore.dat
    +hiscore_directory               /usr/local/share/xmame/hiscore
    +history_file                    /usr/local/share/xmame/history.dat
    +mameinfo_file                   /usr/local/share/xmame/mameinfo.dat
    +
    +
    +

    +

    Confirm that xmame works before running it inside MythTV. Place +your ROM in the /usr/local/share/xmame/roms directory you created +earlier.

    +

    NOTE: There are three public domain ROM sets available at +http://www.mame.net/downmisc.html

    +

    Launch xmame with your game of choice. In this example, we are using Gauntlet. +

    +
    +$ xmame gauntlet
    +
    +
    +

    +

    Some basic mame keyboard commands: +

    +
    +5 = Insert coin
    +1 = Player 1 start
    +arrow keys = movement
    +left control = button 1
    +left alt = button 2
    +SPACE = button 3
    +ESC = exit
    +TAB - menu
    +~ to adjust Volume
    +     < and >
    +
    +
    +

    + +

    16.3 Download extra files +

    + +

    The following files allow you to add extra functionality. Place them +into /usr/local/share/xmame

    +

    - catver.ini is a catalog of categories and versions of popular mame ROMs.

    +

    Useful for keeping large libraries of ROMs organized.

    +

    It may be downloaded from +http://www.catver.com or +http://www.mameworld.net/catlist

    +

    - Screenshots aka "snaps"

    +

    These may be downloaded from +http://www.classicgaming.com/mame32qa/

    +

    Screenshots are displayed when you are browsing your ROMS in mythgame. +Unzip and place them in /usr/local/share/xmame/snaps

    +

    - history.dat

    +

    Download from +http://www.arcade-history.com/ +This file fills in a bit of background about each ROM.

    +

    - hiscore.dat

    +

    Download from +http://www.mameworld.net/highscore/

    +

    - Cheats

    +

    Download from +http://cheat.retrogames.com/

    + +

    16.4 Download and Install MythGame. +

    + +

    MythGame is part of the mythplugins package. See the instructions +in the +Downloading and Compiling +section to obtain mythplugins.

    +

    Switch to the mythplugins directory: +

    +
    +$ cd ~/mythplugins-0.21
    +
    +
    +

    +

    Compile and install mythgame: +

    +
    +$ ./configure --disable-all --enable-mythgame
    +$ qmake mythplugins.pro
    +$ make
    +$ su
    +(enter password)
    +# make install
    +# exit
    +
    +
    +

    + +

    16.5 Setup xmame in MythGame +

    + +

    Start mythfrontend and navigate to Utilities/Setup > Setup > Media +Settings > Game Settings > Game Players. Select (New Game Player).

    +

    To set up a new player for xmame enter the following:

    +

    +

    +
    +Player Name:    xmame-0.103.x11                  (Name by which you want your emulator or game called)
    +Type:           xmame                           (This is used for display purposes only and does not affect the function of your system)
    +Command:        xmame-0.103.x11 -vidmod 1 -fullscreen     (Path and name of binary + any optional parameters)
    +Rom Path:       /usr/local/share/xmame/roms     (This tells MythGame what directories to scan for roms to be used with this emulator)
    +ScreenShots:    /usr/local/share/xmame/snaps    (This tells MythGame what directories to scan for snapshots to be used with these roms)
    +Working Directory:                              (Directory to change to before launching game or emulator. Blank in our case ignores this setting)
    +File Extensions:                                (List of all file extension to be used for this emulator. Blank menas any file under the Rom Path)
    +[] Allow games to span multiple roms/disks      (will treat game.1.rom game.2.rom game.3.rom as one game)
    +
    +
    +

    + +

    16.6 Hints: +

    + +

    +

      +
    • Rom name before options: %s can be used as a standin for rom names on the command line.
    • +
    • Multiple disk/rom games: %d1 %d2 etc can be used as standins for multiple disc games on the command line.
    • +
    • Associating a rom with an emulator: Browse to the desired rom and press 'M' to enter the settings page for that rom.
    • +
    • Assign a Game Favorite Status: Browse to the desired game and press "/".
    • +
    +

    + +

    17. MythMusic.

    + +

    MythMusic has a number of prerequisites that must be satisfied before it +is operational. Depending on your distribution, some of these prerequisites can +be satisfied through the various package managers. If your distribution doesn't +offer pre-compiled versions of the software below, then follow the generic +instructions for manually compiling and installing the software.

    +

    The prerequisites for MythMusic are: +

      +
    • MAD
    • +
    • taglib
    • +
    • libogg and libvorbis
    • +
    • FLAC
    • +
    • libcdaudio
    • +
    • CDParanoia
    • +
    +

    + +

    17.1 Manual installation of prerequisites +

    + +

    These instructions are for distributions which don't have pre-compiled +versions of the software necessary to run MythTV.

    +

    Download MAD from +http://www.underbit.com/products/mad and install:

    +

    +

    +
    +$ tar -xzf mad-0.15.1b.tar.gz
    +$ cd mad-0.15.1b
    +$ ./configure
    +$ make
    +$ su
    +# make install
    +# exit
    +
    +
    +

    +

    Download TagLib from +http://developer.kde.org/~wheeler/taglib.html and install:

    +

    +

    +
    +$ tar -xzf taglib-1.4.tar.gz
    +$ cd taglib-1.4
    +$ ./configure
    +$ make
    +$ su
    +# make install
    +# exit
    +
    +
    +

    +

    Download libogg and libvorbis from +http://www.xiph.org/downloads and install in a similar manner +to the above packages.

    +

    Download FLAC from +http://flac.sourceforge.net and install: +

    +
    +$ tar -xzf flac-1.1.2.tar.gz
    +$ cd flac-1.1.2
    +$ ./configure
    +$ make
    +$ su
    +# make install
    +# exit
    +$ 
    +
    +
    +

    +

    Download libcdaudio from +http://libcdaudio.sourceforge.net and +install: +

    +
    +$ tar -xzf libcdaudio-0.99.12p2.tar.gz
    +$ cd libcdaudio-0.99.12p2
    +$ ./configure
    +$ make
    +$ su
    +# make install
    +# exit
    +$ 
    +
    +
    +

    +

    Download cdparanoia from +http://www.xiph.org/paranoia/down.html. +

    +
    +$ tar -xzf cdparanoia-III-alpha9.8.src.tgz
    +$ cd cdparanoia-III-alpha9.8
    +$ ./configure
    +$ make
    +$ su
    +# make install
    +# cd /usr/lib
    +# ln -sf libcdda_interface.so.0.9.8 libcdda_interface.so
    +# ln -sf libcdda_paranoia.so.0.9.8 libcdda_paranoia.so
    +# exit
    +$ 
    +
    +
    +

    + +

    17.2 Mandriva +

    + +

    Mandriva has a number of the prerequisites available on the +installation CD. Some of the software you're going to need will have to be +obtained from the "contrib" or "cooker" development repositories. +Applications downloaded from "cooker" come from the development branch, so +there may be issues with some software. It isn't recommended that you mix +cooker and release-level software.

    + +

    urpmi is the simplest tool for installation of packages from the +command line. The difficult part is the configuration, but this has been +made easier at the following website: +http://addmedia.linuxfornewbies.org/ The website will allow +you to choose a mirror site and then present the command-line configuration +text for that mirror. You will most likely need to add a "Contrib" mirror +to your setup. Once you have done that, you can proceed. If urpmi +prompts you about other modules that need to be installed to satisfy +dependencies, say "Yes".

    +

    +

    +
    +# urpmi libmad0 libmad0-devel libflac4 libflac4-devel libcdaudio1 cdparanoia
    +# urpmi libcdda0 libcdda0-devel libvorbis0 libvorbis0-devel
    +# urpmi libcdaudio1-devel libid3tag0 libid3tag0-devel
    +
    +
    +

    + +

    Additional options with MythMusic

    + +

    Additional visualizations have been added to MythMusic. If you wish to +use these, there are some prerequisites you must install prior to compiling.

    +

    +

      +
    • fftw
    • +
    • OpenGL
    • +
    • SDL
    • +
    +

    +

    fftw may be obtained from +http://www.fftw.org/. In Mandriva it may be installed by +typing: +

    +
    +# urpmi libfftw2 libfftw2-devel
    +
    +
    +

    +

    OpenGL should be installed on practically all distributions. +However, you will need the devel module. In Mandriva it may be +installed by typing: +

    +
    +# urpmi libMesaGLU1-devel
    +
    +
    +

    +

    SDL may be obtained from +http://www.libsdl.org. In Mandriva it may be installed by +typing: +

    +
    +# urpmi libSDL1.2 libSDL1.2-devel
    +
    +
    +

    + +

    17.3 Red Hat Linux 9 +

    + +

    Red Hat provides packages for several of the prerequisites, making +installation very simple. Of the prerequisites, Red Hat provides +packages for Vorbis, cdparanoia, SDL, and OpenGL (which you probably +already have installed). To install these all at once, simply type (all on +the same line): +

    +
    +$ up2date --solvedeps libvorbis libvorbis-devel vorbis-tools cdparanoia-devel cdparanoia-libs cdparanoia SDL-devel SDL
    +
    +
    +

    +

    If you get the following message: "None of the packages you requested +were found, or they are already updated" it probably means you already +have all of those packages installed.

    +

    You must install the remaining packages, (MAD, FLAC, libcdaudio and +optionally fftw) manually following the installation directions above. When +installing fftw do not use the rpm package offered on the website because it +will cause an error, so use the source package instead.

    +

    +

    + + +NOTE: you can use the instructions given at the +automated installation section to install all of MythMusic in one +step. +
    +

    +

    17.4 Compiling MythMusic +

    + +

    Once all the prerequisites have been installed, you can proceed with +compiling MythMusic.

    +

    +

    +
    +$ cd ~/mythplugins-0.21
    +$ ./configure --disable-all --enable-mythmusic --enable-fftw --enable-sdl --enable-aac
    +$ qmake mythplugins.pro
    +$ make
    +$ su
    +# make install
    +# exit
    +
    +
    +

    + +

    17.5 Configuring MythMusic +

    + +

    Configuration of MythMusic occurs in two places. The main mythfrontend +Setup is for global MythMusic configuration. Go to the +Setup/MythMusic/General Setup screen and adjust it for your particular +configuration.

    +

    The second configuration screen is within the MythMusic program and will +allow you rescan your music library, etc.

    +

    Here's some explanation about the Ignore_ID3 and The NonID3FileNameFormat:

    +

    If Ignore_ID3 is set to TRUE, MythMusic will try to determine the +Genre, Artist, Album, Track Number, and Title from the filename of the +mp3 file. The NonID3FileNameFormat variable should be set to the +directory/file format where the mp3 files are stored. For instance, I +store mine in the above shown Genre/Artist/Album/Track format. MythMusic +will then use this information to fill in the proper fields when it +populates the musicmetadata table rather than searching for an ID3 tag in +the mp3 file.

    +

    The files can be laid out in any format, such as:

    +

    Genre/Artist/Album/Title +Artist/Genre/Album/Title +Artist/Album/Title (with Genre left as Unknown)

    +

    The track number is optional but can be specified with the title by using +the TRACK_TITLE keyword instead of TITLE. If TRACK_TITLE is used, +then the filename can have a space, hyphen, or underscore separating the +track number from the track title. Keywords are case insensitive, so if +you specify GENRE it's the same as Genre in the format field.

    +

    The Ignore_ID3 option does not disable the code that determines the track +length, just the portion that tries to read ID3 info.

    + +

    17.6 Using MythMusic +

    + +

    MythMusic is fairly simple to use. It is recommended that you insert the +CD before selecting "Import CD". You should also ensure that your system +doesn't try to automount the CD and begin playing it automatically.

    +

    Here's some information on playlist management:

    +

    Q: How do I create a new playlist? +A: Using the MythMusic "Select Music" menu option, setup the playlist as you +normally would by adding songs or other playlists as needed. When you are +ready to save the new playlist, highlight "Active Play Queue" at the bottom +of the selection tree and hit the "i" key. This will pop up a menu allowing +you to name and save the new playlist. You can also hit Enter to bring up +the popup on the Active Play Queue. This does not work on the playlists +above, as Enter is obviously bound to checking/unchecking the boxes. Any +number (i.e. keypad on remote) will also bring up the menu in both cases.

    +

    Q: How do I enter the playlist name in the text field without a keyboard? +A: Use the keypad number keys (bound to your remote) to select letters +quasi-cell phone style. Keys 2-9 work pretty much like any cell phone text +entry. 1 cycles through a few special characters, delete, and space. 0 is +like a CAPS LOCK. Hard to describe, fairly easy to use. You will soon be +able to specify the cycle timing in a Setup screen. You can type fairly +quickly through a combination of jumping around the number keys AND hitting +a non-number key (right arrow is particularly good for this) to force the +current character.

    +

    Q: How do I edit a playlist? +A: Highlight the playlist in the selection tree and hit the "i" key then +select "Move to Active Play Queue" in the popup. You can now modify the +"Active Play Queue" like normal, adding songs and playlists by selecting +them from the song tree. When you are done, highlight the "Active Play +Queue" in the selection tree and hit the "i" key then select "Save Back to +Playlist Tree". And whatever you were editing as your Active Queue before +you moved an existing playlist "on top" of Active reappears. Think of Active +has having a push on, pop off capability, but with a depth of only 1.

    +

    Q: How do I delete an item from a playlist? +A: Highlight the item in the selection tree and hit the "d" key.

    +

    Q: How do I rearrange the songs in my playlist? +A: Highlight a song and hit the "space" bar, the song will now have pair of +red arrows in front of it. Use the up and down arrow keys to move it around +in the playlist. When you have it where you want it, hit the "space" bar +again.

    +

    Q: How do I delete a playlist? +A: Highlight the playlist in the selection tree and hit the "i" key then +select "Delete this Playlist" from the popup.

    + +

    17.7 Troubleshooting MythMusic +

    + +

    You may run into errors when running MythMusic.

    +

    When I run MythMusic and try and look up a CD, I get an error message

    + +

    The full text of the message will say:

    +

    databasebox.o: Couldn't find your CD. It may not be in the freedb database. +More likely, however, is that you need to delete  /.cddb and  /.cdserverrc +and restart mythmusic. Have a nice day.

    +

    If you get this message, you should go to the home directory of whatever +user MythMusic is running as and type: +

    +
    +rm .cdserverrc
    +rm -rf .cddb/
    +
    +
    +

    +

    These files aren't automatically deleted because of a conscious design +decision by the author that programs that automatically delete things are +bad.

    +

    The files are used to locally cache CD lookups. If you are re-inserting +CDs, your machine will not actually have to go out to the Internet to +determine what is on them. However, the URL used to access the freedb +database has recently changed, so the stale information in the files from +previous runs of MythMusic would cause the error above. Once the files have +been deleted the stale information will be gone and your local database +will be rebuilt as you use CDs.

    + +

    18. MythWeather.

    + +

    MythWeather is a part of the mythplugins package. See +MythPlugins for instructions on downloading the +tarball.

    +

    +

    +
    +$ cd ~/mythplugins-0.21
    +$ ./configure --disable-all --enable-mythweather
    +$ qmake mythplugins.pro
    +$ make
    +$ su
    +# make install
    +# exit
    +
    +
    +

    +

    MythWeather uses MSNBC.com as its source for weather data and weather.com +for its radar image.

    +

    These are the keyboard commands for MythWeather: +

    +
    +Left Key             Goes back one page, and extends the time spent
    +                     on the page you are on.
    +Right Key            Goes forward one page, see above.
    +Space                Pause, wait on the current page until space is hit
    +                     again.
    +Numeric Keys         You can check other weather by keying in other ZIP codes.
    +Enter Key            Switch between Celsius and Fahrenheit. Can also
    +                     be used a way to force a data update.
    +"m" Key              Resets the location to the database default, then updates the data.
    +"i"                  Enter / Save settings
    +ESC                  Exit the settings screen without saving / Exit the program
    +
    +
    +

    +

    MythWeather also has an "Aggressiveness" setting. This affects how long +MythWeather waits for data from the msnbc.com website before timing out. If +you are on a slow connection, or have a slow DNS, or MythWeather just +doesn't seem to be working and you've already tried everything else, then +try increasing the aggressiveness level parameter. This parameter is +inverse; a higher number actually means that MythWeather will be less +aggressive, and will therefore wait longer before timing out.

    +

    MythWeather will print debugging information on the terminal. If you wish +to see additional debugging information while MythWeather is running, run +mythweather from the command line with as mythweather --debug

    +

    You may also force mythweather to re-run the configuration by starting it on +the command line as mythweather --configure. These two options are +mutually exclusive.

    + +

    19. MythVideo.

    + +

    MythVideo is a part of the mythplugins package. See +MythPlugins for instructions on downloading the +tarball.

    +

    MythVideo will allow you to use an external program to watch media files +that are not directly supported by MythTV.

    +

    +

    +
    +$ cd ~/mythplugins-0.21
    +$ ./configure --disable-all --enable-mythvideo
    +$ qmake mythplugins.pro
    +$ make
    +$ su
    +# make install
    +# exit
    +
    +
    +

    +

    See MythVideo's README file for additional information.

    + +

    20. MythDVD.

    + +

    MythDVD is a part of the mythplugins package. See +MythPlugins for instructions on downloading the +tarball. MythDVD is an application which rips DVDs and makes them available for +use with MythVideo. You may also transcode the DVD content from MPEG-2 to +other formats which should greatly reduce the amount of space the DVD +material takes up on your hard drive.

    +

    MythDVD has a number of prerequisites to enable transcoding functionality. +If you only wish to play DVDs rather than convert them to something like +MPEG-4 or xvid you may skip the prerequisite installation step.

    + +

    20.1 Manual Compilation of Prerequisites +

    + + +

    20.2 Pre-compiled binaries +

    + +

    Mandriva users may install the prerequisites this way: +

    +
    +# urpmi libdvdread3 libdvdread3-devel a52dec liba52dec-devel 
    +# urpmi mplayer ogle xine
    +
    +
    + +Assuming that you've added a PLF mirror, you may also load the rest of the +prerequisites using the following command: +
    +
    +# urpmi xvid xvid-devel fame libfame0.9-devel transcode libdvdcss
    +
    +
    +

    +

    In the example below, we have enabled support for transcoding and for VCD +playing. You may remove these options if you don't need them. +

    +
    +$ cd ~/mythplugins-0.20
    +$ ./configure --disable-all --enable-mythdvd --enable-transcode --enable-vcd
    +$ qmake mythplugins.pro
    +$ make
    +$ su
    +# make install
    +
    +
    +

    +

    20.3 Running the Myth Transcoding Daemon +

    + +

    Transcoding ("ripping") a DVD requires you to run the Myth Transcoding +Daemon (mtd). To ensure that mtd is configured correctly, you should first +test it at the command line. +

    +
    +$ mtd -n
    +
    +
    + +The last line of text should show something like: +
    +
    +mtd is listening on port 2342
    +
    +
    + +This indicates that mtd is ready for use. Once you've successfully +tested mtd in the foreground, type CTRL-C to stop mtd. You may +then start it as a background (daemon) process. +
    +
    +$ mtd -d
    +
    +
    +

    +

    Running mtd as a daemon will allow you to automatically start it during the +boot process. For example, you may add mtd -d to your +rc.local file, or you can adjust the script/steps outlined in the +section called +Automatically starting mythbackend at system boot time to start mtd instead of mythbackend.

    + +

    21. MythNews.

    + +

    MythNews is a part of the mythplugins package. See +MythPlugins for instructions on downloading the +tarball. MythNews is a RSS reader. +

    +
    +$ cd ~/mythplugins-0.21
    +$ ./configure --disable-all --enable-mythnews
    +$ qmake mythplugins.pro
    +$ make
    +$ su
    +# make install
    +
    +
    +

    + +

    22. Troubleshooting.

    + +

    22.1 Compiling +

    + +

    Compile errors

    + +

    Some compile errors are worse than others. If you get an error that +doesn't abort the compilation, and says something like: +

    +
    +cc1plus: warning: changing search order for system directory
    +"/usr/local/include"
    +cc1plus: warning:   as it has already been specified as a non-system
    +directory
    +
    +
    + +then it shouldn't be a problem.

    +

    If you get an error like /usr/bin/ld: cannot find -lXext, the +compiler is telling you that you don't have XFree86-devel installed, or that +your distribution hasn't set it up correctly. This needs to be fixed before +MythTV will compile.

    + +

    make: *** No rule to make target /usr/lib/qt3/mkspecs/default/qmake.conf', needed by Makefile'. Stop.

    + +

    This error happens when there's a missing link in the +/usr/lib/qt3/mkspecs directory. There are two ways to fix this +error:

    +

    1. Create the link manually: +

    +
    +$ su
    +# cd /usr/lib/qt3/mkspecs
    +# ln -sf linux-g++ default
    +
    +
    + +and then restart the compile,

    +

    or

    +

    2. Run qmake mythtv.pro in the mythtv directory. Rerunning +qmake will create a new Makefile for you, however this still +doesn't fix the root cause of the issue, which is that your distribution +didn't create the symlink for you when the qt3 package was installed. The +first choice is the better solution.

    + +

    make: *** No rule to make target /mkspecs/default/qmake.conf', needed by Makefile'. Stop.

    + +

    You didn't set your QTDIR. Re-read the section on +Setting up paths.

    + +

    Internal Segmentation Fault.

    + +

    This is most likely to be caused by an overheating processor rather than +an actual programming fault within gcc.

    + +

    22.2 Debugging +

    + +

    MythTV segfaults

    + +

    MythTV isn't doing anything

    + +

    Debugging with GDB

    + +

    Without details, the developers will not be able to determine if you have +discovered a genuine code-bug, or if the problem is with your system. In +order to determine what's going on, you must recompile MythTV with debugging +support and run MythTV within gdb, the GNU debugger. +Note that, on OS X, some data is provided without going through these steps. +See  /Library/Logs/CrashReporter/MythFrontend.crash.log

    +

    Re-run the configure script and add --compile-type=debug +to any previous configuration options you may have used. Check the +config.log file if you have forgotten.

    +

    Now, you need to clear out the old versions of the software to ensure that +you're running with the debugging code, then compile and install. +

    +
    +$ make distclean
    +$ ./configure --compile-type=debug
    +$ make
    +$ su
    +# make install
    +# exit
    +
    +
    +

    +

    At this point, you now have debug-enabled software ready. To make sure that +you don't forget to type a command required for debugging, it's best to +setup a gdbcommands file. This will be read by gdb when it's +started. +Put the following into gdbcommands in your home directory:

    +

    +

    +
    +handle SIGPIPE nostop noprint
    +handle SIG33 nostop noprint
    +set logging on
    +set pagination off
    +set args -l myth.log -v record,channel,siparser
    +run
    +thread apply all bt full
    +set logging off
    +
    +
    +

    +

    Let's assume that the problem you're having is in mythbackend.

    +

    +

    +
    +$ gdb mythbackend -x gdbcommands
    +GNU gdb 6.3-debian
    +Copyright 2004 Free Software Foundation, Inc.
    +GDB is free software, covered by the GNU General Public License, and you are
    +welcome to change it and/or distribute copies of it under certain conditions.
    +Type "show copying" to see the conditions.
    +There is absolutely no warranty for GDB.  Type "show warranty" for details.
    +This GDB was configured as "i386-linux".Using host libthread_db library "/lib/tls/libthread_db.so.1".
    +[Thread debugging using libthread_db enabled]
    +
    +
    +

    +

    gdb will automatically read the commands that you've placed in the +gdbcommands file and begin running the program you specified on the +command line.

    +

    If the program appears to be locked up, press CTRL-C to create the backtrace +file.

    +

    All of the output from gdb.txt should be posted to the mythtv-dev +mailing list, along with the steps you followed to get the program to crash.

    +

    NOTE: If you're trimming the gdb.txt file to remove +extraneous information from the beginning of the file, make sure you include +at least 10 lines prior to the point where the backtrace actually +begins. This ensures that there is some context to the backtrace, and so +that it's possible to see what exactly caused the segfault.

    +

    gdb has a number of options, read the man page for more +information.

    +

    Using the gdbcommands file in conjunction with a while loop +will ensure that gdb creates a trace file and then restarts:

    +

    +

    +
    +$ while true; do date >> gdb.txt; gdb mythbackend -x gdbcommands; done;
    +
    +
    +

    +

    NOTE: To exit this loop you will need to kill the while loop.

    +

    If you're trying to troubleshoot and you can't get back to the gdb window +for some reason, it may be easier to use two systems or to start +mythfrontend from the text console.

    +

    If you're going to troubleshoot from a remote system, connect to the machine +that you're going to test using ssh or telnet. Next, type +$ export DISPLAY=localhost:0.0. This will allow the graphics to be +displayed on the X console (usually ALT-F6 or ALT-F7) and still give you +output and control of mythfrontend, either from the ssh +session, or by switching back to the text console by pressing CTRL-ALT-F1. +You can now continue troubleshooting using gdb as detailed in the +instructions.

    + +

    MythTV is crashing your system

    + +

    When run as a non-privileged user, MythTV can not crash your +system. If your system is crashing when you run MythTV, then you have some +issue with the drivers for your capture card or other hardware, or the CPU +fan has fallen off/broken and your system is overheating when asked to +perform a CPU intensive task like encoding video.

    +

    If you are running as root, which is strongly discouraged, it is +possible that your system may crash due to the real-time thread using all +available CPU. You will not be able to interrupt the process, so for all +intents and purposes your computer will have crashed.

    + +

    22.3 Installing +

    + +

    When trying to run mythtv-setup, you get an error like this: "mythtv-setup: error while loading shared libraries:"

    + +

    You didn't add /usr/local/lib to /etc/ld.so.conf. See the +section on modifying +/etc/ld.so.conf.

    + +

    22.4 Using +

    + +

    No programs are displayed in "Watch Recordings"

    + +

    This situation occurs most often with a system that acts as a frontend +and a slave backend. MythTV supports system-global and user-specific +configuration files, with user-configuration files taking precedence. 99% +of the configuration for MythTV is in the MySQL database, but MythTV still +needs to know where the MySQL server is running. This information is in the +mysql.txt file. By default, it will be installed to +/usr/local/share/mythtv, but a copy placed into ~/.mythtv +will over-ride the global configuration.

    +

    You must ensure that there aren't multiple, conflicting versions of this +file on your system! +

    +
    +$ locate mysql.txt
    +/usr/local/share/mythtv/mysql.txt
    +/home/mythtv/.mythtv/mysql.txt
    +$
    +
    +
    +

    +

    As you can see, in this example there are two mysql.txt files. If +they are not identical, then there may be unintended consequences.

    +

    You may also see this error if you completely fill the /var +partition. The most likely mythtv-related reason for this is an +overly large mythbackend or mythfrontend log file in /var/log. If +you have logging enabled for the backend, and myth runs for weeks at a time, +this may creep up and surprise you. Note that many system processes also +write to /var and the system may not boot if it is unable to write +to /var due to a full partition.

    + +

    MySQL not connecting correctly

    + +

    Your MySQL installation may have networking turned off. +Check that /etc/mysql/my.cnf does not contain +skip-networking. If it does, remove it. Also verify that +bind-address is set to your IP address instead of +127.0.0.1. If you change either of these items, restart +MySQL.

    + +

    MySQL database is corrupt

    + +

    If you have reason to believe that your MySQL database is corrupt, +execute the following commands to attempt to repair it.

    +

    NOTE: Ensure that there are no programs accessing the database +while you attempt to repair it. Make sure that all backend and frontend +programs have exited.

    +

    mysqlcheck -r -umythtv -p<password> mythconverg

    + +

    Using a MPEG-2 encoder card and the video appears "jittery"

    + +

    Using a MPEG-2 encoder card and the video is jumping up and down

    + +

    This is a different problem than the one discussed in the previous +section. Currently, the ivtv driver or firmware appear to have some issues +if the vertical capture resolution is not the full screen height. If you +are having a jitter problem then ensure that you are capturing either 480 +lines (for NTSC) or 576 lines (for PAL). The default capture profiles may +need to be edited for your setup. Go to Settings->TV Settings->Recording +Profiles and adjust the Default and Live TV options to +480 or 576 from their defaults.

    + +

    Screen goes blank but returns when mouse is moved or keyboard is used

    + +

    This is due to DPMS, the Display Power Management System, which is used +to save power by turning off your monitor when the system decides that it's +not being used or due to a screensaver that has defaulted to a blank screen. +MythTV now has DPMS support built-in, and should intelligently handle the +screen. Continue reading if you wish to override DPMS and force it off.

    +

    Since it's likely that watching TV will not generate keyboard or mouse +events for a time, you need to turn off DPMS and the screensaver. There are +a few ways to do this. You may also need to check your BIOS for power +saving modes and disable screen blanking there as well.

    +

    Edit your /etc/X11/XF86Config-4 or /etc/X11/xorg.conf +file, and look for: +

    +
    +Section "ServerFlags"
    +    #DontZap # disable <Ctrl><Alt><BS> (server abort)
    +    #DontZoom # disable <Ctrl><Alt><KP_+>/<KP_-> (resolution switching)
    +    AllowMouseOpenFail # allows the server to start up even if the mouse doesn't work
    +
    +    Option "blank time" "0"
    +    Option "standby time" "0"
    +    Option "suspend time" "0"
    +    Option "off time" "0"
    +    Option "NoPM" "1"
    +EndSection
    +
    +
    +

    +

    Also, look for: +

    +
    +Section "Device"
    +    Identifier "device1"
    +    VendorName "nVidia Corporation"
    +    BoardName "NVIDIA GeForce 256 (generic)"
    +    Driver "nv"
    +    Option "DPMS"
    +EndSection
    +
    +
    +

    +

    In this case, you would need to either delete the Option "DPMS" +line, or change it to # Option "DPMS" to comment it out. The next +time you start XFree this change will take effect.

    +

    Finally, check: +

    +
    +Section "Monitor"
    +    Identifier "monitor1"
    +    VendorName "Plug'n Play"
    +    HorizSync 30-85
    +    VertRefresh 50-160
    +
    +    # Sony Vaio C1(X,XS,VE,VN)?
    +    # 1024x480 @ 85.6 Hz, 48 kHz hsync
    +    ModeLine "1024x480"    65.00 1024 1032 1176 1344   480  488  494  563 -hsync -vsync
    +
    +    # TV fullscreen mode or DVD fullscreen output.
    +    # 768x576 @ 79 Hz, 50 kHz hsync
    +    ModeLine "768x576"     50.00  768  832  846 1000   576  590  595  630
    +
    +    # 768x576 @ 100 Hz, 61.6 kHz hsync
    +    ModeLine "768x576"     63.07  768  800  960 1024   576  578  590  616
    +EndSection
    +
    +
    +

    +

    Ensure that there isn't an Option "DPMS" in the Monitor +configuration.

    +

    You can also turn off DPMS from the Command Line, but this will not survive +a reboot. +

    +
    +$ xset -dpms
    +
    +
    +

    +

    Using xset +dpms will turn it back on.

    +

    Another technique to try, which will turn off the screensaver: +

    +
    +$ xset s off
    +
    +
    + +You may also combine the command to turn off DPMS and the screensaver: +
    +
    +$ xset -dpms s off
    +
    +
    +

    +

    Finally, depending on your distribution, you may be able to turn it off from +within the control panel.

    +

    22.5 Miscellaneous +

    + +

    mythfilldatabase failing

    + +

    If mythfilldatabase suddenly appears to be failing, there are at least +two things to check.

    +

    First, if you are in North America, ensure that your DataDirect subscription +is still valid, otherwise, check to see what version of XMLTV you're +running and that it's the latest version.

    +

    +

    + + +NOTE: It is highly recommended that you run the latest +version of XMLTV available. Your listings provider may have made changes +which negatively impact XMLTV. +
    +

    + +

    Fast CPU, choppy or jittery video

    + +

    First, you should check that your kernel has been enabled for DMA: +

    +
    +[mythtv@pvr mythtv]$ dmesg |grep DMA
    +    ide0: BM-DMA at 0xd800-0xd807, BIOS settings: hda:DMA, hdb:DMA
    +    ide1: BM-DMA at 0xd808-0xd80f, BIOS settings: hdc:DMA, hdd:pio
    +hda: 156301488 sectors (80026 MB) w/2048KiB Cache, CHS=9729/255/63, UDMA(33)
    +hdb: 80043264 sectors (40982 MB) w/2048KiB Cache, CHS=4982/255/63, UDMA(33)
    +
    +
    +

    +

    From the listing above, you can see that hda, hdb and hdc are set for DMA, +and hdd is set for pio. If your kernel is not reporting DMA being enabled, +you may need to recompile your kernel. Check your motherboard's chipset +(look in the "ATA/IDE/MFM/RLL support" section in "make menuconfig") for more +information.

    +

    Next, check that the hard drive has DMA enabled. Use the hdparm +program to check and enable DMA. +

    +
    +# hdparm -d /dev/hd?
    +
    +
    + will tell you the DMA status for your hard drives. If you run +hdparm with the -d1 parameter, it will turn DMA on.

    + +

    You may also setup your PC to do this at boot time, either by adding the +command to your /etc/rc.local file, or by adding files to +/etc/sysconfig.

    +

    On Mandriva and other distributions, if you install hdparm from an RPM you +will most likely get a /etc/sysconfig/harddisks file installed. +This file will be parsed by the /etc/rc.sysinit script. If you use +the default harddisks file, your changes will affect all IDE devices +(including CD ROMs). If you wish to use different parameters for various +devices, rename and/or copy the file to harddiskhda, +harddiskhdb, etc. Edit the file to your liking and on the next +reboot your setting will be preserved.

    + +

    Frontend appears to be slow at jumping / seeking.

    + +

    On-screen Display shows incorrect program length.

    + +

    This may occur when MythTV doesn't have an accurate seek table. Run +mythcommflag --rebuild

    + +

    Troubleshooting audio

    + +

    +

    + + +NOTE: the following instructions do not apply to PVR-250/350 +encoders; the MPEG-2 file will have the audio embedded in the stream so it +is not accessible using /dev/dsp. +
    +

    +

    Audio appears to be one of the bigger issues that users run into on the +mailing list. If the audio isn't configured correctly, then MythTV will +often appear to hang, when in fact it is trying to manipulate the audio +subsystem and failing. You may or may not receive error messages indicating +that the source of the error is the audio subsystem.

    +

    You can not use xawtv to determine if your audio is working +correctly, since xawtv is simply using the analog sound patched +through line-in to line-out. It doesn't need to digitize the sound unless +you are using the recording function.

    +

    A better test to verify that sound will work for MythTV (and recording with +xawtv for that matter) is to startup xawtv, mute the +line-in then run aplay /dev/dsp. You should hear the recorded audio +slightly delayed behind the real-time video. You should see messages about +"underrun". These can be ignored but they do confirm that the driver is +loaded and there is an active device. Once this test succeeds, MythTV +should work correctly because it writes to and read from /dev/dsp in +the same way that aplay does.

    +

    To record audio along with video the audio signal must be digitized by a DSP +so that the audio data can be stored in a file. On playback, the audio data +is written to /dev/dsp and converted back to an analog signal. This analog +signal should then be sent to your speakers. Here is what is needed in +alsamixer. If you are using an ALSA version after 1.0.6, use +alsamixer -V all:

    +

    CAPTUR source - the analog source to be sent to the DSP. This should be set +to the input source from the tuner card to the sound card. In most cases +this is Line but this could also be Aux, CD, Mic, etc., depending on how you +connect the input cable. This source should be muted to prevent patching +through the analog sound. The volume of this source will not affect the +record level.

    +

    Capture mixer - this sets the level for the analog to digital recording. +While a volume of 100% is recommended for testing, distortion may occur. +Lowering this level to 75% to 85% may result in better audio quality. +"Capture" should be marked as the CAPTUR destination.

    +

    PCM mixer - this sets the level for the digital to analog playback. While a +volume of 100% is recommended for testing, distortion may occur. Lowering +this level to 75% to 85% may result in better audio quality.

    +

    Master mixer - sets the level for the analog signal sent to line-out or the +speakers.

    +

    You may also want to ensure that /dev/dsp , or whatever device file +is being used, hasn't already been grabbed by another process, like +esd or artsd. If the device file isn't available, then +MythTV won't work. You may wish to run configure and enable +support for these.

    +

    If you wish to see what application is grabbing a resource, you can use the +fuser command: +

    +
    +# fuser -v /dev/dsp
    +
    +
    +

    +

    To disable aRts in KDE, go to KDE->Control Center->Sound->Sound System and +uncheck the "Start aRts soundserver on KDE startup" box. Run # killall +artsd from the command line to stop the artsd program.

    +

    If you're using multiple sound cards and multiple tuners, use alsamixer +-c 1 to work with the second sound card. The first card is #0, the +second card is #1, etc.

    + +

    Mythbackend reports that your card is not reporting full duplex capabilities

    + +

    The mythbackend program told me to look at this section

    + +

    mythbackend does a check to see if your sound device is capable of full +duplex operation. If it's not, it's most likely that you're going to run +into issues when you try to record and play sound at the same time. If your +backend is a separate machine than your frontend, then there's no problem, +since you're only going to be doing one thing at a time with the card. +Likewise, if you're running the frontend and backend on the same machine, +but you're using btaudio or a hardware encoder card such as the Hauppauge +PVR-250, DVB cards or HDTV capture cards as your recording source and you're +only using the playback function of your sound card, then you also shouldn't +have an issue, since the sound card isn't being asked to perform two +functions at once.

    +

    If you can't get your sound card to go full-duplex and need it to, then check +your distribution for updated sound drivers. If your sound card is not +capable of full-duplex operation, either because the drivers don't support +it, or it has been designed that way, then you're pretty much out of luck +and will either need to purchase a new sound card, or will need to get +btaudio +operational.

    + +

    My remote doesn't work / works sometimes and not others / "ghost" keypresses

    + +

    This can be due to a number of factors. The simplest case is the +"ghost" keypresses. For me, it was due to compact fluorescent lights in +the same room as the IR receiver, which the receiver was picking up as +keypresses. Once the lights were switched to incandescent bulbs, the ghost +went away.

    +

    You may have an issue with lirc misinterpreting IR commands from a +different remote. I also have an issue where the TiVo "Peanut" remote will +eventually cause lircd to stop responding; even though lircd +is configured for the Pinnacle Systems remote, the TiVo remote IR patterns +are being seen by the IR receiver.

    +

    If your remote has been properly configured, and irw and +irxevent are working correctly, then it's highly likely that your +window manager is not giving focus correctly to the various Myth programs as +they run. The following window managers are known to work correctly:

    +

    +

      +
    • fvwm
    • +
    • blackbox (using "Sloppy Focus" and "Focus New Windows")
    • +
    +

    +

    NOTE: You do not need to use irxevent if you are using +MythTV's native LIRC support, so the window manager focus issue does not +apply in that case.

    + +

    Where's "canada-cable"?

    + +

    Channels are off by one

    + +

    There is no such thing as "Canada Cable"; Canada uses the same +frequencies as the United States. "Canada Cable" was a hack that some +people used when they would discover that their channels were off-by-one, +i.e. when tuning to channel 42, they might get channel 41 or 43. This is +actually due to the tuner on the video capture device being mis-detected. +You must manually specify the tuner type in your /etc/modules.conf. +See the video4linux mailing list ( +https://listman.redhat.com/mailman/listinfo/video4linux-list) for +more information.

    + +

    Mythweb is showing a db_open error when I connect to it

    + +

    Find your php.ini file. Make sure you've got a line in it like this:

    +

    extension=mysql.so

    +

    Restart apache for it to take effect.

    + +

    Mouse pointer disappears when placed over the MythTV windows

    + +

    This is the intended behavior. The MythTV interface is meant for use +with a remote control or a keyboard.

    + +

    What does "strange error flushing buffer" mean on the console?

    + +

    Nothing, really. It's just lame (the mp3 encoder) complaining for some +obscure reason. This seems to be fixed in more recent versions of the +libmp3lame library.

    + +

    Can't change the channel when watching Live TV.

    + +

    Something's wrong with your program database. Did mythfilldatabase run +with no major errors? Or, MythTV may not have permissions to the +appropriate video4linux devices. See the section titled +Device Permissions for an example.

    + +

    Screen goes black when you try to play something

    + +

    MythTV prints error and status messages to the shell that was used to +start the application. If nothing seems to be happening when you try to +view a program, try switching back to the shell and look for error messages +there, or, if you're running from a startup script, check the log file.

    + +

    Poor performance with NVidia cards and XvMC

    + +

    XvMC is a NVidia driver feature which is supposed to help with decoding +video. Users have reported that rather than speeding up their video it +appears to be doing the opposite. You may want to check that your color +depth is set for 24bpp.

    + +

    Computer is loading a media player application when you insert a CD or DVD

    + +

    You need to disable any sort of auto-running media player in your +environment, otherwise MythDVD or MythMusic will not be able to work +properly.

    +

    In KDE, you may want to perform the following: +

    +
    +$ rm ~/.kde/Autostart/Autorun.desktop
    +
    +
    +

    +

    23. Miscellaneous.

    + +

    23.1 I'd like to watch the files without using MythTV / I'd like to convert the files to some other format +

    + +

    First, check if the mytharchive plugin does what you want. If not, then +read on:

    +

    MythTV comes with a utility called mythtranscode which can +decode nuv files into raw format for use with other applications. This +command-line utility was not designed to be used by the end-user, but +instead to be called by other applications or scripts. Programs like +nuvexport ( +http://forevermore.net/myth/) are better suited for the end user. +However, since mythtranscode can be a useful tool, directions on +using it follow.

    +

    mythtranscode creates raw streams, which means that they do not +contain any container information such as resolution, frame-rate, or audio +sampling rate. In order to process the output, you must supply this +information to the processing utility. mythtranscode provides the +relevant information on STDOUT.

    +

    There are two modes in which mythtranscode can create raw streams. +The first has no synchronization and assumes that the processing utility +will read audio and video at a constant rate. This method is useful when a +single application will be processing the raw output, such as +mencoder or ffmpeg. The second method assumes that two +separate applications will be processing the audio and video streams +independently, and there is no rate control between them which means that +the two programs don't coordinate their efforts to maintain synchronization.

    + +

    mythtranscode example

    + +

    First, start mythtranscode. You will need to determine the +channel and the start time manually. +

    +
    +$ mythtranscode --chanid 1036 --starttime 2003-10-20T15:30:00 --profile \
    +autodetect --fifodir . &
    +
    +
    +

    +

    When mythtranscode begins executing, it will create two FIFOs +("audout" and "vidout") in the directory specified (in this case ".", +meaning the current directory) and will print out information about the +video stream.

    +

    The next step is to start the processing application. The following assumes +that the stream is NTSC 640x480 with 32Kbps audio.

    +

    To use mencoder you would enter a command like: +

    +
    +mencoder -audiofile audout -audio-demuxer 20 -rawaudio rate=32000 \
    +-rawvideo on:w=640:h=480:fps=29.97 -ovc lavc -oac mp3lame -o out.avi \
    +vidout
    +
    +
    +

    +

    +

    + + +NOTE: You must use mencoder 1.0PRE1 or later. mencoder +version 0.9x WILL NOT WORK! +
    + +Using ffmepg: +
    +
    +ffmpeg -f u16le -ar 32000 -ac 2 -i audout -f rawvideo -s 640x480 -r 29.97 \
    +-i vidout -vcodec mpeg4 -b 2000 -acodec mp3 -ab 128 out.avi
    +
    +
    +

    +

    Or to play directly using mplayer (again 1.0PRE1 or later is needed): +

    +
    +mplayer -audiofile audout -audio-demuxer 20 -rawaudio rate=32000 \
    +-rawvideo on:w=640:h=480:fps=29.97 vidout
    +
    +
    +

    +

    If you wanted to write the raw data to separate audio and video files for +later processing, the following would work (note the use of --fifosync +for rate-control): +

    +
    +$ mythtranscode --chanid 1036 --starttime 2003-10-20T15:30:00 \
    +--profile autodetect --fifodir . --fifosync &
    +$ cat audout > audio.raw &
    +$ cat vidout > video.yuv
    +
    +
    +

    + +

    23.2 Using a different window manager +

    + +

    MythTV is not dependent on any particular window manager. If you wish to +run a lightweight window manager, the contrib/configfiles/ directory has an +example of a .twmrc and .fvwmrc file you may use.

    + +

    23.3 What capture resolution should I use? How does video work? +

    + +

    While MythTV allows you to set various GUI and capture resolutions, not +all combinations make sense.

    +

    First, analog video signals have a defined vertical resolution. In NTSC, +the video standard specifies that there are 525 vertical scan lines. Once +the "extra" lines are removed (they're used to synchronize the video signal, +and encode closed captioning data), you have 480 horizontal lines stacked +vertically.

    +

    In PAL, there are 625 "raw" lines of resolution, with a net of 576 +horizontal lines stacked vertically.

    +

    Horizontally, the maximum value allowed for a Bt8X8 chip is 720. However, +due to limitations in the chip and other limitations of broadcast +television, there may not be a noticeable improvement in image quality +beyond 400 or 500 pixels.

    +

    With this in mind, there are certain commonly accepted values for +resolution. While other values may be accepted for the vertical +resolution, they will cause scan lines to be repeated or dropped.

    +

    From "best" to "worst", in NTSC: +

      +
    • 720x480 "DVD" resolution. ReplayTV High and medium resolution
    • +
    • 704x480 DVD standalone recorder standard resolution
    • +
    • 640x480 4:3
    • +
    • 544x480 TiVo Best resolution
    • +
    • 480x480 SuperVCD (SVCD) Video CD resolution, TiVo High resolution
    • +
    • 352x480 ReplayTV "Standard" quality, TiVo Basic and Medium resolution, DVD "LP" resolution
    • +
    • 320x480
    • +
    • 544x240
    • +
    • 480x240
    • +
    • 352x240 Video CD (VCD) resolution
    • +
    • 320x240
    • +
    +

    +

    As you can see, the lower quality values are half of the better ones. +720x240 is possible, but isn't a good tradeoff relative to the number of +vertical lines lost. In a PAL country, the you would use values like +720x576 or x288.

    +

    The higher resolutions will be more CPU intensive if you're using software +encoding (PVR-250/350 will have minimal host CPU impact even if you're using +720x480). If the CPU is overtaxed, frames will be dropped causing uneven +motion. You will likely see the best results at resolutions which average at +least 10% CPU idle time. You can use system tools such as top or +sar to check the CPU % idle while recording. If the CPU average +usage is consistently exceeding 90%, frames will need to be dropped during +peak times when more than 100% of the available CPU would be needed to +process all of the frames.

    +

    If you'd like to read more on this, go to the vcdhelp website at +http://www.vcdhelp.com/forum/userguides/94382.php.

    + +

    23.4 MythTV GUI and X Display Sizes +

    + +

    MythTV is designed to be run as dedicated full screen TV application +but can also be run as a desktop application on a computer monitor. Here +are a few consideration for configuring sizes to best suit you needs.

    + +

    X Dimensions

    + +

    For output to a Television, common resolutions are 640x480, 800x600, and +some rare devices support 1024x768. Generally, higher resolutions are +better. However, you may find that you prefer the picture quality at one of +the lower resolutions. Everything in MythTV is scalable and should 'fit' +regardless of the resolution you choose.

    +

    Edit your X configuration file, usually /etc/X11/XF86Config-4 for +XFree, or /etc/X11/xorg.conf for Xorg, so that the resolution you +want to use is listed first in the lists under "Screen". If this resolution +is higher than the resolutions supported by your output device, you will see +a 'panning' effect where moving the mouse to the edge will scroll around a +desktop area which is larger than the display size. If this happens, edit +your X configuration file to match the display size then restart X.

    + +

    MythTV Dimensions

    + +

    From "mythfrontend" go to Setup->Appearance. +The default for the height and width is "0" - this will cause +MythTV to automatically size itself to full screen.

    +

    If the MythTV GUI width and height are not 0, mythfrontend uses these GUI +dimensions and is anchored to the upper left corner of the X Desktop. If +the GUI X and/or Y are not 0, the upper left corner is positioned at the +specified coordinates. If the "Run the frontend in a window" box is checked, +the window will have a frame and can then be dragged to any position on the +desktop.

    +

    +

    + + +NOTE: When the GUI is full screen, you may see windows rapidly +flipping on top of each other. If this happens you will need to set your +window manager to 'Click to Focus' for windows to stack properly. +
    + +The fonts for the GUI and OSD will scale to whatever sizes you use. Most +font sizes can be changed in setup selections or in the .xml files under +/usr/local/share/mythtv/ . Make sure to use fonts large enough +to be read on a TV screen from a distance.

    +

    The full screen TV size is based on the X display size. For Xinerama, you +can specify a screen in Setup->General. The TV picture will be stretched +to fit the entire GUI area regardless of the +capture resolutions used. However, during playback, the "W" key can +to used to correct differences between 16:9 and 4:3.

    + +

    Overscan Dimensions

    + +

    Because picture edges can be ragged and screen edges aren't straight, +Television is designed to project an image larger than the physical screen. +This is called "overscan". Underscan is fitting the entire image inside the +screen. Underscan is useful for computer monitors so that toolbars and +scrollbars at the edges can be seen.

    +

    For best results, match the X display area as close as possible to the edges +of the physical screen. This can only be adjusted by your tv-out device or +by the settings for the television set. Many sets have these adjustments in +a 'service mode'. If you cannot make these adjustments, there will be black +borders around the edges of the X desktop, MythTV GUI and TV playback.

    +

    MythTV has settings for "Overscan" in Setup->Playback. These can not, and do +not, cause the image to display beyond the edge of the X display area. The +purpose of these settings are to cut off rough edges and to expand the image +so that objects will appear to be the same size as a normal overscanned TV +picture.

    + +

    23.5 Saving or restoring the database +

    + +

    See the mysqldump manpage for more information. +

    +
    +$ mysqldump -u mythtv -pmythtv mythconverg -c > mythtv_backup.sql
    +
    +
    +

    +

    To restore: (assuming that you've dropped the database) +

    +
    +$ mysql -u root
    +mysql>create database mythconverg;
    +mysql>exit
    +$ mysql -u mythtv -pmythtv mythconverg < mythtv_backup.sql
    +
    +
    +

    +

    You may need to alter the MySQL permissions if this database is being shared +with multiple systems. See the +Modifying access to the MySQL database for multiple systems section for more +information.

    + +

    23.6 Deleting the MySQL database +

    + +

    +

    + + +NOTE: Performing this step will remove the entire database. You will lose all of your settings and will need to re-run the mc.sql script +to setup the database structure before running the mythtv-setup program. +
    + +
    +
    +$ mysql -u root
    +mysql> drop database mythconverg;
    +mysql> quit
    +
    +
    +

    + +

    23.7 Moving your data to new hardware +

    + +

    This assumes that you will be moving your data to newer / bigger hardware +and don't want to lose your programs.

    +

    The first step is to create a database backup as demonstrated in an earlier +section.

    +

    Next, you will extract only the data that is relevant to the programs: +

    +
    +$ grep "INSERT INTO record "          mythtv_backup.sql > restore.sql
    +$ grep "INSERT INTO recorded "        mythtv_backup.sql >> restore.sql
    +$ grep "INSERT INTO oldrecorded "     mythtv_backup.sql >> restore.sql
    +$ grep "INSERT INTO recordedprogram " mythtv_backup.sql >> restore.sql
    +$ grep "INSERT INTO recordedrating "  mythtv_backup.sql >> restore.sql
    +$ grep "INSERT INTO recordedmarkup "  mythtv_backup.sql >> restore.sql
    +$ grep "INSERT INTO recordedseek "    mythtv_backup.sql >> restore.sql
    +
    +
    +

    +

    NOTE: Newer versions of mysqldump place backticks around +the table names. Backticks are not the same as apostrophes! On a typical +North American keyboard, backticks are located to the left of the "1" key, +on the same key as the tilde. Also, because the bash shell may try +to interpret the backticks, make sure you use a \ before each one.

    +

    If your restore.sql file is empty, you'll need to re-run the +commands like this: +

    +
    +$ grep "INSERT INTO \`record\` "          mythtv_backup.sql > restore.sql
    +$ grep "INSERT INTO \`recorded\` "        mythtv_backup.sql >> restore.sql
    +$ grep "INSERT INTO \`oldrecorded\` "     mythtv_backup.sql >> restore.sql
    +$ grep "INSERT INTO \`recordedprogram\` " mythtv_backup.sql >> restore.sql
    +$ grep "INSERT INTO \`recordedrating\` "  mythtv_backup.sql >> restore.sql
    +$ grep "INSERT INTO \`recordedmarkup\` "  mythtv_backup.sql >> restore.sql
    +$ grep "INSERT INTO \`recordedseek\` "    mythtv_backup.sql >> restore.sql
    +
    +
    +

    +

    Note the space after the table name and the ">>" to append to the file for +all but the first grep. "recordedmarkup" and "recordedseek" are +huge and there may be hundreds of thousands of lines if you had lots of +hours of recordings.

    +

    After you have moved the data files to the new hardware, configure MythTV +using the mythtv-setup program as you normally would with a +standard MythTV installation.

    +

    At this point we will restore the information about your programs back into +the database: +

    +
    +$ mysql -u mythtv -pmythtv mythconverg < restore.sql 
    +
    +
    +

    +

    After successful insertion of the data you may delete the +restore.sql file.

    + +

    23.8 btaudio +

    + +

    btaudio allows you to obtain the audio data from your tuner card directly +over the PCI bus without using a sound card. This is useful if you would +like to use multiple tuner cards in a system without adding a sound card for +each one, or if your existing sound card is not capable of full-duplex +operation.

    +

    In order to use btaudio, your tuner card will need certain hardware +installed on it, and that hardware must be wired correctly. The chip that +will allow you to use the btaudio module is the MSP34xx. However, having a +MSP34xx is no guarantee that you will be able to use the btaudio module.

    +

    As of 2003-03-31, this is the current list of cards and their status: +Works with btaudio:

    +

    +

      +
    • Hauppauge WinTV-radio with dbx-TV stereo, model 401
    • +
    • Hauppauge WinTV-Theater, model 495, 498 (Europe)
    • +
    • ATI TV Wonder
    • +
    +

    +

    The following cards do not work: +

      +
    • Pinnacle Studio PCTV Pro - note: this has a MSP34xx, but it's not +wired correctly to the BT878 chip.
    • +
    • ATI TV Wonder VE
    • +
    • Leadtek Winfast 2000 XP (PAL, UK and NTSC)
    • +
    • I/O Magic PC-PVR. No MSP34xx chip.
    • +
    +

    +

    The following cards have been reported to work, but have issues: +

      +
    • Avermedia AVerTV Studio (no digital DSP output, "whiney noise" on +analog)
    • +
    +

    +

    Once btaudio loads, it should register additional /dev/dsp and +/dev/mixer devices. Typing $ dmesg will let you know +what's going on.

    + +

    23.9 Removing unwanted channels +

    + +

    If mythfilldatabase grabbed a channel which you do not want to +include in your TV listings, you can remove the entries from the grabber +configuration and the MySQL database. This often happens with premium +channels; for example, HBO or Showtime may be available on your cable TV +system, but is scrambled because you're not a subscriber to that channel. +Since you can never watch it, you want to get rid of it.

    +

    If you are using the DataDirect service, login to your account at +http://labs.zap2it.com/ to +modify your lineup. Uncheck the boxes for any unwanted channels, and they +will no longer be included in your download.

    +

    If you are using a grabber from XMLTV, comment out the channel from the +~/.mythtv/<sourcename>.xmltv file by inserting the word "not +" (including the space) in front of the unwanted entry. This will prevent +xmltv from grabbing future listings.

    +

    Next, delete the unwanted item from the channel table so that it will not +appear in the EPG or when changing channels. To delete the data from the +database we need to perform some steps. First, assuming that HBO is channel +15, we need to find out the internal chanid used by MySQL: +

    +
    +$ mysql -u root mythconverg
    +mysql> select chanid from channel where channum=15;
    ++--------+
    +| chanid |
    ++--------+
    +|   1015 |
    ++--------+
    +1 row in set (0.00 sec)
    +mysql> delete from channel where chanid = 1015;
    +
    +
    +

    +

    Old program data will be removed over the course of a week. However, you may +want to immediately delete any current program listings for the channel that +has been removed: +

    +
    +$ mysql -u root mythconverg
    +mysql> delete from program where chanid = 1015;
    +
    +
    +

    + +

    23.10 NFS +

    + +

    You may want to use a central server to store your files.

    +

    On the host machine, (in this case, the hostname is "masterbackend") you'll +want to edit your /etc/exports file and use something like: +

    +
    +/var/video (rw)
    +
    +
    +

    +

    To export the /var/video directory with read / write privileges.

    +

    On the "slave" machine, you'll want to edit the /etc/fstab file and +add something like: +

    +
    +masterbackend:/var/video /var/video nfs rsize=8192,wsize=8192,hard,intr,nfsvers=3,actimeo=0
    +
    +
    +

    +

    Then run # mount -a to re-read the file to mount the file system.

    +

    In this case, the source is a machine called "masterbackend" which is +exporting the directory "/var/video", which we're mounting locally at +"/var/video". The rsize and wsize options are used to increase the +performance of NFS; "hard,intr" is there because that's the recommendation +of the NFS-HOWTO, the nfsvers is required for filesizes over 2GB and actimeo +is used to turn off file attribute caching. Attribute caching for a shared +media point causes problems; you always want to see the latest state of the +directory and files. See +http://www.mythtv.org/wiki/index.php/Optimizing_Performance for +additional information regarding performance optimization.

    + +

    23.11 Automatically starting mythfrontend at system boot time +

    + +

    Here's an example submitted to the mythtv-dev list by Pat Pflaum +mailto:pat@netburp.com using fvwm: +

    +
    +$ cat > .xinitrc
    +fvwm &
    +mythfrontend
    +^D
    +$ cat > .fvwmrc
    +Style myth* NoTitle, NoHandles, Sticky, WindowListSkip, SloppyFocus, GrabFocus, BorderWidth 0
    +^D
    +$
    +
    +
    +

    +

    The following also works with blackbox: +

    +
    +$ cat > .xinitrc
    +xset -dpms s off &
    +irxevent &
    +mythfrontend &
    +blackbox
    +
    +
    +

    +

    Make sure that your .blackboxrc file has: +

    +
    +session.screen0.focusNewWindows:        True
    +session.screen0.focusModel:     SloppyFocus
    +
    +
    + in it.

    +

    +

    +

    23.12 Automatically starting mythbackend at system boot time +

    + +

    Red Hat And Mandriva

    + +

    Here's a method for automatically starting mythbackend submitted by Mike +Thomson ( +mailto:linux@m-thomson.net) and Stu Tomlinson ( +mailto:stu@nosnilmot.com).

    +

    Copy the files from the MythTV contrib directory or from Mike's web +site ( +http://m-thomson.net/mythtv/) as follows:

    +

    etc.rc.d.init.mythbackend should be made executable and copied to +/etc/rc.d/init.d/: +

    +
    +$ cd contrib
    +$ su
    +# chmod a+x etc.rc.d.init.d.mythbackend
    +# cp etc.rc.d.init.d.mythbackend /etc/rc.d/init.d/mythbackend
    +
    +
    +

    +

    etc.sysconfig.mythbackend should be copied to +/etc/sysconfig/: +

    +
    +$ cd contrib
    +$ su
    +# cp etc.sysconfig.mythbackend /etc/sysconfig/mythbackend
    +
    +
    +

    +

    Edit /etc/sysconfig/mythbackend if you want to change the defaults +(the userid that should start mythbackend, location of the logfile and (if +required) the name and location of the mythbackend binary).

    +

    Use chkconfig to make sure the script is called when +entering runlevels 3, 4 or 5: +

    +
    +$ su
    +# chkconfig --level 345 mythbackend on
    +# exit
    +$
    +
    +
    +

    +

    +

    +

    Log files

    + +

    By default, the log file for mythbackend will be written to +/var/tmp/mythbackend.log. This has been tested and is known to work +on Mandriva and Red Hat, but many people prefer to place logs under +/var/log/.

    +

    To do this, create a group called mythtv (or anything you prefer) +and add your usual MythTV users to that group. If you changed the user that +starts mythbackend from the default of root you must perform this +step.

    +

    Create the directory /var/log/mythtv and set its +permissions as follows: +

    +
    +$ su
    +# mkdir /var/log/mythtv
    +# chown root:mythtv /var/log/mythtv
    +# chmod 0775 /var/log/mythtv
    +# exit
    +$ ls -ld /var/log/mythtv
    +drwxrwxr-x    2 root     mythtv       4096 Apr 28 21:58 /var/log/mythtv/
    +$
    +
    +
    +

    +

    Create a mythtv file in /etc/logrotate.d: +

    +
    +$ su
    +# cat > /etc/logrotate.d/mythtv
    +# Set default values for all log files first...
    +
    +# Rotate the logs once a week, or more frequently if they 
    +# exceed 10Mb in size (size is checked daily).
    +weekly
    +size 10M
    +
    +# 'copytruncate' is used for logs generated by 
    +# currently-running programs that should not be restarted 
    +# (and can't be signalled to start a new log) after the 
    +# rotation.  It duplicates the existing log file and then 
    +# sets the length of the existing file to 0.  The only time 
    +# this would break would be if the program writing the log 
    +# was using lseek.
    +copytruncate
    +
    +# After rotating the files, leave the most recent rotated 
    +# copy alone but gzip everything else to save space.
    +compress
    +delaycompress
    +
    +# If a log isn't present then don't worry about it.
    +missingok
    +
    +# Don't rotate an empty file.
    +notifempty
    +
    +# end of the global options
    +
    +/var/log/mythtv/mythbackend.log /var/log/mythtv/mythfrontend.log {
    +  # Keep logs until they are 2 months old or the number of 
    +  # logs reaches 12.  If the log files stay small, the age will 
    +  # kick in first and you'll only have 8 log files.  If they 
    +  # get larger than 10Mb then you won't keep all 60 days.
    +  rotate 12
    +  maxage 60
    +}
    +
    +# Different options for mythfilldatabase:
    +/var/log/mythtv/mythfilldatabase.log {
    +  rotate 2
    +}
    +^D
    +#
    +
    +
    +

    + +

    Mandriva

    + +

    Mandriva adds one more twist in the form of the msec utility, +which runs regularly and (at the default or any higher security level) sets +permissions on many files, including those under /var/log.

    +

    To tell msec about the MythTV log files and their directory, you need to +edit the /etc/security/msec/perm.local file to include the +following: +

    +
    +# /etc/security/msec/perm.local
    +# Local overrides to the msec program
    +#
    +# Full file path                user.group              permissions
    +/var/log/mythtv/                root.mythtv             775
    +/var/log/mythtv/*               root.mythtv             664
    +
    +
    +

    +

    A copy of the above has been included in the contrib/ directory. You may +add it by typing: +

    +
    +$ cd contrib
    +$ su
    +# cat etc.security.msec.perm.local >> /etc/security/msec/perm.local
    +# exit
    +
    +
    +

    +

    Finally run the msec tool to check and implement your +changes. +

    +
    +$ su
    +# msec
    +# exit
    +$
    +
    +
    +

    +

    +

    + + +NOTE: msec can only reduce the permissions of files, so if +you don't get the results you expect, check that you're not asking +msec to add missing permissions to the files or directories you +created. +
    +

    +

    Gentoo

    + +

    The portage file for MythTV has scripts that will allow you to run +mythbackend at startup.

    +

    To run mythbackend as a daemon which starts at boot time: +

    +
    +# rc-update add mythbackend default
    +
    +
    + +To stop mythbackend as a daemon: +
    +
    +# /etc/init.d/mythbackend stop
    +
    +
    +

    +

    To obtain a list of options: +

    +
    +# /etc/init.d/mythbackend
    +
    +
    +

    + +

    23.13 Advanced Backend Configurations +

    + +

    MythTV is flexible in the way that you define multiple backend tuner +configurations. The only hard-and-fast rule is that the Master backend +must have a capture device defined, but shouldn't imply that the +capture device in the Master backend must be the first capture card defined in the +database.

    +

    One example of an advanced configuration is the round-robin scheme. Rather +than defining all of the cards on the master, you could first go into +mythtv-setup on the master to define globals such as the general configuration +and the channel lineup but not the host-specific configuration item like the +capture card. In this example, we will use a 4 tuner configuration, where two +slaves have one card each and the master has two. +

      +
    1. Add the first capture card on one of the slaves. Complete the +configuration, connecting the input source to the card. This will get +cardid #1 in the database. Exit mythtv-setup.
    2. +
    3. Configure the first capture card on the master backend. This will get +cardid #2 in the database. Exit mythtv-setup.
    4. +
    5. Configure the first capture card on the second slave. This will be +cardid #3 in the database. Exit mythtv-setup.
    6. +
    7. Configure the second capture card on the master backend. This will +get cardid #4 in the database. Exit mythtv-setup.
    8. +
    +

    +

    Using this scheme, the master backend will not use both capture cards until +one of the following happens: +

      +
    • There are four recordings scheduled for the same time
    • +
    • Both slaves are unavailable
    • +
    +

    +

    The scheduler in MythTV checks whether an encoder is available; if a slave +backend isn't running, its encoder isn't available, so the scheduler will +look for the next available encoder. This makes MythTV very flexible; slave +tuners can come and go, and as long as there are enough tuners for what +you'd like to record it doesn't matter which tuner in particular is going to +be used.

    +

    Using this round-robin scheme along with a shared storage directory like +NFS and enabling the Master Backend Override setting will allow you to view +content even if the slave backend that recorded a program is not available.

    + +

    23.14 Using the transcoder +

    + +

    MythTV's built-in transcoder re-encodes recordings from one codec to +another. The transcoder has three primary uses; it can transcode MPEG-2 +files captured using a hardware encoder (PVR cards, DVB cards, ATSC HD, +etc.) to MPEG-4, it can be used to transcode RTjpeg files (usually only used +on systems that can not real-time encode to MPEG-4 using a framegrabber) to +MPEG-4, and finally it can be used to remove commercials from a MPEG-2 file +while leaving the file in MPEG-2 format.

    +

    When MythTV transcodes a file to MPEG-4 or RTjpeg the resulting file format +is NuppelVideo (nuv). NuppelVideo is a container which provides a method of +keeping the audio and video in sync throughout the recording, which is why +it is used instead of the .avi format. You may have difficulty +playing .nuv files in non-MythTV systems.

    + +

    The original file is removed when the transcoding process is complete. +Unless you're sure that you will be satisfied with the result you may want +to enable the mythtv-setup option which causes mythbackend +to keep the original file after transcoding. This option is on the second +page of the General section in mythtv-setup. Enabling this allows you to +compare the two files and restore the original if you like. Outside of the +initial setup phase it usually isn't necessary to leave this option enabled. +A recording can be transcoded in two ways:

    +

    +

      +
    • Automatically transcode the file once it has completed +recording.
    • +
    • Manually choosing to transcode a recording, usually after +importing a cutlist or manually marking commercials to be +removed.
    • +
    +

    +

    The second method can be used on files that have already been transcoded (or +files which were are already in the desired format), so only the frames +immediately following a cut section will be re-encoded, resulting in a +minimal loss of quality when removing commercials with the added benefit of +being extremely quick.

    +

    The current transcoding system has a lot flexibility, but there are +a number of steps involved in setting it up. In order to +automatically transcode a given recording you must do the following: +

      +
    1. Configure recording profile for your capture source and enable +transcoding on one or more profiles.
    2. +
    3. Configure one or more transcoding profiles.
    4. +
    5. Create or alter existing scheduled recordings to enable +transcoding for that recording.
    6. +
    +

    + +

    Configuring Recording Profiles to Allow Transcoding

    + +

    Enter the Utilities/Setup > Setup > TV Settings > Recording Profiles +section in mythfrontend. Choose the option that corresponds to +your capture source (ignore the Transcoders for now.) Choose the quality +profile you are interested in using for transcoding. Ensure that "Enable +auto-transcode after recording" is checked.

    + +

    Configure Transcoding Profiles

    + +

    Enter the Recording Profiles > Transcoders menu. There are three quality +settings to choose from and a two special Autodetect settings. Later, when +scheduling recordings you'll have to choose one of Autodetect, High, Medium, +and Low Quality transcode settings in addition to the recording profile we +set up above. If you choose the Autodetect transcoding profile for a +recording, MythTV will use the "Autodetect from RTjpeg/MPEG-4" profile for +recordings which are RTjpeg/MPEG-4 files. Otherwise, it will use the +"Autodetect from MPEG-2" profile provided it's an MPEG-2 recording. If you +choose one of the others (High, Medium, Low) it will use the settings in +that profile regardless of the codec of the original recording.

    +

    There are a number of options for transcoding but the simplest is to enable +lossless transcoding (the first option) which subsequently removes all other +options. Enabling lossless encoding simply removes commercials (if you've +marked them) and attempts to clean up MPEG-2 streams. Note that with this +option MythTV will not apply any sort of filters and will only attempt to +normalize the stream into something cleaner and less likely to have trouble +with other less forgiving MPEG-2 hardware/software (including players, video +editors, etc.)

    +

    If you enable resizing of the recording the next page has the settings for +choosing the final resolution. MythTV will scale the video as appropriate, +not crop it to this resolution.

    +

    The final two pages allow configuration of the video and audio codecs. +Although RTjpeg is an option for video codec there is no reason to transcode +to this format because it will produce larger files than MPEG-4 and +the recording will take more CPU power to play back. The MPEG-4 +settings are described in the documentation for the ffmpeg project +at +http://ffmpeg.sourceforge.net/ffmpeg-doc.html. It's a matter of +trial and error to discover which settings achieve a good compromise between +size and quality.

    +

    If you wish to return to the default settings, they are Bitrate: 2200-2500, +MaxQ: 2, MinQ: 15, MaxQDiff: 3, and "Scale bitrate for frame size" is +enabled. The other options are unchecked.

    + +

    Create/Alter Scheduled Recordings to Enable Transcoding

    + +

    Transcoding is actually enabled on a per-recording basis. Two things +must be true before any given recording will be auto-transcoded, however. +The first is that the recording must have been made with a recording profile +that has auto-transcode enabled. Under "Storage Options" for the recording +you must set the "Record using the "X" profile" to the profile you +configured in the first step. In addition, under the "Post Recording +Options" section of the recording you must also set "Transcode new +recordings." This is also where you specify the Transcoding profile to use +(Auto, High, Medium, Low.)

    +

    It may not be obvious from above but the flexibility of this system is +primarily to make it possible to auto-transcode a show recorded via one +source (ie: pcHDTV 3000), and not transcode that same show if it's recorded +on another kind of card (ie: PVR-250.) There are other uses however. You +could have a PVR-250 and a V4L card. You may want to transcode the MPEG-2 +from the PVR-250 but there is no need to transcode the recordings made with +the V4L card, as it's already likely to be MPEG-4.

    +

    As an example, you could configure the Default profile for "Hardware DVB +Encoders" (the profile group used for DVB cards, including ATSC cards like +the pcHDTV 3000) to "Enable auto-transcoding". In the Default profile for +MPEG-2 Encoders (PVR cards) you'd leave "Enable auto-transcoding" unchecked. +For programs that are available on both kinds of cards you'd set the +recording profile to Default and enable auto-transcoding in the record +settings. Then you pick your transcoding profile. The result is that when +a program is recorded on your DVB card, it will get transcoded. When it +plays on a channel available via your PVR card, it won't be.

    + +

    Manual Transcoding

    + +

    Manually transcoding is activated while watching a show by hitting 'x', +from the OSD menu by choosing the Transcode option, or by choosing Job +Options/Transcode from the info menu from the Watch or Delete +Recordings screens.

    +

    The transcoding profile used for manual transcoding is whatever was set when +the recording was originally configured, even if you didn't enable +auto-transcoding. The only way to change what transcoding profile will be +used is to alter the transcoder column in the recorded table in the +database. The transcoder column contains a number which corresponds with +the id column in the recordingprofiles table. You can find out the id +number for each profile in the transcoder group with an SQL command like:

    +

    +

    +
    +mysql> select r.* from recordingprofiles r,profilegroups p where p.name='Transcoders' and p.id=r.profilegroup;
    ++----+----------------+------------+------------+--------------+
    +| id | name           | videocodec | audiocodec | profilegroup |
    ++----+----------------+------------+------------+--------------+
    +| 21 | RTjpeg/MPEG4   | MPEG-4     | MP3        |            6 |
    +| 22 | MPEG2          | MPEG-4     | MP3        |            6 |
    +| 27 | High Quality   | MPEG-4     | MP3        |            6 |
    +| 28 | Medium Quality | MPEG-4     | MP3        |            6 |
    +| 29 | Low Quality    | MPEG-4     | MP3        |            6 |
    ++----+----------------+------------+------------+--------------+
    +5 rows in set (0.01 sec)
    +
    +mysql>                                                                        
    +
    +
    +

    +

    Armed with the knowledge of what the profile ID's are you can also choose to +run mythtranscode from the command line and explicitly specify the transcoder +profile. Run mythtranscode --help for usage information.

    + +

    23.15 Changing your hostname +

    + +

    If you need to change the name of the computers used with MythTV you'll +need to perform a sequence of steps. There are a number of pieces of +information that MythTV keeps track of which are tied to the hostname of the +box, so changing the hostname involves altering the name in the +operating system and in the MySQL database. In the examples below, the old +name of the system was "frontend1" and we're going to change it to +"kidsroom".

    +

    +

    + + +NOTE: Changing the hostname using direct SQL update commands will +break things. You MUST use this indirect method. +
    +

    +

    1. Stop all backends. If you run mythbackend from a terminal +session, press control-c. If your backends are started with an init +script, you would do something like the following: +

    +
    +$ su
    +# /etc/init.d/mythbackend stop
    +
    +
    +

    +

    2. Change the hostname.

    +

    For Red Hat and derived distributions, edit the +/etc/sysconfig/network file. Look for +HOSTNAME=frontend1 and change this to +HOSTNAME=kidsroom or whatever you'll be using. For other +distributions, refer to the documentation, such as the +

    +hostname(1)
    +
    + man page.

    + +

    To alter the +hostname in the current session, run: +

    +
    +# hostname kidsroom
    +
    +
    +

    +

    3. Dump the database. +

    +
    +$ mysqldump -u mythtv -pmythtv mythconverg -c > mythtv_backup.sql
    +
    +
    +

    +

    4. Rename the host in the database. First, ensure that the new hostname +you'll be using isn't already in the database. +

    +
    +$ grep kidsroom mythtv_backup.sql
    +
    +
    + +Now we're actually going to change the name. The following should all be +typed on the same line: +
    +
    +$ cat mythtv_backup.sql | sed s/\'frontend1\'/\'kidsroom\'/g >> mythtv_restore.sql
    +
    +
    + +If you don't feel comfortable using sed, you can open the +mythtv_backup.sql file in a text editor and perform a global search +and replace. When saving the file, make sure you use the new name, +mythtv_restore.sql or the rest of the steps below will fail.

    +

    5. Drop and recreate the database. +

    +
    +$ mysql -u root
    +mysql>drop database mythconverg;
    +mysql>create database mythconverg;
    +mysql>exit      
    +
    +
    +

    +

    6. Restore the database using your edited version. +

    +
    +$ mysql -u mythtv -pmythtv mythconverg < mythtv_restore.sql
    +
    +
    +

    +

    If you are running slave backends or frontends, don't forget to re-enable +access as detailed in +Modifying access to the MySQL database for multiple systems.

    +

    7. Start the backends. If you use init scripts, do the following, otherwise +start them from terminal consoles. +

    +
    +# /etc/init.d/mythbackend start
    +
    +
    +

    +

    8. Quit and restart all frontends. Delete the mythtv_backup.sql +and mythtv_restore.sql files.

    + +

    23.16 Can I run MythTV on my TiVo? +

    + +

    23.17 Can I run MythTV on my ReplayTV? +

    + +

    No.

    +

    While it is true that the TiVo runs the Linux kernel, and TiVo has released +their changes to the kernel under the GPL, the TiVo is not a +general-purpose computer, and there is no programming information available +for the custom hardware contained within a TiVo. TiVo is under no +obligation to release the source code to their application.

    +

    The ReplayTV runs VxWorks, a Real Time Operating System from Wind River +Systems.

    +

    23.18 Can a wireless connection be used between the frontend and the backend? +

    + +

    Yes, assuming that your wireless connection has sufficient bandwidth to +maintain the datarate between the frontend and the backend. 802.11b should +be sufficient if the encoded bitrate of the content is less than the +datarate of your wireless connection, which in the case of 802.11b would be +approximately 4 Mbps. (The advertised rate of 11Mbps gives an actual +throughput of 4 Mbps.) 802.11a and 802.11g, if operating in their high-speed +modes, or proprietary 802.11b "Turbo" schemes should be adequate. Multiple +wireless frontends, poor signal strength or other factors can severely +impact the viewing experience on the frontend.

    + +

    23.19 How can I burn shows that I have recorded to a DVD? +

    + +

    Use the mytharchive plugin.

    + +

    23.20 Using the DBoxII within MythTV +

    + +

    The configuration of the DBoxII for use within MythTV is tricky (as of +May 16 2005), that's why it's covered here. Your DBoxII has to be running +linux and the Neutrino GUI instead of the stock BetaNova firmware. For +further information, please refer to +http://www.tuxbox.org. Additionally, you need to enable the SPTS +mode in Neutrino.

    +

    +

      +
    • Add a new "Capture Card" in the setup. The "Card type" is "DBOX2 Input", +the other values have to be adjusted according to your setup. +The default values, except for the "DBOX2 host ip", should work fine.
    • +
    • Define a new video source. It doesn't need to be configured, +you just need to define it. MythTV grabs the EPG from the DBoxII.
    • +
    • Connect the DBoxII to the newly defined input source in "input connections".
    • +
    • Since channel scanning is not implemented yet, you need to define channels +in the "Channel Editor". Make sure that you use the same value for +"Channel Name" as on the DBoxII. You can get a list of available +channels from the web interface of Neutrino at http://ip-of-your-box:80/. +Associate the channel with your new video source and repeat when needed.
    • +
    +

    +

    You may leave the Setup now and proceed as usual.

    + +

    23.21 What do the icons on the Watch Recordings screen mean? +

    + +

    Press "1" or F1 to get a popup.

    +

    23.22 What do the letters mean when I change channels? +

    + +

    These letters let you know what's going on with the backend as it tries +to tune to a channel.

    +

    Lower case = seen

    +

    Upper Case = seen & good +

      +
    • l/L = Lock : This could be seen by PVR-250/BTTV users
    • +
    • a/A = PAT : Any recording transmitted in MPEG
    • +
    • m/M = PMT : Any recording transmitted in MPEG
    • +
    • g/G = MGT : ATSC only
    • +
    • v/V = VCT : ATSC only
    • +
    • n/N = NIT : DVB only
    • +
    • s/S = SDT : DVB only
    • +
    +

    +

    23.23 What is the difference between the various Hauppauge PVR models? +

    + +

    This is covered in the hardware section, and extensively covered on the +Hauppauge website. ( +http://www.hauppauge.com/pages/compare_pvr.html) Please check the +Hauppauge website for the most accurate information.

    +

    A PVR-150 comes in a number of versions: +

      +
    • The PVR-150 (Model 1045) is the retail kit. It comes with a remote +control and an IR Blaster. It does not have a radio tuner.
    • +
    • The PVR-150 MCE (Model 1042) will usually come in a plain white box and is +sold as an OEM device. It does not come with a remote control, since it's +usually used as the second, third, etc capture device.
    • +
    • The PVR-150 MCE Kit (Model 1062) does not have a radio tuner and +comes with a Microsoft Media Center remote control instead of Hauppauge's.
    • +
    • The PVR-150 low profile (Model 1086) is a low-profile card. It has a +radio tuner and is approximately half the height of a standard card. +However, it comes with a low-profile PCI bracket, so it is not suitable for +use in a standard PCI slot without removing the bracket, which may not be +worth the trouble.
    • +
    +

    +

    A PVR-250 (Model 980) is a retail kit which comes with an IR receiver and a +remote control.

    +

    The PVR-250 MCE (Model 975) contains a FM radio tuner. The PVR-250 MCE does +not contain a IR receiver or a remote.

    +

    The PVR-250 Rev 1 contained an MPEG-2 decoder. However, this function was +not connected to any output jacks, and there doesn't appear to be any way to +pull decoded video from the card, so it's a fairly useless feature.

    +

    The PVR-350 (model 990) has the features of the PVR-250 as well as being +able to decode MPEG-2. The encode and decode functions may be used +simultaneously. The MPEG-2 decoder function gives superior video quality +compared to what you'll find on a standard video card. However, the decoder +function is only available once Linux has started, so you will not see any +boot-time messages. Also, the card is not capable of resolutions higher +than 720x480, so it cannot be used with HDTV. Make a conscious decision +(and ask for advice on the mailing list) that you want to tradeoff potential +HDTV use in the future compared to video quality.

    +

    The X-driver for the PVR-350 support playback using Xv efficiently but does +not support any other 2D or 3D acceleration. For some application this may +place a large load on the host CPU, some will run without any problem and +others (mplayer, xine, xmame etc.) should be configured to utilize the Xv +interface.

    +

    Note that for the PVR-350 there are some +considerations +regarding the way audio is handled.

    +

    The PVR-500 is a dual-encoder version of the PVR-150 card, so you can +simultaneously record two different programs at the same time, because there +are two encoder chips on the PCI card. Hauppuage has also installed an +onboard splitter, so you can use one COAX to feed both tuners. Current +versions of the PVR-500 should come with an adapter to allow you to connect +a second S-Video or composite input, but this will take up a second PCI +slot. Early adopters may need to purchase this item separately.

    + +

    23.24 Changing channels on an external Set Top Box +

    + +

    If you need to use an external Set Top Box (STB), such as for satellite +TV or for digital cable you will need some way for MythTV to tell the STB to +switch to a new channel. There are several methods: +

      +
    1. Use an IR blaster. An IR blaster is an infrared transmitter connected +to your computer. When MythTV needs to change channels it will send IR +pulses, thereby emulating a remote control.
    2. +
    3. Use a direct serial connection. Some STB's have a serial port on the +back, although it may not look like a serial port. It may look like a phone +jack, or a strange VGA connector. It may be labeled "Low Speed Data". A +direct serial connection is more reliable than an IR blaster. Not all STB's +that have a Low Speed Data port have it enabled; you may need to convince +your service provider to turn it on. Stating that you have a Tivo may help; +the Tivo has a direct-connect capability.
    4. +
    5. Use a firewire connection. There is a 6200ch.c in the MythTV +contrib directory which may work for you.
    6. +
    +

    +

    23.25 Configuring one machine to flag all commercials +

    + +

    Commercial flagging can be CPU intensive. By default, the backend that +created a recording is the one which will flag commercials. You may wish to +use a different machine to run commercial flagging.

    +

    On the slower machine:

    +

    Start the mythtv-setup program. Advance through the pages until you get to +the Job Queue page. Turn off the setting that says "Allow Commercial +Detection jobs", thereby preventing any commercial flagging jobs from +running on this machine.

    +

    Next, make sure that "Run Jobs only on original recording host" is turned +OFF so that new jobs are allowed to run anywhere.

    +

    Restart mythbackend since it only reads this setting when it starts +up.

    +

    On the faster machine:

    +

    Start the mythtv-setup program. Advance through the pages until +you get to the Job Queue page. Ensure that "Allow Commercial Detection +jobs" is turned ON for this machine.

    +

    Run mythjobqueue. mythjobqueue will examine the JobQueue +and run any jobs it finds. mythjobqueue should be left running so +that it will pick up any new commercial flagging jobs that are added to the +queue, otherwise new jobs will be added to the queue and your programs won't +be flagged until you run manually run mythjobqueue.

    +

    Using this technique it's possible to add commercial flagging machines as +needed, even on systems that aren't running a backend. It's also possible +to run the commercial flagger in a virtual machine environment such as +VMWare.

    + +

    24. Example Configurations.

    + +

    24.1 Logical Volume Manager (LVM) +

    + +

    LVM greatly increases the flexibility you have in managing your storage +than traditional physical partitions. This section will provide some brief +notes on how to use LVM to create storage space for your video files and how +to add additional disk space in the future. There's lots more that can be +done with LVM, so check the LVM HOWTO +http://tldp.org/HOWTO/LVM-HOWTO/ document for details.

    + +

    +

    + + +NOTE: If you are running MythTV 0.21 and you are using LVM to +create one large filesystem to store your recordings, it's no longer +recommended that you go the LVM route. The preferred solution is to use +Storage Groups. They're more flexible and less +likely to lose all of your recordings if you have a drive failure. +
    +

    +

    If you don't understand how to partition a drive, or how to change the +partition type you should stop and look at documentation on how to perform +these steps.

    +

    +

    + + +BIG FAT WARNING: Using an incorrect parameter can make your files +inaccessible, prevent your computer from booting, etc. Be careful! +
    +

    +

    Make sure your kernel configuration includes LVM support or that it's +available as a module. Today, most vendors include this by default. You'll +also want to ensure that you have a copy of the LVM utilities; check your +distribution, or get the latest versions from +http://www.sistina.com/products_lvm.htm and build them manually.

    +

    Check that the vgscan program is being run at some point during +your boot sequence - most distributions do this by default. Look for a +message during boot up that looks like this: vgscan -- reading all +physical volumes (this may take a while...) If you don't see any +messages during boot, you may need to install a LVM init script or confirm +that you have all of the LVM packages installed from your distribution.

    +

    LVM uses a few concepts you should be familiar with before starting. +

      +
    • PV (Physical Volume). The actual partition on the hard drive.
    • +
    • VG (Volume Group). The aggregation of all the PVs make a VG.
    • +
    • LV (Logical Volume). Subdivision of the pool of space available in +the VG into individual chunks, like /usr, /var/video, etc.
    • +
    +

    +

    The following example assumes that you want to create a LVM partition from a +chunk of space in /dev/hda5, using a reiserfs filesystem and mounted on +/var/video. You later decide to extend this filesystem by adding a new disk: +/dev/hdb.

    +

    You need to create at least one LVM partition for a physical volume. Use +fdisk or your favorite partition editor to set the type to LVM +(0x8e). If you're using an entire disk, create one big partition rather than +using the device itself. e.g. use /dev/hdb1 not /dev/hdb.

    +

    In the following example, you have a 15GB disk. The first 6GB are set as +your boot partition. /dev/hda2 was added as an extended partition, +and within that partition you created the /dev/hda5 linux (ext2) +partition.

    +

    +

    +
    +# fdisk /dev/hda
    +
    +The number of cylinders for this disk is set to 1823.
    +There is nothing wrong with that, but this is larger than 1024,
    +and could in certain setups cause problems with:
    +1) software that runs at boot time (e.g., old versions of LILO)
    +2) booting and partitioning software from other OSs
    +   (e.g., DOS FDISK, OS/2 FDISK)
    +
    +Command (m for help): p
    +
    +Disk /dev/hda: 15.0 GB, 15000330240 bytes
    +255 heads, 63 sectors/track, 1823 cylinders
    +Units = cylinders of 16065 * 512 = 8225280 bytes
    +
    +   Device Boot    Start       End    Blocks   Id  System
    +/dev/hda1   *         1       764   6136798+  83  Linux
    +/dev/hda2           765      1823   8506417+   5  Extended
    +/dev/hda5           765      1823   8506417   83  Linux
    +
    +Command (m for help): t
    +Partition number (1-6): 5
    +Hex code (type L to list codes): 8e
    +
    +Command (m for help): p
    +
    +Disk /dev/hda: 15.0 GB, 15000330240 bytes
    +255 heads, 63 sectors/track, 1823 cylinders
    +Units = cylinders of 16065 * 512 = 8225280 bytes
    +
    +   Device Boot    Start       End    Blocks   Id  System
    +/dev/hda1   *         1       764   6136798+  83  Linux
    +/dev/hda2           765      1823   8506417+   5  Extended
    +/dev/hda5           765      1823   8506417   8e  Linux LVM
    +
    +Command (m for help): w
    +
    +#
    +
    +
    +

    +

    Create the LVM physical volume from the partitions (repeat if you have +multiple partitions to use): +

    +
    +# pvcreate /dev/hda5
    +
    +
    + +Create a LVM volume group out of this physical volume called "VGforMyth" that is +allocated in chunks that are a multiple of 64MB +
    +
    +# vgcreate VGforMyth -s 64m /dev/hda5
    +
    +
    + +Create a logical volume of 5GB called "video" and then create the reiserfs +filesystem and mount it: +
    +
    +# lvcreate --name video --size 5G VGforMyth
    +# mkreiserfs /dev/VGforMyth/video
    +# mount /dev/VGforMyth/video /var/video
    +
    +
    + +Now create a 3GB volume for mythmusic files if you like: +
    +
    +# lvcreate --name music --size 3G VGforMyth
    +# mkreiserfs /dev/VGforMyth/music
    +# mount /dev/VGforMyth/music /var/music
    +
    +
    + +Display the volume group status: +# vgdisplay -v

    +

    Now, lets suppose you want to add a 60GB hard disk to the system as hdb and +allocate 50GB of it to video storage.

    +

    First, create a single partition /dev/hdb1 covering the whole disk and make +it type 0x8e using your partition editor.

    +

    # fdisk /dev/hdb +.... create partition, set type, save and reboot if it says you have to

    +

    Create the new LVM physical volume:

    +

    # pvcreate /dev/hdb1

    +

    Add the new physical volume to the volume group:

    +

    # vgextend VGforMyth /dev/hdb1

    +

    +

    + + +NOTE: You may get errors at this point stating that there are no +physical volumes available for adding to the LV, even though you know for a +fact that there are. You may need to specify the physical volume in the /dev/ide/host/bus/target/lun/etc format. +
    + +Once you've completed one of the following two procedures, use df +to check that you've got more space.

    +

    Make the logical volume used for video bigger:

    +

    # lvextend --size +50G /dev/VGforMyth/video

    +

    ReiserFS

    + +

    Unmount, resize and remount the filesystem. Technically, you don't need to +unmount and remount the ReiserFS. +

    +
    +# umount /var/video
    +# resize_reiserfs /dev/VGforMyth/video
    +# mount /dev/VGforMyth/video /var/video
    +
    +
    +

    + +

    ext2 or ext3

    + +

    LVM comes with a program called resize2fs.

    +

    Unmount, resize and remount the filesystem. The filesystem must be +unmounted during this procedure. +

    +
    +# umount /var/video
    +# resize2fs --size +50G /dev/VGforMyth/video
    +# mount /dev/VGforMyth/video /var/video
    +
    +
    +

    +

    xfs

    + +

    XFS does not need to be unmounted to extend the size: +

    +
    +# xfs_growfs /var/video
    +
    +
    +

    +

    24.2 Advanced Partition Formatting +

    + +

    The partitions that your distribution sets up for you may not be +optimized for large files. Using LVM in conjunction with the following +techniques can be quite useful.

    +

    Unlike a typical filesystem, a MythTV video partition is usually a very +large filesystem filled with a fairly small number of large files. +Filesystem I/O is usually not an issue, even in multi-tuner and/or +multi-frontend setups.

    +

    There is however, one aspect of filesystem performance that can have a +bearing on the performance of MythTV. In Linux, deleting a file will +utilize I/O bandwidth until the deletion has been completed. If deleting +the file takes long enough, the video capture buffer may overrun, thereby +resulting in dropped frames. Some filesystems are faster at deleting files +than others and, for multi-gigabyte MythTV video files, these differences +can be significant.

    +

    Fortunately, there are published tests ( +http://aurora.zemris.fer.hr/filesystems/big.html) that provide +insight into filesystem performance under conditions relevant to MythTV +usage. In addition, some limited testing (archived at +http://www.gossamer-threads.com/lists/mythtv/users/52672) +with very large files (10 gigabytes) was reported in the MythTV Users +mailing list.

    + +

    Ext2

    + +

    Ext2 was the defacto standard Linux filesystem for many years. It is +stable, provides good I/O performance and can quickly delete large files. +The primary disadvantage of Ext2 is that it is not a journaling filesystem, +so a file system consistency check (fsck, which is normally only performed +after a system crash) can take many hours on a filesystem the size of a +typical MythTV partition.

    + +

    Ext3

    + +

    Ext3 is Ext2 with a journal, so your biggest gain is that in case of a +crash and reboot you won't have to wait very long for your partition to be +remounted.

    +

    There are options available when formatting an Ext3 partition, as in: +

    +
    +# mkfs.ext3 -T largefile4 /dev/hdb1
    +
    +
    +

    +

    This example assumes that /dev/hdb1 has already been created using +fdisk. If you're using LVM, /dev/hdb1 may be something like +/dev/VGforMyth/video.

    +

    The "-T largefile4" option creates one inode per 4 megabytes, which can +provide a few percent more storage space. However, tests indicate that +using the "-T largefile4" option can drastically increase the amount of time +required to delete a large file and thus it should only be used with encoder +settings that produce small video files (YMMV).

    +

    You can check on your filesystem using the dumpe2fs program. See +the man page for details.

    +

    ReiserFS

    + +

    The Reiser filesystem is another journaling filesystem commonly +distributed with Linux. It is known to be an extremely efficient filesystem +and it especially excels at managing partitions containing a large number of +small files. However, tests indicate it is not the fastest at deleting very +large files. For that reason, it may not be the best choice when using +encoder bitrates that produce very large files.

    + +

    JFS

    + +

    JFS (Journaling File System) is a journaling filesystem originally +developed by IBM for AIX which was later released as open source. While not +as common as Ext3 or ReiserFS, it is distributed with RedHat 9 (RH9), Fedora +Core and Mandriva as well as other distros. According to tests, JFS is the +file deletion speed king, deleting virtually any file in under one second, +even files as large as 10 gigabytes.

    + +

    XFS

    + +

    XFS is a journaling file system originally developed by SGI for Irix, and +later released as open source. While not a part of the default RedHat Linux +9 or Fedora Core installation (although it is a part of Mandriva and Fedora +Core 2+), it can be easily installed via ATrpms. XFS provides deletion +speeds for large files only slightly slower than JFS. According to the test +results shown at ( +http://aurora.zemris.fer.hr/filesystems/big.html), XFS provide +higher I/O rates than JFS, albeit at a higher CPU loading. This may cause +issues if you do not have the spare CPU capacity to handle XFS, potentially +leading to dropped frames.

    +

    +

    +

    24.3 Migrating from DataDirect Labs to Schedules Direct +

    + +

    MythTV v0.20.2 or later is required to natively support Schedules Direct. +Code has been included to make the transition as simple as possible.

    +

    You do not need to delete your existing video sources or add new ones!

    +

    The following steps should work for most users: +

      +
    • Create a Schedules Direct account and use the same information as your +existing lineups at Zap2It Labs. Do not add or delete channels at this +time.
    • +
    • Shut down any running mythfrontend and mythbackend programs.
    • +
    • Perform a backup of your existing database. See +Saving or restoring the database for instructions.
    • +
    • Run mythtv-setup -> Video Sources. Change the grabber to +Schedules Direct, update the username and password fields with the account +information you created at Schedules Direct and select "Retrieve Lineups". +Click Finish.
    • +
    • Exit mythtv-setup and run mythfilldatabase. Check +if there were any errors.
    • +
    • Restart your mythbackend and mythfrontend programs.
    • +
    +

    + +

    24.4 Caching support for Schedules Direct +

    + +

    MythTV 0.20.2 or later supports caching of downloaded information from +Schedules Direct, so devices that share a common source do not require +multiple downloads.

    +

    Before beginning, perform a backup of your existing database. See +Saving or restoring the database for instructions.

    +

    In the following scenario, assume that you have the following: +

      +
    1. A PVR-150 MPEG-2 encoder card connected directly to a CATV source.
    2. +
    3. A PVR-250 MPEG-2 encoder card connected via S-Video to a CATV Set Top Box.
    4. +
    +

    +

    What we are going to do is to create a single lineup at Schedules Direct and +then create two Video Sources which use the same login information but have +different channels associated with them.

    +

    On your Schedules Direct account, create a lineup that has all of the +channels that you can receive. Because we have a Set Top Box (STB), choose +a Digital lineup. Yes, this means that you may have 900 channels in this +lineup, but that's OK.

    +

    Use the Schedules Direct channel editor and unselect any channels that you +can't tune without the STB. This will usually be channels higher than 125, +but check your CATV provider lineup if you're not sure. Once you've +deselected them (using a click on the first channel you can't receive and +then a shift-click on the last channel you can't receive will deselect all +the channels in between those two.) click the Save Changes button at the +bottom of the screen.

    +

    In mythtv-setup, create a Video Source with an appropriate name. +"SD-Analog Only" will be used in this example. Click "Retrieve Lineups" +and select the digital lineup you just created at Schedules Direct.

    +

    Click "Finish" to return to the Video sources selector and then press the +ESC key to go back to the main screen.

    +

    Now choose Input Connections. Select the PVR-150 which is connected +directly to the CATV. Set the Video Source to "SD-Analog Only" and click +"Fetch channels from listings source".

    +

    Set the start channel to an appropriate value.

    +

    NOTE: There is a bug where the "Fetch" command may not work; you +can tell that the Fetch did not retrieve any channels in one of two ways: in +the text-mode console, you will see a connection to Schedules Direct, but it +doesn't appear to retrieve any channel information: +

    +
    +2007-08-25 15:03:05.526 New DB DataDirect connection
    +2007-08-25 15:03:05.526 Connected to database 'mythconverg' at host: localhost
    +2007-08-25 15:03:05.536 DataDirect: Your subscription expires on 11/23/2007 01:12:10 PM
    +2007-08-25 15:03:05.707 New DB connection, total: 3
    +2007-08-25 15:03:05.707 Connected to database 'mythconverg' at host: localhost
    +2007-08-25 15:03:05.708 sourceid 2 has lineup type: CableDigital
    +2007-08-25 15:03:06.623 Data fetching complete.
    +2007-08-25 15:03:06.624 DataDirect: Deleting temporary files
    +
    +
    +

    +

    or, the "Please add channels to this source" message in the "Starting +channel" field stays on the screen.

    +

    If either of these happens, save the information on this screen by clicking +the "Finish" button. Exit back to the Input connections screen by pressing +ESC, then select this Input Connection again. This time the Fetch will work +and the "Please add channels to this source" message will disappear.

    +

    If you look at the text-mode console, you'll see this if the channel +retrieval is working: +

    +
    +2007-08-25 15:04:32.437 New DB DataDirect connection
    +2007-08-25 15:04:32.437 Connected to database 'mythconverg' at host: localhost
    +2007-08-25 15:04:32.447 DataDirect: Your subscription expires on 11/23/2007 01:12:10 PM
    +2007-08-25 15:04:32.622 New DB connection, total: 3
    +2007-08-25 15:04:32.622 Connected to database 'mythconverg' at host: localhost
    +2007-08-25 15:04:32.623 sourceid 2 has lineup type: CableDigital
    +2007-08-25 15:04:33.418 DataDirect: Adding channel 41 'AMC' (AMC).
    +2007-08-25 15:04:33.422 DataDirect: Adding channel 32 'A & E Network' (AETV).
    +2007-08-25 15:04:33.425 DataDirect: Adding channel 66 'Black Entertainment Television' (BET).
    +2007-08-25 15:04:33.427 DataDirect: Adding channel 180 'Bravo' (BRAVO).
    +2007-08-25 15:04:33.430 DataDirect: Adding channel 51 'ABC Family' (FAM).
    +2007-08-25 15:04:33.432 DataDirect: Adding channel 146 'Country Music Television' (CMTV).
    +2007-08-25 15:04:33.435 DataDirect: Adding channel 39 'CNBC' (CNBC).
    +2007-08-25 15:04:33.437 DataDirect: Adding channel 36 'Cable News Network' (CNN).
    +2007-08-25 15:04:33.440 DataDirect: Adding channel 35 'CNN Headline News' (CNNH).
    +
    +
    +

    +

    Repeat the Input Connection configuration for any other capture devices that +are connected directly to the CATV system. You do not need to click Fetch +once you've done one successful download of the channel information - the +Starting channel should be automatically populated.

    +

    Go back to Schedules Direct and re-enable the channels that you had +previously deselected, then click Save Changes.

    +

    Create a new Video Source, here called "SD-All Digital Channels". Perform +the same "Retrieve Listings" you did before.

    +

    Go back to the Input Connections screen, select the PVR-250 which is +connected to the STB, assign the "SD-All Digital Channels" video source and +perform a retrieve channels. This will pull down the complete channel +listing, but only for this device.

    +

    When mythfilldatabase runs, it will cache the "big" download which +is appropriate for the STB, and then copy the information to the channels +that can only be accessed without the STB. But by default +mythfilldatabase is going to notice that the "Analog only" video +source is missing the channels that are in the Digital lineup you created at +Schedules Direct, so we need to override the addition of new channels.

    +

    When you run mythfilldatabase to populate your database, you'll +need to run it like this:

    +

    +

    +
    +$ mythfilldatabase --remove-new-channels
    +
    +
    +

    +

    You will also need to modify how the mythbackend calls +mythfilldatabase when it performs its automatic listings update.

    +

    In mythfrontend, select "Setup" -> "General".

    +

    Continue press ENTER until you reach the Mythfilldatabase configuration +screen. In the "mythfilldatabase Arguments" field, type +--remove-new-channels

    +

    then press the TAB key until you reach Finish, then press ENTER to save. +You can then press ESC until you return to the main screen.

    + + diff --git a/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO.html b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO.html new file mode 100644 index 0000000..6efe675 --- /dev/null +++ b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO.html @@ -0,0 +1,250 @@ + + + + + Installing and using MythTV + + + + + +Next +Previous +Contents +
    +

    Installing and using MythTV

    + +

    Robert Kulagowski, +mailto:rkulagow@rocketmail.com

    2008-06-04, v0.21.02 +
    +Initially, installation of MythTV seems like a huge task. There are lots +of dependencies, and various distributions seem to do the same thing +different ways. This document will attempt to give general installation +instructions, as well as including distribution-specific instructions where +necessary. +
    +

    +

    1. First things first.

    + + +

    +

    2. Introduction.

    + +

    +

    3. Checking prerequisites.

    + + +

    +

    4. System Configuration Requirements for Compiling MythTV.

    + + +

    +

    5. Downloading and compiling.

    + + +

    +

    6. MySQL.

    + + +

    +

    7. Configuring Sound.

    + + +

    +

    8. Setting up a remote control.

    + + +

    +

    9. Configuring MythTV.

    + + +

    +

    10. Configuring mythfrontend.

    + + +

    +

    11. Using MythTV.

    + + +

    +

    12. Scheduling Recordings.

    + + +

    +

    13. MythPlugins.

    + +

    +

    14. MythWeb.

    + + +

    +

    15. MythGallery.

    + + +

    +

    16. MythGame.

    + + +

    +

    17. MythMusic.

    + + +

    +

    18. MythWeather.

    + +

    +

    19. MythVideo.

    + +

    +

    20. MythDVD.

    + + +

    +

    21. MythNews.

    + +

    +

    22. Troubleshooting.

    + + +

    +

    23. Miscellaneous.

    + + +

    +

    24. Example Configurations.

    + + +
    +Next +Previous +Contents + + diff --git a/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO.pdf b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO.pdf new file mode 100644 index 0000000..47e70c1 Binary files /dev/null and b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO.pdf differ diff --git a/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO.sgml b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO.sgml new file mode 100644 index 0000000..08fc851 --- /dev/null +++ b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO.sgml @@ -0,0 +1,7977 @@ + +
    +Installing and using MythTV +<author>Robert Kulagowski, <url url="mailto:rkulagow@rocketmail.com" +name="mailto:rkulagow@rocketmail.com"> +<date>2008-06-04, v0.21.02 +<abstract> +Initially, installation of MythTV seems like a huge task. There are lots +of dependencies, and various distributions seem to do the same thing +different ways. This document will attempt to give general installation +instructions, as well as including distribution-specific instructions where +necessary. +</abstract> +<toc> +<sect>First things first. +<p><figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption> +<bf>NOTE</bf>: Please note that I, Robert Kulagowski, am <em>NOT</em> the +author/programmer of the MythTV application! I can not give you +personalized installation support. If you are having issues installing +MythTV you should examine the archives, or post your question to the +MythTV-users mailing list. If you send me "Does MythTV work with 'X'"? +messages - I will simply instruct you to ask your question on the +mythtv-users mailing list. +</caption> +</figure> +<sect1>What is MythTV? +<p>MythTV is a GPL licensed suite of programs that allow you to build the +mythical home media convergence box on your own using Open Source software +and operating systems. MythTV is known to work on Linux and Mac OS X +(PowerPC and Intel). It does not run on Windows. + +MythTV has a number of capabilities. The television portion allows you to +do the following: +<itemize> +<item>You may pause, fast-forward and rewind live Television. +<item>You may install multiple video capture cards to record more than one +program at a time. +<item>You can have multiple servers (called "backends"), each with multiple +capture cards in them. All scheduling is performed by the Master backend, +which arbitrates which recording will be performed by each device. All +recording requests are managed by the Master backend, so you can schedule a +recording from any client. +<item>You can have multiple clients (called "frontends" in MythTV parlance), +each with a common view of all available programs. Any client can watch any +program that was recorded by any of the servers, assuming that they have the +hardware capabilities to view the content; a low-powered frontend will not +be able to watch HDTV, for example. Clients can be diskless and controlled +entirely by a remote control. +<item>You may use any combination of standard analog capture card, MPEG-2, +MJPEG, DVB, HDTV, USB and firewire capture devices. With appropriate +hardware, MythTV can control set top boxes, often found in digital cable and +satellite TV systems. +<item>Program Guide Data in North America is downloaded from +schedulesdirect.org, a non-profit organization which has licensed data from +Tribune Media Services. This service provides almost two weeks of +scheduling information. Program Guide Data in other countries is obtained +using XMLTV. MythTV uses this information to create a schedule that +maximizes the number of programs that can be recorded if you don't have +enough tuners. +<item>MythTV implements a UPNP server, so a UPNP client should automatically +see content from your MythTV system. +</itemize> +Other modules in MythTV include: +<itemize> +<item>MythArchive, a tool to create DVDs +<item>MythBrowser, a web browser +<item>MythControls, an application to configure your remote control +<item>MythFlix, a Netflix module +<item>MythGallery, a picture-viewing application +<item>MythGame +<item>MythMusic, a music playing / ripping application which supports MP3 +and FLAC +<item>MythNews, a RSS news grabber +<item>MythPhone, phone and videophone using SIP. +<item>MythVideo, DVD ripper and a media-viewer for content not created within MythTV +<item>MythWeather +<item>MythWeb, which allows you to control your MythTV system using a web +browser. With MythWeb, you can schedule and delete recordings, change +keybindings and more. With proper security, you may even schedule a program +over the Internet and have it immediately acted on by the Master backend. +</itemize> +<sect1>QuickStart +<p>Custom mini-distributions are available to make it easier to install +MythTV. A mini-distribution removes many of the "general purpose" +workstation / server software packages that may be installed by default if +you use one of the big-name OS packages. + +See <url url="http://mysettopbox.tv" name="http://mysettopbox.tv"> if you'd +like to install a custom version of Knoppix optimized for MythTV. + +See <url url="http://www.minimyth.org" name="http://www.minimyth.org"> if you'd like +to install MythTV onto a diskless system. + +See <url url="http://bit.blkbk.com" name="http://bit.blkbk.com"> if you'd +like to install MythTV on a Xbox. +<bf>NOTE</bf>: Site appears unmaintained. + +See <url url="http://wilsonet.com/mythtv/" +name="http://wilsonet.com/mythtv/"> for instructions tailored to RedHat's +Fedora Core distribution. + +See <url url="http://www.mythbuntu.org" name="http://www.mythbuntu.org"> if +you'd like to install a customized version of Ubuntu optimized for MythTV. + +There is a MythTV wiki at <url url="http://wiki.mythtv.org" +name="http://wiki.mythtv.org">. + +If you are installing this version for Schedules Direct support, please see +the <ref id="migratingtoSD" name="Migrating from DataDirect Labs to +Schedules Direct"> section for additional information. + +<sect1>Upgrading from previous versions +<p>The upgrade from previous versions should be transparent. Any changes to +the database structure should be applied automatically. + +It is <em>strongly</em> recommended that you back up your database before +installing a new version of MythTV. + +See <ref id="backupdb" name="Saving or Restoring the database"> for instructions. + +<sect1>How to obtain this document / PDF versions of this document <label id="how_to_obtain"> +<p>This HOWTO document is maintained at the primary MythTV website: <url +url="http://www.mythtv.org" name="http://www.mythtv.org"> by Robert +Kulagowski <url url="mailto:rkulagow@rocketmail.com">. + +This document is available as a single-page HTML document at <url +url="http://www.mythtv.org/docs/mythtv-HOWTO-singlehtml.html" +name="http://www.mythtv.org/docs/mythtv-HOWTO-singlehtml.html"> or as a PDF +at <url url="http://www.mythtv.org/docs/mythtv-HOWTO.pdf" +name="http://www.mythtv.org/docs/mythtv-HOWTO.pdf">. + +This HOWTO is for MythTV v0.21 + +Release notes for this version may be found in the MythTV Wiki at <url +url="http://www.mythtv.org/wiki/index.php/Release_Notes_-_0.21" +name="http://www.mythtv.org/wiki/index.php/Release_Notes_-_0.21"> + +<sect1>Books about MythTV +<p>If you would like to purchase a book specifically about MythTV: + +<itemize> +<item>Hacking MythTV, ISBN 978-0470037874 by Wilson, Tittel, Wright and Korelc +<item>Practical MythTV: Building a PVR and Media Center PC, ISBN 978-1590597798 by Smith and Still +</itemize> + +<sect1>Document conventions +<p>The following conventions are used throughout this document.<newline> +<bf>boldface</bf> - used for program names.<newline> +<tt>typewriter</tt> - used for program paths.<newline> +<em>emphasis</em> - Pay attention here.<newline> + +<figure loc="here"> +<eps file="warning.eps" height="1cm"> +<img src="warning.png"> +<caption> +Pay more attention. +</caption> +</figure> + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption> +Ignore at your own peril. +</caption> +</figure> + +<figure loc="here"> +<eps file="add.eps" height="1cm"> +<img src="add.png"> +<caption> +Feature that has been added to SVN (subversion, a revision control system) +but is not available in the current release. +</caption> +</figure> + +<sect1>Mailing lists / getting help +<p>It's recommended that you join the user list at <url +url="http://www.mythtv.org/mailman/listinfo/mythtv-users" +name="http://www.mythtv.org/mailman/listinfo/mythtv-users">. The developer +list is at <url url="http://mythtv.org/cgi-bin/mailman/listinfo/mythtv-dev" +name="http://mythtv.org/cgi-bin/mailman/listinfo/mythtv-dev">. Please keep +the developer list strictly for development-related issues. + +Searchable archives for the lists are available at <url +url="http://www.gossamer-threads.com/lists/mythtv/" +name="http://www.gossamer-threads.com/lists/mythtv/">. + +<sect1>IRC +<p>There are two IRC channels dedicated to MythTV which can be found on +irc.freenode.net +<itemize> +<item>mythtv +<item>mythtv-users +</itemize> + +The <tt>mythtv</tt> channel is where the developers discuss code. It is +<em>not</em> a user-support channel. Please don't ask non-development +related questions there. + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption> +Really. Even if there's no one in the mythtv-users IRC group or everyone +seems to be ignoring you. +</caption> +</figure> + +<sect1>Bug database +<p>If you feel you need to contribute to a bug database, use the MythTV bug +ticketing system at <url url="http://svn.mythtv.org/trac" +name="http://svn.mythtv.org/trac">. + +Good entries will contain the following: +<enum> +<item>Qt version +<item>Linux distribution +<item>gcc version +<item>the last entry in config.log to detail how you compiled +<item>MythTV version numbers (<em>e.g.</em>from mythfrontend --version) +<item>Hardware +<item>How you are able to reproduce the bug +</enum> + +See the instructions on how to debug in <ref id="debugging" name="Section 22">. + +The bug database is not a chat room, so restrict your entries to what is +relevant. It's also not a repository of feature requests; a feature request +without an accompanying patch file to implement that feature will be quickly +closed. There is a feature wishlist on the wiki at <url +url="http://www.mythtv.org/wiki/index.php/Feature_Wishlist" +name="http://www.mythtv.org/wiki/index.php/Feature_Wishlist">. There is no +guarantee that anything on the wishlist will ever get code written to +implement it. + +If a developer closes out your bug, it's likely you didn't provide enough +information. Don't re-open a bug without providing additional information. + +<sect1>Contributing to this document +<p>Contributions to the HOWTO are welcome, especially if you find a +grammatical or spelling error, or if the wording of something is just plain +confusing. + +If you'd like to make a new contribution, create a ticket at <url +url="http://svn.mythtv.org/trac" name="http://svn.mythtv.org/trac"> and +click "New Ticket". The type should be set to "patch" and the owner set to +"rkulagow" to ensure that I see your contribution. + +Please send it as either SGML or as plain text. <em>NO HTML</em>. The +source used to create the HOWTO is in SGML / Linuxdoc. Do not be afraid of +SGML! A quick look at the source of this HOWTO will show that it is not +difficult, because there aren't that many tags to worry about, so at least +<em>try</em> to submit as SGML. See the Linuxdoc HOWTO at <url +url="http://www.tldp.org/HOWTO/Howtos-with-LinuxDoc.html" +name="http://www.tldp.org/HOWTO/Howtos-with-LinuxDoc.html"> for information +on the linuxdoc format itself, or look at the <tt>mythtv-HOWTO.sgml</tt> +file as an example. + +To create the actual patch, run <bf>diff -u origfilename newfile > +doc.patch</bf> and attach your contribution to the trac ticket. + +<sect>Introduction. +<p>This HOWTO document will focus on manually building MythTV in a North +American environment. If you have installation instructions for a different +region or Linux distribution, please send them to the author so that it can +be included in other versions of this document. + +<sect>Checking prerequisites. +<p>You must ensure that any firewalls (either hardware, or a software +firewall installed by your distribution) will not block access to the ports +that will be used by the MythTV clients and servers on the "inside" LAN. +The ports for MySQL (TCP port 3306) and mythbackend (TCP ports 6543 and +6544) must be open. It is <em>strongly</em> recommended that you do +<em>not</em> expose the MythTV and MySQL ports to the Internet or your +"Outside" LAN. + +<sect1>Hardware +<p>Hardware selection is a complex topic, one this HOWTO will only discuss +briefly and in general terms. The following subsections offer some general +guidance but stop short of offering specific recommendations. + +For a good MythTV experience, you must understand that MythTV exercises your +hardware more than a typical desktop. Encoder cards generate DMA across the +PCI bus. The CPU is busy encoding / decoding video. Hard drives are +constantly reading and writing data. Building a MythTV system on older / +"spare" hardware may be an exercise in frustration and can waste many hours +of valuable time. + +For more detail about actual configurations that others have used, Mark +Cooper has setup a hardware database at <url +url="http://pvrhw.goldfish.org/" name="http://pvrhw.goldfish.org/">. The +website will let you browse what other users have reported as their hardware +configuration, and how happy they are with the results. + +If you have specific questions about the suitability of specific hardware +choices, you can consult the archives of the mythtv-users mailing list at +<url url="http://www.gossamer-threads.com/lists/mythtv/" +name="http://www.gossamer-threads.com/lists/mythtv/"> or +post a question to the list. +<sect2>CPU Type and Speed +<p>Selection of CPU type and speed is one of the trickiest elements of +hardware selection, mainly because there are so many tradeoffs which can be +made. For example, if you have plenty of CPU, you can use higher bitrates +or capture sizes, etc. + +MythTV has two modes of operation. First, it can function as a software +video encoder, which means that it uses a fairly generic "dumb" video +capture card to get frames of video, encodes them using the CPU on your +motherboard and writes them to disk. High-end video capture cards and +devices like the TiVo and ReplayTV have dedicated encoder chips which use +specialized hardware to convert the video stream to the MPEG-2 format +without using the motherboard CPU. The main CPU has the responsibility of +running the Operating System and reading and writing the encoded frames to +the disk. These tasks have fairly low CPU requirements compared to encoding +video, which is why a device like a Series 1 TiVo can run with only 16MB of +RAM and a 54MHz CPU. + +There are many variables that go into the question: "How fast a CPU do I +need to run MythTV"? Obviously, the faster your CPU, the better your +experience will be with MythTV. If you are using the software MPEG-4 +encoder and performing the "Watch TV" function, where the CPU is both +encoding and decoding video simultaneously to allow Pause, Fast Forward and +Rewind functions for live TV requires more CPU then just encoding or +decoding. MythTV also supports multiple encoder cards in a single PC, +thereby increasing the CPU requirements if you plan on simultaneously +encoding multiple programs. As a general guideline, plan on 1GHz per +encoder if you are doing software-based encoding, less if you are using a +hardware-based encoder. + +Here are a few data points: +<itemize> +<item>A PIII/733MHz system can encode one video stream using the MPEG-4 +codec using 480x480 capture resolution. This does not allow for live TV +watching, but does allow for encoding video and then watching it later. +<item>A developer states that his AMD1800+ system can <bf>almost</bf> +encode two MPEG-4 video streams and watch one program simultaneously. +<item>A PIII/800MHz system with 512MB RAM can encode one video +stream using the RTjpeg codec with 480x480 capture resolution and play it back +simultaneously, thereby allowing live TV watching. +<item>A dual Celeron/450MHz is able to view a 480x480 MPEG-4/3300kbps file +created on a different system with 30% CPU usage. +<item>A P4 2.4GHz machine can encode two 3300Kbps 480x480 MPEG-4 files and +simultaneously serve content to a remote frontend. +</itemize> + +The second mode of operation is where MythTV is paired with a hardware-based +video encoder, such as a Matrox G200 or a Hauppauge +WinTV-PVR-150/250/350/500. In this mode, because the video encoding is +being done by a dedicated video processor, the host CPU requirements are +quite low. See the <ref id="video_capture_device" name="Video Capture +Device"> section for details. + +The price differential between a frame grabber and a card that implements +hardware MPEG-2 encoding, such as the Hauppauge PVR-x50 series, is now less +than $30 US. Primary development in MythTV has transitioned to supporting +MPEG-2 capture devices and HDTV, so if given the option, go with the +hardware MPEG-2 encoder. + +If you have a Via M10000 series or a Hauppauge PVR-350, MythTV can use the +hardware-based video decoder for playback, which further reduces CPU +requirements. + +<sect2>Memory +<p>A MythTV host that is both a backend and a frontend and using software +encoding with a single capture card should run adequately in 256MB of RAM. +Additional RAM above 256MB will not necessarily increase performance, but +may be useful if you are running multiple encoders. + +<sect2>Hard Disk(s) +<p>Encoded video takes up a lot of hard disk space. The exact amount depends +on the encoding scheme, the size of the raw images and the frames per +second, but typical values for MythTV range from 700 megabytes/hour for +MPEG-4, 2 GB/hour for MPEG-2 and RTjpeg and 7 GB/hour for ATSC HDTV. + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: You <em>must</em> use DMA for hard drive access to prevent +choppy or jittery video. Not all distributions enable DMA at boot time. +See the Troubleshooting Section for <ref id="Setting_DMA" +name="instructions"> on how to do this.</caption> +</figure> + +Writing video to disk is sensitive to timing issues; RTjpeg requires less +CPU with the tradeoff being larger files and needing to write to the disk +faster. MPEG-4 requires more CPU, but the files are smaller. At the +default resolution, MPEG-2 creates the largest files of all with almost no +CPU impact. + +See the Troubleshooting <ref id="Setting_DMA" name="section"> for more +information. + +<sect2>Filesystems +<p>MythTV creates large files, many in excess of 4GB. You <em>must</em> +use a 64 or 128 bit filesystem. These will allow you to create large files. +Filesystems known to have problems with large files are FAT (all versions), +and ReiserFS (versions 3 and 4). + +Because MythTV creates very large files, a filesystem that does well at +deleting large files is important. Numerous benchmarks show that XFS and +JFS do very well at this task. You are <em>strongly</em> encouraged to +consider one of these for your MythTV filesystem. JFS is the absolute best +at deletion, so you may want to try it if XFS gives you problems. MythTV +.21 incorporates a "slow delete" feature, which progressively shrinks +the file rather than attempting to delete it all at once, so if you're more +comfortable with a filesystem such as ext3 (whose delete performance for +large files isn't that good) you may use it rather than one of the +known-good high-performance file systems. There are other ramifications to +using XFS and JFS - neither offer the opportunity to shrink a filesystem; +they may only be expanded. + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: You <em>must not</em> use ReiserFS v3 for +your recordings. You will get corrupted recordings if you do. +</caption> +</figure> + +Because of the size of the MythTV files, it may be useful to plan for future +expansion right from the beginning. If your case and power supply have the +capacity for additional hard drives, read through the <ref id="LVM" +name="LVM"> and <ref id="advancedpartitionformatting" name="Advanced +Partition Formatting"> sections for some pointers. + +<label id="video_capture_device"> +<sect2>Video Capture Device +<p>In order to capture video, MythTV will need one or more video capture +devices with Linux drivers. There are a number of classes of hardware +available for capturing video. +<sect3>Frame Grabbers. +<p>This class of card is the simplest and is usually the cheapest. There is no +on-board encoding of the analog video; hardware known as a Digital-Analog +Converter (DAC) takes the video and presents it to the computer in an +essentially raw digital form. + +For a list of video capture cards known to work with Linux, please see +<tt>/usr/src/linux/Documentation/video4linux/bttv</tt> for a partial +listing; even if your specific card is not listed, it may be that the vendor +is actually using a standard reference design and placing their own name on +it. See the video4linux mailing list (<url +url="https://listman.redhat.com/mailman/listinfo/video4linux-list" +name="https://listman.redhat.com/mailman/listinfo/video4linux-list">) for +more information and for specific hardware questions. + +The most common inexpensive cards available use the Bt848, Bt878 or CX2388x +series of video capture chips; examples are the "Hauppauge WinTV Go" card and +the "AverTV Desktop PVR" card, both of which use the bttv kernel module. + +<code> +NOTE: The ATI TV Wonder series and the ATI All-in-Wonder series of cards +are not the same. The All-in-Wonder cards will not work with MythTV. +</code> + +<figure loc="here"> +<eps file="stop.eps" height="4cm"> +<img src="stop.png"> +</figure> +<figure loc="here"> +<eps file="stop.eps" height="4cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: The ATI All-in-Wonder cards (which are not the same +as the ATI TV Wonder, TV Wonder VE or TV Wonder Pro) <em>will not</em> work +as a MythTV capture device because the GATOS <url +url="http://gatos.sourceforge.net" name="http://gatos.sourceforge.net"> +drivers that are available provide only a limited subset of the V4L API. +The TV Wonder series of cards are supported by the Bt8x8 Video4Linux driver. +</caption> +</figure> + +After you have installed a suitable capture device, you can check that +the kernel sees it with <tt>lspci</tt>. Look for an entry labeled "Multimedia +video controller". To get more detailed information about the card, use +<tt>lspci -v</tt> or <tt>lspci -vv</tt>. Ensure that your system is loading +the bttv modules by typing: +<tscreen><verb> +# lsmod |grep bttv +</verb></tscreen> + +You want to see the <tt>bttv</tt> module listed. +<sect3>Hardware MPEG-2 encoders. +<p>While inexpensive video-capture cards simply capture raw frames, leaving +encoding to software, some higher-end cards incorporate hardware-based +encoding. Using either a G200 MJPEG encoder card, or a MPEG-2 encoder card +supported by the IvyTV project <url url="http://ivtvdriver.org/" +name="http://ivtvdriver.org"> such as the Hauppauge +PVR-150/250/350/500, Avermedia M179, Hauppauge "Freestyle" or Yuan M600 +cards will allow you to use dedicated hardware encoders rather than your +CPU. (The PVR-350 can simultaneously be used as an output device.) Using the +on-board MPEG-2 encoder greatly reduces the CPU requirements for +encoding. + +The ivtv driver was incorporated into the Linux kernel starting at v2.6.22. + +There is a Beta driver for the HVR-1600 card at <url +url="http://www.ivtvdriver.org/index.php/Cx18" +name="http://www.ivtvdriver.org/index.php/Cx18"> + +<bf>NOTE</bf>: Motherboards with the Via chipset are notoriously bad with +DMA and have caused numerous issues with ivtv, including hard locks. See +the ivtv website <url url="http://ivtvdriver.org" name="http://ivtvdriver.org"> +for the latest information on what works and what doesn't. + +Here are some data points for encoding: +<itemize> +<item>A Celeron 450 uses 2% CPU for encoding a 480x480 16Mbps MPEG-2 stream. +</itemize> + +Here are some data points for decoding: + +<itemize> +<item>An Athlon 1800XP can decode a 720x480 8Mbps MPEG-2 file using 10% CPU +<item>An Athlon 1GHz can decode a 720x480 16Mbps MPEG-2 file using 30-50% +CPU, can decode a 480x480 16Mbps MPEG-2 using 30% CPU and approximately 30% +for Live TV at 416x480. +<item>A P3-550 can decode a 480x480 16Mbps MPEG-2 file with 55% CPU. +<item>A Celeron 450 (no SSE) can decode a 480x480 16Mbps MPEG-2 file with +80% CPU. +</itemize> + +<sect3>DVB capture cards. +<p>DVB is a video standard primarily found in Europe (where it comes in +DVB-C, DVB-T and DVB-S varieties for Cable, Terrestrial and Satellite) and +is also used as the programming interface for HDTV capture cards in Linux. +To see if your DVB card is supported, see the list of cards in the +"Supported Hardware" section of the DVB Wiki at <url +url="http://www.linuxtv.org/wiki/index.php/Main_Page" +name="http://www.linuxtv.org/wiki/index.php/Main_Page"> for more +information. + +In the United States, you may use a card such as the TwinHan to obtain +unencrypted Free-To-Air satellite channels. See <url +url="http://www.lyngsat.com/" name="http://www.lyngsat.com/"> for the types +of content which is available. + +<sect3>HDTV. +<p>There are a number of HDTV cards with Linux drivers which are known to +operate in the United States; a complete list of cards with DVB drivers can +be found at <url url="http://www.linuxtv.org/wiki/index.php/ATSC_Devices" +name="http://www.linuxtv.org/wiki/index.php/ATSC_Devices"> Some cards +support capture of unencrypted digital cable TV (utilizing QAM256), others +will only work with Over The Air (aka "OTA") signals captured with an +antenna (with 8VSB). + +Cards that have been reported to work include: +<itemize> +<item>pcHDTV HD-2000, Air2PC PCI rev 1-3 (8VSB only) +<item>SiliconDust HDHomeRun (8VSB, QAM256) +<item>pcHDTV HD-3000/5500 (8VSB, QAM256) +<item>Air2PC HD-5000 (8VSB, QAM256) +<item>DViCO Fusion HDTV Lite/Gold 5 (8VSB, QAM256) +</itemize> + +<bf>NOTE</bf>: There are no known consumer-level capture devices which will +allow you to capture the HDTV output (DVI, HDMI, VGA, YPbPr / Component) +from a set-top box commonly found with digital cable systems or satellite +systems. <em>None</em> of the capture devices listed above +perform any encoding; they merely allow your computer to save a copy of a +HDTV stream which has already been converted to MPEG-2 at the broadcast +facility. + +<bf>NOTE:</bf>: All of the cards listed above (except for the HD-2000 and +HDHomeRun) should be configured as DVB cards. The HD-2000 can be configured +as a pcHDTV card if you use the V4L drivers from <url +url="http://www.pchdtv.com" name="http://www.pchdtv.com"> and use Linux +kernel 2.6.9 or earlier. With kernel 2.6.10 and higher it must be +configured as a DVB card, but you lose access to the second antenna input in +ATSC mode. The HDHomeRun should be configured as two HDHomeRun cards, one +for each tuner. + +To playback HDTV content, plan on a powerful CPU. "How powerful?" depends +on a number of factors, such as the capture resolution, whether the video is +progressive or interlaced, and whether your display card has hardware-assist +support for Linux. + +The Simple Answer: Once you are in the 3.2 Ghz P4-class of CPU you should have +no issues with viewing HDTV. + +The Complicated Answer: + +For 720p content (1280x720), a 2.4GHz P4 should be sufficient. + +For 1920x1080i->1920x1080p with the better deinterlacing methods +done in real time a 2.4GHz CPU is taxed, but should work if you use "Bob and +Weave" deinterlacing, or if you have an NVIDIA card with MPEG-2 hardware +acceleration. If you enable the hardware acceleration, you may be able to +use a 1.8GHz processor. + +<sect3>Firewire. +<p>You may use the Firewire output of the Motorola DCT6200 or the SA3250. +If your provider uses 5C encryption on a particular channel, you won't be +able to get any content. + +<sect3>DBoxII or other devices running Neutrino +<p>You may use the Ethernet port of an DBoxII or a similar device to capture +MPEG2. Your set top box has to be running the Neutrino GUI. + +<sect3>USB Capture Devices. +<p>The Plextor ConvertX PVR devices are supported through Linux drivers +available from <url +url="http://www.plextor.com/english/support/LinuxSDK.htm" +name="http://www.plextor.com/english/support/LinuxSDK.htm">. MythTV uses the +Plextor to capture hardware encoded MPEG-4, so the host CPU requirements are low. + +Hauppauge WinTV-PVR-USB2 (driver available at <url +url="http://www.isely.net/pvrusb2/" name="http://www.isely.net/pvrusb2/">) +emulates a PVR-x50 card. + +<sect3>IP Recorder (RTSP, RTS, UDP) +<p>MPEG-2, MPEG-4 and H.264 internet TS stream recording is supported using +the IPTV recorder in MythTV. This recorder expects the channels to be supplied +as a m3u playlist. If your DSL/Fiber provider supplies television service, +but does not provide a m3u playlist for the channels, you can construct one +for your own use. You do not need to download it from the same server as the +streams themselves, and can also read it from a file if this is more convenient. + +<bf>NOTE</bf>: Some DSL providers only allow you to use one recorder at a +time, so you may need to limit yourself to one recorder in MythTV and turn +off any set top box the cable provider sold or rented to you with your +service. This limitation is independent of the bandwidth you have purchased. + +<sect2>Hardware known NOT to work and other issues +<p> +<itemize> +<item>Hauppauge WinTV-D or -HD (no driver) +<item>Hauppauge WinTV-USB series +<item>Hauppauge WinTV-PVR-usb (model 602), or WinTV-PVR-PCI (model 880) cards (no driver - this is not the PVR-250/350 +series of cards supported by the IvyTV driver) +<item>ATI All-in-Wonder series +</itemize> + +<sect2>Sound card +<p>The system needs a sound card or an on-board equivalent on the motherboard +to play back and in most cases, to record sound. Any sound card that can be +operated by the ALSA (Advanced Linux Sound Architecture) kernel modules will +work with MythTV. However, some cards and drivers will provide better +quality or compatibility than others. In particular, many audio +devices included on motherboards can be problematic. + +The usual practice for capturing the audio associated with the video is to +run a cable from an audio output on the video capture card to the Line input +on a sound card. However, some video capture cards provide on-board audio +capabilities that work with the kernel <tt>btaudio</tt> module instead, +thereby eliminating the need for a cable. This is useful if you will be +using multiple capture cards in a single chassis, since each capture card +will not need its own sound card. Note that a separate sound card is still +required for playback when using <tt>btaudio</tt>, and that often the audio +recorded in this way will be mono only. See the <ref id="btaudio" +name="btaudio"> section for more information. + +<figure loc="here"> +<eps file="warning" height="1cm"> +<img src="warning.png"> +<caption><bf>NOTE</bf>: Analog video capture cards are the only ones which +require a soundcard for capturing audio. DVB, HDTV, and other hardware +encoder cards all provide a combined audio / video stream. +</caption> +</figure> + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: Plugging a Line-level device into the Mic input is +not recommended. Line-level devices have higher voltages and can damage the +sound card. In addition, even if it doesn't break your card, you will be +getting Mono sound. See the Linux MP3 HOWTO at <url +url="http://www.tldp.org/HOWTO/MP3-HOWTO.html" +name="http://www.tldp.org/HOWTO/MP3-HOWTO.html"> for additional information. +</caption> +</figure> + +<sect2>Video Display Card +<p>MythTV will work with just about any video card. However, it is highly +recommended that you use a card which supports XVideo (XV) extensions. If +your card does not support XV, color conversion and scaling will be +performed by your CPU rather than the video card. This is very CPU +and memory intensive and will often result in dropped frames and a +corresponding degradation of quality. Check the X documentation +for details if you are uncertain about your preferred card. You may +also run <tt>xvinfo</tt>; look for your video card to be listed as one +of the adapters. + +<!-- Updated information from "Ray Olszewski" <ray@comarre.com> --> + +If you want to use MythTV with a standard television, you will need a +physical connection from your video card to your TV set, which can either be +a TV-out port on the card itself or an external adapter that converts the +VGA signal to an appropriate video signal. "Appropriate" depends on a number +of factors, such as video standard (NTSC vs. PAL), the type of input +connection (Composite vs. SVideo), etc. + +Note that with some video cards and X drivers, XVideo extensions are +only supported on the VGA output, and not on the TV output. + +<sect2>Cards with TV-out +<p>The next section deals with a number of cards that are known to have +TV-out ports. The list is unlikely to be complete, so if you know of +others, please post a message to the mythtv-users mailing list so the +information can be included in future versions of the HOWTO. The list is +organized by manufacturer. + +Reports here are based on what users of the cards have posted on the +mythtv-users mailing list, so if you need configuration details, please +search the archives at <url +url="http://www.gossamer-threads.com/lists/mythtv/" +name="http://www.gossamer-threads.com/lists/mythtv/"> using +the card name in your search string. + +<sect3>ATI +<p>ATI makes many cards with TV-out capability, but only offers Linux +drivers for Radeon 8500 and above cards. See the Drivers and Software +section of <url url="http://www.ati.com/" name="http://www.ati.com"> for the +driver and additional information. + +The enhanced ati.2 X driver created by the GATOS <url +url="http://gatos.sourceforge.net" name="http://gatos.sourceforge.net"> +project offers some support for TV-out on other ATI cards, but only in its +"experimental" version, available through CVS. There have been reports from +people who say they have made this driver work with one or another ATI card. +For example, Bruce Markey <url url="mailto:bjm@lvcm.com"> writes (on the +mythtv-users mailing list): "I got this to work. You can quote me on that. +I've used TV-out on several models of ATI cards both All-In-Wonder and +regular cards with TV-out." See the "Adventurous Setup" section of <url +url="http://gatos.sourceforge.net/watching_tv.php" +name="http://gatos.sourceforge.net/watching_tv.php"> for details. Also see +<url url="http://www.retinalburn.net/linux/tvout.html" +name="http://www.retinalburn.net/linux/tvout.html"> for more information. + +<sect3>NVIDIA +<p>Some NVIDIA cards with TV-out can be run using the standard nv driver in +X, combined with the userspace application <bf>nvtv</bf> to control the TV-out +port. See <url url="http://sourceforge.net/projects/nv-tv-out/" +name="http://sourceforge.net/projects/nv-tv-out/"> for details. Recent +versions of the NVIDIA driver have better support for overscan and other +features useful with TV-Out, so the <bf>nvtv</bf> application may not be +required. + +Some NVIDIA cards can be run with a proprietary NVIDIA X driver made +available by NVIDIA. See <url url="http://www.nvidia.com/object/unix.html" +name="http://www.nvidia.com/object/unix.html"> for more information. + +<bf>NOTE</bf>: It's strongly recommended that you use the proprietary +NVIDIA drivers; they have excellent support for XvMC and ship with a good +configuration utility. XvMC provides MPEG-2 hardware acceleration, which is +important if you want to display HDTV. + +<sect3>Hauppauge PVR-350 <label id="PVR-350"> +<p>MythTV supports the TV-out and MPEG-2 decoder functions in the IvyTV +driver. + +The PVR-350 is unique amongst the Hauppauge PVR-x50 cards in that it also +supports audio output, but you need to connect that audio output to +something. There are two courses of action you may take: +<enum> +<item>Take the audio output from the PVR-350 and plug it into an input on a +sound card on your machine. You may then use MythTV's internal audio +controls. +<item>Take the audio output from the PVR-350 and connect it directly to your +television / audio system. You must indicate that you are using external +audio control on the PVR-350 setup page. +</enum> + +<sect3>Other Options +<p>Some devices with on-board TV-out capability, such as Xboxes converted to +Linux and some laptops can be used as MythTV frontends to display on a +television screen. Please consult the mythtv-users mailing list for messages +that report the details of these special arrangements. + +<sect2>External Adapters +<p>External adapters convert standard VGA output to a form suitable for +display on a television. The output format varies by region, since +different countries have different TV standards. People on the mythtv-users +list have mentioned these adapters: + +<itemize> +<item>AITech Web Cable Plus, powered by external transformer or takes power +from PS/2 keyboard connector, support resolutions up to 1024x768, outputs +composite and SVideo, provides position adjustment. +<item>Averkey lite, powered by a USB port, has Composite, SVideo, YPbPr +outputs; pan, brightness, overscan/underscan controls; supports up to +1024x768 outputs; and supports PAL and NTSC. +<item>ADS TV Elite XGA +<item>AverKey iMicro (comments are generally favorable) +<item>AITech Web Cable (comments are generally unfavorable, different than +the "Plus" version above) +<item>TVIEW Gold (mentioned once, favorably) +</itemize> + +<sect1>Software +<p>There are a few ways of installing programs on Linux systems; you can +either use a pre-compiled package, or install from a tarball after +satisfying any prerequisites. + +<figure loc="here"> +<eps file="warning.eps" height="1cm"> +<img src="warning.png"> +<caption><bf>NOTE</bf>: you must have the MySQL database software installed on a +system to store the master database. This does not necessarily mean that +MySQL must run on one of the MythTV boxes. The minimum MySQL version is 5.0. +</caption></figure> + +<sect2>Pre-compiled packages <label id="precompiled"> +<p>A number of people have created pre-compiled packages for MythTV that may +make your installation easier. + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption> +<bf>BIG FAT WARNING</bf>: This HOWTO assumes that you have <em>not</em> +installed MythTV from a package. All example command lines and file +locations are based on the MythTV tarball defaults. Some packagers have +modified the filenames, binaries and file locations to match what is +commonly found in that distribution. Any issues with MythTV installed via a +pre-compiled package <bf>MUST</bf> be raised with the packager. +</caption> +</figure> + +If you use any of the pre-compiled packages you may not need to perform any +additional configuration steps in this HOWTO. The next logical step is +<ref id="mysql" name="configuring MySQL">, which you may or may not have to +perform. See your package documentation. + +<sect3>Red Hat Linux / Fedora Core +<label id="atrpms"> +<p>The definitive documentation on installing MythTV on Red Hat Linux / +Fedora Core can be found in Jarod Wilson's (<url +url="mailto:jcw@wilsonet.com" name="mailto:jcw@wilsonet.com">) HOWTO at <url +url="http://wilsonet.com/mythtv/" name="http://wilsonet.com/mythtv/"> Just +like 3rd-party packages, any 3rd-party documentation problems should be +brought up with the 3rd-parties (maintainer, lists, bugzillas etc.). The +installation instructions which follow should be used as a guide only; refer +to Jarod's guide. + +Red Hat Linux and Fedora Core packages for MythTV and all of its add-on +modules and some themes have been packaged by <url +url="mailto:Axel.Thimm@ATrpms.net" name="mailto:Axel.Thimm@ATrpms.net"> and +are available at <url url="http://ATrpms.net/topic/multimedia/" +name="http://ATrpms.net/topic/multimedia/">. All of the prerequisites for +MythTV (such as XMLTV) are available as RPM packages. If you have problems +with the RPMs, please contact the ATrpms lists at <url +url="http://lists.ATrpms.net/" name="http://lists.ATrpms.net/"> or file a +bug against <url url="http://bugzilla.ATrpms.net/" +name="http://bugzilla.ATrpms.net/">. + +Given the large number of dependent RPMs you are advised to use tools like +apt or yum for automatic retrieval and installation of the required RPMs. +(<url url="http://ATrpms.net/install.html" +name="http://ATrpms.net/install.html">) In this case a +special meta-package called mythtv-suite will allow you to install all of +MythTV and its add-ons, plus all dependencies. + +If you don't have <bf>apt</bf> or <bf>yum</bf> on your machine, download and +install the atrpms-kickstart package from <url +url="http://ATrpms.net/name/atrpms-kickstart/" +name="http://ATrpms.net/name/atrpms-kickstart/">. +Install the package with: +<tscreen><verb> +# rpm -Uvh atrpms-kickstart* +</verb></tscreen> +Then run: +<tscreen><verb> +# apt-get update +# apt-get dist-upgrade +# apt-get update +</verb></tscreen> +And finally: +<tscreen><verb> +# apt-get install mythtv-suite +</verb></tscreen> +These steps however, do NOT perform the installation of any drivers required +for <bf>ALSA</bf>, capture cards, <bf>lirc kernel modules</bf>, etc., nor do +they set up your MythTV database. Check <url +url="http://ATrpms.net/topic/multimedia/" name="http://ATrpms.net/topic/multimedia/"> for the drivers you +need. + +<sect3>Mandriva +<p>Thac has created RPMs for MythTV for Mandriva which may +be obtained from <url url="http://rpm.nyvalls.se/" +name="http://rpm.nyvalls.se/"> If you have problems with the RPMs, please +send him email directly at <url url="thac@nyvalls.se" name="thac@nyvalls.se">. +<sect3>Debian +<p>Debian packages for MythTV and most of its add-on modules are maintained +by Christian Marillat <url url="mailto:marillat@free.fr" +name="mailto:marillat@free.fr"> and are available at <url +url="http://www.debian-multimedia.org/" +name="http://www.debian-multimedia.org/">. +Installation instructions can be found on those pages as well. All of the +prerequisites for MythTV are available as Debian packages, most of them from +the official Debian archive. + +If you have followed the instructions on the above page you should have added +<tscreen><verb> +deb-src http://www.debian-multimedia.org sid main +</verb></tscreen> + +to your <tt>/etc/apt/sources.list</tt> file. Running <bf>apt-get update</bf> and then +executing <bf>apt-get build-dep mythtv</bf> should install all the +pre-requisites required to compile MythTV. + +<figure loc="here"> +<eps file="warning.eps" height="1cm"> +<img src="warning.png"> +<caption><bf>NOTE</bf>: Due to the requirement for Qt 3.3+, there are no packages for +Debian woody/stable. +</caption></figure> + +<p>The Debian packages are configured such that MythTV programs should be +run as the <tt>mythtv</tt> user, which is automatically created during +installation. This user has access to write new recordings to disk in the +default directory, read and write the database, access the audio and video +devices, and everything else that MythTV needs to do. + +<p>See <tt>/usr/share/doc/<it>packagename</it>/README.Debian</tt> for more +information, including copies of the MythTV documentation. The +<tt>mythtv-doc</tt> package contains a copy of this HOWTO in +<tt>/usr/share/doc/mythtv-doc</tt>. +<sect2>Manual installation +<p>You may use the graphical tools that come with your distribution, or you +can use command-line utilities. Either system will get the job done, and it +all depends on your comfort level with Linux. + +In order to compile MythTV, we need to make sure that the software it needs +is installed. This list includes <bf>mysql</bf>, <bf>gcc</bf>, +<bf>freetype2-devel</bf>, <bf>xorg-xserver-devel</bf>, <bf>qt-devel</bf> and +<bf>lame</bf>. If you're going to use a remote control with MythTV, you're +going to need the <bf>cdialog</bf> package in order to compile +<bf>lircd</bf> if your distribution doesn't have a pre-packaged +<bf>lirc</bf>. If you are using <bf>XMLTV</bf> as a grabber, you will need +<bf>perl</bf>. + +<code> +NOTE: Qt v3.3 or higher is required. + +NOTE: MythTV DOES NOT WORK with Qt4. + +NOTE: If you are going to be using RPMs to install various +components, you should be aware that not all packages include the necessary +headers for compiling. If you're having trouble compiling, ensure +that you've installed the -devel version of a prerequisite. +</code> + +<sect2>Command-line installation <label id="CLIinstalltools_"> +<p> This section details the various methods for installing prerequisites +from the command line. + +<sect3>Mandriva +<p><bf>NOTE</bf>: The following instructions should be considered out of +date as of 2006-09-10. If updated instructions are not submitted by the +release of v0.21 of MythTV they will be removed. + +<bf>urpmi</bf> is the simplest tool for installation of packages from the +command line, but properly configuring it can be difficult. The +following website <url url="http://easyurpmi.zarb.org/" +name="http://easyurpmi.zarb.org/"> will allow you to choose +a mirror site and then present the command-line configuration text for that +mirror. You will most likely need to add a "Contrib" mirror to your setup. +If you add a site from the "Penguin Liberation Front", you will be able to +load the <tt>lame</tt> library without compiling from source. + +Open a shell, and execute the following. You may get +asked a number of questions regarding dependencies. It's best to answer +"YES". +<tscreen><verb> +$ su +# urpmi mysql gcc gcc-c++ freetype2-devel cdialog alsa-utils +# urpmi XFree86-devel perl +# urpmi libqt3-devel libMesaGLU1-devel +</verb></tscreen> + +<code> +NOTE for Mandriva 9.1+ users: execute the following command. + +# urpmi libqt3-mysql +</code> +However, you might get this when you execute the commands above: +<tscreen><verb> +everything already installed +</verb></tscreen> + +In that case, you're ready to move to the next <ref id="Setting_up_paths" +name="section">. Once you have completed installing the pre-requisites, +exit out of the shell and start a new one to ensure that any environment +variables setup by the installation have a chance to take effect. + +<sect3>Gentoo. +<p><bf>NOTE</bf>: MythTV does <em>not</em> run on Qt4. +If Qt has not been installed on your system: Edit +<tt>/etc/make.conf</tt> and locate the "USE" variable. If the line is +commented out, remove the comment. The line should have at least: +<tscreen><verb> +USE="mysql alsa" +</verb></tscreen> +Next you need to build Qt. If you don't plan on using the ebuilds as +described in the Gentoo section then you also need to install lame. +<tscreen><verb> +# emerge lame mysql qt +</verb></tscreen> + +If you have already installed Qt: you will need to rebuild because the +default installation doesn't include MySQL support, a requirement for MythTV. +To enable SQL support, add "mysql" to your USE variable in +<tt>/etc/make.conf</tt> and rebuild Qt by running +<tscreen><verb> +# emerge qt +</verb></tscreen> + +All the necessary files will be downloaded and built. Even on a fast machine +this may take a lot of time if you need to do a full Qt build. + +<sect3>Debian. +<p>Build-dependencies for MythTV can be satisfied by adding the following to +your <tt>/etc/apt/sources.list</tt> +<tscreen><verb> +# Christian Marillat's packages (mplayer, lame) +deb http://www.debian-multimedia.org sid main +deb-src http://www.debian-multimedia.org sid main +</verb></tscreen> +and executing: +<tscreen><verb> +# apt-get build-dep mythtv +# apt-get source mythtv --compile +</verb></tscreen> + +<sect>System Configuration Requirements for Compiling MythTV. <label +id="Setting_up_paths"> +<p>Before you compile MythTV from the current source tarball or from +<bf>subversion</bf>, you may need to modify your system configuration in a +few ways. + +In general, if you install MythTV from pre-packaged binaries for your Linux +distribution/version, you don't need to be too concerned about the issues in +this section of the HOWTO - the install script for the packages should take +care of them. However, this section is still recommended reading which may +help if the packager skipped a step in their packaging. + +<sect1>Software requirements for compiling MythTV +<sect2>General requirements +<p>MythTV is written in C++ and requires a fairly complete, but standard, +compilation environment, including a recent g++ compiler, <tt>make</tt>, and +appropriate header files for shared libraries. Any standard Linux +distribution should be able to install a suitable compilation environment +from its packaging system. Section 3.2 of this HOWTO provides some details +of how to install the required environment for many distributions. + +Subsequent sections of this chapter address the few oddities that you may +have to adjust by hand before you compile MythTV. + +The reference compilation system for MythTV is Ubuntu. + +<sect1>Shared-Library requirements for MythTV +<sect2>Modifying /etc/ld.so.conf <label id="modifying_ld.so.conf"> +<p>The runtime manager for shared libraries, <bf>/lib/ld.so</bf>, gets +information about the locations and contents of shared libraries from +<tt>/etc/ld.so.cache</tt>, a file created by <bf>ldconfig</bf> from +information in <tt>/etc/ld.so.conf</tt>. Because MythTV installs some +shared libraries in <tt>/usr/local/lib</tt>, that directory needs to be +added to the list of directories for <bf>ld.so</bf> to search when doing +runtime linking of programs, if it is not already there. +You do this, as root, by editing <tt>/etc/ld.so.conf</tt>, then +running <bf>ldconfig</bf>. There are many ways to do this; one that +works is to enter this series of commands: + +<tscreen><verb> +$ su - +# echo /usr/local/lib >> /etc/ld.so.conf +# /sbin/ldconfig +# exit +$ +</verb></tscreen> +<sect1>Environment variable requirements for MythTV +<sect2>General requirements +<sect3>QT libraries and binaries +<p>The compiler needs to be able to locate QT binaries and libraries in +order to compile MythTV. QTDIR needs to be set and the directory holding the +QT binaries needs to be added to your PATH. Your distribution may already +be making these changes as a part of the installation of the software +prerequisites detailed earlier. + +One way to do this is as follows: <label id="Checking_that_it_worked"> + +Open a shell and execute the following: +<tscreen><verb> +$ echo $PATH +/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/usr/games:/usr/lib/qt3/bin:/home/mythtv/bin:/usr/lib/qt3/bin +$ echo $QTDIR +/usr/lib/qt3 +$ which qmake +/usr/lib/qt3/bin/qmake +</verb></tscreen> + +For Mandriva, you should see a value like <tt>/usr/lib/qt3</tt> for +<tt>QTDIR</tt> and <tt>/usr/lib/qt3/bin</tt> should be in $PATH. + +For Gentoo, you should see a value like <tt>/usr/qt/3</tt> for <tt>QTDIR</tt> +and <tt>/usr/qt/3/bin</tt> should be in $PATH. + +If you don't, do not proceed past this step until you have resolved this +error. You may need to manually specify the QTDIR and PATH at the shell +prompt before compiling. + +Also, check that there has been a link created in +<tt>/usr/lib/qt3/mkspecs</tt> (<tt>/usr/share/qt3/mkspecs</tt> for Debian) +called <tt>default</tt>. If not, you'll get errors during the compile. See +the Troubleshooting Section for more information. +<sect2>Distribution-Specific Notes +<sect3>Mandriva +<p>The following instructions work for Mandriva using +<bf>bash</bf> as the shell, and may be applicable for a distribution which +uses <tt>/etc/profile.d</tt>. + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: Mandriva 10 installs a <tt>/etc/profile.d/qtdir3.sh</tt> +file, but it doesn't include the addition of the PATH variable. If you're +running Mandriva 10, don't create a <tt>mythtv.sh</tt> file as detailed +below; edit the <tt>qtdir3.sh</tt> file and add the PATH statement within +the if / fi block. +</caption> +</figure> +As root, create the following file in <tt>/etc/profile.d</tt> The example +filename is "mythtv.sh". Use what you feel is appropriate. + +Open a shell, and switch to superuser mode. + +<figure loc="here"> +<eps file="warning.eps" height="1cm"> +<img src="warning.png"> +<caption><bf>NOTE</bf>: ^D means press CTRL and d at the same time. +</caption> +</figure> +<tscreen><verb> +$ su +# cd /etc/profile.d +cat > mythtv.sh +export QTDIR=/usr/lib/qt3 +export PATH=$PATH:/usr/lib/qt3/bin +^D + +# chmod a+x mythtv.sh +# exit +$ exit +</verb></tscreen> +The last two commands are to exit out of the shell. This way, when you next +open a shell your new commands +will take effect. + +<sect2>Device Permissions <label id="devperms"> +<p>MythTV will need access to the video4linux devices on your system. By +default, your distribution may restrict access to these devices to the +logged-in user, so if you will be automatically starting +<bf>mythbackend</bf> from a script rather than an interactive terminal +session you will need to make some adjustments. + +<bf>NOTE</bf>: The following instructions are accurate for Mandriva. + +Check for a file called <tt>/etc/security/console.perms</tt>. Open the file +in your favorite text editor and look for a line that has: +<tscreen><verb> +<console> 0600 <v4l> 0600 root.video +</verb></tscreen> +and replace it with +<tscreen><verb> +<console> 0666 <v4l> 0666 root.video +</verb></tscreen> + +What we're doing is allowing read and write access to the files in the +video4linux directory. +<sect>Downloading and compiling. <label id="DownloadAndCompile"> +<p>Get MythTV from the <url url="http://www.mythtv.org" +name="http://www.mythtv.org"> web site. There are two installation methods +you may choose from. The first is to download the latest release in tarball +format and compile. The tarball release of MythTV should work on a wide +variety of systems and should be the preferred method for new users. If you +wish to use the <bf>subversion</bf> copy of MythTV you may obtain it from +<url url="http://svn.mythtv.org" name="http://svn.mythtv.org"> + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: If you are going to use <bf>subversion</bf> to +compile MythTV rather than using the distribution tarball, you <em>must</em> +join the <url url="http://www.mythtv.org/mailman/listinfo/mythtv-commits/" +name="http://www.mythtv.org/mailman/listinfo/mythtv-commits/"> and <url +url="http://www.mythtv.org/mailman/listinfo/mythtv-dev/" +name="http://www.mythtv.org/mailman/listinfo/mythtv-dev/"> mailing lists to +keep up to date with the current status of the code. Code obtained from +subversion has no guarantees regarding stability, etc. +</caption> +</figure> + +If you are in North America you will use the Schedules Direct grabber which is +built-in to MythTV. You <em>do not</em> need to install XMLTV (so you may +skip XMLTV-related instructions), but you need <bf>wget</bf> version 1.9.1 +or higher. + +Get XMLTV from <url url="http://xmltv.sourceforge.net" +name="http://xmltv.sourceforge.net">. Download the latest version (0.5.51). + +<code> +NOTE for Mandriva users: If you have added a "PLF" mirror, you may skip the +next step and type: + +# urpmi libmp3lame0 libmp3lame0-devel + +After downloading, be sure to install both: +# rpm -Uvh lame* + +</code> + +Get lame from <url url="http://lame.sourceforge.net/" +name="http://lame.sourceforge.net/">. Download the source code to v3.96.1 +by following the links from "Using" through "Download...". + +<sect1>Building LAME +<p>Open a shell and switch to the directory where you saved lame. +<tscreen><verb> +$ tar -xzf lame-3.96.1.tar.gz +$ cd lame-3.96.1 +$ ./configure +$ make +$ make test +$ su +# make install +</verb></tscreen> +Check that it worked: +<tscreen><verb> +# ls -l /usr/local/lib +-rw-r--r-- 1 root root 381706 Nov 4 14:22 libmp3lame.a +-rwxr-xr-x 1 root root 674 Nov 4 14:22 libmp3lame.la* +lrwxrwxrwx 1 root root 19 Nov 4 14:22 libmp3lame.so -> +libmp3lame.so.0.0.0* +lrwxrwxrwx 1 root root 19 Nov 4 14:22 libmp3lame.so.0 -> +libmp3lame.so.0.0.0* +-rwxr-xr-x 1 root root 360197 Nov 4 14:22 +libmp3lame.so.0.0.0* + +# exit +$ +</verb></tscreen> + +<sect1>XMLTV +<sect2>Red Hat Linux and Fedora Core: +<p>RPMs for <bf>XMLTV</bf> and all of its dependencies can be obtained from +<url url="http://ATrpms.net/name/xmltv/" +name="http://ATrpms.net/name/xmltv/">. The web page has a +list of all the dependent packages you must download and install. +<tscreen><verb> +# rpm -Uvh xmltv* perl* +</verb></tscreen> + +If you install from this location you may skip to <ref id="manually_building_mythtv" +name="Manually building MythTV">. +<sect2>Mandriva +<p>RPMs for <bf>XMLTV</bf> and all of its dependencies are located in +Mandriva's "contrib". If you have added a contrib mirror, try installing +<bf>XMLTV</bf>: +<tscreen><verb> +# urpmi xmltv xmltv-grabbers +</verb></tscreen> +If this does not work, it is possible that contrib for your Mandriva version +does not have <bf>XMLTV</bf>, so you may install the XMLTV prerequisites by typing: +<tscreen><verb> +# urpmi perl-xml-twig perl-xml-writer perl-datemanip perl-libwww-perl +</verb></tscreen> + +and skip straight to the XMLTV compilation step. + +<sect2>Manual installation +<p> +<label id="untarring_xmltv">Untar the xmltv file: +<tscreen><verb> +$ tar -xjf xmltv-0.5.51.tar.bz2 +</verb></tscreen> +Install the xmltv prerequisites. The following prerequisites are the +minimum required; when you actually start running the xmltv setup program it +may alert you to other modules that are required.: + +<tscreen><verb> +$ su +# perl -MCPAN -e shell +cpan> install XML::Twig +cpan> install Date::Manip +Date::Manip is up to date. +cpan> install LWP +cpan> install XML::Writer +cpan> exit +</verb></tscreen> + +Change to the XMLTV directory and compile it: +<tscreen><verb> +$ cd xmltv-0.5.51 +$ perl Makefile.PL +</verb></tscreen> +You can answer "N" to the tv_check, tv_pick_cgi questions. Say "yes" to +the grabber required for your location. + +You may get errors about modules not being installed. You will need to +resolve any missing dependencies at this point, or your grabber may not work +correctly. +<tscreen><verb> +$ make +$ make test +$ su +# make install +# exit +</verb></tscreen> + +<sect1>Configuring the Schedules Direct service <label id="ConfigureSD"> +<p>As of 2007-09-01, Tribune Media Services will no longer offer free guide +data. Schedules Direct is a non-profit organization which has licensed the +data to make it available to users of Freeware and Open Source applications. + +If you wish to use Schedules Direct, you'll need to establish a user +account. Go to <url url="http://www.schedulesdirect.org" +name="http://www.schedulesdirect.org"> and click on the "Membership" link. + +Once you've read and agreed to the Subscriber Agreement, Terms of Use and +Privacy Policy proceed to the lineup choices and configure your account for +your particular location and the channels that you have. This configuration +will be imported into MythTV when you first run the <bf>mythtv-setup</bf> +program. + + +<label id="manually_building_mythtv"> +<sect1>Manually building MythTV +<p>If you are going to use <bf>subversion</bf>, execute the following +instructions to obtain the latest version of MythTV: + +<tscreen><verb> +$ mkdir mythtv +$ svn co http://svn.mythtv.org/svn/trunk/ mythtv +$ cd mythtv +</verb></tscreen> + +To use a release version, you can execute: +<tscreen><verb> +$ mkdir mythtv-release-0.21 +$ svn co http://svn.mythtv.org/svn/branches/release-0-21-fixes/ mythtv-release-0.21 +$ cd mythtv-release-0.21 +</verb></tscreen> + +<bf>NOTE</bf>: Using a svn version of the code allows you to stay +up-to-date with changes. So, if there's an update to the 0.21 release and +you originally obtained it using svn, you could enter the +mythtv-release-0.21 directory and type "svn up", which will update your copy +with the fixed version from the website. You would then recompile and +install the updated 0.21 code. + +If you are using the tarball, then unpack it: +<tscreen><verb> +$ tar -xjf mythtv-0.21.tar.bz2 +$ cd mythtv-0.21 +$ ./configure +</verb></tscreen> + +If you wish to change options, run <bf>./configure --help</bf> to +see what is available and to override and automatically detected options. +See the <tt>config.log</tt> file after running <bf>configure</bf> to see +previous runs. + +To compile: +<tscreen><verb> +$ make -j 2 +</verb></tscreen> + +The MythTV compile can take advantage of multiple CPUs, SMP and +Hyperthreading. If you want to build MythTV on a multi-CPU machine (or with +<bf>distcc</bf>), specify "-j numjobs", where "numjobs" is greater than 2. +In the above example, we had two concurrent jobs executing, which is +recommended for a single CPU system. Do not set the number of jobs too +high, or your compile will actually take longer to complete than it would if +you did a "normal" build. + +If you are using <bf>distcc</bf>, and you had two other host machines (red, blue) +participating, you would do something like: +<tscreen><verb> +$ export DISTCC_HOSTS='localhost red blue' +$ make -j 6 CXX=distcc +</verb></tscreen> + +The actual speed-up, if any, is dependant on a number of factors, such as +number of CPUs / hosts, etc. The <bf>distcc</bf> documentation recommends +using a <tt>-j</tt> value of twice the number of CPUs available to keep all +of them busy. + +Some timing information. The following should only be used for +illustration; your actual results may vary. The test involves a complete +<tt>make distclean</tt> to the final binary. +<itemize> +<item>P4 3.2Ghz HT: "standard" make: 12m 49s +<item>P4 3.2Ghz HT: make -j 2: 11m 24s +</itemize> + +In the above example, we see that with a single CPU, a multi-stage +<bf>make</bf> does not significantly decrease compile time. + +Once the compile is done, switch to superuser: +<tscreen><verb> +$ su +# make install +# exit +</verb></tscreen> + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: subsequent configuration steps assume that you are within +the MythTV directory that you <tt>cd</tt>'d to above. +</caption> +</figure> + +<sect2>Enabling real-time scheduling of the display thread. +<p>MythTV supports real-time scheduling of the video output thread. There +are three ways to go about enabling this: You can use rlimits, you can use +the realtime security module, or on older systems you can SUID the +executable. Enabling real-time scheduling is optional, but can make the +video display smoother, especially if you are decoding HDTV. + +<sect3>rlimits +<p>The rlimits method is the preferred method and is included in Linux +2.6.12 and above. Unfortunately, you need PAM version 0.79 or above, which +may not be supported by your distribution yet. Assuming anyone running +<bf>mythfrontend</bf> is in the audio group and rlimits are supported, all +you need to do is place this in your <tt>/etc/security/limits.conf</tt> + +<tscreen><verb> +* - rtprio 0 +* - nice 0 +@audio - rtprio 50 +@audio - nice 0 +</verb></tscreen> + +<sect3>realtime module +<p>The second option is to use the Linux realtime kernel module. +This is will be phased out over time, but is currently supported +by many distributions that do not yet support rlimits. If you are +not using the distribution kernel you must configure your kernel +with: +<tscreen><verb> +Security options : [*] Enable different security models +Security options : [M] Default Linux Capabilties +</verb></tscreen> +You may also need to install the realtime module, using your distribution's +realtime package. Assuming the users who will be running +<bf>mythfrontend</bf> will be in the audio group you can get the GUID of a named +group like so: +<tscreen><verb> +$ grep audio /etc/group +</verb></tscreen> +If the number printed out from the grep was 18, you can now load +this module as root before starting <bf>mythfrontend</bf>: +<tscreen><verb> +# modprobe realtime gid=18 +</verb></tscreen> + +<sect3>run as root option (not safe) +<p>The final and least preferred option is to set the sticky bit +on the <bf>mythfrontend</bf> executable. This <bf>opens a security hole</bf>, +but is the only option on systems that do not support either +rlimits or the realtime module. This does not work on modern +distributions either, and is <bf><em>not recommended</em></bf> +on any system connected to the Internet. This may also make it +impossible to debug MythTV without running <bf>gdb</bf> as root. If you +would still like to do this, you just need to run this as root: +<tscreen><verb> +# chmod a+s /usr/local/bin/mythfrontend /usr/local/bin/mythtv +</verb></tscreen> + +<sect2>Frontend-only configuration <label id="frontend-only"> +<p>Since MythTV uses a client/server architecture, multiple frontend +computers can simultaneously access content on a Myth system. Live TV, +watching and scheduling recordings, etc. are all possible from multiple +frontends. + +To get a better picture of what is needed to run a frontend, note the +following: +<list> +<item>You do NOT need the MySQL server installed on your remote frontend +<item>You do NOT need XMLTV installed on your remote frontend +<item>You do NOT need to run the mythtv-setup program on +your frontend machine +</list> + +Other than the exclusion of the MySQL server and XMLTV, the MythTV +compilation procedure is the same as when you're setting up both a backend +and a frontend. However, you <em>will</em> need to install the database +access libraries. + +Once MythTV is compiled and installed: +<list> +<item> +Run the mythtv-setup program on your Master backend. Under the "General" +menu, change the IP address of the current machine (by default, "127.0.0.1") +to the real external IP address - 127.0.0.1 is the loopback address and no +external machine can access it. Change the Master Server IP setting to the +same IP address as well. +<item> +Run the mythfrontend program on your frontend machine, +and a "Database Configuration" screen should appear. +Set the "Host name" field to point to your Master backend's IP address. +</list> + +<sect1>Gentoo <label id="Gentoo_build"> +<p>Installation of MythTV on Gentoo consists of simply emerging the desired +ebuild because all of the packages are now part of the official Portage tree. +<tscreen><verb> +$ su - +# emerge --sync # make sure portage is up to date. +# vi /etc/make.conf +</verb></tscreen> +Add mysql to your USE variable. i.e. <tt>USE="mysql ...."</tt> +<tscreen><verb> +# emerge mythtv +</verb></tscreen> +<sect>MySQL.<label id="mysql"> +<p>When you install MySQL 5.x you will also want to comment +out "log-bin" in your <tt>my.cnf</tt> configuration file. This option will +quickly fill your "/var" disk partition with many gigabytes of data, +unless you are doing database replication and deleting these files regularly. +<sect1>Distribution-specific information +<sect2>Mandriva +<p>If this is the system maintaining the database, make sure that MySQL is +running and started at boot. Click on Mandriva Control +Center->System->Services, find MySQL and click the "On Boot" button and the +"Start" button if the MySQL status shows that it isn't running yet. + +<figure loc="here"> +<eps file="warning.eps" height="1cm"> +<img src="warning.png"> +<caption><bf>NOTE</bf>: There have been reports that MySQL isn't starting at boot. +If this is happening to you, try running the following commands. +</caption> +</figure> +<tscreen><verb> +$ su +# chkconfig --level 35 mysql on +# /etc/rc.d/init.d/mysql start +# exit +</verb></tscreen> + +<sect2>Red Hat Linux and Fedora Core +<p>If this is the system maintaining the database, make sure that MySQL is +running and started at boot. Click on Redhat menu>Server Settings>Services +and enter the root password when asked. Check "mysqld" and then click Start. +Click Save, then close the window. + +This can be done from the command line by typing: +<tscreen><verb> +# /sbin/chkconfig mysqld on +# /sbin/service mysqld start +</verb></tscreen> + +<sect2>Gentoo +<p>After installing MySQL you need to initialize the database by running +<bf>mysql_install_db</bf> as root. +<sect1>Setting up the initial database +<p>This step is only required on the system maintaining the database, which +may or may not be one of your MythTV boxes. If the database is on a +non-MythTV machine you'll need to copy the <tt>database/mc.sql</tt> file to it. + +To setup the initial MySQL databases: +<tscreen><verb> +$ cd database +</verb></tscreen> +<sect2>Mandriva and Red Hat Linux/Fedora Core +<p><tscreen><verb> +$ mysql -u root < mc.sql +</verb></tscreen> +<sect2>Debian 3.0 +<p><tscreen><verb> +$ mysql < mc.sql +</verb></tscreen> +<sect2>Gentoo +<p><tscreen><verb> +$ su +# mysql < /usr/share/mythtv/database/mc.sql +</verb></tscreen> +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: It is good practice to set a root password for MySQL. +Instructions for doing so can be found on MySQL's web site at <url +url="http://www.mysql.com/doc/en/Security.html" +name="http://www.mysql.com/doc/en/Security.html">. +</caption> +</figure> +<sect2>Modifying access to the MySQL database for multiple systems <label +id="modify_perm_mysql"> +<p>If you're going to have multiple systems accessing a master database, +you must grant access to the database from remote systems. By default, the +<tt>mc.sql</tt> script is only granting access to the local host. + +To allow other hosts access to your master database, you can either set it +up for no security at all, or with more granularity. Note that the "%" is +the wildcard character in MySQL. + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: The "no security" option is <em>very</em> dangerous unless +you're in a controlled environment. +</caption> +</figure> +This example has no security at all, and allows access from any host. +<tscreen><verb> +$ mysql -u root mythconverg +mysql> grant all on mythconverg.* to mythtv@"%" identified by "mythtv"; +mysql> flush privileges; +</verb></tscreen> + +For a more secure setup, you can restrict which machines or subnets have +access. If you have a complete DNS system operational, you could do the +following: +<tscreen><verb> +$ mysql -u root mythconverg +mysql> grant all on mythconverg.* to mythtv@"%.mydomain.com" identified by "mythtv"; +mysql> flush privileges; +</verb></tscreen> + +Finally, if you just want to restrict by IP subnet (in this example, the +192.168.1. network): +<tscreen><verb> +$ mysql -u root mythconverg +mysql> grant all on mythconverg.* to mythtv@"192.168.1.%" identified by "mythtv"; +mysql> flush privileges; +</verb></tscreen> + +You'll also need to check that the "networking" feature of MySQL is turned +on. Check that <tt>/etc/mysql/my.cnf</tt> <em>does not</em> contain +<tt>skip-networking</tt>. If it does, remove it. Also verify that +<tt>bind-address</tt> is set to your IP address instead of +<tt>127.0.0.1</tt>. If you change either of these items, restart +<bf>MySQL</bf>. + +<bf>NOTE</bf>: Your distribution may have a customized MySQL configuration +file; in Mandriva, check <tt>/etc/sysconfig/mysqld</tt> for additional +configuration. + +<sect>Configuring Sound. +<p>If your video doesn't appear to be in-sync with your audio and you're +using an analog video capture card and a soundcard to capture audio, it +could be because you are listening to the real-time audio from your video +card rather than after it's been processed and synchronized to the video by +MythTV. Because MythTV is a personal video recorder, "Live TV" isn't really +live - to let you pause live TV, MythTV is actually encoding the video, +saving to disk, and then playing it back. This procedure puts your MythTV +"live" TV about 2 seconds behind real-time, so it's important that you're +not listening to the live audio. However, if you're having an issue where +the audio and video aren't synchronized by small but varying amount, it's +most likely because the sound driver that you're using doesn't have the +DSP_CAP_REALTIME capability. This was the case with ALSA (0.5), but not +with newer versions. See the <ref id="Troubleshooting_Audio" +name="Troubleshooting Audio"> section for more information if you're having +issues with sound. Also, ensure that no other programs are grabbing the +audio output, like <bf>arts</bf> or <bf>esd</bf>. + +What you need to do is to mute the "line-in" of your sound card and also +set it as the recording source. + +There are two ways to do this. Graphically, and from the command line. + +<sect1>Graphically setting up the mixer +<sect2>Mandriva and Red Hat Linux/Fedora Core +<p>Open Kmix by clicking K->Multimedia->Sound->Kmix for Mandriva, or +<verb>RedHat Menu>Sound & Video>Volume Control</verb> on Red Hat/Fedora. + +Click on Settings->Configure Make sure that "Tick Marks" and "Show +labels" have "X"'s in them. This will make it easier to find the correct +audio source. Click OK. + +On the mixer page, look for Line-In on your sound card. You should see +two LED's - a green one at the top, and a red one at the bottom. The green +one at the top is for muting; you want to make sure that the green LED is a +dark green, meaning that it's "off". You also want to click on the red LED +so that it turns bright red, indicating that it's "ON"; this insures that +the Line-in is used as the source. Click OK, and make sure that you save +the settings so that this is your default. + +<sect3>Using ALSA. +<p>To use ALSA, you'll need to correctly setup your +<tt>asoundrc</tt> file. Configuring this file is beyond the scope of this +HOWTO. Once ALSA is working correctly, change the output sound device in +mythfrontend->setup->Audio from <tt>/dev/dsp</tt> to <tt>ALSA:default</tt>. +This field may be edited to suit your ALSA requirements. + +<sect1>Setting the mixer from the command line +<p>If you have installed the alsa-utils package, then the <bf>amixer</bf> +program can be used to setup the mixer. The "Master" volume setting is only +required on a frontend machine to ensure that the sound channels are unmuted +and configured for outputting sound. The "Line" and "Capture" controls are +required for your sound card to actually capture audio from the external +Line-in if it's connected to an analog frame grabber. Not all sound cards +have a "Capture" control, but if yours does and you don't set it then MythTV +will not capture audio. + +<code> +Note the spelling in the following commands. +</code> +<tscreen><verb> +$ amixer set Master,0 100%,100% unmute +$ amixer set PCM,0 100%,100% unmute +$ amixer set Line,0 75%,75% mute captur +$ amixer set Capture,0 100%,100% captur +$ su +# alsactl store +# exit +$ +</verb></tscreen> + +If you have multiple sound cards, then use the <tt>-c</tt> parameter to +specify which card to adjust. Note that the first card will be "0", the +second will be "1", etc. + +That takes care of setting the volume correctly, and the ALSA startup script +will restore the volume after a reboot. If you find that your sound is +distorted, it's possible that the levels in the above examples are too high +for your particular hardware combination. Try reducing the percentages by +5-10% and checking again. Once you're satisfied, re-run the <tt>alsactl +store</tt> command. + +You may also use the <bf>alsamixer</bf> program to set the volume. If you +are using an ALSA version after 1.0.6, use <bf>alsamixer -V all</bf> First, +start <bf>alsamixer</bf> from the command line. You should start out on the +"Master" volume control slider. Use the up and down cursor to set the +master volume to around 75%. Next, use the left and right cursor keys to +move around on the screen until you find the "Line" slider. Press SPACE to +set it as the capture source, set the level to around 50-75% and press "M" +to mute it. You can now press ESC to exit out of the <bf>alsamixer</bf> +program. You can also have MythTV manage all volume and mute settings, but +this will only affect the "Master" or PCM volume, not the capture volume. See +the mythfrontend setup page for options. + +Finally, if you've performed all of the above steps, and you still don't seem to have any sound, it's possible that your video capture device is muting the audio output. +<tscreen><verb> +$ v4lctl -c /dev/video0 setattr mute off +</verb></tscreen> + +<sect>Setting up a remote control. +<p>MythTV does not have native remote control receiver and decoder software +built-in. Instead, remote control functions are implemented by cooperating +with <bf>lirc</bf>, the Linux Infrared Remote Control program. <bf>lirc</bf> +handles the IR hardware and passes keystrokes to MythTV, which then acts as +if the user had pressed the keys on the keyboard. The file +<tt>keys.txt</tt> describes the keys used to control MythTV. + +<figure loc="here"> +<eps file="warning.eps" height="1cm"> +<img src="warning.png"> +<caption><bf>NOTE</bf>: If you are running Mandriva, you may install +<bf>lirc</bf> by executing: <tt># urpmi lirc lirc-remotes</tt> and bypass +the manual compilation steps described below by jumping to the <ref +id="completing_lirc_install" name="Completing the lirc install"> section. +See the contrib/mandrake91.etc.sysconfig.lircd file for an example of how to +configure lircd. +</caption> +</figure> + +Some IR devices require a kernel recompile, and some don't. However, all at +least require having the kernel source available as a resource for the lirc +build process. + +<sect1>Gentoo +<p>To install lirc on Gentoo, all you need to do is: +<tscreen><verb> +# emerge lirc +</verb></tscreen> + +<sect1>Obtaining and compiling lirc +<p>You're going to need to download and compile <bf>lircd</bf>. Go to <url +url="http://www.lirc.org" name="http://www.lirc.org"> and download lirc; as +of 2006-01-21, the version available is 0.8.0. Grab the remotes.tar.bz2 file as +well. +<tscreen><verb> +$ tar -xjf lirc-0.8.0.tar.bz2 +$ cd lirc-0.8.0 +$ ./setup.sh +</verb></tscreen> +You're going to need to know what sort of receiver you have and where it's +connected. In the case of the Pinnacle Studio TV card, with the IR receiver +connected to COM1 (/dev/ttys0), once the configuration menu comes up, +perform the configuration by going to Driver Configuration->Other Serial +Port Devices->Pinnacle Systems Receiver->OK and on the next page select +COM1->OK. + +Each remote is different; some remote receivers connect directly to your +capture card and not to a serial port, so make sure that you've got the +correct one. + +You then click "Save Configuration and run configure" to continue. + +Make sure you read the last text generated by the configure step. It will +tell you if you require a kernel recompile, and what the name of your kernel +module will be (if necessary). For instance a home-built receiver may +require a kernel recompile, so you would be notified that you will have to +load the lirc_serial module. If you did not get any such messages skip the +kernel recompile steps below and go directly to making and installing the +lirc driver. + +Once the configuration step is complete: +<tscreen><verb> +$ make +$ su +# make install +# chmod 666 /dev/lircd +</verb></tscreen> + +At this point, if you're using a serial receiver, check that there's a +<tt>lirc</tt> device in <tt>/dev</tt>: +<tscreen><verb> +$ ls -l /dev/li* +lr-xr-xr-x 1 root root 5 Jan 27 09:00 /dev/lirc -> ttyS0 +srw-rw-rw- 1 root root 0 Jan 27 15:01 /dev/lircd= +prw-r--r-- 1 root root 0 Jan 27 09:00 /dev/lircm| +</verb></tscreen> + +As you can see, there's a link from /dev/lirc to ttyS0, a.k.a. "COM1", which is +appropriate for the Pinnacle Systems PCTV Pro. However, you may notice +something like this: +<tscreen><verb> +crw------- 1 root root 61, 0 Dec 31 1969 lirc +</verb></tscreen> +Some IR receivers (including some homebrew units) use a character device as +their data interface as opposed to a link to a serial port. If the <tt>make +install</tt> step has created a character device for you, don't replace it +with a link to a COM port. + +So, if the link or character device was not created (but should have been), +ensure that you ran the <tt>make install</tt> step as root. If it still +doesn't work, then there are three options. The first option is to re-read +the <bf>lirc</bf> documentation to determine whether your IR receiver is a +character device or should be a link to a serial port and to create the +link/character device manually. In this example, the IR device is connected +to ttyS0. If it were connected to "COM2", then use ttyS1, etc. +<tscreen><verb> +$ su +# cd /dev +# ln -sf ttyS0 lirc +# exit +$ +</verb></tscreen> + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: The above example assumes that your receiver uses the +standard serial driver. Some receivers do not, including receivers that +plug into a TV capture card. Check the lirc documentation, but it may be +necessary to replace the link created above with a character pipe: +</caption> +</figure> +<tscreen><verb> +# mknod /dev/lirc c 61 0 +</verb></tscreen> + +See the lirc documentation for additional information. The lirc +installation <em>should</em> create this for you, so manually creating it +indicates that your lirc installation may have other issues. + +The second option is to post your issue to the <em>lirc</em> list, not the +mythtv-users list. The lirc programmers will be the ones that can assist +you best. + +The third option is to dispense with lirc altogether by purchasing an IR +keyboard (various options exist, although Chicony appears to work for some +people) and a learning remote control. The IR keyboard receiver plugs into +the PS/2 keyboard port on your PC and you would train your learning remote +to emulate the various keystrokes from <tt>keys.txt</tt> of your IR +keyboard. Using this method removes lirc entirely from the picture - your +remote will be sending keypresses that your PC "sees" on the keyboard port. + +<sect1>Completing the lirc install <label id="completing_lirc_install"> +<p><figure loc="here"> +<eps file="warning.eps" height="1cm"> +<img src="warning.png"> +<caption><bf>NOTE to Mandriva 9.1 users</bf>: skip to the manual start paragraph +below. +</caption> +</figure> +<p>If the lirc configure program / compile did not mention anything about a +kernel module, then you are finished. If it did mention a kernel module, you +must edit the <tt>/etc/modules.conf</tt> file. Add this line as the first +thing in the file. It must come first, or it may not work. +<tscreen><verb> +alias char-major-61 XXX +</verb></tscreen> + +replace XXX with the name which you determined earlier, which in this +example was "lirc_serial" +<tscreen><verb> +$ su +# modprobe lirc_serial +# /sbin/ldconfig +</verb></tscreen> + +Next, we're going to manually start lircd the first time. Mandriva 9.1 +users, type: <tt># /etc/rc.d/init.d/lircd start</tt> instead of: +<tscreen><verb> +# /usr/local/sbin/lircd +</verb></tscreen> + +<bf>NOTE</bf>: Read this next section if you're not familiar with how lirc works! + +There are two separate files used by lirc, and both are required for your +remote control to do anything useful. First is the <tt>lircd.conf</tt> file. +<tt>lircd.conf</tt> tells the lirc daemon how to interpret the IR pulses +that it receives from a remote control and what name to assign to each +sequence of pulses. Without getting too involved, a particular series of +pulses may correlate to "Channel Up". The <tt>lircd.conf</tt> file will +then contain a line that looks something like this: + +<tscreen><verb> + ChannelUp 0x0000000000001020 +</verb></tscreen> + +The <tt>lircd.conf</tt> file can have multiple remote controls defined. + +The second file is <tt>lircrc</tt>, which takes the name of the button which +was pressed ("ChannelUp") in the above example, and correlates that to an +action to be performed by a program using the remote control. So in MythTV, +ChannelUp means one thing, while in <bf>mplayer</bf> it means something +different. <tt>lircrc</tt> gives you the flexibility of taking the name of +the button and having it perform different actions depending on which +program you're using at the time. + +<bf>NOTE</bf>: The definitions in <tt>lircd.conf</tt> come from the user +community, and there is no standard for the common button names. One +<tt>lircd.conf</tt> file may contain a definition for a button called +"ChannelUp", while another may contain a definition for "Chan+". Your +<tt>lircrc</tt> file must therefore be configured appropriately, or it won't +work. + +If this fails, complaining of a missing <tt>lircd.conf</tt> file, then you +must find or make one. First look for a pre-made configuration file at <url +url="http://lirc.sourceforge.net/remotes/" +name="http://lirc.sourceforge.net/remotes/">. Mandriva 9.1 users, look in +<tt>/usr/share/lirc-remotes</tt>. If you find one your remotes either on the +website or in <tt>/usr/share</tt>, download or copy the file, name it +<tt>lircd.conf</tt> and put it in your <tt>/etc</tt> directory. If you +couldn't find your remote, you must make your own <tt>lircd.conf</tt> file. + +To make your own <tt>lircd.conf</tt> file +<tscreen><verb> +$ irrecord myremote +</verb></tscreen> + +Follow the on-screen directions to train your remote and define keys. If +your remote ends up working well, you should consider submitting your +<tt>lircd.conf</tt> file back to the lirc developers. Once finished: +<tscreen><verb> +$ su +# cp myremote /etc/lircd.conf +</verb></tscreen> + +now try to start lircd again: +<tscreen><verb> +# /usr/local/sbin/lircd +</verb></tscreen> + +Now, we're going to add the commands necessary for lircd to run each time we +boot. Mandriva 9.1 users, you can execute: +<tscreen><verb> +$ su +# chkconfig --level 35 lircd on +# exit +</verb></tscreen> + +All other distributions: +<tscreen><verb> +# cd /etc/rc.d +# cat >> rc.local +echo "Starting lircd" +/usr/local/sbin/lircd +^D +# exit +$ +</verb></tscreen> + +This takes care of the lircd portion, which "listens" for the IR signals. If +everything went well, the install script for lircd put an appropriate +configuration file for your remote into <tt>/etc/lircd.conf</tt> This file +maps the buttons on the remote control to the IR pulses coming from the +receiver. + +The next step is to convert those signals into something that can be used +to control MythTV. MythTV now includes native support for lirc and can +interact directly with + +<tscreen><verb> +$ cd ~/mythtv-0.21/contrib/configfiles +$ cp lircrc.example ~/.lircrc +</verb></tscreen> +or +<tscreen><verb> +$ cp lircrc.example.pinnaclestudiopctv ~/.lircrc +</verb></tscreen> +if you've got a Pinnacle Studio PCTV remote. +<tscreen><verb> +$ irw +</verb></tscreen> +Start pressing the keys on your remote; <bf>irw</bf> will +print the name of the button as it is defined in your +<tt>/etc/lircd.conf</tt>. If you don't see anything at this point, you need +to troubleshoot further by going back to the lirc home page and investigating +from there. + +If it is working, then press <bf>CTRL-C</bf> to abort the program. Once you +know that your remote is working, you can either recompile MythTV with +native lirc support by enabling it in <bf>configure</bf> or you +need to run the <bf>irxevent</bf> program, which takes the key presses and +sends them to MythTV. If you use native lirc support, you don't need to run +<bf>irxevent</bf>. If you are going to use irxevent, then you need to run +it like this: +<tscreen><verb> +$ irxevent & +</verb></tscreen> +If <bf>irxevent</bf> isn't running, then MythTV will not respond to your remote +control unless you're using native lirc support. + +<sect1>Additional information for lirc +<p>Take a look at the lircrc.example files in the <tt>contrib/configfiles/</tt> +directory. In my case, (Pinnacle Studio card) the channel up and down functions +weren't working, due to the fact that the button names were different than +the default <tt>lircrc.example</tt> file that came with MythTV. + +The <tt>lircrc.example</tt> file has this: +<tscreen><verb> +begin + prog = irxevent + button = ChannelUp + config = Key Up CurrentWindow +end + +begin + prog = irxevent + button = ChannelDown + config = Key Down CurrentWindow +end +</verb></tscreen> +but the <tt>/etc/lircd.conf</tt> that comes in the lircd package +defines the buttons for the Pinnacle Studio PCTV as: +<tscreen><verb> + channel+ 0x0000000000000017 + channel- 0x000000000000001C +</verb></tscreen> +rather than "ChannelUp" and "ChannelDown". I added the +following to my /home/[yourusername]/.lircrc file: +<tscreen><verb> +begin + prog = irxevent + button = channel+ + repeat = 3 + config = Key Up CurrentWindow +end + +begin + prog = irxevent + button = channel- + repeat = 3 + config = Key Down CurrentWindow +end +</verb></tscreen> +which took care of basic functionality. Because the PCTV Studio remote +has additional buttons, look at the +<tt>contrib/configfiles/lircrc.example.pinnaclestudiopctv</tt> for an example of how +to define additional buttons, and how to debug potential button name +conflicts between the <tt>lircrc.example</tt> file and how <bf>your</bf> +remote defines the button names. + +By examining the button names defined in <tt>/etc/lircd.conf</tt> and using +the <bf>irw</bf> program to make sure that your remote is working, you can +create the appropriate mappings in <tt>.lircrc</tt> to get excellent remote +functionality with MythTV. + +Note the <bf>repeat =</bf> parameter. This informs the <tt>irxevent</tt> +program to pass through every third keypress. By default, <tt>lirc</tt> +will only send one keypress to the application, even if you're holding down +the key. The actual <bf>repeat =</bf> number will vary from system to +system, so experiment and see which value works best for you. + +<sect1>Configuring lirc for use with an IR blaster +<p> +<!-- By Carlos Talbot, <url url="mailto:carlos@talbot.net"> --> +Lirc has support for various IR transmitters. A popular model is the Actisys +IR-200L <url url="http://store.snapstreamstore.com/accessories.html" +name="http://store.snapstreamstore.com/accessories.html">. It was +originally designed for IRDA communication, but can be used to transmit A/V remote +control codes. By using the lirc SIR driver, this device can easily be +integrated with MythTV. I have tested this device with an AT&T DCT2000 +digital cable box but the instructions can be used to configure other IRDA +devices and A/V remotes. + +Follow the steps in the previous section. When you run setup.sh, select +option 1, driver configuration. From here select option 6, IrDA hardware. +Select your appropriate device and the corresponding serial port, then Save +configuration & run configure from the main menu. Once configure is done +type: +<tscreen><verb> +$ make +</verb></tscreen> + +Please note: unlike the Pinnacle receiver above you will be compiling lircd +in addition to a kernel module for the SIR transmitter. Depending on whether +you have your serial port driver configured as a kernel module you might see +the following message during make: +<tscreen><verb> +lirc_sir.c:56:2: warning: #warning +"******************************************" + +lirc_sir.c:57:2: warning: #warning "Your serial port driver is compiled into " + +lirc_sir.c:58:2: warning: #warning "the kernel. You will have to release the " + +lirc_sir.c:59:2: warning: #warning "port you want to use for LIRC with:" + +lirc_sir.c:60:2: warning: #warning "setserial /dev/ttySx uart none" + +lirc_sir.c:61:2: warning: #warning +"******************************************" +</verb</tscreen> + +If you do receive this statement make sure to run the <bf>setserial</bf> command +before you load the lirc_sir module. Follow this with the install: +<tscreen><verb> +$ su +# make install +</verb></tscreen> + +You will notice that lirc installs the kernel module in +<tt>/lib/modules/uname -a/misc</tt>. + +The configuration for starting <bf>lircd</bf> differs if you're going to be +sending and receiving IR versus just receiving. +<tscreen><verb> +# cd /etc/rc.d +# cat >> rc.local +echo "Starting lircd" +setserial /dev/ttySx uart none # (if required) +modprobe lirc_sir +/usr/local/sbin/lircd +^D +# exit +$ +</verb></tscreen> + +At this point you have to populate the <tt>/etc/lircd.conf</tt> file with the proper +codes for your A/V remote. You should be able to find your remote within the +lirc remote tar file located at <url +url="http://www.lirc.org/remotes.tar.bz2" +name="http://www.lirc.org/remotes.tar.bz2">. In my case I +extracted the file from remotes/motorola/DCT2000 (gi-motorola-dct2000) + +To test the lirc_sir module you can run <bf>irw</bf> to verify the codes are being +received. If everything is configured correctly +you should see something similar to the following: +<tscreen><verb> +$ irw +0000000000007ff0 00 1 gi-motorola-dct2000 +000000000000bff8 00 2 gi-motorola-dct2000 +000000000000f7f0 00 ENTER gi-motorola-dct2000 +</verb></tscreen> + +Once you've verified lirc is working you can press <bf>CTRL-C</bf> to exit +<bf>irw</bf> and configure the channel changing script. + +The path to the channel changing script will need to be entered on the +mythtv-setup screen for Input Connections. + +This csh script will be called each time MythTV needs to change the channel. +Below is a copy of the script followed by the corresponding perl script. +Make sure both are in your path. Also make sure you leave the #!/bin/csh +setting and not change it to Bourne or bash. This will create a frustrating +symptom to diagnose where MythTV cannot open /dev/device. Unlike Bourne or +bash, csh scripts automatically close parent file descriptors before they +start. +<tscreen><verb> +$ cd /usr/local/bin +# su +# cat > change_channel.csh +#!/bin/csh +echo "changing to $1" +/usr/local/bin/channel.pl $1 & +^D +# chmod a+x change_channel.csh +# exit +$ exit +</verb></tscreen> + +See <tt>contrib/channel.pl</tt> for the actual file. Copy it to +<tt>/usr/local/bin/</tt> + +The last statement within the perl script is the lirc rc command. This is +the command that transmits the code to your cable/DSS box. Make sure to have +the IRDA device within a few feet of the box. + +<sect>Configuring MythTV. <label id="Configuring_mythtv"> +<p>By this point, all of the compile-time prerequisites have been installed, +<bf>mysql</bf> is running and has had its initial database setup. It's now +time to configure MythTV. +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: If you're running Debian unstable and you have compiled +MythTV from source, you will need to install an additional package before +you will be able to run MythTV. Execute the following to install the MySQL +driver for QT. +</caption> +</figure> +<tscreen><verb> +$ su - +# apt-get install libqt3c102-mt-mysql +# exit +</verb></tscreen> +<sect1>Configuring the Master backend system +<p>Open a shell and decide where you will store your video files. This may +be one directory or multiple directories on the same or different +filesystems. There is no default directory used for new recordings, you +<bf>must</bf> create at least one storage directory and configure Myth to +use it by running <bf>mythtv-setup</bf>. If you do not do this, then MythTV +will be unable to record anything. The following example is specific for +<tt>/var/video</tt>, but the same instructions would apply for any directory +name you choose to use. See the <ref id="advancedpartitionformatting" +name="Advanced Partition Formatting"> section for hints on creating a +partition for MythTV. + +<tscreen><verb> +$ su +# mkdir /var/video +# chmod a+rwx /var/video +# exit +</verb></tscreen> + +<bf>NOTE</bf>: The last slash "/" is not required. + +<label id="storagegrouptip"> +<bf>TIP</bf>: Try not to have your video mount point on the same partition +as your root partition, which could lead to the filling up of your root +partition with video data if the mount fails. For example: + +If <tt>/var/video</tt> is created on your root partition and you then +perform a mount of another drive to this directory there won't be any +problems if everything is working the way it should. However, if the mount +fails for some reason, <tt>/var/video</tt> still exists, so MythTV will find +the directory and write files to it. If your <tt>/</tt> mount point is +space limited, <tt>/var/video</tt> will <bf>also</bf> be space limited, and +it won't take long to fill the partition. This will cause a number of +side-effects, most of them bad. Instead, create subdirectories as the +destination for the storage group. + +Your directory structure could then look something like this: +<tscreen><verb> +/mnt/video/drive1/video +/mnt/video/drive2/video +</verb></tscreen> + +Your <tt>/etc/fstab</tt> would look like this: +<tscreen><verb> +/dev/hdb1 /mnt/video/drive1 +/dev/hdc1 /mnt/video/drive2 +</verb></tscreen> + +Because the Storage Group path is <tt>/mnt/video/drive1/video</tt>, if the +mythbackend can only find <tt>/mnt/video/drive1</tt> it will <em>not</em> +write files to that share. + +After you create the desired directory or directories for storing your video +files, you will need to add them to the proper Storage Group using +<bf>mythtv-setup</bf>. This procedure is described below in the <ref +id="storagegroups" name="Storage Groups"> section. + +The first thing to configure is the Master backend system. If you are +running multiple backend systems, the Master backend will make all +decisions about which programs will be recorded on which tuners. If you +have only one backend, then it will be its own master. + +The Master backend will always choose the first available tuner in the same +order as you add cards through "mythtv-setup". In other words, the second +card you add will only be used when there are two overlapping recordings, +the third when there are three, and so on. +<!-- Remove the next part once .21 is released --> Therefore, you will want to have +the greatest amount of disk space on the Master backend because its tuner +will always be the first choice. You will then want to add your <ref +id="nonmaster_backend" name="other backends"> in the order of your +preference for recording. + +<figure loc="here"> +<eps file="warning.eps" height="1cm"> +<img src="warning.png"> +<caption><bf>NOTE</bf>: It is possible to <em>not</em> have the cards on the Master +backend be the first ones used. However, if you are new to MythTV it is +easier to configure the Master backend first before moving on to the Slaves, +at least until you become more familiar with the MythTV system. See <ref +id="advanced_backend_config" name="Advanced Backend Configurations"> for +information on configuring multiple backend systems in various ways. +</caption> +</figure> + +Because MythTV uses a database to store all configuration variables, +part of the bootstrap of MythTV is to indicate the location of the MySQL +database server. If the frontend, backend and MySQL database server are all +going to be running on the same box, you can continue to the next step. If +not, you'll need to change the Host Name in the "Database Configuration" +screen of the mythfrontend program. + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: Users that have been running the frontend and the backend on +different machines have stated that they have been having issues with remote +access to the MySQL database. The following instructions may or may not +work. Add the following to <tt>/etc/my.cnf</tt> on the backend machine and +restart MySQL. +</caption> +</figure> +<tscreen><verb> +skip-innodb +set-variable=thread_stack=256k +</verb></tscreen> + +Run the setup program: +<tscreen><verb> +$ mythtv-setup +</verb></tscreen> + +The backend setup program will start and offer you a number of choices. It +is <em>strongly</em> recommended that you go through them in order. + +The first question will ask if you wish to clear out your existing +configurations for your capture cards. Initially, you should say "YES" so +that there are no surprises later. + +The next question will ask you if you wish to clear out your video source +information. You should answer "YES" to this as well. + +Once the graphical setup starts, you'll see that there are six choices + +<figure loc="here"> +<eps file="add.eps" height="1cm"> +<img src="add.png"> +<caption> +The Storage Directories feature is available only in the SVN version of MythTV. +</caption> +</figure> + +<enum> +<item>General +<item>Capture Cards +<item>Video Sources +<item>Input connections +<item>Channel Editor +<item>Storage Directories +</enum> + +Use the arrow keys to move around, and press the space bar to select which +option you wish to configure. + +<sect2>General +<p>The first screen of the General configuration deals with IP addresses of the +system that you're running mythtv-setup on and any master backend you may have. +If you've only got one machine, then the default values are fine and you can +move to the next page by pressing the space bar. If you need to move around +the screen, use the arrow keys to move focus between settings, not the +mouse. + +If you will be deploying multiple backends, or if your backend is on one +system and you're running the frontend on another machine then <em>do +not</em> use the "127.0.0.1" IP address. + +<bf>NOTE</bf>: If you modify the 127.0.0.1 address and use a "real" IP +address, you must use real IP addresses in both fields, otherwise your +frontend machines will generate "Unexpected response to MYTH_PROTO_VERSION" +errors. + +Changing any of the port settings is very strongly discouraged. +(If you do accidentally change them, the defaults are 6543 for +the master/backend server, and 6544 for the HTTP requests) + +Once you're satisfied with the values, move the focus down to Next and hit +the space bar. + +The next screen details the Host-specific Backend setup. This is where you +will set the specific directory paths for this particular backend. Make +sure that you've followed the steps at the beginning of this section and +created a directory that exists and that MythTV will have write privileges +to. When you're done, press Next to continue, taking you to the Global +Backend Setup. + +On the Global Backend Setup configure your backend with the appropriate +settings. Use the left and right arrow keys to iterate through the choices +available on each setting, and the up and down keys to move between +settings. Move to Finish when you're done and press the space bar, taking +you back to the main configuration screen. + +<sect2>Capture Cards +<p>You should have no capture cards defined, so the highlight will be on +(New Capture Card). Press space to begin. + +Choose the appropriate settings for your particular tuner. Use the arrow +keys to move around and to make your choices, and press RETURN when +complete. Pressing RETURN will take you back to the Capture Cards screen; +if you have additional capture cards in this machine, press the space bar +when the highlight is on the (New Capture Card) row to define another card. + +If you have made a mistake, you can delete a card by highlighting it and +pressing the 'D' key, or you can highlight it and press the RETURN or 'E' +key to edit it. + +Once you have no additional cards to setup, press ESC. + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption> +<bf>NOTE</bf>: If you have a dual digital/analog card, such as the pcHDTV +cards and some DViCO cards, then you should not configure this as two +separate cards. Configure the digital portion as a DVB card, then click +on the "Analog Options" button within the DVB configuration panel for +the card and configure the analog portion of the card there. +</caption> +</figure> + +<sect2>Video Sources <label id="VideoSources"> +<p>When you start, the highlight should be on (New Video Source). Press the +space bar to begin. The first field asks for the name of the video source. +You may choose something easy to remember, like "Antenna" or "Cable". Once +you've chosen a name, press the down arrow to move to the next field. + +If you're in North America, change the grabber to +"SchedulesDirect.org(Internal)", then continue pressing the down arrow to +move to the next field. Fill in the username (lowercase only) and password +that you have established with Schedules Direct, then move to the "Retrieve +Listings" button and press the space bar. + +<bf>NOTE</bf>: You need <bf>wget</bf> version 1.9.1 or higher to use +Schedules Direct. + +The mythtv-setup program will contact the Schedules Direct servers and get +your account information. Once you're done, you may click the Finish button +and skip the next few paragraphs in this document since they only apply to +users that are using the external XMLTV script to get their guide data. + +If you wish to continue using the XMLTV grabber, then move to the Zip/postal +code field and put in the appropriate value. + +If you're outside of North America, then some manual interaction will be +required with XMLTV. You may need to switch from the MythTV setup program +to the console it was run on to interact with XMLTV. + +Once you have chosen your provider, press RETURN to continue. XMLTV will +now begin collecting the initial data for your location. The screen may +blank for a few seconds to several minutes, depending on the load of the +listings provider and the speed of your connection to the Internet. Be +patient! + +You will then be returned to the Video Sources screen. If you have multiple +video sources available, such as Antenna, Cable, etc, go ahead and define +them all, even if they're not all going to be physically connected to the +master backend server. Once you're done, press ESC to return to the main +screen. + +<sect2>Input Connections +<p>The final configuration item is Input Connections. On this screen, you +will associate the various video sources you defined earlier with a physical +input to a encoder card. It's entirely possible that you have multiple +tuners, and each tuner has a different input, so on this screen you let +MythTV know which device will connect to which input source. + +When you start this screen, you should see a listing of the various input +connections available on each of the Capture cards you defined earlier. For +example, you may have a capture card with a tuner, a SVideo and a Composite +connection. If you wanted to associate the tuner (a.k.a., "Television") +with an "Antenna" source you defined in Video Sources, you would move to the +<tt>/dev/videodevice (Television) -> </tt> line and press the space bar. +Using the left and right arrow keys will show you the various choices you +have already created for video source. In our case, you would use the +left/right cursor keys until "Antenna" was shown in the Video Source field. +Press down to move to the next setting. + +On the connection pane there is a "Scan for channels" button, if you are +configuring a digital source such as a DVB card, you need scan for channels +and you must do this before pressing the "Fetch channels from listings +source" button. You may scan for analog channels on an analog input, but +this is not needed. + +<!-- Ugh! Who's been editing the HOWTO? This next section needs some cleanup --> + +The other button is called "Fetch channels from listings source". As long as +you have a real listings source you should fetch channels from them for +analog channels. You can do this for digital sources as well (unless the +listing source is transmitted EIT data). If you are using XMLTV, you may need +to switch from the MythTV setup program to the console it was run on to +interact with XMLTV after pressing this button. It is possible to fetch the +channels on the command line using mythfilldatabase. But if you need to do +this, you will probably need to re-enter the MythTV setup program to +configure the "Starting channel" setting for this source->input connection. + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: If you have a Hauppauge PVR-500, you must think of +it has two PVR-150's on a single PCI card. For example, if you have a +single PVR-500 card, it will appear as <tt>/dev/video0</tt> and +<tt>/dev/video1</tt>. Each <tt>/dev/video</tt> device will have a Tuner input. +</caption> +</figure> +Once you're done, press RETURN to go back to the Input Connections screen. +You would then finish associating the video sources to any other hardware +devices you have available. + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: Don't add a video source to a hardware input if you don't +actually have anything connected there. For example, adding "Cable" to the +Tuner and to the Composite inputs without having something connected to +Composite will lead to blank recordings. +</caption> +</figure> + +Press ESC to return to the main menu, and press ESC again if you have no +further items to configure, thereby returning you to the command line. + +<sect2>Channel Editor +<p>The channel editor is used to globally alter channel information, +including items like hue, contrast, fine tuning and others. Users in North +America shouldn't run the channel editor until you've completed the initial +mythtv-setup and ran <bf>mythfilldatabase</bf> at least once to populate the +database. + +<sect2>Storage Groups <label id="storagegroups"> +<p> +<figure loc="here"> +<eps file="add.eps" height="1cm"> +<img src="add.png"> +<caption> +New in MythTV 0.21 +</caption> +</figure> +<sect3>Introduction. +<p> +Storage Groups are lists of directories that are used to hold MythTV +recording files giving you a flexible way to allow you to add capacity to +your MythTV system without having to use exotic solutions such as LVM, +filesystem expansion or RAID Online Capacity Expansion. You can also use +Storage Groups to organize recordings and to put recordings of a certain +type into one subdirectory. + +Storage Groups do not offer redundancy in case of hard drive failure, but +unlike LVM, if you lose a hard drive, you only lose the recordings that were +on that drive. With LVM, if you lose a hard drive, you will most likely +lose <bf>everything</bf>. + +<sect3>How to use Storage Groups. +<p> +By default, there is only one Storage Group called "Default", and it is +used for all recordings and Live TV. + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption> +<bf>NOTE</bf>: You need to add at least one directory to the Default +Storage Group or else you will not be able to record anything with MythTV. +</caption> +</figure> + +For example, if you have 5 hard drives in your system, your first hard drive +could be your "boot" drive, and the remaining four could be dedicated to +media storage. You could format the drives and mount them as +<tt>/mnt/store/d2</tt>, <tt>/mnt/store/d3</tt>, <tt>/mnt/store/d4</tt> and +<tt>/mnt/store/d5</tt>. + +Within each mount point, it's <em>strongly</em> recommended that you use a +sub-directory and make that the destination path for the Storage Group. See +the <ref id="storagegrouptip" name="Tip"> in the "Configuring the Master +backend" section for additional information. + +You would then add the four subdirectories you created under the mount +points (<tt>/mnt/store/d1/video</tt>, etc) into the "Default" Storage Group. + +At recording time, if there were four simultaneous recordings, MythTV would +put one recording onto each drive. + +Or, say that you originally installed MythTV to a 80GB hard drive, and that +hard drive is now filling up. You could simply add a new drive to your +system, mount it and update the Storage Group to add additional space. + +You may create additional Storage Groups to store specific recordings in +their own directories. Storage Groups are edited via the 'Storage +Directories' section of mythtv-setup. + +You can also create multiple Storage Groups to group recordings together; +recording schedules now have an option to specify which Storage Group to +use. + +MythTV will balance concurrent recordings across the available directories +in a Storage Group in order to spread out the file I/O load. MythTV will +prefer filesystems that are local to the backend over filesystems that are +remote until the local filesystem has 2 concurrent recordings active or +other equivalent I/O, then the next recording will go to the remote +filesystem. The balancing method is based purely on I/O, Myth does not try +to balance out disk space unless a filesystem is too low on free disk space +in which case it will not be used except as a last resort. + +Storage Groups are global, but can be overridden on a slave backend by +creating a local Storage Group by running <bf>mythtv-setup</bf> on the +slave. If a problem occurs and the slave backend is unable to use the +desired Storage Group, it will fail back and try the directories defined in +the master's Storage Group. + +There's also a special 'LiveTV' Storage Group, but the directory list starts +out empty. If you add a directory to the Storage Group, it will be used +instead of putting LiveTV recordings in the Default Storage Group. This +will allow you to put your LiveTV recordings on their own filesystem, which +is similar to the old MythTV method which used a RingBuffer for LiveTV. Of +course, you don't have to do anything, and Live TV recordings will just go +into the Default Storage Group where they'll be the first programs eligible +for expiration if the system needs free space for recordings. + +Usage information for all Storage Group directories is visible on the +mythfrontend status screen as well as the mythbackend status webpage. +MythTV is smart enough to determine which directories are on shared +filesystems so it should not count free or used space multiple times if you +have more than one directory on the same filesystem. + +<sect3>Migrating to Storage Groups. +<p>Migrating to Storage groups is very simple: if you have existing +recordings in a storage directory, then the system will automatically add +that directory to the Default Storage Group. If you then add additional +directories to a storage group, the system is flexible enough to check +<em>all</em> Storage Groups for a file before deciding that it can't be +found, which means that you can use the <bf>mv</bf> command from the Unix +command line to arrange files however you'd like. + +<sect3>Advanced: Algorithm used by the Storage Group +<p>This section details the logic of the Storage Group allocation engine. + +The current load-balancing preferences (in order) are: +<itemize> +<item>Local filesystems over remote +<item>Less-busy (less weight) over more-busy (more weight) +<item>More Free Space over Less Free Space +</itemize> + +The 'business' of a filesystem is determined by weights. The following +weights are added to a filesystem if it is in use for the following things: +<itemize> +<item>recording = +10 +<item>playback = +5 (mythfrontend) +<item>comm flagging = +5 (mythcommflag) +<item>transcoding = +5 (mythtranscode) +</itemize> + +If a recording is due to end within 3 minutes, it is not counted against +the weight of a filesystem. This is done to account for the pre/post-roll +and start-early/end-late settings. + +<sect1>Post-configuration +<p>Run the <tt>mythfilldatabase</tt> program as directed. The master +backend will obtain guide data for all the video sources you defined during +setup. + +<bf>NOTE</bf>: If you are using Schedules Direct and watching the output messages +on the console or the log file it is normal to see a "401 Unauthorized" +error followed by a "200 OK" when the connection to Schedules Direct is being +established. +<tscreen><verb> +From : Sun Jun 13 05:00:00 2004 To : Mon Jun 14 05:00:00 2004 (UTC) +--02:58:01-- +http://datadirect.webservices.zap2it.com/tvlistings/xtvdService + => -' +Resolving datadirect.webservices.zap2it.com... 206.18.98.160 +Connecting to datadirect.webservices.zap2it.com[206.18.98.160]:80... +connected. +HTTP request sent, awaiting response... 401 Unauthorized +Connecting to datadirect.webservices.zap2it.com[206.18.98.160]:80... +connected. +HTTP request sent, awaiting response... 200 OK +Length: unspecified [text/xml] + + [ <=> ] 114,125 63.57K/s + +02:58:03 (63.53 KB/s) - -' saved [114125] + +Your subscription expires on 08/20/2004 12:00:00 AM +Grab complete. Actual data from Sun Jun 13 05:00:00 2004 to Mon Jun 14 +00:00:00 2004 (UTC) +</verb></tscreen> + +Once <tt>mythfilldatabase</tt> has finished, start the master server before +continuing. +<tscreen><verb> +$ mythbackend +</verb></tscreen> + +mythbackend will print information about connections and what it's doing to +the console. If you'd like to see the options that are available for +mythbackend, type <tt>mythbackend -h</tt> for help. + +As of MythTV v0.21, the available options are: +<tscreen><verb> +$ mythbackend --help +Valid options are: +-h or --help List valid command line parameters +-l or --logfile filename Writes STDERR and STDOUT messages to filename +-p or --pidfile filename Write PID of mythbackend to filename +-d or --daemon Runs mythbackend as a daemon +-v or --verbose debug-level Use '-v help' for level info +--printexpire List of auto-expire programs +--printsched Upcoming scheduled programs +--testsched Test run scheduler (ignore existing schedule) +--resched Force the scheduler to update +--nosched Do not perform any scheduling +--nojobqueue Do not start the JobQueue +--noautoexpire Do not start the AutoExpire thread +--version Version information +</verb></tscreen> + +Running mythbackend as a daemon and using the logfile option will allow you +to have mythbackend automatically start up during boot. You can follow the +steps outlined in the section called <ref id="mythbackend_autostart" +name="Automatically starting mythbackend at system boot time"> for +configuration steps. + +If you enable the <tt>-l</tt> parameter, you will want to keep your logfiles +rotated (so that they don't fill up a partition). See the section called +<ref id="logrotate" name="Automatically rotating logs"> for more +information. + +<sect1>Configuring a non-master backend <label id="nonmaster_backend"> +<p>Ensure that you've granted access to the master MySQL database for remote +backends as discussed in the section titled <ref id="modify_perm_mysql" +name="Modifying access to the MySQL database for multiple systems"> and that +you have the correct IP address for the database server in the "Database +Configuration" screen of the mythtv-setup application on this slave backend. + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: Slave backends <bf>must not</bf> run a local MySQL +daemon. By default, they will connect to their local daemon rather than the +central database, causing unexpected behavior such as empty "Watch +Recordings" lists and a failure to locate the Video Sources defined on the +master backend. Modify the <tt>/usr/local/share/mythtv/mysql.txt</tt> file +on all slave backends to ensure that the <tt>DBHostName</tt> has the address +of the MySQL server. + +Caveat: You may make a slave backend the primary MySQL server, or run a +non-MythTV database on a slave backend as long as you have edited the +<tt>mysql.txt</tt> file on <bf>all</bf> systems and made it consistent. +There can be only one authoritative MySQL database in a MythTV system - +errors such as the one above ensue if backends and frontends have differing +ideas of which MySQL database they should talk to. +</caption> +</figure> + +Make sure that the IP addresses on the General setup screen are accurate. +If the slave backend can't communicate with the master backend due to IP +address misconfiguration then MythTV will not function properly. + +Configuration of a non-master backend follows the same general procedure +as that of the master backend, with the exception that you skip over the +"Video Sources" step. All possible video sources need to be defined on the +master backend system; only the master backend will query a listings +provider to obtain guide data for all the non-master backends. + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: Do not run <tt>mythfilldatabase</tt> on a non-master backend. +</caption> +</figure> +<sect1>Configuring and running mythfilldatabase +<p><figure loc="here"> +<eps file="warning.eps" height="1cm"> +<img src="warning.png"> +<caption><bf>NOTE</bf>: <bf>mythfilldatabase</bf> might take a while to complete, +depending on any number of factors, most of which you can't control. It's +best to just let the program run to completion. +</caption> +</figure> +<bf>mythfilldatabase --help</bf> will give a full listing of the options +available. + +<bf>mythfilldatabase --manual</bf> is another option; the manual option will +allow you to fine tune channel frequencies and specify which channels will +be added to the database. + +<bf>mythfilldatabase --file</bf> is an option if there isn't an XMLTV grabber +for your country, but you <bf>do</bf> have an XML formatted listings file +created by some other program. + +<bf>mythfilldatabase --xawchannels</bf> is an option if you have used +<bf>xawtv</bf> to fine-tune your channels and would like to import the fine +tuning offsets into MythTV. + +<bf>mythfilldatabase --refresh-today</bf> will only pull guide data for +today (in case of late-breaking changes to the schedule). + +<!-- get more information on the manual setting --> + +<sect2>Periodically running <bf>mythfilldatabase</bf> +<p>In order to keep your database filled, <bf>mythfilldatabase</bf> should be +run once a day. + +To use MythTV's built-in capability, you'll need to run the +<bf>mythfrontend</bf> Setup option. From the mythfrontend, enter the +Setup>General screen and advance to "Mythfilldatabase", the fourth screen. +Select the checkbox, then complete the options as you see fit. The +<bf>mythbackend</bf> program will now run <bf>mythfilldatabase</bf> for you. + +<sect1>Grabbing channel icons for Schedules Direct users +<p>While the Schedules Direct TV listings service has several advantages, it +does not support grabbing logo icons for the stations you receive. However, +there are utilities provided with MythTV which you may use to grab your +initial set of icons and to keep them updated if your lineups change. + +First, you need to generate or obtain an XML file with the information for +your stations. + +If you have XMLTV software installed, there is a perl script in MythTV's +<tt>contrib/</tt> directory which will generate this file for you. Run the +command: +<tscreen><verb> +$ perl mkiconmap.pl +</verb></tscreen> + +You will be asked for your zip code and the service that you use. If there +are no errors, the <tt>iconmap.xml</tt> file that you need for the next step +will be created. + +If you do not have XMLTV software installed and do not want to install it +for the sake of this minor task, there is a generic +<tt>contrib/master_iconmap.xml</tt> which you can copy and use but this may +not be as complete as using the specific information for your service. + +Once you have an <tt>iconmap.xml</tt> file, add the icon information to your +database and grab any new icons with the command: +<tscreen><verb> +$ mythfilldatabase --import-icon-map iconmap.xml --update-icon-map +</verb></tscreen> + +<sect>Configuring mythfrontend. +<p>Once you have completed configuration of your backend systems, the next +step is to configure the frontend client. + +When you start mythfrontend for the first time, it will attempt to connect +to a configuration database on the local machine. If there is none, a +"Database Configuration" screen will appear, and you will need to fill in +some details. The "Host name" field needs the backend or database server's +IP address or DNS name, and the User or password fields may need to be set +to match your database user accounts. After editing those fields, press +Enter twice to write these configurations on your local machine, and attempt +to connect to the database. If you make any mistakes, the screens will pop +up again. + +Now that mythfrontend has started up, you should have a number of +buttons/choices. Before doing anything, go to TV, then to Setup and +configure the frontend client. +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: You should go through the various setup screens in +mythfrontend before using any other modules to ensure that the the database +is correctly initialized. +</caption> +</figure> +<sect1>General +<p>The General screen has configuration items that don't really fit anywhere +else. The first few configuration items ask you to indicate the number of +seconds to record before or after a program, which is useful if the +broadcast network or your system clock are out of sync and will help prevent +you missing the beginning or end of a program. + +To change the value, use the left and right arrow keys to increment and +decrement the number of seconds. When you're satisfied with the result, use +the down arrow to put the input focus on the Next button or press RETURN to +continue to the next page. + +The next page has a number of options to do with how channels are displayed +on your system. The help text will give you more information. Move the +focus to Next and press the space bar to continue. + +The last General page sets up some final configuration items. See the help +text for more information. + +<sect1>Appearance +<p>This set of screens is mostly concerned with how MythTV will look on your +system. From here, you can choose different themes and set the resolution +of your system. + +<sect1>Program Guide +<p>Fairly self explanatory. Note that the alternate program guide does not +use the same font settings as defined in Appearance, so if the EPG is +unreadable this is where you make the adjustments to fonts, number of +elements displayed, etc. + +<sect1>Playback <label id="deinterlace_"> +<p>The one configuration item which may cause problems on your system is the +"Deinterlace playback" setting. MythTV uses a linear blend algorithm for +deinterlacing, which will improve how the image looks on your screen. +Deinterlacing requires that your processor support SSE. (Streaming SIMD +Extensions, aka "MMX2"). Early Intel Celeron (those that don't use the +Coppermine 0.18um core and are usually <600MHz), Pentium Pro and Pentium II +CPUs do not have SSE, so make sure you haven't enabled deinterlacing if +your processor doesn't support it. If you enable it, and your processor +doesn't support SSE, you will get "Illegal Instruction" errors. + +To determine if you've got SSE on an Intel processor, you can: +<tscreen><verb> +$ cat /proc/cpuinfo +[snip] +flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca +cmov pat pse36 mmx fxsr sse +</verb></tscreen> + +Notice the <bf>sse</bf> at the end of the line - this tells you that this +processor will be able to deinterlace correctly. + +On an AMD processor, look for "3dnow" in the cpuinfo line; "3dnow" is AMD's +implementation of SSE instructions, so if your processor has 3dnow you +shouldn't have any issues with deinterlacing. +<sect2>Video Filters +<!-- Submitted by Bruce Markey --> +<p>MythTV provides a means of employing video filters while recording and +during playback. These filters can be used to improve or modify the video +image, including hiding the effects of an interlaced image or reducing the +impact of noise in a poor video signal. The following is a brief +introduction to introduce you to the filters that are available in MythTV +version 0.20 and higher. +<sect2>Applying filters +<p>One or more filters can be included in a "filter chain". The filters to +be used are identified in a "filter string". A filter string is a group of +filter names and parameters separated by commas. To include parameters, the +filter name is followed by "=" and the parameter information. There should +be no spaces in the filter string. Here is an example filter string: + +With parameters: <tt>kerneldeint=10:1,denoise3d=12</tt> + +Without: <tt>kerneldeint,denoise3d</tt> + +Recording filters are set for each individual channel. These may be used +when encoding in software (MPEG-4, RTjpeg) but do not apply when using a +capture card with hardware encoding such as those supported by the ivtv +driver, DVB, HDTV or MJPEG cards. You can run MythTV's "setup" program and +select the "Channel Editor". On the first page for each channel, you can +enter a filter string in the box titled "Video filters". If you are running +"mythweb" on your web server, you can click on "Settings" then "Channels" +and enter filter strings in the "videofilters" column. + +Playback filters are per-host and apply to any recording you watch from the +frontend where filters have been applied. Playback filtering can only +work with software decoding so the viaslice, xvmc, and ivtv outputs ignore +filters entirely. From "mythfrontend" go to Setup->TV Settings->Playback. +Enter your filter string in the box titled "Custom Filters". + +<sect2>Currently Available Filters +<p>"Deinterlace Playback" checkbox. + +This implements special behavior needed for the "bobdeint" filter but can +also be used to choose any of the deinterlace filters. If you prefer, you +may leave this unchecked and include any of the deinterlace filters, other +than "bobdeint", in your custom filter chain. + +o The "invert" filter + +Invert ignores any parameters and inverts the pixel values of the video +frames. In other words, a negative image. This would rarely be useful but +may be a good example to verify that your filter strings take effect. + +o The "linearblend" filter + +It is a simple deinterlacing filter that ignores parameters and works by +blending adjacent lines. It replaces combing in interlaced video with a +less distracting "ghost" image. + +o The "bobdeint" filter + +This filter splits the interlaced image into two separate fields that +can be line doubled then displayed at twice the frame rate. If the +display is at the same refresh rate as the recording (59.92Hz NTSC or +50Hz PAL) this will cause each refresh to show objects in motion in +a new position with no jagged edges. However, if the display is not +synchronous, it will cause flickering or the appearance of the picture +moving up and down by one line. + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: This filter requires the frame rate to be doubled +and therefore can only be used with the "Deinterlace Playback" checkbox. +Do not include this in your filter chain. +</caption> +</figure> + +o The "kerneldeint" filter + +Kerneldeint is a more complex deinterlacing filter which applies a filter +kernel using input from several lines. It generally removes combing without +a "ghost" image, sometimes leaving a faint outline of the image from the +other field. It is considered to be less distracting to watch than +linearblend or no filter at all. It accepts one or two integer parameters +separated by a colon. + +The first parameter is the filter threshold and defaults to 12. Adjacent +lines differing by more than the threshold value are filtered. The second +option defaults to 0. If set to a non-zero value, it will cause the filter +to skip chroma, and filter only the luminance. It may be useful on some +capture cards which do not capture the chroma fields of interlaced video +correctly. + +o The "onefield" filter + +This is a simple one-field deinterlacing filter that uses only one field of +the interlaced video. By default it keeps the top field, though passing the +parameter "bottom" will cause it to keep the bottom field instead. + +This filter is primarily useful for those who display 1080i HDTV signals +with a video mode that has 540 pixels vertically. The advantage over other +deinterlacing filters is that scenes with motion never show combing or +ghosting. + +o The "adjust" filter + +This filter adjusts the digital values for luma and chroma to ensure that +they will fall within the ranges specified in the ITU-R601 standard. By +default, this corrects a known problem for the luma range used by bt8x8 +chips which causes video to look washed out. If parameters are passed, there +need to be exactly six. However, passing a single parameter of "-1" will +disable the filter. + +1: luma minimum input value (int) +2: luma maximum input value (int) +3: luma gamma correction (float) +4: chroma minimum input value (int) +5: chroma maximum input value (int) +6: chroma gamma correction (float) + +The default bt8x8 correction values are equivalent to +"16:253:1.0:2:253:1.0". Output ranges are fixed at ITU-R601 values (16-235 +luma, 16-240 chroma). + +<bf>NOTE</bf>: If it is not already specified in the filter chain, this +filter will be automatically applied when recording with the "bttv" driver. + +o The "quickdnr" filter + +A fast temporal denoiser. This can take 1, 2 or 4 parameters, each being a +value from "0" for the least filtering to "255" for the greatest filtering. +With one parameter, the filter will compute the values it should use for all +of its variables. Two parameters will set the filter strength for luma and +chroma independently. If you are interested in how the algorithm works, you +may examine the source code to see how four parameter are used. + +o The "denoise3d" filter + +A slower denoiser that applies a spatial and temporal low-pass filter. The +spatial filter can remove some noise that quickdnr can't, but a more +powerful CPU is needed. This filter accepts 3 float parameters: + +<itemize> +<item>luma spatial filter strength +<item>chroma spatial filter strength +<item>luma temporal filter strength +</itemize> + +Reasonable defaults will be selected for omitted parameters. The chroma +temporal filter strength is calculated from the other filter strengths. + +o The "crop" filter + +Covers edges of video with black bars. This helps improve video quality +when the edges of the frame are distorted. By default, this removes 16 +pixels from each edge. This can optionally take four parameters representing +top:left:bottom:right. The number times 16 is the number of pixels to remove +so, for example, the default is "=1:1:1:1". + +o The "forceyv12" and "forceyuv422p" filters + +These force the filter manager to use the given format. You can use one of +these at the head of a filter chain to change the capture format. The most +likely use would be forceyuv422p to use YUV422P capture on cards with known +chroma interlacing problems with YV12. + +There are some filters included in the MythTV source code that should +not be used: + +o The "forcergb24" and "forceargb32" filters + +The two RGB formats should not be used because there is no conversion filter +for them yet. + +o The "convert" filter + +It exists but don't use it. The filter manager uses this filter +automatically when it is unable to match the input/output formats of two +adjacent filters. + +o The "postprocess" filter + +While this exists in MythTV source code, it is currently not recommended for +use. + +<sect2>Usage Considerations +<p>There are trade-offs to consider when deciding if it would be wise to use +a filter. Any processing will modify the original image so you should assess +if the filter has made a noticeable improvement to the picture in order to +justify the impact of the processing. Adding any filter will inherently +increase CPU usage. The impact can vary dramatically depending on your CPU +type and speed, the resolution of the recording, which filters you are using +and other factors. You can only determine what is right for you through +experimentation. However, as a starting point, here are some filter strings +that you may find useful: + +For typical broadcast stations: "kerneldeint,quickdnr" + +For stations with poor signal quality: "linearblend,denoise3d=12" + +For synchronous TV-out: check Deinterlace with "Bob (2x framerate)" + +<sect1>Recording <label id="Recording"> +<p>Depending on your capture card, MythTV offers different video encoders. +The following types of hardware encoding cards are supported: +<itemize> +<item>MJPEG - Zoran-based cards; see <url url="http://mjpeg.sourceforge.net" name="http://mjpeg.sourceforge.net"> +<item>MPEG-2 - iTVC15/16 based cards (Hauppauge PVR-250/PVR-350); see <url +url="http://ivtvdriver.org" name="http://ivtvdriver.org"> +<item>HDTV - pcHDTV cards; see <url url="http://pchdtv.com" name="http://pchdtv.com"> and +the Air2PC-ATSC-PCI see <url +url="http://www.cyberestore.com/product_info.php?cPath=28&products_id=103" +name="http://www.cyberestore.com/product_info.php?cPath=28&products_id=103"> +<item>DVB - cards supporting DVB; see <url url="http://linuxtv.org" name="http://linuxtv.org"> +</itemize> +For cards without hardware encoding capabilities (all cards supported by +V4L not listed above), Myth includes two methods for software encoding: +RTjpeg and MPEG-4. RTjpeg has significantly fewer CPU demands than MPEG-4, +but it generates larger files than MPEG-4 for a given recording. + +For DVB and HDTV cards, no further configuration is required after +setting up the card using the 'mythtv-setup' program. +For all other cards, configuration is done through MythFrontend. +Selecting 'Recording Profiles' from the 'TV Settings' screen will list +the profiles currently available for the cards in your system. +Depending on what types of cards you have installed you may see: +<tscreen><verb> +(Create new profile group) +Software Encoders +Hardware MPEG Encoders +Hardware MJPEG Encoders +Transcoders +</verb></tscreen> +The '(Create new profile group)' option will allow you to create custom +profiles in case you have multiple backends. Note that custom profiles +are per backend and card type. If you have 2 MPEG-2 encoders in a given +backend system, creating a custom profile will affect both of them. This +option should not be needed otherwise. + +The 'Transcoders' group is a little different from the others. Selecting +this group will result in a menu with the following options: 'RTjpeg/MPEG-4' +and 'MPEG-2'. These types indicate what transcoder options will be used for +a given input type (i.e. the 'MPEG-2' settings would be used to transcode +MPEG-2 files into MPEG-4. The source of the MPEG-2 stream (DVB, HDTV, or +PVR-x50) does not matter. Configuration of the options is the same as below +(although any resolution settings will be ignored). + +Selecting any of the other options will show a new screen with a list of +four profiles: +<itemize> +<item>Default +<item>Live TV +<item>Low Quality +<item>High Quality +</itemize> + +The Default profile will be used for any recording which does not otherwise +have a specific profile assigned. The 'Live TV' profile will be used when +watching TV. The remaining two profiles are available for customizing to +allow for more precise control over what quality is used for a given +program. + +Selecting a profile will allow you to adjust the relevant options for that +card. The most significant setting is the recording resolution, but you can +also choose encoding format, audio format, and tweak other encoder specific +properties. + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: although the width and height can be changed to almost +anything, if you start MythTV and don't see video or you get "segmentation +fault" errors, it is likely that the video4linux (v4l) subsystem did not +like the height and width parameters specified. It's best to leave the +default as-is until you're sure that MythTV is operational. +</caption> +</figure> + +See the <ref id="capture_resolution_" name="What capture resolution should I +use? How does video work?"> section for more information. + +<sect1>Xbox Frontends +<p>MythTV is able to control the LED on the Xbox to indicate backend +recording status. + +To control the LED, you will need the <bf>blink</bf> program from the +xbox-linux project, which is installed as <tt>/bin/led</tt> on GentooX. On +Xebian (the new Ed's Debian) you must install it yourself. On other +distributions it may or may not be installed as a program called +<bf>blink</bf> and should be located in your path. (Type <tt>which +blink</tt> to see if the program is available.) If you do not have +<bf>blink</bf>, you may obtain it from the Xbox-Linux project site at <url +url="http://xbox-linux.sf.net/" name="http://xbox-linux.sf.net/">. The +program you need is part of the <tt>eds_i2c_staff</tt> module in CVS. Note +the spelling. + +Once you have installed <bf>blink</bf> you will need to set permissions. +<bf>blink</bf> needs write permission to the i2c device to function +properly. There are three methods to accomplish this. First, you could run +<tt>mythfrontend</tt> as root, which is the simplest method, but could +potentially be a security risk. Next, you may make the <bf>blink</bf> +binary setuid root, which allows non-privileged users to run a program with +root capability. This is done by typing the command: +<tscreen><verb> +$ su +# chmod u+s /path/to/blink +</verb></tscreen> +The final technique would be to set the <tt>/dev/i2c/0</tt> device read/write +for all users, but this is the least preferred method. + +Now it's time to setup MythTV for Xbox hardware. Enter Setup -> General. +On the second page check the 'Enable Xbox Hardware' option. Upon reentering +the settings, you should have a new option named 'Xbox'. Within this option +you may select the distribution, LED colors for recording and the update +interval. If you select GentooX as the distribution <bf>led</bf> will be +used as the <bf>blink</bf> binary name, otherwise, <bf>blink</bf> is used. +Colors should be self explanatory. The update interval determines how often +the frontend should poll the backend to determine if the status has changed. + +<sect>Using MythTV. +<p><figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption> +<bf>NOTE to Red Hat/Fedora 4 users</bf>: Red Hat Linux and Fedora Core ship +with Gnome as the default desktop environment. However, Gnome seems to have +issues with window focus and window switching which sometimes cause +mythfrontend to obscure the video. KDE does not seem to have any such +issues. Therefore you will need to switch to KDE by selecting +RedHatMenu>Extras>System Settings>Desktop Switching Tool and choose "KDE". + +<bf>NOTE to Fedora Core 5 and 6 users</bf>: Fedora 5 and 6 no longer have +this tool in the Menu. Use "switchdesk KDE" from a command line. Read "man +switchdesk" for further information about changing to other desktop +environments. +</caption></figure> +<sect1>Keyboard commands +<p>The <tt>keys.txt</tt> file describes what the various keyboard commands are. +If you have loaded mythweb, you may change the default keys to your liking. +<sect2>mythfrontend +<p> +<table loc=p> +<tabular ca="rll"> +Arrow keys | used to move the highlight point around @ +ALT-F4 | exit out of the application @ +Space/Enter | take action on the item under the highlight point @ +P | play in both "Watch a Recording" and "Delete a Recording" @ +D | delete in both "Watch a Recording" and "Delete a Recording" @ +U | to view details for the currently selected show on the Watch  + or Delete screens, EPG, "Program Finder", "Fix Scheduling  + Conflicts" and search results screens @ +O | to list the upcoming episodes for the currently selected show  + on the EPG, "Program Finder", "Program Recording Priorities",  + "Fix Scheduling Conflicts" or search results screens @ +I | edit recording options from the EPG, "Program Finder",  + "Program Recording Priorities", or "Fix Scheduling Conflicts"  + screens. From the Playback and Delete screens, 'I' presents  + options for recorded shows such as Auto Expire or Stop Recording.  + Pressing 'I' while on the Recording Options screen will take you  + to the Advanced Recording Options screen. +</tabular> +</table> +<sect2>Watching TV or a recording +<p> +<table loc=p> +<tabular ca="rll"> +Up or down | keys change the channel @ +num pad | Type a number to enter a channel number or jump amount (HHMM format) @ +P | pause / play. You may also add an explicit keybinding for 'Play' through  + MythWeb, returning you to normal speed if you are in slow motion, rewind  + fast forward or pause mode. @ +C | change inputs on TV Tuner card @ +ESC | quits @ +I | puts the On-screen Display up again. During playback, 'I' toggles  + between position and show description info. If a jump amount is  + entered, jump to that position. @ +M | brings up the electronic program guide (Grid) -- see the EPG section @ +Page Up | jump back the configured number of minutes (default is 10) @ +Page Down | jump ahead the configured number of minutes (default is 10) @ +End or Z | skip to next commercial break marker @ +Home or Q | skip back to previous commercial break marker @ +T | toggle close caption support  + Pressing 0-9 (preferably 3 times) + T changes teletext page and turns on teletext. @ +F | rotate between the various Picture Adjustments (Colour, Hue, etc.)  + While Picture Adjustment is on-screen, use Left and Right arrows to  + adjust. These settings adjust the look of the video playback, and are  + independent of the G-key settings used at record-time. @ +[ or F10 | decrease volume @ +] or F11 | increase volume @ +| or F9 | toggle mute @ +/ | jump to the next "favorite" channel @ +? | mark/unmark the current channel as a "favorite" @ +U | increase the play speed @ +J | decrease the play speed @ +A | Adjust time stretch (speed up or slow down normal play of audio and video @ +W | cycle through zoom and fill modes: 4:3 aspect ratio, 16:9, 4:3 Zoom   + (like Pan and Scan), 16:9 Zoom, and 16:9 Stretch (eliminates black   + sidebars in TV signal) @ +F8 | toggle the sleep timer 30m->1hr->1hr30m->2hr->Off @ +CTRL-B | Jump to the beginning of the recording / ringbuffer @ ++ | Switch between audio streams @ +Left | (if a jump amount is entered) to jump back that amount @ +Right | (if a jump amount is entered) to jump ahead that amount @ + | @ + | @ + | <bf>Without the stickykeys option selected</bf> @ +Left | rewind the configured number of seconds (default is 5) @ +Right | fast forward the configured number of seconds (default is 30) @ +< | starts rewind mode as if stickykeys are selected @ +> | starts fast forward mode as if stickykeys are selected @ + | @ + | @ + | <BF>With Stickykeys option selected</BF> @ +Right | starts fast forward mode @ +Left | starts rewind mode @ + | @ + | @ + | <bf>In fast forward or rewind mode:</bf> @ +Left/Right | increases the ff/rew speed @ +0 | plays at normal speed, but leaves the time indicator on screen @ +1 or 2 | plays back more slowly than normal ff/rew speed (1 is slowest) @ +3 | plays back at normal ff/rew speed @ +4-9 | plays back faster than normal ff/rew speed (9 is fastest) @ +Space | exits fast forward or rewind mode @ + | @ + | @ + | <bf>While video is paused:</bf> @ +Left | rewind 1 frame @ +< | rewind 1 second @ +Right | advance 1 frame @ +> | advance 1 second +</tabular> +</table> +<sect2>Watching TV only +<p> +<table loc=p> +<tabular ca="rll"> +G | rotate between the various Picture Adjustments (Colour, Hue, etc.)  + for recording. These values affect the look of the resulting .nuv  + file, and are independent of the playback picture settings. While  + Picture Adjustment is on-screen, use Left and Right arrows to adjust. @ +H | Channel history. Each repeat steps back through the previous channels. @ +O | Turns on 'Browse' mode, allowing user to browse channels and program  + info while watching current show FullScreen. @ +Y | switch between multiple capture cards.  <bf>NOTE</bf>:  + you will lose your LiveTV buffer on your current card. Useful  + for different-sourced cards (such as Dish Network on one, HDTV over-the-air on another card.) @ +</tabular> +</table> +<sect2>LiveTV Browse Mode +<p> +<table loc=p> +<tabular ca="rll"> +Left | browse program prior to current listed program @ +Right | browse program following current listed program @ +Up | browse program on channel above current listed channel/program @ +Down | browse program on channel below current listed channel/program @ +/ | browse program on next favorite channel @ +0-9 | enter a channel number to browse @ +Space/Enter | change channel to channel of current listed program @ +R/r | Toggle recording of current program (cycles through types) @ +ESC/O | Exit Browse mode +</tabular> +</table> +<sect2>Playback Recording Zoom Mode +<p> +<table loc=p> +<tabular ca="rll"> +Left | Move video to Left @ +Right | Move video to Right @ +Up | Move video Up @ +Down | Move video Down @ +PageUp | Zoom In @ +PageDown | Zoom Out @ +Space/Enter | Exit Zoom mode leaving picture at current size and position @ +ESC | Exit Zoom mode and return to original size +</tabular> +</table> +<sect2>If you have two or more tuner cards +<p> +<table loc=p> +<tabular ca="rll"> +V | toggle Picture-in-picture on or off @ +B | toggles the window focus (lets you change channels on the PiP window) @ +N | swaps the two channels by changing channels on both cards +</tabular> +</table> +<sect2>Watching a recording only +<p> +<table loc=p> +<tabular ca="rll"> +Space/Enter | set a bookmark at that point. Next time you start the  + recording, you will automatically jump forward to this point  + and clear the bookmark. @ +X | queues the current recording for transcoding @ +O | brings up menu to allow toggling settings such as Commercial  + Auto-Skip, Auto-Expire, etc. @ +D | exits the current recording and displays the Delete menu @ +E or M | enters/exits edit mode. @ + | @ + | @ + | <bf>In edit mode</bf> @ +Left/Right | move forward and backward @ +Up/Down | alter the amount of time you jump forward and backward.  + Increments are: nearest cutpoint, nearest video keyframe, 1  + frame, 0.5 seconds, 1 second, 20 seconds, 1 minute, 5 minutes,  + and 10 minutes. @ +PageUp/PageDown | move forward and backward to the nearest cut point @ +< or > | move forward or backward by 10 times the normal jump amount @ +Space/Enter | allows you to set or delete a cut point @ +Z | loads the commercial skip list (if one exists) into the cutlist @ +C or Q | clear all cut points in the cutlist @ +I | Inverts the cutlist +</tabular> +</table> +<sect2>EPG +<p> +<table loc=p> +<tabular ca="rll"> +Arrows | are used to move the highlighted program point around @ +A, D, S, W | perform the same as left, right, down and up @ +PageUp/PageDown | move the channel list up or down a page @ +Home/End | move the highlight left or right by one day @ +Ctrl+Left or < | move the highlight left by one page @ +Ctrl+Right or > | move the highlight right by one page @ +9, 3, 7, 1 | (like a numeric keypad) perform the same as PageUp, PageDown,  + Home and End @ +I | bring up more information about a show, and allow you to  + schedule a recording. If you select "Record this showing"  + while watching Live TV you can "Instant Record" a program. @ +Space/Enter | allow you resolve conflicts or change overrides. If the  + program is not already scheduled to record, it will instead act like  + pressing 'I'. @ +M | when on a channel will change to that channel @ +ESC or C | exits without changing the channel @ +R | change the current item from Recording/Not-Recording.  + Successive keypresses cycle through the scheduled recording  + type list. @ +X | change the channel to the currently selected channel without  + leaving the EPG (Most useful in the alternate EPG) @ +? | mark/unmark the current channel as a "favorite" @ +/ or 4 | toggle the guide listing between all channels and filtered  + "favorites" +</tabular> +</table> +<sect2>Setting Program or Channel Recording Priorities +<p> +<table loc="l"> +<tabular ca="rll"> +Right | increases priority value @ +Left | decreases priority value @ +1 | sorts by title @ +2 | sorts by priority @ +Home/End | toggle sort priority @ +I | edit recording options @ +ESC | commits changes and exits +</tabular> +</table> +<sect2>Viewing Scheduled Recordings/Resolving Conflicts +<p> +<table loc=p> +<tabular ca="rll"> +1 | show all recordings @ +2 | show only important recordings @ +Home/End | toggle show showing all/important @ +I | edit recording options @ +Space/Enter | resolve conflict or override +</tabular> +</table> +<sect2>Viewing Search Listings +<p> +<table loc=p> +<tabular ca="rll"> +Home | change to the previous view if applicable @ +End | change to the next view if applicable @ +M | select another view if applicable. In the  + title and description search popup, press  + M again to edit or delete the selected view. +</tabular> +</table> +<sect2>Recording Profiles Setup Screen +<p> +<table loc=p> +<tabular ca="rll"> +D | on a custom profile group displays a popup to delete the group@ +</tabular> +</table> +<sect2>Recording Groups +<p>In the Watch Recordings screen, Recording Groups allow you to separate +programs into user-defined categories, such as "Kids", "Alice", "Bob", etc. +This can be used to reduce clutter, or to segregate content if you use the +PIN function. +<table loc=p> +<tabular ca="rll"> +M | change the view or to set a group password @ +I | move a program from one Recording Group to another +</tabular> +</table> +<sect2>Watch Recordings Screen +<p> +<table loc=p> +<tabular ca="rll"> +1 or F1 | Meaning of the icons @ +/ | Tags a recording. Tagged recordings can be played  + either in order or shuffled and deleted as a group.  + You can also change the recording group for several  + recordings at once by tagging them and using the   + Menu (m) button, selecting "Playlist options",   + then "Change Recording Group". @ +? | Clear the tagged list. +</tabular> +</table> +<sect2>Remote Controls +<p> +If you are using MythTV with just a remote control then it is suggested that you +map the remote control keys as described below. Your remote control may not +have the same set of keys as those named below, the names are only a suggestion +that roughly correspond to the function. +<p> +If you are adding new key bindings to the program then consideration of this +suggested list will help users with remote controls. +<p> +This list assumes a minimal remote control that only has 20 keys, nearly all +features can be used with this configuration. If you have more keys then you +can access all of the features. With only 16 keys most features are usable. +<table loc=p> +<tabular ca="rll"> +REMOTE CONTROL | LIRC KEYSTROKE | FUNCTION @ +0 - 9 | 0 - 9 | channel selection, EPG navigation, ff/rew speed setting (with stickykeys) @ +Left Arrow | Left | scroll left, rewind @ +Right Arrow | Right | scroll right, fast forward @ +Up Arrow | Up | scroll up, channel change up @ +Down Arrow | Down | scroll down, channel change down @ +Select / OK / Play | Space | Select item, play (with stickykeys) set bookmark @ +Cancel | Escape | Cancel, quit playback @ +Menu | m | EPG (from watching TV) edit (from playback). @ +Pause | p | Pause @ +Other key 1 | i | Information @ +Other key 2 | c | Change tuner card input +</tabular> +</table> + +<sect1>Using themes with MythTV +<p>MythTV is "themeable", meaning that the visual appearance of the program +can be modified by the user without re-compiling or altering the program +functionality. Download the MythThemes tarball from the website and untar it: + +<tscreen><verb> +$ tar -xjf myththemes-0.21.tar.bz2 +$ cd ~/myththemes-0.21 +$ qmake myththemes.pro +$ su - +# make install +# exit +$ +</verb</tscreen> + +The theme will now be available in the mythfrontend Appearance section. + +<sect1>Adding DishTV information to the database +<p>A script for adding Pay Per View information into the MythTV database for +DishTV subscribers is available at <url url="http://www.mythppv.com/" +name="http://www.mythppv.com/">. + +<sect1>Adding support for an external tuner +<p>MythTV supports changing the channel on an external tuner. If you have +an external tuner, such as a DirecTV or digital cable set top box, you +should add <tt>/usr/local/bin/changechannel</tt> to your Input Connections in the +mythbackend configuration GUI. + +However, there is not <bf>changechannel</bf> program per-se, because this is +going to be dependent on what sort of external tuner you have. Look in the +<tt>contrib/channel_changers</tt> directory for a number of programs and +scripts which may be used to change channels. Once you find one which +works, copy it to <tt>/usr/local/bin/changechannel</tt>. + +Feel free to browse some of what sort of hardware is available at <url +url="http://store.snapstream.com/accessories.html" +name="http://store.snapstream.com/accessories.html">, or if you wish to +assemble your own, rather than purchase, the following may be helpful: <url +url="http://www.dtvcontrol.com/" name="http://www.dtvcontrol.com/"> for +cable pinouts. + +<sect1>Using Shutdown/Wakeup +<p>What does the MythTV Shutdown/Wakeup function do? The scheduler on the +Master backend (MBE) keeps track of the idle status of the entire MythTV +system, including the Slave backends (SBE). If it considers the system to be +idle, and thus ready to shutdown, it sets the wakeuptime to the time of the +next recording and then proceeds to shut down all Slave backends and then +itself. Once it is time to begin recording, the Master backend and the Slave +Backends are automatically woken up. This system allows MythTV to record +like a normal VCR, thereby conserving power when not in active use. + +In order to use the Shutdown/Wakeup function there must be some method of +waking up the Master backend. There are any number of solutions, but we +will discuss in detail two possibilities: + +<itemize> +<item>Use another server that runs 24/7 and have it send a WakeOnLAN (WOL) +packet to wake the Master backend. This assumes that you have the WOL tools +installed, and that your Master backend motherboard supports WOL. +<item>Use your motherboard's BIOS wakeup capability. You'll need a motherboard +that supports BIOS wakeup, and some tools. Two that work are: <url +url="http://sourceforge.net/projects/nvram-wakeup" +name="http://sourceforge.net/projects/nvram-wakeup"> and <url +url="http://www.malloc.de/tools/wakeup_clock.html" +name="http://www.malloc.de/tools/wakeup_clock.html"> +</itemize> + +<sect2>A deeper look into the operation +<p>The scheduler keeps track of the idle status of the MythTV system. To +determine whether or not the MythTV system is idle, the following conditions +must be met for a period of time defined in the "Idle timeout (secs)" +parameter. +<itemize> +<item>no client is connected to the server +<item>no recording (neither LiveTV nor a regular recording) is currently taking place +<item>no recording starts within a definable amount of time ("Max. wait for recording (min)") +<item>the "pre Shutdown check-command" returns 0 +</itemize> + +If we get to this idle state the Master backend will set the wakeuptime using the "Set +wakeuptime command", which is the same for WOL and BIOS wakeup. The Master backend will +then shut down the Slave backends and itself using the "Server halt command". + +One caveat is that the scheduler tries to guess if the Master backend was started by a +wakeup call or by the user. If it thinks it was woken up by a user, it +blocks shutdown until a client connects to the Master backend, after which it will +behave as described above. To disable this feature, unset "Block shutdown +before client connected" in the mythfrontend Setup->Setup->General screen. + +Once it is time to startup the system, the Master backend is woken up first and will +wakeup the Slave backends using the "Wake command for slaves". At this time, there is +no support for starting only the required Slave backend, so all Slave backends will startup. + +<sect2>Setting up the MythTV side of this extension. +<p>There are a number of options that are used to control the Shutdown / +Wakeup feature. + +Shutdown/Wakeup Options: +<itemize> +<item>"Idle timeout (secs)" is the time the server waits while idle until a +shutdown occurs. +<item>"Max. wait for recording (min)" is the time the Master backend waits for a recording +without shutting down. For example, this would be used to prevent a 10 +minute system shutdown if a recording is set to start 15 minutes from now. +<item>"Startup before rec. (secs)" Sets how long before a programmed +recording the MythTV system will be woken up. This should be roughly be the +time your systems need to bootup, and if you have Slave backends, you'll +need to ensure this value is long enough for all your machines to perform +their bootup cycle. +<item>"Wakeup time format" is the format of the wakeup time that is given in +the "Set wakeuptime command" as a parameter "$time". You need to set this +according to your wakeup mechanism. If you need seconds since the epoch +(1970-01-01) set the "Wakeup time format" to "time_t". +<item>"Set wakeuptime command" is the command executed to set the new wakeuptime. +<item>"Server Halt Command" is the command executed to shutdown the Master +backend and the Slave backends. +<item>"pre Shutdown check-command" is used to give a +"Go/NO-GO" decision from a non-MythTV source. This command is executed +immediately before the shutdown would occur. The return value is use to make +the following choices: +<itemize> +<item>If it returns a "0" the shutdown will occur as scheduled. +<item>If it returns a "1" the "idle timeout" will be reset and the system +waits again for the timeout. +<item>If it returns a "2" the entire shutdown sequence is reset. This means +that a new client connect is needed before a shutdown occurs, unless you have +the "Wait for client connect" setting disabled, in which case this is the same as +returning "1". An example of a use for this return value is to prevent the shutdown +if a user is currently logged in, or if a specific program (i.e. transcode, +automatic updates, etc.) is currently running. If you don't need it, leave +the field blank. +</itemize> +</itemize> + +The "WakeOnLan settings": +These settings have nothing to do with using BIOS or WOL wakeup, they are +the same for both. +<itemize> +<item>"Master backend" This setting defines timings for the frontends to +wakeup the Master backend using WOL. Useful if your frontend can emit a WOL +packet so you don't need to physically go to the Master backend if you're +trying to watch TV. +<item>"Reconnect wait time (secs)" is the time the frontend waits after +executing the "Wake command" before attempting to retry the connection. This +should be roughly the amount of time your Master backend needs for bootup. +Set to "0" to disable. The frontends will retry to connect for "Count of +reconnect tries" times before giving up. +<item>"Wake command for slaves" is the <em>one</em> command executed to wake +your Slave backends. This should be a script that contains the calls to +wakeup all Slave backend systems. +</itemize> + +<sect3>Using WOL to wake your Master backend. +<p>To use WOL to wake your Master backend you will need a WOL capable Master +backend, a machine that runs 24/7 which can execute an at-job and nc (netcat) +on the Master backend. I use some little bash scripts to make my DSL router +wakeup my mythbox if required. + +Replace $SERVER and $PORT with your own settings! +On my Master backend I have a script that gets called as 'setwakeuptime command' which +looks like the following: +<tscreen><verb> +#! /bin/sh +echo $@ | nc $SERVER $PORT +</verb></tscreen> +This simply cats the parameters (that is $time) to my 24/7 server. On my +$SERVER I have (x)inetd listening on $PORT starting a little script which +cares about setting the at-job. The following additions are necessary on the +$SERVER: + +If you use <bf>inetd</bf>: +<p>In <tt>/etc/inetd.conf</tt> add: +<tscreen><verb> +mythwake stream tcp nowait mythtv /usr/sbin/tcpd /usr/local/bin/mythwake +</verb></tscreen> +If you use <bf>xinetd</bf>, save the following as <bf>mythwake</bf> in your +<tt>/etc/xinet.d/</tt> directory: +<tscreen><verb> +service mythwake + { + socket_type = stream + wait = no + user = mythtv + protocol = tcp + id = mythwake + server = /usr/local/bin/mythwake + } +</verb></tscreen> +and add the following to <tt>/etc/services</tt>: +<tscreen><verb> +mythwake $PORT/tcp +</verb></tscreen> + +Finally, <tt>/usr/local/bin/mythwake</tt> looks like: +<tscreen><verb> +#! /bin/bash +#this should be a command to wake your server +WAKECMD="#!/bin/sh\n /usr/local/bin/wakeMBE" +#first we need to delete all wake jobs in queue +for JOB in atq | cut -f 1 ; do + atrm $JOB; +done +#now we read the date from 'nc' +read date; +#now set the atjob +echo -e "$WAKECMD" | at $date ; +</verb></tscreen> +<bf>SECURITY WARNING</bf>: +Be sure to secure $SERVER:$PORT from untrusted networks, because this +allows 3rd parties to run arbitrary code on your server! + +<sect3>Using BIOS wakeup to wake your Master backend. +<p>Since I don't use this, I cannot say much about this. If your motherboard +supports any wakeup tool you have to call that tool as "Set wakeuptime +command" with the "Wakeup time format" suitable for that tool. +<sect2>Wakeup the MySQL server using WOL +<p>If your MySQL server and your Master backend are not on the same machine, +you can have the Master backend wake your MySQL server using WOL. You will +find the settings for this in the second page of the mythtv-setup program, +or at the end of <tt>mysql.txt</tt>. The meanings are the same as +discussed in "The WakeOnLan settings" above. + +<sect2>Tips/Tricks: +<p>If, for example, one of the Slave backends is also your desktop computer, +you could simply use a little script as 'server halt command' which first +calls <tt>/sbin/shutdown -t TIMEOUT</tt> where TIMEOUT is a value sufficient +for you to react. You could then popup a window using *dialog, asking for +permission to shutdown. If you cancel the shutdown, simply call +<tt>/sbin/shutdown -c</tt>. + +If you get "nvram-wakeup: /dev/rtc: Device or resource busy" your +set-wakeuptime-script should stop the program that uses <tt>/dev/rtc</tt> before +setting the wakeuptime. +<sect1>Controlling the mythfrontend via telnet +<p>To use this feature you must first enable it in Settings>General>General + +The network control listens on port 6546, as demonstrated below: + +<tscreen><verb> +$ telnet basement 6546 +Connected to basement. +Escape character is '^]'. +MythFrontend Network Control +Type 'help' for usage information +--------------------------------- +# help +Valid Commands: +--------------- +jump - Jump to a specified location in Myth +key - Send a keypress to the program +play - Playback related commands +query - Queries +exit - Exit Network Control + +Type 'help COMMANDNAME' for help on any specific command. + +# help jump +Usage: jump JUMPPOINT + +Where JUMPPOINT is one of the following: +channelpriorities - Channel Recording Priorities +channelrecpriority - Channel Recording Priorities +deletebox - TV Recording Deletion +deleterecordings - TV Recording Deletion +guidegrid - Program Guide +livetv - Live TV +livetvinguide - Live TV In Guide +mainmenu - Main Menu +...snip... +# exit +$ +</verb></tscreen> + +Please note that this feature only allows one connection at a time, so any +new connections will automatically terminate prior ones. + +<sect>Scheduling Recordings. +<p>The MythTV master backend is responsible for managing the schedule for +all TV tuner cards on the master and any slave. Its job is to search the TV +listing for the shows you have requested and assign recordings to the TV +tuner cards. If none of the shows that you've chosen overlap, it simply +records all of them. However, if there are shows where the beginning +and end times overlap, the scheduler follows rules that you've specified or +makes logical decisions about what would be best if you haven't expressed your +preference. Further, the "Upcoming Recordings" page allows you make specific +decisions about what you really do and don't want to record. + +<sect1>Record Types +<p>When you choose a show that you would like to record from the +Options Page, there are eight different types of rules to help the +scheduler find which showings you would like to record. + +<itemize> +<item>Single Record -- record only this title at this specific time and +this station. This is the best way to be sure that a certain showing will +be recorded. However, if the TV listings change and the show is not broadcast +at that time, the show will not be recorded but will be marked as Not Listed +to let you know that you should investigate. + +<item>Find One -- this will record a title once from any of the times +that appear in the TV listings. This is useful for recording a movie +or special that has multiple showings because it allows the scheduler +to choose one that doesn't conflict. It is not a good choice for +recording a single episode of a series because it records the first +available showing of the title without regard to the episode +information. + +<item>Record Weekly -- this records a show whenever the title is listed +on the same channel, weekday and time. Note that if the TV station +changes the schedule for a special episode, it would not be +recorded. However, you can add a Single record for the special +episode. If there are no matching showings in the TV listings, +a Not Listed item will be added to your schedule for the next +time slot to let you know that you should investigate. + +<item>Find Weekly -- this will record a title once per week from any +of the times that appear in the TV listings beginning from the time of +the showing that was selected when the rule was set. This is useful +for news, current events or other programs where the same episode is +shown several times each week but the listings may not include +descriptive information. This may not be a good choice if there are +different episodes shown during the week. + +<item>Record Daily -- this records a show whenever the title is listed +for the time and station on any day of the week. Here again, a show +will not be recorded if the time was altered by the station. If there +are no matching showings in the TV listings, a Not Listed item will be +added to your schedule for the next time slot to let you know that you +should investigate. + +<item>Find Daily -- this will record a title once per day from any +of the times that appear in the TV listings beginning from the time of +the showing that was selected when the rule was set. This is useful +for news, current events or other programs where the same episode is +shown several times each day but the listings may not include +descriptive information. This may not be a good choice if there are +different episodes shown during the day. + +<item>Channel Record -- records one showing of each unique episode from +any of the times the title is listed on this station. This is perhaps +the most common rule to use for most shows. + +<item>Record All -- records one showing of each unique episode from +any of the times this title is listed on any channel. This can be +useful if a station has sister stations where shows are rebroadcast +allowing the scheduler to record rebroadcasts on the other station +when the original airing cannot be recorded. +</itemize> + +<sect1>Scheduling Options +<sect2>Priority +<p>By default, all shows you select have equal value to the +scheduler. There are a set of rules to make good choices when +two or more shows are in conflict. However, priority values let the +scheduler know what you prefer so that it can set the schedule based +on your preferences. + +Initially, recording rule priority values are set to zero. You may choose +to leave everything at "0" and let the scheduler follow rules to guess +what you might prefer when there are conflicts. However, if you have +one or two favorite shows, you may want to increase the priority +value so the scheduler will know that you would prefer recording +these over other shows. You might use certain values to rate shows +so that all favorites are 2. good shows are 1 and extra 'filler' +shows are all -1 for example. You could sort each title on the "Set +Priorities" page to have a unique value so the scheduler can know +which show you'd prefer versus any other show. The choice and style +are entirely up to you. However, the more information you give to +the scheduler, the more likely it will make the choices you would +prefer in the first place. + +The scheduler choices are based on the total priority for a showing by +adding up all priority factors that match the showing. By default, most +of these factors are "0" but you may use any combination to express your +likes and needs. + +<itemize> +<item>Per record rule -- this is the "priority" selection in the "Scheduling +Options" section of the options page and this value is included for any +showings that match the recording rule. You may choose to only use these +values and not use the other factors for the sake of simplicity and clarity. +<item> +Per record type -- Setup->TV Settings->Recording Priorities->General allows +you to add to the priority based on the type. It may make sense to increase +the value for "Single" so that by default they have an extra advantage over +other shows. The default is +1. You may want to decrease the value for Find +rules so that they will be less likely to interfere with regularly scheduled +shows and will be more likely to record in a non-conflicting time instead. +The default is -1. +<item> +Per channel -- Setup->TV Settings->Recording Priorities->Channel Priorities +can be useful if you believe that you prefer any of the shows on certain +channels. This would give all shows on a channel an advantage by default. +<item> +Input priority -- in the "mythtv-setup" program, the "Input Connections" +section allows you to add additional priority in the "Input priority". +This is simply another priority factor but has an interesting effect. If a +card input has a higher value than the other cards, the scheduler will see +that you would rather record showings of episodes on this input rather than a +showing on other inputs. If you have multiple cards of different quality, +you may want to set input priority to encourage the scheduler to record +shows on your best card(s) whenever possible. This can also be useful if you +have multiple video sources which include the same stations. For example, +with digital and analog cable you could increase the digital cable input +preference by 1 to tell the scheduler that you want to record from the +digital channel whenever possible but the channel on the analog input could +still be used when the digital input is busy. +<item> +Custom Priority -- this allows you to add any specialized factors you +would like in order to influence scheduling decisions. See the +<ref id="Custom Priority" name="Custom Priority"> section below. +</itemize> +For any single showing of any show you've chosen to record, these factors +are added together to find the "total priority". This is the priority that +the scheduler uses to decide which showings are given the first choice when +filling in the schedule. + +The scheduling priority of a show may also be used to determine +auto-expiration of recordings when disk space gets full (see <ref +id="Auto-Expire" name="Auto-Expire">, below). + +<sect2>Duplicates +<p>Singles will record without regard to duplicate matching. + +<p>The standard recurring methods of All, Channel, Weekly and Daily use the +descriptive information in the TV listings to try to record only one showing +of each unique episode. However, This goal is sometimes complicated by the +fact that the stations may not include a description for a specific episode +but use a generic description for the series instead. When there is a +generic description, the default behavior is to assume that it may be an +episode that you have not seen and to record it for you. One of the +duplicate matching options is "Record new episodes only". If this is +selected, listing that have an original air date of more than 14 days +earlier are considered repeats and are not eligible to record. Generally, +generic episodes will be marked as repeats also. + +<p>Because of generic episodes and other situations, MythTV offers an +alternative approach where shows may be recorded by choosing from multiple +showings even when the descriptive information is not reliable. All of the +"Find" record types look for matching titles in the listings. If there is a +showing with specific episode information and that episode has recorded +before, that showing is marked as previously or currently recorded. The +scheduler will then choose to record the earliest non-conflicting showing +from any of other remaining showings regardless of the descriptive +information. Generally, Find One is most useful for movies or specials and +the Find Daily and Find Weekly rules are best for news or current events +shows that are repeated. However, these may be useful in other situations +where the standard recording rules may not work correctly. + +<sect2>Conflicts +<p>As you add more shows that you would like to record, the scheduler +will eventually encounter conflicts. If there are two shows at the +same time and you have two or more TV tuner cards, both shows will +record. However, if there are more shows than cards, the scheduler +will have to decide what it thinks it should not record based on the +information you have given. If you see an unexpected situation you +are not "stuck" with the scheduler's choice. You can still tell the +scheduler exactly which shows you do want to record and/or don't +want to record in any situation. + +<sect2>Scheduling decisions +<p>Here are the actual decisions made by the scheduler as it fills in the +schedule. + +<itemize> +<item>Currently recording beats not currently recording -- A recording +in progress can not be moved to another input or time so it "wins" +its current timeslot. + +<item>Single, Daily, or Weekly rules with no match are marked Not Listed -- +If these or Overrides do not match the current listings because the +listings have changed, they are added to the schedule and marked to +indicate that they will not record. + +<item>Rules that could record beat rules that can not record a showing -- +If two rules match the same showing of a program, a rule marked as inactive +or a showing marked as a repeat, for example, yield to the other rule. + +<item>More specific record type is used in place of less specific -- If +two rules match the same showing of a program, preference is given to +Don't Record then Override, Single, Find One, Record Weekly, Find Weekly, +Record Daily, Find Daily, Channel and finally All. + +<item>Higher total priority beats lower total priority -- This is the +core of the scheduling process. Episodes of the highest priority show +are placed on the first available input followed by the next highest +priority show and so on. + +<item>Future start time beats past start time -- If there is an +episode in progress and also a later showing of the same episode, it +is better to record the complete episode. If there isn't another +showing, it will start recording immediately to record the remaining +portion. This should only happen if you add a new rule while the show +is in progress or if the master backend is started after the start time +of a scheduled show. + +<item>More specific record type beats less specific record type -- If +two shows are on at the same time and have the same total priority but +different types they will be sorted by Single then Find One, Record +Weekly, Find Weekly, Record Daily, Find Daily, Channel and finally +All. This only applies if the priorities are the same. + +<item>If both start times have passed, later start time beats earlier start +time -- This attempts to miss the least amount of time. + +<item>If neither start time has passed, earlier start time beats later +start time -- This helps assure that the earliest showing of an episode +has the advantage. + +<item>Lower input id beats higher input id -- The scheduler fills in +open time slots on the first available input for the video source. The +next input is used when there is another show already placed for the +card of the first input. + +<item>Older record rule beats newer record rule -- If two shows are still +equal after all of these other checks, the show whose record rule was added +first is preferred over a more recent addition. + +<item>Postpone showings to resolve conflicts -- If Reschedule Higher +Priorities is set or if a conflict has the same priority as a show +that was scheduled at the same time, the scheduler will check to see +if a scheduled show can be moved to another input or later matching +showing without creating a new conflict so that the conflicting show +can be scheduled to record. + +</itemize> + +<sect2>Reschedule Higher Priorities + +<p>Setup->TV Settings->Recording Priorities->General has a checkbox for +"Reschedule Higher Priorities" which tells the scheduler to try to be a +little smarter in certain situations. If this is checked, the scheduler will +look for situations where a show cannot record because all inputs for the +channel are used for higher priority shows. It will check to see if any of +the other shows could be recorded at another time so that the conflicting +show can be recorded in its place. + +Generally, this is a good strategy but there are tradeoffs. If a higher +priority show is postponed, you will not get to watch it until it is +recorded in the later timeslot. There is also a risk that the TV listings +may change and the later showing may go away. In this rare case the higher +priority show may never record. On the other hand, if you do not use this +option you will miss recording some lower priority shows unnecessarily +unless you manually make similar changes. + +By using Reschedule Higher Priorities, the scheduler will do a better job of +recording as many of your shows as possible when left unattended. It will +also be easy to see that shows have been marked to record at a later time. +You can then decide for yourself when you would prefer to record the first +showing by clicking "Record anyway". + +<sect2>Controlling Your Schedule +<p>The Manage Recordings->Upcoming Recordings page is your control center +for the MythTV scheduler. Unlike other DVR systems, this one page gives you +all of the information and tools you need to see all of your alternatives +and make whatever adjustments you desire. + +The upper half of the screen has a scrollable box listing items that match +your record rules sorted by time. The lower half shows the details for the +highlighted item. There are two 'views' available. Press "1" to include all +of the items that match record rules even if they do not need to be +recorded. Press "2" to focus on just the things that will record and items +that may need your attention. The message in the upper right-hand corner +will remind you when there are conflicts that would prevent one or more +shows from being recorded. + +The items in the list are colored in the record color for things that +will record, white for things that may need attention, gray for those +that do not need to record and yellow when there is a time conflict. +Items at the top of the list may also be highlighted indicating that the +recording is in progress. + +Along with the channels, start times and titles, the right-hand column has +a status code. Numbers indicate which card number has been assigned to +record the show. Letters are used to indicate the reason that something +will not be recorded. Just below the box is a short status message for the +highlighted item that indicates the type of record rule that was matched, +the "total priority" for this showing and a one or two word explanation of +the status code. If you press SELECT, you will see more information about +the status. + +There are a few status codes that may require your attention. "C" indicates +that there are more overlapping shows to record than there are TV tuners to +record them. "L" indicates that the scheduler found that it may be better to +record a later showing of this episode. These states happen as a result of +your choices and should normally reflect your preferences. However, you may +notice situations where you would like to modify the scheduler's initial +choices. + +The first thing you can do is to highlight an item and press INFO to +see the recording options page. From this page you can change the +record rule type, the duplicate matching rules, or raise or lower the +priority to resolve whatever problem you noticed. + +Additionally, you can treat any individual showing as an exception that you +do want to record or don't want to record. To use these "override" features, +highlight the item and press SELECT. You will see a message explaining the +current status and at least an "OK" button to exit without making changes. + +For items scheduled to record, there will be a button for "Don't record" +which will prevent recording this showing but will still allow the same +episode to record in the future. If there is episode description +information, you may also see a button for "Never record". This prevents +recording this showing and tells MythTV to remember that this is an episode +that you've seen or don't need to see if it is ever in the TV listings +again. + +For items that are not scheduled to record, the message will describe the +reason and in the case of "C" or "L" it will include a list of the shows +that are scheduled to record instead. For any item that could potentially be +recorded there will be buttons for "Edit Options" and "Add Override". "Edit +Options" will allow you to change the options for the existing record rule +such as raising the priority so that the show will record. These changes +would apply to this and all future showings that match this record rule. +"Add Override" will allow you to set options that apply to the specific +showing without affecting the recurring record rule. + +If you return to an override page after an override has already been set, +you will also see a "Clear Override" to undo your changes. This option makes +it very easy to try out some "what if" attempts when deciding on your best +strategy in a difficult situation. + +For a recording in progress, there will be a "Change Ending Time" button. +This will take you to the options page for a Single or Override or create +an Override if it is a recurring rule. Here you can go to the Recording +Options section to change the program end time offset. If you extend the +end time so that it overlaps upcoming recordings, the schedule will change +to accommodate the new end time. This may cause a conflict or later showing +even for a show with higher priority. Therefore, it is a good idea to +check your schedule after changing the end time of a recording in +progress. + +<sect1>Storage Options +<sect2>Recording Profile +<p>Each recording rule can be configured with a different recording +profile. For example, colorful cinematography can be configured with a +"High Quality" profile, while 'talking heads' interviews shows can be +configured with a "Low Quality" profile. These recording profiles need to +be configured before using them (see <ref id="Recording" name="Recording">, +above). + +<sect2>Recording Group <label id="Recording Group"> +<p>For organization of the "Watch Recordings" screen and the MythWeb +interface, recordings can be assigned into "recording groups". + +<sect2><ref id="storagegroups" name="Storage Groups"> +<p>This allows you to select any special "Storage Groups" you may have +created to determine where recordings from this rule should be stored +on your disks. The "Default" storage group is always available. + +<sect2>Playback Group <label id="Playback Group"> +<p>This selects a set of pre-configured playback parameters which can be +created and edited in Setup->TV Settings->Playback Groups. When the +recording is played, the values from this playback group will be +used. This allows you to choose a default time stretch value, skip and +jump amounts appropriate for this type of television program. + +<sect2>Auto-Expire <label id="Auto-Expire"> +<p>MythTV will "autoexpire" old recordings to make room for new recordings +when disk space gets filled up. This option can be set to "Don't allow +auto expire" to prevent these recordings from being automatically deleted +when disk space fills up. + +<p>The default setting is for all scheduled recordings to be eligible +for auto-expiration; this can be changed in the Settings->TV +Settings->General page by manipulating the "Auto Expire Default" +checkbox. + +<p>The default auto-expire policy is "Oldest Show First"; the oldest +recordings are deleted first. The "Lowest Priority First" method +chooses to expire the lowest-priority recordings first. + +<sect2>Episode Limit +<p>An episode limit can also be configured to limit the maximum number +of episodes recorded of a single series, to restrict that series' disk +usage. If this is set, you can further decide what to do when this +limit is reached; either stop recording that series, or to delete the +oldest episodes in favor of the new ones. + +<sect1>Post Recording Processing +<sect2>Commercial Flagging +<p>Select whether or not to automatically flag commercials for these +recordings. Commercial Flagging parameters can be set in +Setup->TV Settings->General. + +<sect2>Transcoding +<p>Select whether or not to automatically transcode recordings to save +disk space. Before using this, you must first enable auto-transcode in +the recording profile and configure the transcoding parameters; see +<ref id="Recording" name="Recording">, above. + +<sect2>User Jobs +<p>User Jobs allow you to configure up to 4 custom commands to run on +recordings. They can be configured in mythtv-setup. The following +tokens have special meaning when used in the User Job commands: + +<itemize> +<item>%DIR% - the directory component of the recording's filename +<item>%FILE% - the filename component of the recording's filename +<item>%TITLE% - the title of the recording (e.g., name of the series) +<item>%SUBTITLE% - the subtitle of the recording (e.g., name of the +episode) +<item>%DESCRIPTION% - description text for the recording (from guide +data) +<item>%HOSTNAME% - the backend making the recording +<item>%CATEGORY% - the category of the recording (from guide data) +<item>%RECGROUP% - the <ref id="Recording Group" name="recording +group"> +<item>%CHANID% - the MythTV channel ID making the recording +<item>%STARTTIME% - the recording start time (YYYYMMDDhhmmss) +<item>%ENDTIME% - the recording end time (YYYYMMDDhhmmss) +<item>%STARTTIMEISO% - the recording start time in ISO 8601 format +(YYYY-MM-DDTHH:MM:SS) +<item>%ENDTIMEISO% - the recording end time in ISO 8601 format +<item>%PROGSTART% - the recording's start time (from guide data; +YYYYMMDDhhmmss) +<item>%PROGEND% - the recording's end time (from guide data) +<item>%PROGSTARTISO%, %PROGENDISO% - the recording's start and end +time in ISO 8601 format. +</itemize> + +<sect1>Advanced Recording Options +<sect2>Creating Power Search rules with Custom Record +<p> +MythTV's "Custom Record" feature gives you unlimited control for creating +specialized search recording rules to meet your needs. It allows you to +choose your criteria to search for matching shows based on any of the +information in the program listings, channel information, time functions and +more. This goes beyond the capabilities of any other DVR system and it is +unlikely that this level of scheduling customization will ever be available +in any commercial DVR system. + +<sect2>Getting Started +<p> +Go to Schedule Recordings->Custom Record. This page, helps you build a +database search one clause at a time. Each added clause further limits +which showings will be matched in the TV listings. You can test the +search at any time and when you are done, you can save your search as a +recording rule. + +To familiarize yourself with how you can create custom rules, create a +simple rule to record "Nova" only in primetime. + +The first item at the top of the page allows you to edit an existing rule +or create a new rule. Leave it on "<New rule>". Arrow down to the +third item which says "Match an exact title". Right and left arrows would +allow you to select any of several prefabricated pieces or full examples +but leave it on the default for now. Arrow down to "Add this example +clause" and press SELECT (Enter or Space on a keyboard). The large text +box should now show: +<tscreen><verb> + program.title = 'Nova' +</verb></tscreen> +As you have probably guessed, this says that we want to search for all +programs with the title "Nova" regardless of the time, day, channel, etc. + +If you do not receive a PBS station that carries "Nova" or would like to use +another title, edit the title by pressing the down arrow to highlight the +text box and right arrow over the the word "Nova". If you are using a +keyboard you can simply delete the four letters and type a different title +between the quotes. With a remote control, you can do 'cell phone' style +text entry with the number pad. The delete key is the "X" in the grouping +for "1", zero is grouped with "9" and "0" acts as the "Caps Lock" key. You +can press ENTER in the text box to popup a virtual keyboard. + +Note: the text box honors many familiar Emacs control keys. It is also +possible to cut and paste text into the text box so you can edit with a +favorite editor or insert a rule sent in email or from other sources. + +In any case, choose a title that is shown both in primetime and late night +or daytime. Next, click the "Test" button. You should see a list of the +upcoming episodes for "Nova" just as if you had clicked the Upcoming +button for "Nova" elsewhere in MythTV. + +Press ESC to go back to the Custom Record page. Move to the example +selector then press the right or left arrows until you find "Only in +primetime". Click "Add this example clause". You should now see: +<tscreen><verb> + program.title = 'Nova' + AND HOUR(program.starttime) >= 19 + AND HOUR(program.starttime) < 23 +</verb></tscreen> +Click "Test". You should now see a shorter list with only the showings that +begin between 7PM and 11PM. To create a rule for this, press ESC to go back +to the custom page and move to "Rule Name:" then type "Nova" or anything +else you would like. This is only a label and will not affect the search +results. Once a name has been entered, the "Record" button will light up. +Click this to enter the recording options page. If you named it "Nova" the +title will say "Nova (Power Search)". Set whatever options you would like +then click "Save these settings". You now have a special rule to record +"Nova" but only when it is shown in primetime. + +You can make further modifications to this rule by returning to the Custom +Record page then press the right or left arrow keys on "Edit Rule:" until +you find "Nova". You can experiment and test but the saved rule will not +be updated until you click "Record" then "Save these settings". + +To remove this, or any other rule, you can go to the "Recording Priorities" +page, arrow down to the title, press Enter and change the the recording type +to "Do not record this program" then "Save these settings". + +<sect2>How it Works +<p> +MythTV stores TV program information in a database and uses the Structured +Query Language (SQL) to access the data. Information about each TV program +is stored in the 'program' table and information about each TV station you +receive is stored in 'channel'. These two tables are used in the scheduler +queries and their columns are available to be used in your rules. The rules +you create are stored in 'record'. + +Normal rules in MythTV simply match the title in the rule with the titles +in the 'program' table. MythTV also has search rules for "Titles", +"Keywords" and "People". These store the key phrase in the description +column of the rule and includes them in specialized SQL replacements for +the normal title check. There is also a type called "Power Search" which +takes the raw SQL in the description as the replacement for title +matching. + +Custom Record is a tool to help you build valid SQL for Power Search rules. +You do not need to be a SQL expert to use Custom Record because the +examples are known to work correctly and are usually self-explanatory so you +can choose the pieces you need then modify them. Many powerful solutions to +unique problems are possible by combining the examples. With some creativity +and some knowledge of SQL, the possibilities are limitless. + +<sect2>Common Tricks and Tips +<p> +The example clauses marked "complete example" are actual rules that have +been used to address specific problems. You may find that some of these +are useful for you as-is or with slight modifications. These show off how +powerful custom rules can be but there are also several simple idioms that +you may find useful for many of the shows you would like to record. + +Wait for a known title -- If there is a movie that you anticipate will be +televised in the coming months but is not yet in the listings, you can +select "Match an exact title", edit the movie title, click "Record" then +choose "Record one showing of this title". The rule will wait weeks, months +or years until this title shows up in your listings then it will record one +showing. These rules have no impact on the scheduler throughout the day and +only take a tiny fraction of a second when the master backend starts or when +the listings are updated. + +Silence series out of season -- "Celebrity Poker Showdown", for example, +will have new episodes for a while then long periods where reruns are shown +dozens of times per week. By checking the previously shown flag you can +create a rule that will only match new episodes. Therefore, your schedule +won't be polluted with dozens of entries marked as "Repeat" or "Previously +Recorded". +<tscreen><verb> + program.title = "Celebrity Poker Showdown" + AND program.previouslyshown = 0 +</verb></tscreen> +This allows you to keep rules for your favorite shows that are dormant while +out of season but will spring back to life when new episodes appear. + +Choose showings on certain days -- Several cable stations will show their +highest rated shows a dozen on more times per week. However, the scheduler +only needs two or three choices to do a good job of making a flexible +choice. +<tscreen><verb> + program.title LIKE "Celebrity Fit Club%" + AND DAYNAME(program.starttime) = "Sunday" +</verb></tscreen> +This says to choose any showing of an episode that hasn't been recorded +when it appears on Sunday. This prevents all the other showings during the +week from being listed in the schedule. + +Notice the word "LIKE" and the "%" at the end. This does wildcard matching +so that this would match even if the title ended with "2". "III" or +":Revenge of the Snapple Lady". This can be useful where the title may +change from one season to the next like "Survivor: %", "Big Brother%" or +"The Amazing Race%". + +<sect2>Working with SQL +<p> +As you experiment, it is possible that you may misplace a quote or mistype a +word. If there is a mistake when you press "Test" or "Record" you will see +an error message returned from the database. This will usually give you a +good idea about what needs to be fixed. However, for more subtle MySQL +syntax errors, you can find more information in the documentation at <url +url="http://dev.mysql.com/doc/mysql/en/" +name="http://dev.mysql.com/doc/mysql/en/">. This contains a lot of +information that can be useful for Power Search rules such as the "Date and +Time Functions". There are many other good resources for SQL on the Web. + +While the example clauses demonstrate how to use many of the data columns, +you can get a more complete list of all the columns that are available by +using a MySQL client program: +<tscreen><verb> +$ mysql -u mythtv -pmythtv mythconverg +mysql> describe program; +mysql> describe channel; +</verb></tscreen> +This will show the names of all of the columns along with their type and +default value. Most are easy to understand but a few need some explanation +in order to use them effectively with Power Search. +<itemize> +<item>"program.category_type" holds one of these exact four strings: "movie", +"series", "sports" or "tvshow". + +<item>"program.airdate" is a string representing the year of release for +movies and may have no meaning for other types of shows. + +<item>"program.stars" is a floating point number from 0.0 to 1.0. On a +four star scale, 1.0 would be four stars, 0.75 would be three stars and so +on. + +<item>"program.originalairdate" if provided is the date when a show +was, or will be, first televised. This may be useful for finding +episodes before or after a certain date such as finding just the +original series of "Battlestar Galactica". + +<item>"program.previouslyshown" is a column created by MythTV to try to +determine if a showing is more than 14 days after its original air date or +if the show was marked as a repeat and did not have a date for the first +airing. If this is "0" it usually means that this is a brand new show or a +rebroadcast within the first two weeks. + +<item>"program.generic" is a column created by MythTV to try mark +showings for a series where the specific episode information is not +included. When these generic showings appear, it is impossible for the +system to determine if they are repeats of the same episode(s) or if +they are all different episodes. + +<item>"program.first" is a column created by MythTV to mark the first +showing in the current listings for each episode, movie or special. +Choosing to match only the "first" showing can be useful for sports +that are brodcast live then repeated. + +<item>"program.last" is a column created by MythTV to mark the last +showing in the current listings for each episode, movie or special. +If a showing is marked both "first" and "last" then it is the only +showing of that program in the current TV listings. + +<item>"program.programid" is the Tribune Media Service database record +identifier for each program description. In general, these start with a two +letter prefix, MV, EP, SP or SH that correspond to the +"program.category_type". For most, the last four digits are "0000" except +EP where the last four digits are the episode number in the series. Note +that these are generated by TMS and not the show's producers but they are +usually in the same order as the original air dates for the episodes. + +<item>"program.videoprop" also "audioprop" and "subtitletypes". +These columns contain bit flags for a variety of attributes that +may be associated with a program. These are filled with information +offered by the TV listings provider. However, your listings source +will not have information for all of the available flags. Therefore, +some of these may not be useful for your search rules. This information +is organized in "sets" and the MySQL function FIND_IN_SET() can be used +to test for any of these flags. For example: +<tscreen><verb> +FIND_IN_SET('SURROUND', program.audioprop) > 0 +</verb></tscreen> +would be true for the programs where the surround sound bit is present. +To see all of the available attribute names: +<tscreen><verb> +$ mysql -u mythtv -pmythtv mythconverg +mysql> SHOW COLUMNS FROM program LIKE '%prop'\G +mysql> SHOW COLUMNS FROM program LIKE 'subtitletypes'\G +</verb></tscreen> +</itemize> +Finally, if you are doing something very experimental and a column is not +giving you the results you had anticipated, you can always check the MythTV +source code to see exactly how a column is used. The open source for MythTV +is available from <url url="http://www.mythtv.org/" +name="http://www.mythtv.org/"> . + +<sect1>Scheduling with more than one Input +<p> + +MythTV is designed to allow recording television programs from one or more +service providers, or video source, on one or more video input from each +provider. Some inputs may not be allowed to record at the same time as +each other while others may record simultaneously. + +A television station may be broadcast on more than one channel from one +provider or may be available on channels from two or more providers. If a TV +station is available from more than one source, the video quality or type of +broadcast may differ. Therefore, MythTV allows you to control how you would +like the scheduler to select the best channel and input for a show which is +available on more than one input or more than one channel. + +<sect2>Mutually Exclusive Inputs +<p> +A single TV capture card may have video connections to more than +one of its inputs and each input may be from a different service. The card +may only be allowed to record from one of these inputs at one time because +there is only one encoder on the card that actually captures the content. + +<figure loc="here"> +<eps file="BlockDiagramofavideocapturedevice.eps" height="1cm"> +<img src="BlockDiagramofavideocapturedevice.png"> +<caption> +</caption> +</figure> + +These are mutually exclusive meaning that only one input or the other +may record at a given time but not both. + +Usually, inputs on different cards can record at the same time +but two or more inputs on the same card cannot. However, there are cases +where inputs on different cards should not be allowed to record at the +same time, for example, a firewire card and s-video analog card connected +to the same set top cable box. + +<tscreen><verb> +| +| coax +--------------+ firewire ------------------+ +| .-=|Cable Provider|=------------=| Card 1 input 1 | HDTV +| | |HD/Cable STB |=--. +-----|||||||||||| +| | +--------------+ | s-video ------------------+ +| | `---------=| input 2 | Digital +|wall | coax | Card 2 | +|=---=^=------------------------------=| input 3 | Cable +| +-----|||||||||||| +</verb></tscreen> + +Input 1 and input 2 receive content from the same set top box and the +channels can not be tuned independently. Therefore only one of these two +inputs should be used at any given time. The solution is to create an "Input +Group" with <bf>mythtv-setup</bf> in "Input connections". Including these +two inputs in the same Input Group will tell the scheduler that these are +mutually exclusive and may not record at the same time. Inputs 2 and 3 are +automatically mutually exclusive because they are on the same card so there +is no need to create an Input Group for these inputs. + +Cards such as the Hauppauge PVR-500 are able to record as two cards +simultaneously because it has two MPEG-2 encoders and each encoder appears +as a separate device. DVB cards may be allowed to capture content from more +than one channel at a time if the channels are in the same MUX. + +<sect2>Stations, Channels and Video Sources +<p> +Although we may be accustomed to thinking of a broadcast station and its +channel number as being synonymous, stations and channels are very different +things. A "station" is in a building with wires and employees. A "channel" +is a carrier frequency or digital ID that carries a broadcast stream. The +same TV station may be broadcast over different frequencies in different +cities or by different providers in the same city. The same frequency will +carry different stations in different cities. In the digital realm of DVB +and ATSC (HDTV), it is even possible for a single frequency to carry +multiple program streams but each of these streams of content are actually +different channels that the receiving devices can 'tune' to independently. + +<itemize> +<item>Station: building +<item>Channel: frequency +</itemize> + +In MythTV, a "video source" is a set of channels from a provider, or over +the air, that can be received by an input. The set defines the channels and +the broadcasters primarily associated with each of those channels. If you +have more than one device or cable from the same provider connected to more +than one card and input, you only need to create one video source in +mythtv-setup then associate that one source with each of these connected +inputs. This will let your MythTV system know that the same channels and +their TV listings are available to be recorded from any of these inputs. + +For example. A MythTV system may have two capture cards. Both have a cable +connected to the coaxial connectors. These cables carry the local cable TV +service. In mythtv-setup, the user should create one "Video source" called +"Cable", for example. Under "Input connections", "Cable" should be +associated with each of the two tuner inputs. The scheduler will then know +that any program on one of the channels from the "Cable" source could be +recorded by either card from the card's tuner input. + +You need to create a different video source for each provider or service +that has a different set of channels. Each input with a connection to that +service should be associated with the video source for that service so the +system will know which set of channels are available for each of your active +inputs. + +Let's say that this user also has one digital cable set top box. The digital +cable service carries channels that are not available over basic cable. The +user would create another source called "Digital". This set top box is +connected to the second card by S-Video so under "Input connections", +"Digital" is associated with the S-Video input of card 2. The system would +then know that programs on channels from the Digital source can only be +recorded from this input. Further, the scheduler understands that it can +only record one show at a time from card 2 so it can assign Cable or Digital +shows to the card but not both at the same time. + +Some TV stations may be broadcast over a channel from the Cable source and +also broadcast over a channel from the Digital source. Note that two +channels carrying the same primary station may not have the same TV listings +due to carrying the primary station part time, including local programming +exclusive to one of the channels, the channels may be in different +timezones, etc. Listings information must be associated with each channel +even if two or more channels report that they carry the same station. + +<sect2>Order of Inputs +<p> +By default the scheduler chooses the first (lowest numbered) input which has +a showing of the scheduled program as it fills the schedule. If a lower +priority show is on at the same time as a higher priority show that has been +assigned to input 1, then input 2 will be used next and so on. Therefore, +configure your best card and input first and next best card and input +second. There may be differences in the type or brand of capture card, +signal quality from the cable, system resources such as disk space, CPU, +etc. By configuring your best input first, more recordings, and your highest +priority recordings, will use that input. + +A common situation is that a newer and better card is added last. For +example, you may initially setup your system with two analog cable cards and +then add a HDTV card. If NBC is on a cable channel and "The Apprentice" is +shown in HDTV on an NBC HD channel, the scheduler would still prefer analog +inputs 1 and 2 over the new HD input 3. + +So, if you'd like the scheduler to prefer a new source, the simplest thing +is to run <bf>mythtv-setup</bf> and "Delete all capture cards" then enter +your cards and inputs in your preferred order. This will not remove your +sources and channels - you want to keep those and only renumber your cards +and inputs. In this example, once the changes have been made and the Master +Backend is restarted, the scheduler would then choose "The Apprentice" in HD +on the new input 1 and only use the analog inputs (now numbered 2 and 3) +when the HDTV input was occupied with another show. + +<sect2>Matching Callsigns +<p> +If a recording rule is a type that can record from any channel, "The +Apprentice" would match for any channel that shows episodes which may +include CNBC or BRAVO. However, for Single, Timeslot, Weekslot or Channel +rules, "The Apprentice" would only match showings on the selected station as +identified by the "callsign". For example, KVBC is an NBC affiliate on +channel 3. Channel 733 is KVBCDT which is HDTV over cable from the same +station. If a Single record rule was set for "The Apprentice" on KVBC +channel 3, it could not record this showing from KVBCDT on 733. If 733 was +chosen when the rule was saved, channel 3 could not be used to record. + +However, the "Channel Editor" in mythtv-setup can be used to change the +Callsign for channel 733 to "KVBC". MythTV would then understand that both +of these channels are from the same broadcast station. Assuming the HDTV +input was input number "1", "The Apprentice" would record on 733. If, +however, this HDTV input already had a higher priority show assigned to it +in that time slot, "The Apprentice" would be assigned to KVBC channel 3 on +input 2. + +Having two channels with the same callsign may affect how program +information is shown in mythfrontend. If two sources have the same callsign +and channel number, the program guide and program lists will only show one +instance of the channel number and callsign. If the same callsign is on two +different channel numbers, both will be shown and if two sources have +different callsigns with the same channel number, both of those will be +shown. + +Continuing with the example above, the Electronic Program Guide would +include rows for both "3 KVBC" and "733 KVBC". If channel 3 KVBC was also +included in the Digital cable source, the EPG would still include just one +line for "3 KVBC" even though there are two different channels, Cable and +Digital, with this identification. Regardless of how these are displayed and +which "KVBC" channel you select to add a rule to record "The Apprentice", +the scheduler will pick the best channel, source and input to record "The +Apprentice" on "KVBC". + +<sect2>Using Priorities to Prefer an Input +<p> +The fundamental concept to keep in mind is that the MythTV scheduler will +choose the lowest numbered input available when showings have the same +priority. If there are factors that cause two showings of the same show to +have different priorities then the higher priority showing will be +considered before the showings with lower priority. + +<sect2>Input Priority +<p> +"Input Connections" in mythtv-setup includes a box to set "Input priority" +which defaults to "0". If a value is set, that amount will be added to the +"total priority" for showings on that input. This can be used to influence +using favored cards or not using less favored cards unless necessary. + +Let's say the "The Apprentice" is on at 8:00pm with a priority of 3. "Who +Cares" is -2 and an episode is shown at 8:00pm then repeated at 11:00pm. The +scheduler would assign "The Apprentice" to card 1 and "Who Cares" to card 2 +at 8:00pm. If the input priority for the input on card 2 was changed to -1, +"Who Cares" would have a total priority of -2 for showings on card 1 and -3 +for showings on card 2. The scheduler would assign "The Apprentice" to card +1 at 8:00pm and "Who Cares" to card 1 at 11:00pm when the better card is +available. If there was another higher priority show at 11pm, the next best +choice for "Who Cares" would be card 2 at 8pm with the priority -3. + +Card 1 and 2 have input priority "0": + +<figure loc="here"> +<eps file="Card1 Pri 0 Card2 Pri 0.eps" height="1cm"> +<img src="Card1 Pri 0 Card2 Pri 0.png"> +<caption> +</caption> +</figure> + +<tscreen><verb> + Time Title Priority Card Status + 8:00 The Apprentice +3 1 Will Record + 8:00 Who Cares -2 2 Will Record +11:00 Who Cares -2 1 Earlier Showing +</verb></tscreen> + +Card 2 with input priority "-1": + +<figure loc="here"> +<eps file="Card1 Pri 0 Card2 Pri -1.eps" height="1cm"> +<img src="Card1 Pri 0 Card2 Pri -1.png"> +<caption> +</caption> +</figure> + +<tscreen><verb> + Time Title Priority Card Status + 8:00 The Apprentice +3 1 Will Record + 8:00 Who Cares -3 2 Later Showing +11:00 Who Cares -2 1 Will Record +</verb></tscreen> + +Card 2 at "-1" but higher priority shows at both 8 P.M. and 11 P.M.: + +<figure loc="here"> +<eps file="Card1 Pri 0 Card2 Pri -1-TDS.eps" height="1cm"> +<img src="Card1 Pri 0 Card2 Pri -1-TDS.png"> +<caption> +</caption> +</figure> + +<tscreen><verb> + Time Title Priority Card Status + 8:00 The Apprentice +3 1 Will Record + 8:00 Who Cares -3 2 Will Record +11:00 The Daily Show +1 1 Will Record +11:00 Who Cares -3 2 Earlier Showing +</verb></tscreen> + +Note the two different effects, each of which may be what you desire +depending on circumstance. If input priorities are equal, shows will record +at the earliest time if any input is available. If input priorities differ, +shows may be postponed to a later time in order to record on the best input. + +<sect2>Channel Priority +<p> +Priority can be added for individual channels (remember, frequencies from a +video source, not stations). This can be used to tell the system that you +generally prefer the content of the station on a channel over the formats of +other stations. You may want to raise the priority for ESPN, SciFi, Comedy +Central or lower the priority for CSPAN, CourtTV, etc. If the same station +is on two different channels, you can use channel priority to have the same +effect for these channels as input priority would have for whole inputs. + +For example, say CNN is on analog channel 20 and there is an HD CNN on 750. +You may not want to tie up the HD input for news originating in standard +definition. Under TV Settings->Recording Priorities->Channel Priorities you +could set channel 750 to -1. The scheduler would then prefer to record CNN +shows on any analog channel 20 before considering using 750 only when there +are no analog inputs available. + +<sect2>Preferred Input +<p> +For an even finer grain of control, there is a per rule option to specify +which input should be preferred for showings that match the rule. By +default, this adds +2 to the priority for showings on the specified input. + +For illustration, let's say there will be a Space Shuttle launch on CNN that +will be broadcast in high definition. Adding a rule to record the launch +with priority "0" should default to channel 20 on input 2. Channel 750 would +have this at -1 due to the channel priority set in the previous example. If +on the recording options page for this rule, the "Scheduling Options" had +the input set to prefer the HD input on card 1, then the showing on channel +750 for this input would be increased in value by +2 for a total of +1 and +would be the best choice for this launch coverage. While this one rule +would prefer the HD input with channel 750, all other rules that match shows +on CNN would still prefer channel 20. + +Note that this will not work properly if the preferred input priority does +not out weigh differences in input and channel priorities. The value of the +priority boost when this option is chosen defaults to +2 but can be modified +in TV Settings->Recording Priorities->Set Recording Priorities. + +<sect2>HDTV Priority +<p> +In the preceeding fictious example, the Space Shuttle launch is broadcast in +high definition and a preferred input is selected to give preference to the +HD input. However, TV listings from zap2it.com through the DataDirect +service may allow this to work without having to use this per rule option. + +In Settings->Recording Priorities->Set Recording Priorities there is an +option for "HDTV Recording Priority". This value will be added automatically +if the listings for the show have the "hdtv" flag set. DataDirect will set +this flag for shows known to be broadcast in HDTV on HD channels. However, +the flag is not set for standard definition channels. This is another +example of the listings being different for the same station on a different +channel. If the HDTV priority is set to "+2", the shuttle launch would +automatically have a total priority of +1 so that channel 750 would be +preferred over channel 20 for this HDTV broadcast. + +Channel "750 CNN" at priority "-1" and HDTV broadcast priority at "+2": + +<figure loc="here"> +<eps file="Card1 HDTV Card2 Cable.eps" height="1cm"> +<img src="Card1 HDTV Card2 Cable.png"> +<caption> +</caption> +</figure> + +<sect2>Custom Priority <label id="Custom Priority"> +<p> +<figure loc="here"> +<eps file="add.eps" height="1cm"> +<img src="add.png"> +<caption> +New for MythTV 0.21</caption> +</figure> + +While Input, Channel, and HDTV Priority can be used for indicating a +preference for certain programs and inputs, there may be circumstances that +cannot be resolved easily with these standard features. MythTV version 0.21 +includes a feature for "power priority". The Custom Priority editor in +mythfrontend's "TV Settings" screen is similar to Custom Record, however, +Custom Priority allows you to create specialized power priority factors to +influence scheduling decisions. + +For example, the 'program.closecaptioned' flag can be used in a +similar way as the 'program.hdtv' flag. + +<tscreen><verb> +Priority Rule Name: Closed Captioned priority +Priority Value: 2 +program.closecaptioned > 0 +</verb></tscreen> + +This will raise the priority of shows marked with "CC" over those that are +not by applying the "Priority Value" whenever the SQL fragment evaluates to +true. If the expression evaluates to false for a showing, the "Priority +Value" is not applied. + +<tscreen><verb> +Priority Rule Name: Priority when shown once +Priority Value: 1 +program.first > 0 AND program.last > 0 +</verb></tscreen> + +The "first" and "last" flags for an episode will only be set for the +same showing when there is only one showing of that episode in the +current TV listings. This rule would raise the priority in these cases +so that these shows would have an advantage to record in their only +available time slot. + +<tscreen><verb> +Priority Rule Name: Input 1 signal quality +Priority Value: -1 +cardinput.cardinputid = 1 AND +channel.channum IN (3, 5, 39, 66) +</verb></tscreen> + +A common issue with two or more analog capture cards is that one of +the cards may have more interference on some channels than the same +channels on other cards. This example gives a disadvantage to the +channels in this list but only for the first input. Therefore, a show +on channel 39 would choose input 2 or 3 if possible but for channels +not in this list, input 1 is still the first choice. + +The Custom Priority editor includes many example fragments and complete +examples that can be used or you can create your own to suit your needs. + +<sect>MythPlugins. <label id="mythplugins_"> +<p>MythTV has a rich set of plugins available. Once you have downloaded +the tarball, untar it and run the <bf>configure</bf> script: + +<tscreen><verb> +$ tar -xjf mythplugins-0.21.tar.bz2 +$ cd mythplugins-0.21 +$ ./configure --help + +Usage: configure [options] +Options: [defaults in brackets after descriptions] +NB: all --enable-* options can be reversed with --disable-* + +Generic options: + --help print this message + --enable-all Enable all options + --enable-opengl enable OpenGL (Music and Gallery) [default=no] + +MythBrowser related options: + --enable-mythbrowser build the mythbrowser plugin [default=yes] + +MythDVD related options: + --enable-mythdvd build the mythdvd plugin [default=yes] + --enable-transcode enable DVD ripping and transcoding [default=no] + --enable-vcd enable VCD playing [default=no] + +MythGallery related options: + --enable-mythgallery build the mythgallery plugin [default=yes] + --enable-exif enable reading of EXIF headers [default=no] + +MythGame related options: + --enable-mythgame build the mythgame plugin [default=yes] + +MythMusic related options: + --enable-mythmusic build the mythmusic plugin [default=yes] + --enable-fftw enable fftw visualizers [default=no] + --enable-sdl use SDL for the synaesthesia output [default=no] + --enable-aac enable AAC/MP4 audio file decompression [default=no] + +MythNews related options: + --enable-mythnews build the mythnews plugin [default=yes] + +MythPhone related options: + --enable-mythphone build the mythphone plugin [default=yes] + --enable-festival enable festival TTS Engine [default=no] + +MythVideo related options: + --enable-mythvideo build the mythvideo plugin [default=yes] + +MythWeather related options: + --enable-mythweather build the mythweather plugin [default=yes] +</verb></tscreen> + +The sections detailing configuration of the plugins assume that you are +already in the <tt>~/mythplugins-0.21/</tt> directory. + +Note that a single <bf>configure</bf> script now does configuration for all +modules. By default, it will compile all modules. If you do not wish to +compile a module, either because it is of no use to you, or you do not have +the prerequisites, the simplest course of action is to go through the +various sections below, satisfying the prerequisites, and then compile all +modules at once. + +For example, you would only like to compile and install MythGallery and +MythMusic. For MythGallery, you would like to use the EXIF data in the .JPG +file to present additional information onscreen. For MythMusic, you would +like to enable support for the opengl and FFT visualizations. The command +line would look like: + +<tscreen><verb> +$ cd ~/mythplugins-0.21 +$ ./configure --disable-all --enable-opengl --enable-mythgallery --enable-exif --enable-mythmusic --enable-fft +$ qmake mythplugins.pro +$ make +$ su - +# make install +# exit +$ +</verb></tscreen> + +For simplicity, the examples below will disable compilation of all other +modules other than the one being discussed. + +<sect>MythWeb. +<p>MythWeb allows you to use a web page to control various aspects of your +MythTV system. MythWeb is a separate application, but it's dependent on +MythTV being installed and operational. + +<sect1>Installation and prerequisites + +<p>Mythweb is a part of the <bf>mythplugins</bf> package. See <ref +id="mythplugins_" name="MythPlugins"> for instructions on downloading the +tarball. The next step depends on whether your distribution has a web server +and if you have PHP support. + +<sect2>Mandriva +<p>Mandriva has <bf>apache</bf> and <bf>PHP</bf> pre-packaged, so +installation is quite simple. + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: Mandriva 9.1 users, perform the following: +</caption> +</figure> +<tscreen><verb> +# urpmi apache2 apache2-mod_php php-mysql +# chkconfig --level 345 httpd on +# /etc/rc.d/init.d/httpd restart +</verb></tscreen> + +<sect1>Completing the installation +<p> +<tscreen><verb> +$ cd ~/mythplugins-0.21/mythweb +$ su +# mkdir /var/www/html/mythweb +# cp -r . /var/www/html/mythweb +# exit +$ +</verb></tscreen> + +By default, MythWeb uses an Apache <tt>.htaccess</tt> file to restrict +access to the website and to configure some variables. + +To create the password file for Apache (if your system doesn't already have +one), you could do something like this: +<tscreen><verb> +# cd /var/www +# htpasswd -c htpasswd mythtv +New password: +Re-type new password: +Adding password for user mythtv +</verb></tscreen> + +See the man page for <bf>htpasswd</bf> for more examples. + +To access the web page, open a web browser and use <bf>http://[name or ip +address]/mythweb/</bf> + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: Make sure that you have a trailing slash on the URL, +otherwise you will get a <tt>404 Page not Found</tt> error. +</caption> +</figure> +<sect1>Resetting the key binding table +<p>MythWeb allows you to configure which keys are bound to which actions +within MythTV. If you'd like to reset this back to the default, execute the +following command: +<tscreen><verb> +$ echo "delete from keybindings ;" | mysql -u mythtv -pmythtv mythconverg +</verb></tscreen> +<sect1>Resetting the theme. +<p>If you find yourself wedged into a theme that isn't working, open your +web browser and go to site: +<tt>http://mythweb_name_or_ip_address/mythweb/settings.php?RESET_THEME=yes</tt> +<sect>MythGallery. +<p>MythGallery is a photo and slideshow application. MythGallery is a +separate application, but it's dependent on MythTV being installed and +operational. +<sect1>Installation and prerequisites + +<p>MythGallery is a part of the <bf>mythplugins</bf> package. See <ref +id="mythplugins_" name="MythPlugins"> for instructions on downloading the +tarball. + +There are a number of transitions available, some requiring OpenGL +support. You will also need to install a TIFF library. Under Mandriva, you +would perform the following command: +<tscreen><verb> +# urpmi libtiff3-devel +</verb></tscreen> +Once you have satisfied the prerequisites for your distribution, install the application: +<tscreen><verb> +$ cd ~/mythplugins-0.21 +$ ./configure --disable-all --enable-opengl --enable-mythgallery +$ qmake mythplugins.pro +$ make +# su +# make install +# exit +$ +</verb></tscreen> +The configuration for MythGallery is accessed through the main Setup option +in mythfrontend. Make sure you set your pictures directory to wherever +you're storing your photos. + +The controls for MythGallery can be found in the README that comes with the +application. +<sect1>Using MythGallery +<p>When you first start MythGallery, you will see a thumbnail view of any +folders and pictures in the Gallery Directory you specified in setup. If +this is the first time you have accessed this directory, the thumbnails will +be generated on the fly. If the Gallery Dir is writable, these thumbnails +will be cached thus speeding up future access. On the left is a greyed-out +menu of options. + +Use the arrow keys to select a folder or picture to open/view with the +Select key, or use the Menu key to toggle access the menu on the left. The +menu options are as follows: +<itemize> +<item> Slideshow - Will cycle through all the pictures in the current folder. +The currently selected item must be a picture (not a folder) for this to +work. It does not currently traverse subfolders. +<item> Rotate CW - Rotate the current image 90 degrees in the clockwise +direction. This change persists if the current directory is writable. +<item> Rotate CCW - As above except the direction of rotation is counter(anti) +clockwise. +<item> Import - Import pictures into your Gallery Dir. This option is +described in the next section. +<item> Settings - Access the MythGallery settings screen. +</itemize> +<sect1>Importing Pictures +<p>The import path in the setup dialog is a colon separated list of +directories and/or executable files. When the import key is pressed, a new +directory (the destination directory) under the current directory will be +created and the import path will be searched. If the item in the import +path is a directory (the source directory), the contents of that directory +will be copied to the destination directory. If you would like the source +directory to be that of a removable device, it might be a good idea to use +autofs. See the automount howto at <url url="www.linuxdoc.org" +name="www.linuxdoc.org"> for info on how to get it working. + +If the item in the import path is an executable file, MythGallery will +attempt to execute it with the destination directory as its sole argument. +Be careful when using executable scripts that the script runs unattended +(doesn't need user intervention) and returns properly, otherwise it could +create the appearance of MythGallery hanging (e.g. running +<bf>smbclient</bf> and prompting for password). Also be sure that scripts +have executable permissions set. + +Here is an example script that a user may want to run +on import: +<tscreen><verb> +#!/bin/csh + +if ($#argv == 0) then + echo "Usage: $0 dest_dir" + exit +endif + +cd $argv[1] + +# get stuff over the network +wget http://www.somesite.dom/dir/file1.jpg +wget http://www.somesite.dom/dir/file2.jpg +wget http://www.somesite.dom/dir/file3.jpg + +# stuff that requires manual module loading and/or fs mounting +modprobe camera_module +mount /dev/camera /mnt/camera +cp /mnt/camera/* $argv[1] +umount /mnt/camera +rmmod camera_module + +# perform some processing +foreach pname (`ls *.jpg`) + jpegtran -flip vertical $pname > $pname.new + mv $pname.new $pname +end +</verb></tscreen> + +<sect>MythGame. +<!-- Install instructions by Hary Wilke (harywilke at yahoo.com --> +<p>MythGame can used as a frontend to start any emulator that your host OS +runs. This is an example of how to set up xmame on Linux. +<url url="http://www.mameworld.net/" name="http://www.mameworld.net/"> is +an excellent resource for all things mame. + +Installation overview: +<enum> +<item>Setup directory structure +<item>Download and install xmame +<item>Download and place extra files (artwork/catver.ini/etc..) +<item>Download and install MythGame plugin +<item>Setup xmame in MythGame +<item>Hints +</enum> +<sect1>Setup Directory Structure +<p>To keep things organized, create the following directories for <bf>xmame</bf> to use +in <tt>/usr/local/share/xmame</tt>: hiscore, roms, and snaps. + +<tscreen><verb> +$ mkdir -p /usr/local/share/xmame/{highscore,roms,snaps} +</verb></tscreen> + +<sect1>Download and Install xmame +<p><bf>NOTE</bf>: There may be pre-packaged versions of <bf>xmame</bf> +available for your distribution. Check <url +url="http://x.mame.net/download.html" +name="http://x.mame.net/download.html"> for the latest version. + +Download the source to <bf>xmame</bf> from <url +url="http://x.mame.net/download/xmame-0.103.tar.bz2" +name="http://x.mame.net/download/xmame-0.103.tar.bz2"> + +<tscreen><verb> +$ wget http://x.mame.net/download/xmame-0.103.tar.bz2 +$ tar -xjf xmame-0.103.tar.bz2 +$ cd xmame-0.103 +</verb></tscreen> + +Edit the Makefile with your favorite editor. Adjust the options as required for your system. +<tscreen><verb> +$ joe Makefile +</verb></tscreen> + +Then make and install xmame +<tscreen><verb> +$ make +$ su +(enter password) +# make install +# exit +</verb></tscreen> + +After <bf>mame</bf> has been installed, we need to create some defaults. +<tscreen><verb> +$ mkdir ~/.xmame +$ cp docs/xmamerc.dist ~/.xmame/xmamerc +</verb></tscreen> + +Because some ROMS work better with different display toolkits, or possibly +even older versions of xmame, it's convenient to keep all of your +<bf>xmame</bf> binaries and to rename them to include the version number. +MythGame allows you to match individual roms to preferred binaries. + +<tscreen><verb> +$ su +(enter password) +# mv /usr/local/bin/xmame.x11 /usr/local/bin/xmame-0.103.x11 +# exit +</verb></tscreen> + +<bf>NOTE</bf>: Depending on how you compiled <bf>xmame</bf>, you may have +<bf>xmame.X11</bf>, <bf>xmame.SDL</bf> or <bf>xmame.xgl</bf> based on what +display toolkit you used. Also, you may need to remove and recreate +<tt>xmamerc</tt> after upgrading since some of the default options may have +changed. + +Edit <tt>~/.xmame/xmamerc</tt> to include your paths. +<tscreen><verb> +### Fileio Related ### +rompath /usr/local/share/xmame/roms +snapshot_directory /usr/local/share/xmame/snaps +cheat_file /usr/local/share/xmame/cheat.dat +hiscore_file /usr/local/share/xmame/hiscore.dat +hiscore_directory /usr/local/share/xmame/hiscore +history_file /usr/local/share/xmame/history.dat +mameinfo_file /usr/local/share/xmame/mameinfo.dat +</verb></tscreen> + +Confirm that <bf>xmame</bf> works before running it inside MythTV. Place +your ROM in the <tt>/usr/local/share/xmame/roms</tt> directory you created +earlier. + +<bf>NOTE</bf>: There are three public domain ROM sets available at +<url url="http://www.mame.net/downmisc.html" name="http://www.mame.net/downmisc.html"> + +Launch <bf>xmame</bf> with your game of choice. In this example, we are using Gauntlet. +<tscreen><verb> +$ xmame gauntlet +</verb></tscreen> + +Some basic <bf>mame</bf> keyboard commands: +<tscreen><verb> +5 = Insert coin +1 = Player 1 start +arrow keys = movement +left control = button 1 +left alt = button 2 +SPACE = button 3 +ESC = exit +TAB - menu +~ to adjust Volume + < and > +</verb></tscreen> + +<sect1>Download extra files +<p>The following files allow you to add extra functionality. Place them +into <tt>/usr/local/share/xmame</tt> + +- <tt>catver.ini</tt> is a catalog of categories and versions of popular mame ROMs. +<p>Useful for keeping large libraries of ROMs organized. + +It may be downloaded from <url url="http://www.catver.com" +name="http://www.catver.com"> or <url url="http://www.mameworld.net/catlist" +name="http://www.mameworld.net/catlist"> + +- Screenshots aka "snaps" +<p>These may be downloaded from <url +url="http://www.classicgaming.com/mame32qa/" +name="http://www.classicgaming.com/mame32qa/"> + +Screenshots are displayed when you are browsing your ROMS in <bf>mythgame</bf>. +Unzip and place them in <tt>/usr/local/share/xmame/snaps</tt> + +- <tt>history.dat</tt> +<p>Download from <url url="http://www.arcade-history.com/" +name="http://www.arcade-history.com/"> +This file fills in a bit of background about each ROM. + +- <tt>hiscore.dat</tt> +<p>Download from <url url="http://www.mameworld.net/highscore/" +name="http://www.mameworld.net/highscore/"> + +- Cheats +<p>Download from <url url="http://cheat.retrogames.com/" +name="http://cheat.retrogames.com/"> + +<sect1>Download and Install MythGame. +<p><bf>MythGame</bf> is part of the mythplugins package. See the instructions +in the <ref id="DownloadAndCompile" name="Downloading and Compiling"> +section to obtain mythplugins. + +Switch to the mythplugins directory: +<tscreen><verb> +$ cd ~/mythplugins-0.21 +</verb></tscreen> + +Compile and install mythgame: +<tscreen><verb> +$ ./configure --disable-all --enable-mythgame +$ qmake mythplugins.pro +$ make +$ su +(enter password) +# make install +# exit +</verb></tscreen> + +<sect1>Setup xmame in MythGame +<p>Start <bf>mythfrontend</bf> and navigate to Utilities/Setup > Setup > Media +Settings > Game Settings > Game Players. Select <tt>(New Game Player)</tt>. + +To set up a new player for xmame enter the following: + +<tscreen><verb> +Player Name: xmame-0.103.x11 (Name by which you want your emulator or game called) +Type: xmame (This is used for display purposes only and does not affect the function of your system) +Command: xmame-0.103.x11 -vidmod 1 -fullscreen (Path and name of binary + any optional parameters) +Rom Path: /usr/local/share/xmame/roms (This tells MythGame what directories to scan for roms to be used with this emulator) +ScreenShots: /usr/local/share/xmame/snaps (This tells MythGame what directories to scan for snapshots to be used with these roms) +Working Directory: (Directory to change to before launching game or emulator. Blank in our case ignores this setting) +File Extensions: (List of all file extension to be used for this emulator. Blank menas any file under the Rom Path) +[] Allow games to span multiple roms/disks (will treat game.1.rom game.2.rom game.3.rom as one game) +</verb></tscreen> + +<sect1>Hints: +<p> +<itemize> +<item>Rom name before options: %s can be used as a standin for rom names on the command line. +<item>Multiple disk/rom games: %d1 %d2 etc can be used as standins for multiple disc games on the command line. +<item>Associating a rom with an emulator: Browse to the desired rom and press 'M' to enter the settings page for that rom. +<item>Assign a Game Favorite Status: Browse to the desired game and press "/". +</itemize> + +<sect>MythMusic. +<p>MythMusic has a number of prerequisites that must be satisfied before it +is operational. Depending on your distribution, some of these prerequisites can +be satisfied through the various package managers. If your distribution doesn't +offer pre-compiled versions of the software below, then follow the generic +instructions for manually compiling and installing the software. + +The prerequisites for MythMusic are: +<itemize> +<item>MAD +<item>taglib +<item>libogg and libvorbis +<item>FLAC +<item>libcdaudio +<item>CDParanoia +</itemize> + +<sect1>Manual installation of prerequisites +<p>These instructions are for distributions which don't have pre-compiled +versions of the software necessary to run MythTV. + +Download MAD from <url url="http://www.underbit.com/products/mad" +name="http://www.underbit.com/products/mad"> and install: + +<tscreen><verb> +$ tar -xzf mad-0.15.1b.tar.gz +$ cd mad-0.15.1b +$ ./configure +$ make +$ su +# make install +# exit +</verb></tscreen> + +Download TagLib from <url url="http://developer.kde.org/~wheeler/taglib.html" +name="http://developer.kde.org/~wheeler/taglib.html"> and install: + +<tscreen><verb> +$ tar -xzf taglib-1.4.tar.gz +$ cd taglib-1.4 +$ ./configure +$ make +$ su +# make install +# exit +</verb></tscreen> + +Download libogg and libvorbis from <url url="http://www.xiph.org/downloads" +name="http://www.xiph.org/downloads"> and install in a similar manner +to the above packages. + +Download FLAC from <url url="http://flac.sourceforge.net" +name="http://flac.sourceforge.net"> and install: +<tscreen><verb> +$ tar -xzf flac-1.1.2.tar.gz +$ cd flac-1.1.2 +$ ./configure +$ make +$ su +# make install +# exit +$ +</verb></tscreen> + +Download libcdaudio from <url name="http://libcdaudio.sourceforge.net" +url="http://sourceforge.net/project/showfiles.php?group_id=27134"> and +install: +<tscreen><verb> +$ tar -xzf libcdaudio-0.99.12p2.tar.gz +$ cd libcdaudio-0.99.12p2 +$ ./configure +$ make +$ su +# make install +# exit +$ +</verb></tscreen> + +Download cdparanoia from <url name="http://www.xiph.org/paranoia/down.html" +url="http://www.xiph.org/paranoia/download/cdparanoia-III-alpha9.8.src.tgz">. +<tscreen><verb> +$ tar -xzf cdparanoia-III-alpha9.8.src.tgz +$ cd cdparanoia-III-alpha9.8 +$ ./configure +$ make +$ su +# make install +# cd /usr/lib +# ln -sf libcdda_interface.so.0.9.8 libcdda_interface.so +# ln -sf libcdda_paranoia.so.0.9.8 libcdda_paranoia.so +# exit +$ +</verb></tscreen> + +<sect1>Mandriva +<p>Mandriva has a number of the prerequisites available on the +installation CD. Some of the software you're going to need will have to be +obtained from the "contrib" or "cooker" development repositories. +Applications downloaded from "cooker" come from the development branch, so +there may be issues with some software. It isn't recommended that you mix +cooker and release-level software. + +<p><bf>urpmi</bf> is the simplest tool for installation of packages from the +command line. The difficult part is the configuration, but this has been +made easier at the following website: <url +url="http://addmedia.linuxfornewbies.org/" +name="http://addmedia.linuxfornewbies.org/"> The website will allow +you to choose a mirror site and then present the command-line configuration +text for that mirror. You will most likely need to add a "Contrib" mirror +to your setup. Once you have done that, you can proceed. If <bf>urpmi</bf> +prompts you about other modules that need to be installed to satisfy +dependencies, say "Yes". + +<tscreen><verb> +# urpmi libmad0 libmad0-devel libflac4 libflac4-devel libcdaudio1 cdparanoia +# urpmi libcdda0 libcdda0-devel libvorbis0 libvorbis0-devel +# urpmi libcdaudio1-devel libid3tag0 libid3tag0-devel +</verb></tscreen> + +<sect2>Additional options with MythMusic +<p>Additional visualizations have been added to MythMusic. If you wish to +use these, there are some prerequisites you must install prior to compiling. + +<itemize> +<item>fftw +<item>OpenGL +<item>SDL +</itemize> + +<tt>fftw</tt> may be obtained from <url url="http://www.fftw.org/" +name="http://www.fftw.org/">. In Mandriva it may be installed by +typing: +<tscreen><verb> +# urpmi libfftw2 libfftw2-devel +</verb></tscreen> + +<tt>OpenGL</tt> should be installed on practically all distributions. +However, you will need the devel module. In Mandriva it may be +installed by typing: +<tscreen><verb> +# urpmi libMesaGLU1-devel +</verb></tscreen> + +<tt>SDL</tt> may be obtained from <url url="http://www.libsdl.org" +name="http://www.libsdl.org">. In Mandriva it may be installed by +typing: +<tscreen><verb> +# urpmi libSDL1.2 libSDL1.2-devel +</verb></tscreen> + +<sect1>Red Hat Linux 9 +<p>Red Hat provides packages for several of the prerequisites, making +installation very simple. Of the prerequisites, Red Hat provides +packages for Vorbis, cdparanoia, SDL, and OpenGL (which you probably +already have installed). To install these all at once, simply type (all on +the same line): +<tscreen><verb> +$ up2date --solvedeps libvorbis libvorbis-devel vorbis-tools cdparanoia-devel cdparanoia-libs cdparanoia SDL-devel SDL +</verb></tscreen> + +If you get the following message: "None of the packages you requested +were found, or they are already updated" it probably means you already +have all of those packages installed. + +You must install the remaining packages, (MAD, FLAC, libcdaudio and +optionally fftw) manually following the installation directions above. When +installing fftw do not use the rpm package offered on the website because it +will cause an error, so use the source package instead. + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: you can use the instructions given at the <ref id="atrpms" +name="automated installation section"> to install all of MythMusic in one +step. +</caption> +</figure> +<sect1>Compiling MythMusic +<p>Once all the prerequisites have been installed, you can proceed with +compiling MythMusic. + +<tscreen><verb> +$ cd ~/mythplugins-0.21 +$ ./configure --disable-all --enable-mythmusic --enable-fftw --enable-sdl --enable-aac +$ qmake mythplugins.pro +$ make +$ su +# make install +# exit +</verb></tscreen> + +<sect1>Configuring MythMusic +<p>Configuration of MythMusic occurs in two places. The main mythfrontend +Setup is for global MythMusic configuration. Go to the +Setup/MythMusic/General Setup screen and adjust it for your particular +configuration. + +The second configuration screen is within the MythMusic program and will +allow you rescan your music library, etc. + +Here's some explanation about the Ignore_ID3 and The NonID3FileNameFormat: + +If Ignore_ID3 is set to TRUE, MythMusic will try to determine the +Genre, Artist, Album, Track Number, and Title from the filename of the +mp3 file. The NonID3FileNameFormat variable should be set to the +directory/file format where the mp3 files are stored. For instance, I +store mine in the above shown Genre/Artist/Album/Track format. MythMusic +will then use this information to fill in the proper fields when it +populates the musicmetadata table rather than searching for an ID3 tag in +the mp3 file. + +The files can be laid out in any format, such as: + +Genre/Artist/Album/Title +Artist/Genre/Album/Title +Artist/Album/Title (with Genre left as Unknown) + +The track number is optional but can be specified with the title by using +the TRACK_TITLE keyword instead of TITLE. If TRACK_TITLE is used, +then the filename can have a space, hyphen, or underscore separating the +track number from the track title. Keywords are case insensitive, so if +you specify GENRE it's the same as Genre in the format field. + +The Ignore_ID3 option does not disable the code that determines the track +length, just the portion that tries to read ID3 info. + +<sect1>Using MythMusic +<p>MythMusic is fairly simple to use. It is recommended that you insert the +CD before selecting "Import CD". You should also ensure that your system +doesn't try to automount the CD and begin playing it automatically. + +<!-- +Next stuff is from a message by jasonmiller [jasonmiller@micron.com] +with additional comments by Thor +--> +Here's some information on playlist management: + +Q: How do I create a new playlist? +A: Using the MythMusic "Select Music" menu option, setup the playlist as you +normally would by adding songs or other playlists as needed. When you are +ready to save the new playlist, highlight "Active Play Queue" at the bottom +of the selection tree and hit the "i" key. This will pop up a menu allowing +you to name and save the new playlist. You can also hit Enter to bring up +the popup on the Active Play Queue. This does not work on the playlists +above, as Enter is obviously bound to checking/unchecking the boxes. Any +number (i.e. keypad on remote) will also bring up the menu in both cases. + +Q: How do I enter the playlist name in the text field without a keyboard? +A: Use the keypad number keys (bound to your remote) to select letters +quasi-cell phone style. Keys 2-9 work pretty much like any cell phone text +entry. 1 cycles through a few special characters, delete, and space. 0 is +like a CAPS LOCK. Hard to describe, fairly easy to use. You will soon be +able to specify the cycle timing in a Setup screen. You can type fairly +quickly through a combination of jumping around the number keys AND hitting +a non-number key (right arrow is particularly good for this) to force the +current character. + +Q: How do I edit a playlist? +A: Highlight the playlist in the selection tree and hit the "i" key then +select "Move to Active Play Queue" in the popup. You can now modify the +"Active Play Queue" like normal, adding songs and playlists by selecting +them from the song tree. When you are done, highlight the "Active Play +Queue" in the selection tree and hit the "i" key then select "Save Back to +Playlist Tree". And whatever you were editing as your Active Queue before +you moved an existing playlist "on top" of Active reappears. Think of Active +has having a push on, pop off capability, but with a depth of only 1. + +Q: How do I delete an item from a playlist? +A: Highlight the item in the selection tree and hit the "d" key. + +Q: How do I rearrange the songs in my playlist? +A: Highlight a song and hit the "space" bar, the song will now have pair of +red arrows in front of it. Use the up and down arrow keys to move it around +in the playlist. When you have it where you want it, hit the "space" bar +again. + +Q: How do I delete a playlist? +A: Highlight the playlist in the selection tree and hit the "i" key then +select "Delete this Playlist" from the popup. + +<sect1>Troubleshooting MythMusic +<p>You may run into errors when running MythMusic. +<sect2>When I run MythMusic and try and look up a CD, I get an error message +<p>The full text of the message will say: + +databasebox.o: Couldn't find your CD. It may not be in the freedb database. +More likely, however, is that you need to delete ~/.cddb and ~/.cdserverrc +and restart mythmusic. Have a nice day. + +If you get this message, you should go to the home directory of whatever +user MythMusic is running as and type: +<tscreen><verb> +rm .cdserverrc +rm -rf .cddb/ +</verb></tscreen> + +These files aren't automatically deleted because of a conscious design +decision by the author that programs that automatically delete things are +bad. + +The files are used to locally cache CD lookups. If you are re-inserting +CDs, your machine will not actually have to go out to the Internet to +determine what is on them. However, the URL used to access the freedb +database has recently changed, so the stale information in the files from +previous runs of MythMusic would cause the error above. Once the files have +been deleted the stale information will be gone and your local database +will be rebuilt as you use CDs. + +<sect>MythWeather. +<p> +MythWeather is a part of the <bf>mythplugins</bf> package. See <ref +id="mythplugins_" name="MythPlugins"> for instructions on downloading the +tarball. + +<tscreen><verb> +$ cd ~/mythplugins-0.21 +$ ./configure --disable-all --enable-mythweather +$ qmake mythplugins.pro +$ make +$ su +# make install +# exit +</verb></tscreen> + +MythWeather uses MSNBC.com as its source for weather data and weather.com +for its radar image. + +These are the keyboard commands for MythWeather: +<tscreen><verb> +Left Key Goes back one page, and extends the time spent + on the page you are on. +Right Key Goes forward one page, see above. +Space Pause, wait on the current page until space is hit + again. +Numeric Keys You can check other weather by keying in other ZIP codes. +Enter Key Switch between Celsius and Fahrenheit. Can also + be used a way to force a data update. +"m" Key Resets the location to the database default, then updates the data. +"i" Enter / Save settings +ESC Exit the settings screen without saving / Exit the program +</verb></tscreen> + +MythWeather also has an "Aggressiveness" setting. This affects how long +MythWeather waits for data from the msnbc.com website before timing out. If +you are on a slow connection, or have a slow DNS, or MythWeather just +doesn't seem to be working and you've already tried everything else, then +try increasing the aggressiveness level parameter. This parameter is +inverse; a higher number actually means that MythWeather will be less +aggressive, and will therefore wait longer before timing out. + +MythWeather will print debugging information on the terminal. If you wish +to see additional debugging information while MythWeather is running, run +mythweather from the command line with as <tt>mythweather --debug</tt> + +You may also force mythweather to re-run the configuration by starting it on +the command line as <tt>mythweather --configure</tt>. These two options are +mutually exclusive. + +<sect>MythVideo. +<p>MythVideo is a part of the <bf>mythplugins</bf> package. See <ref +id="mythplugins_" name="MythPlugins"> for instructions on downloading the +tarball. + +MythVideo will allow you to use an external program to watch media files +that are not directly supported by MythTV. + +<tscreen><verb> +$ cd ~/mythplugins-0.21 +$ ./configure --disable-all --enable-mythvideo +$ qmake mythplugins.pro +$ make +$ su +# make install +# exit +</verb></tscreen> + +See MythVideo's <tt>README</tt> file for additional information. + +<sect>MythDVD. +<p>MythDVD is a part of the <bf>mythplugins</bf> package. See <ref +id="mythplugins_" name="MythPlugins"> for instructions on downloading the +tarball. MythDVD is an application which rips DVDs and makes them available for +use with MythVideo. You may also transcode the DVD content from MPEG-2 to +other formats which should greatly reduce the amount of space the DVD +material takes up on your hard drive. + +MythDVD has a number of prerequisites to enable transcoding functionality. +If you only wish to play DVDs rather than convert them to something like +MPEG-4 or xvid you may skip the prerequisite installation step. + +<sect1>Manual Compilation of Prerequisites +<p> +<sect1>Pre-compiled binaries +<p>Mandriva users may install the prerequisites this way: +<tscreen><verb> +# urpmi libdvdread3 libdvdread3-devel a52dec liba52dec-devel +# urpmi mplayer ogle xine +</verb></tscreen> +Assuming that you've added a PLF mirror, you may also load the rest of the +prerequisites using the following command: +<tscreen><verb> +# urpmi xvid xvid-devel fame libfame0.9-devel transcode libdvdcss +</verb></tscreen> + +In the example below, we have enabled support for transcoding and for VCD +playing. You may remove these options if you don't need them. +<tscreen><verb> +$ cd ~/mythplugins-0.20 +$ ./configure --disable-all --enable-mythdvd --enable-transcode --enable-vcd +$ qmake mythplugins.pro +$ make +$ su +# make install +</verb></tscreen> +<sect1>Running the Myth Transcoding Daemon +<p>Transcoding ("ripping") a DVD requires you to run the Myth Transcoding +Daemon (mtd). To ensure that mtd is configured correctly, you should first +test it at the command line. +<tscreen><verb> +$ mtd -n +</verb></tscreen> +The last line of text should show something like: +<tscreen><verb> +mtd is listening on port 2342 +</verb></tscreen> +This indicates that mtd is ready for use. Once you've successfully +tested mtd in the foreground, type <bf>CTRL-C</bf> to stop mtd. You may +then start it as a background (daemon) process. +<tscreen><verb> +$ mtd -d +</verb></tscreen> + +Running mtd as a daemon will allow you to automatically start it during the +boot process. For example, you may add <tt>mtd -d</tt> to your +<tt>rc.local</tt> file, or you can adjust the script/steps outlined in the +section called <ref id="mythbackend_autostart" name="Automatically starting +mythbackend at system boot time"> to start mtd instead of mythbackend. + +<sect>MythNews. +<p>MythNews is a part of the <bf>mythplugins</bf> package. See <ref +id="mythplugins_" name="MythPlugins"> for instructions on downloading the +tarball. MythNews is a RSS reader. +<tscreen><verb> +$ cd ~/mythplugins-0.21 +$ ./configure --disable-all --enable-mythnews +$ qmake mythplugins.pro +$ make +$ su +# make install +</verb></tscreen> + +<sect>Troubleshooting. +<sect1>Compiling +<sect2>Compile errors +<p>Some compile errors are worse than others. If you get an error that +doesn't abort the compilation, and says something like: +<tscreen><verb> +cc1plus: warning: changing search order for system directory +"/usr/local/include" +cc1plus: warning: as it has already been specified as a non-system +directory +</verb></tscreen> +then it shouldn't be a problem. + +If you get an error like <tt>/usr/bin/ld: cannot find -lXext</tt>, the +compiler is telling you that you don't have XFree86-devel installed, or that +your distribution hasn't set it up correctly. This needs to be fixed before +MythTV will compile. + +<sect2>make: *** No rule to make target /usr/lib/qt3/mkspecs/default/qmake.conf', needed by Makefile'. Stop. +<label id="mkspecs_error"> +<p>This error happens when there's a missing link in the +<tt>/usr/lib/qt3/mkspecs</tt> directory. There are two ways to fix this +error: + +1. Create the link manually: +<tscreen><verb> +$ su +# cd /usr/lib/qt3/mkspecs +# ln -sf linux-g++ default +</verb></tscreen> +and then restart the compile, + +or + +2. Run <bf>qmake mythtv.pro</bf> in the mythtv directory. Rerunning +<bf>qmake</bf> will create a new Makefile for you, however this still +doesn't fix the root cause of the issue, which is that your distribution +didn't create the symlink for you when the qt3 package was installed. The +first choice is the better solution. + +<sect2>make: *** No rule to make target /mkspecs/default/qmake.conf', needed by Makefile'. Stop. +<p>You didn't set your <tt>QTDIR</tt>. Re-read the section on <ref +id="Setting_up_paths" name="Setting up paths">. + +<sect2>Internal Segmentation Fault. +<p>This is most likely to be caused by an overheating processor rather than +an actual programming fault within gcc. + +<sect1>Debugging <label id="debugging"> +<sect2>MythTV segfaults +<sect2>MythTV isn't doing anything +<sect2>Debugging with GDB +<p>Without details, the developers will not be able to determine if you have +discovered a genuine code-bug, or if the problem is with your system. In +order to determine what's going on, you must recompile MythTV with debugging +support and run MythTV within <bf>gdb</bf>, the GNU debugger. +Note that, on OS X, some data is provided without going through these steps. +See ~/Library/Logs/CrashReporter/MythFrontend.crash.log + +Re-run the <bf>configure</bf> script and add <tt>--compile-type=debug</tt> +to any previous configuration options you may have used. Check the +<tt>config.log</tt> file if you have forgotten. + +Now, you need to clear out the old versions of the software to ensure that +you're running with the debugging code, then compile and install. +<tscreen><verb> +$ make distclean +$ ./configure --compile-type=debug +$ make +$ su +# make install +# exit +</verb></tscreen> + +At this point, you now have debug-enabled software ready. To make sure that +you don't forget to type a command required for debugging, it's best to +setup a <tt>gdbcommands</tt> file. This will be read by <bf>gdb</bf> when it's +started. +Put the following into <tt>gdbcommands</tt> in your home directory: + +<tscreen><verb> +handle SIGPIPE nostop noprint +handle SIG33 nostop noprint +set logging on +set pagination off +set args -l myth.log -v record,channel,siparser +run +thread apply all bt full +set logging off +</verb></tscreen> + +Let's assume that the problem you're having is in <bf>mythbackend</bf>. + +<tscreen><verb> +$ gdb mythbackend -x gdbcommands +GNU gdb 6.3-debian +Copyright 2004 Free Software Foundation, Inc. +GDB is free software, covered by the GNU General Public License, and you are +welcome to change it and/or distribute copies of it under certain conditions. +Type "show copying" to see the conditions. +There is absolutely no warranty for GDB. Type "show warranty" for details. +This GDB was configured as "i386-linux".Using host libthread_db library "/lib/tls/libthread_db.so.1". +[Thread debugging using libthread_db enabled] +</verb></tscreen> + +<bf>gdb</bf> will automatically read the commands that you've placed in the +<tt>gdbcommands</tt> file and begin running the program you specified on the +command line. + +If the program appears to be locked up, press CTRL-C to create the backtrace +file. + +All of the output from <tt>gdb.txt</tt> should be posted to the mythtv-dev +mailing list, along with the steps you followed to get the program to crash. + +<bf>NOTE</bf>: If you're trimming the <tt>gdb.txt</tt> file to remove +extraneous information from the beginning of the file, make sure you include +at least 10 lines <em>prior</em> to the point where the backtrace actually +begins. This ensures that there is some context to the backtrace, and so +that it's possible to see what exactly caused the segfault. + +<bf>gdb</bf> has a number of options, read the <tt>man</tt> page for more +information. + +Using the <tt>gdbcommands</tt> file in conjunction with a <bf>while</bf> loop +will ensure that <bf>gdb</bf> creates a trace file and then restarts: + +<tscreen><verb> +$ while true; do date >> gdb.txt; gdb mythbackend -x gdbcommands; done; +</verb></tscreen> + +<bf>NOTE</bf>: To exit this loop you will need to kill the while loop. + +If you're trying to troubleshoot and you can't get back to the <bf>gdb</bf> window +for some reason, it may be easier to use two systems or to start +mythfrontend from the text console. + +If you're going to troubleshoot from a remote system, connect to the machine +that you're going to test using <bf/ssh</> or <bf>telnet</bf>. Next, type +<tt>$ export DISPLAY=localhost:0.0</tt>. This will allow the graphics to be +displayed on the X console (usually ALT-F6 or ALT-F7) and still give you +output and control of <bf>mythfrontend</bf>, either from the <bf>ssh</bf> +session, or by switching back to the text console by pressing CTRL-ALT-F1. +You can now continue troubleshooting using <bf>gdb</bf> as detailed in the +instructions. + +<sect2>MythTV is crashing your system +<p>When run as a non-privileged user, MythTV <em>can not</em> crash your +system. If your system is crashing when you run MythTV, then you have some +issue with the drivers for your capture card or other hardware, or the CPU +fan has fallen off/broken and your system is overheating when asked to +perform a CPU intensive task like encoding video. + +If you are running as root, which is <bf>strongly discouraged</bf>, it is +possible that your system may crash due to the real-time thread using all +available CPU. You will not be able to interrupt the process, so for all +intents and purposes your computer will have crashed. + +<sect1>Installing +<sect2>When trying to run mythtv-setup, you get an error like this: +"mythtv-setup: error while loading shared libraries:" +<p>You didn't add <tt>/usr/local/lib</tt> to <tt>/etc/ld.so.conf</tt>. See the +section on modifying <ref id="modifying_ld.so.conf" name="/etc/ld.so.conf">. + +<sect1>Using +<sect2>No programs are displayed in "Watch Recordings" +<p>This situation occurs most often with a system that acts as a frontend +and a slave backend. MythTV supports system-global and user-specific +configuration files, with user-configuration files taking precedence. 99% +of the configuration for MythTV is in the MySQL database, but MythTV still +needs to know where the MySQL server is running. This information is in the +<tt>mysql.txt</tt> file. By default, it will be installed to +<tt>/usr/local/share/mythtv</tt>, but a copy placed into <tt>~/.mythtv</tt> +will over-ride the global configuration. + +You must ensure that there aren't multiple, conflicting versions of this +file on your system! +<tscreen><verb> +$ locate mysql.txt +/usr/local/share/mythtv/mysql.txt +/home/mythtv/.mythtv/mysql.txt +$ +</verb></tscreen> + +As you can see, in this example there are two <tt>mysql.txt</tt> files. If +they are not identical, then there may be unintended consequences. + +You may also see this error if you completely fill the <tt>/var</tt> +partition. The most likely <em>mythtv-related</em> reason for this is an +overly large mythbackend or mythfrontend log file in <tt>/var/log</tt>. If +you have logging enabled for the backend, and myth runs for weeks at a time, +this may creep up and surprise you. Note that many system processes also +write to <tt>/var</tt> and the system may not boot if it is unable to write +to <tt>/var</tt> due to a full partition. + +<sect2>MySQL not connecting correctly +<p>Your <bf>MySQL</bf> installation may have networking turned off. +Check that <tt>/etc/mysql/my.cnf</tt> <em>does not</em> contain +<tt>skip-networking</tt>. If it does, remove it. Also verify that +<tt>bind-address</tt> is set to your IP address instead of +<tt>127.0.0.1</tt>. If you change either of these items, restart +<bf>MySQL</bf>. + +<sect2>MySQL database is corrupt +<p>If you have reason to believe that your MySQL database is corrupt, +execute the following commands to attempt to repair it. + +<bf>NOTE</bf>: Ensure that there are no programs accessing the database +while you attempt to repair it. Make sure that all backend and frontend +programs have exited. + +<tt>mysqlcheck -r -umythtv -p<password> mythconverg</tt> + +<sect2>Using a MPEG-2 encoder card and the video appears "jittery" +<sect2>Using a MPEG-2 encoder card and the video is jumping up and down +<p>This is a different problem than the one discussed in the previous +section. Currently, the ivtv driver or firmware appear to have some issues +if the vertical capture resolution is not the full screen height. If you +are having a jitter problem then ensure that you are capturing either 480 +lines (for NTSC) or 576 lines (for PAL). The default capture profiles may +need to be edited for your setup. Go to Settings->TV Settings->Recording +Profiles and adjust the <bf>Default</bf> and <bf>Live TV</bf> options to +480 or 576 from their defaults. + +<sect2>Screen goes blank but returns when mouse is moved or keyboard is used +<p>This is due to DPMS, the Display Power Management System, which is used +to save power by turning off your monitor when the system decides that it's +not being used or due to a screensaver that has defaulted to a blank screen. +MythTV now has DPMS support built-in, and should intelligently handle the +screen. Continue reading if you wish to override DPMS and force it off. + +Since it's likely that watching TV will not generate keyboard or mouse +events for a time, you need to turn off DPMS and the screensaver. There are +a few ways to do this. You may also need to check your BIOS for power +saving modes and disable screen blanking there as well. + +Edit your <tt>/etc/X11/XF86Config-4</tt> or <tt>/etc/X11/xorg.conf</tt> +file, and look for: +<tscreen><verb> +Section "ServerFlags" + #DontZap # disable <Ctrl><Alt><BS> (server abort) + #DontZoom # disable <Ctrl><Alt><KP_+>/<KP_-> (resolution switching) + AllowMouseOpenFail # allows the server to start up even if the mouse doesn't work + + Option "blank time" "0" + Option "standby time" "0" + Option "suspend time" "0" + Option "off time" "0" + Option "NoPM" "1" +EndSection +</verb></tscreen> + +Also, look for: +<tscreen><verb> +Section "Device" + Identifier "device1" + VendorName "nVidia Corporation" + BoardName "NVIDIA GeForce 256 (generic)" + Driver "nv" + Option "DPMS" +EndSection +</verb></tscreen> + +In this case, you would need to either delete the <tt>Option "DPMS"</tt> +line, or change it to <tt># Option "DPMS"</tt> to comment it out. The next +time you start XFree this change will take effect. + +Finally, check: +<tscreen><verb> +Section "Monitor" + Identifier "monitor1" + VendorName "Plug'n Play" + HorizSync 30-85 + VertRefresh 50-160 + + # Sony Vaio C1(X,XS,VE,VN)? + # 1024x480 @ 85.6 Hz, 48 kHz hsync + ModeLine "1024x480" 65.00 1024 1032 1176 1344 480 488 494 563 -hsync -vsync + + # TV fullscreen mode or DVD fullscreen output. + # 768x576 @ 79 Hz, 50 kHz hsync + ModeLine "768x576" 50.00 768 832 846 1000 576 590 595 630 + + # 768x576 @ 100 Hz, 61.6 kHz hsync + ModeLine "768x576" 63.07 768 800 960 1024 576 578 590 616 +EndSection +</verb></tscreen> + +Ensure that there isn't an <tt>Option "DPMS"</tt> in the Monitor +configuration. + +You can also turn off DPMS from the Command Line, but this will not survive +a reboot. +<tscreen><verb> +$ xset -dpms +</verb></tscreen> + +Using <tt>xset +dpms</tt> will turn it back on. + +Another technique to try, which will turn off the screensaver: +<tscreen><verb> +$ xset s off +</verb></tscreen> +You may also combine the command to turn off DPMS and the screensaver: +<tscreen><verb> +$ xset -dpms s off +</verb></tscreen> + +Finally, depending on your distribution, you may be able to turn it off from +within the control panel. +<sect1>Miscellaneous +<sect2>mythfilldatabase failing +<p>If mythfilldatabase suddenly appears to be failing, there are at least +two things to check. + +First, if you are in North America, ensure that your DataDirect subscription +is still valid, otherwise, check to see what version of XMLTV you're +running and that it's the latest version. + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: It is highly recommended that you run the latest +version of XMLTV available. Your listings provider may have made changes +which negatively impact XMLTV. +</caption> +</figure> + +<sect2>Fast CPU, choppy or jittery video <label id="Setting_DMA"> +<p>First, you should check that your kernel has been enabled for DMA: +<tscreen><verb> +[mythtv@pvr mythtv]$ dmesg |grep DMA + ide0: BM-DMA at 0xd800-0xd807, BIOS settings: hda:DMA, hdb:DMA + ide1: BM-DMA at 0xd808-0xd80f, BIOS settings: hdc:DMA, hdd:pio +hda: 156301488 sectors (80026 MB) w/2048KiB Cache, CHS=9729/255/63, UDMA(33) +hdb: 80043264 sectors (40982 MB) w/2048KiB Cache, CHS=4982/255/63, UDMA(33) +</verb></tscreen> + +From the listing above, you can see that hda, hdb and hdc are set for DMA, +and hdd is set for pio. If your kernel is not reporting DMA being enabled, +you may need to recompile your kernel. Check your motherboard's chipset +(look in the "ATA/IDE/MFM/RLL support" section in "make menuconfig") for more +information. + +Next, check that the hard drive has DMA enabled. Use the <bf>hdparm</bf> +program to check and enable DMA. +<tscreen><verb> +# hdparm -d /dev/hd? +</verb></tscreen> will tell you the DMA status for your hard drives. If you run +<bf>hdparm</bf> with the <tt>-d1</tt> parameter, it will turn DMA on. + +<!-- Next section adopted from a post by Dwaine Garden +dwainegarden@rogers.com to the mailing list. --> + +You may also setup your PC to do this at boot time, either by adding the +command to your <tt>/etc/rc.local</tt> file, or by adding files to +/etc/sysconfig. + +On Mandriva and other distributions, if you install <bf>hdparm</bf> from an RPM you +will most likely get a <tt>/etc/sysconfig/harddisks</tt> file installed. +This file will be parsed by the <tt>/etc/rc.sysinit</tt> script. If you use +the default <tt>harddisks</tt> file, your changes will affect all IDE devices +(including CD ROMs). If you wish to use different parameters for various +devices, rename and/or copy the file to <tt>harddiskhda</tt>, +<tt>harddiskhdb</tt>, etc. Edit the file to your liking and on the next +reboot your setting will be preserved. + +<sect2>Frontend appears to be slow at jumping / seeking. +<sect2>On-screen Display shows incorrect program length. +<p>This may occur when MythTV doesn't have an accurate seek table. Run +<bf>mythcommflag --rebuild</bf> + +<sect2>Troubleshooting audio <label id="Troubleshooting_Audio"> +<!-- By Bruce Markey --> +<p> +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: the following instructions do not apply to PVR-250/350 +encoders; the MPEG-2 file will have the audio embedded in the stream so it +is not accessible using <tt>/dev/dsp</tt>. +</caption> +</figure> + +Audio appears to be one of the bigger issues that users run into on the +mailing list. If the audio isn't configured correctly, then MythTV will +often appear to hang, when in fact it is trying to manipulate the audio +subsystem and failing. You may or may not receive error messages indicating +that the source of the error is the audio subsystem. + +You can not use <bf>xawtv</bf> to determine if your audio is working +correctly, since <bf>xawtv</bf> is simply using the analog sound patched +through line-in to line-out. It doesn't need to digitize the sound unless +you are using the recording function. + +A better test to verify that sound will work for MythTV (and recording with +<bf>xawtv</bf> for that matter) is to startup <bf>xawtv</bf>, mute the +line-in then run <tt>aplay /dev/dsp</tt>. You should hear the recorded audio +slightly delayed behind the real-time video. You should see messages about +"underrun". These can be ignored but they do confirm that the driver is +loaded and there is an active device. Once this test succeeds, MythTV +should work correctly because it writes to and read from /dev/dsp in +the same way that <bf>aplay</bf> does. + +To record audio along with video the audio signal must be digitized by a DSP +so that the audio data can be stored in a file. On playback, the audio data +is written to /dev/dsp and converted back to an analog signal. This analog +signal should then be sent to your speakers. Here is what is needed in +<bf>alsamixer</bf>. If you are using an ALSA version after 1.0.6, use +<bf>alsamixer -V all</bf>: + +CAPTUR source - the analog source to be sent to the DSP. This should be set +to the input source from the tuner card to the sound card. In most cases +this is Line but this could also be Aux, CD, Mic, etc., depending on how you +connect the input cable. This source should be muted to prevent patching +through the analog sound. The volume of this source will not affect the +record level. + +Capture mixer - this sets the level for the analog to digital recording. +While a volume of 100% is recommended for testing, distortion may occur. +Lowering this level to 75% to 85% may result in better audio quality. +"Capture" should be marked as the CAPTUR destination. + +PCM mixer - this sets the level for the digital to analog playback. While a +volume of 100% is recommended for testing, distortion may occur. Lowering +this level to 75% to 85% may result in better audio quality. + +Master mixer - sets the level for the analog signal sent to line-out or the +speakers. + +You may also want to ensure that <tt>/dev/dsp</tt> , or whatever device file +is being used, hasn't already been grabbed by another process, like +<bf>esd</bf> or <bf>artsd</bf>. If the device file isn't available, then +MythTV won't work. You may wish to run <bf>configure</bf> and enable +support for these. + +If you wish to see what application is grabbing a resource, you can use the +<tt>fuser</tt> command: +<tscreen><verb> +# fuser -v /dev/dsp +</verb></tscreen> + +To disable aRts in KDE, go to KDE->Control Center->Sound->Sound System and +uncheck the "Start aRts soundserver on KDE startup" box. Run <tt># killall +artsd</tt> from the command line to stop the artsd program. + +If you're using multiple sound cards and multiple tuners, use <tt>alsamixer +-c 1</tt> to work with the second sound card. The first card is #0, the +second card is #1, etc. + +<sect2>Mythbackend reports that your card is not reporting full duplex capabilities +<sect2>The mythbackend program told me to look at this section +<p>mythbackend does a check to see if your sound device is capable of full +duplex operation. If it's not, it's most likely that you're going to run +into issues when you try to record and play sound at the same time. If your +backend is a separate machine than your frontend, then there's no problem, +since you're only going to be doing one thing at a time with the card. +Likewise, if you're running the frontend and backend on the same machine, +but you're using btaudio or a hardware encoder card such as the Hauppauge +PVR-250, DVB cards or HDTV capture cards as your recording source and you're +only using the playback function of your sound card, then you also shouldn't +have an issue, since the sound card isn't being asked to perform two +functions at once. + +If you can't get your sound card to go full-duplex and need it to, then check +your distribution for updated sound drivers. If your sound card is not +capable of full-duplex operation, either because the drivers don't support +it, or it has been designed that way, then you're pretty much out of luck +and will either need to purchase a new sound card, or will need to get +btaudio <ref id="btaudio" name="operational">. + +<sect2>My remote doesn't work / works sometimes and not others / "ghost" keypresses +<p>This can be due to a number of factors. The simplest case is the +"ghost" keypresses. For me, it was due to compact fluorescent lights in +the same room as the IR receiver, which the receiver was picking up as +keypresses. Once the lights were switched to incandescent bulbs, the ghost +went away. + +You may have an issue with <bf>lirc</bf> misinterpreting IR commands from a +different remote. I also have an issue where the TiVo "Peanut" remote will +eventually cause <bf>lircd</bf> to stop responding; even though <bf>lircd</bf> +is configured for the Pinnacle Systems remote, the TiVo remote IR patterns +are being seen by the IR receiver. + +If your remote has been properly configured, and <bf>irw</bf> and +<bf>irxevent</bf> are working correctly, then it's highly likely that your +window manager is not giving focus correctly to the various Myth programs as +they run. The following window managers are known to work correctly: + +<itemize> +<item>fvwm +<item>blackbox (using "Sloppy Focus" and "Focus New Windows") +</itemize> + +<bf>NOTE</bf>: You do not need to use <bf>irxevent</bf> if you are using +MythTV's native LIRC support, so the window manager focus issue does not +apply in that case. + +<sect2>Where's "canada-cable"? +<sect2>Channels are off by one +<p>There is no such thing as "Canada Cable"; Canada uses the same +frequencies as the United States. "Canada Cable" was a hack that some +people used when they would discover that their channels were off-by-one, +i.e. when tuning to channel 42, they might get channel 41 or 43. This is +actually due to the tuner on the video capture device being mis-detected. +You must manually specify the tuner type in your <tt>/etc/modules.conf</tt>. +See the video4linux mailing list (<url +url="https://listman.redhat.com/mailman/listinfo/video4linux-list" +name="https://listman.redhat.com/mailman/listinfo/video4linux-list">) for +more information. + +<sect2>Mythweb is showing a db_open error when I connect to it +<!-- Fix by Chris Ripp [chris@ripp.net] post to mailing list --> +<p>Find your <tt>php.ini</tt> file. Make sure you've got a line in it like this: + +<tt>extension=mysql.so</tt> + +Restart <bf>apache</bf> for it to take effect. + +<sect2>Mouse pointer disappears when placed over the MythTV windows +<p>This is the intended behavior. The MythTV interface is meant for use +with a remote control or a keyboard. + +<sect2>What does "strange error flushing buffer" mean on the console? +<p>Nothing, really. It's just lame (the mp3 encoder) complaining for some +obscure reason. This seems to be fixed in more recent versions of the +libmp3lame library. + +<sect2>Can't change the channel when watching Live TV. +<p>Something's wrong with your program database. Did mythfilldatabase run +with no major errors? Or, MythTV may not have permissions to the +appropriate video4linux devices. See the section titled <ref id="devperms" +name="Device Permissions"> for an example. + +<sect2>Screen goes black when you try to play something +<p>MythTV prints error and status messages to the shell that was used to +start the application. If nothing seems to be happening when you try to +view a program, try switching back to the shell and look for error messages +there, or, if you're running from a startup script, check the log file. + +<sect2>Poor performance with NVidia cards and XvMC +<p>XvMC is a NVidia driver feature which is supposed to help with decoding +video. Users have reported that rather than speeding up their video it +appears to be doing the opposite. You may want to check that your color +depth is set for 24bpp. + +<sect2>Computer is loading a media player application when you insert a CD or DVD +<p>You need to disable any sort of auto-running media player in your +environment, otherwise MythDVD or MythMusic will not be able to work +properly. + +In KDE, you may want to perform the following: +<tscreen><verb> +$ rm ~/.kde/Autostart/Autorun.desktop +</verb></tscreen> +<sect>Miscellaneous. +<sect1>I'd like to watch the files without using MythTV / I'd like to convert the files to some other format +<p>First, check if the <bf>mytharchive</bf> plugin does what you want. If not, then +read on: + +MythTV comes with a utility called <bf>mythtranscode</bf> which can +decode nuv files into raw format for use with other applications. This +command-line utility was not designed to be used by the end-user, but +instead to be called by other applications or scripts. Programs like +<bf>nuvexport</bf> (<url url="http://forevermore.net/myth/" +name="http://forevermore.net/myth/">) are better suited for the end user. +However, since <bf>mythtranscode</bf> can be a useful tool, directions on +using it follow. + +<bf>mythtranscode</bf> creates raw streams, which means that they do not +contain any container information such as resolution, frame-rate, or audio +sampling rate. In order to process the output, you must supply this +information to the processing utility. <bf>mythtranscode</bf> provides the +relevant information on STDOUT. + +There are two modes in which <bf>mythtranscode</bf> can create raw streams. +The first has no synchronization and assumes that the processing utility +will read audio and video at a constant rate. This method is useful when a +single application will be processing the raw output, such as +<bf>mencoder</bf> or <bf>ffmpeg</bf>. The second method assumes that two +separate applications will be processing the audio and video streams +independently, and there is no rate control between them which means that +the two programs don't coordinate their efforts to maintain synchronization. + +<sect2>mythtranscode example +<p>First, start <bf>mythtranscode</bf>. You will need to determine the +channel and the start time manually. +<tscreen><verb> +$ mythtranscode --chanid 1036 --starttime 2003-10-20T15:30:00 --profile \ +autodetect --fifodir . & +</verb></tscreen> + +When <bf>mythtranscode</bf> begins executing, it will create two FIFOs +("audout" and "vidout") in the directory specified (in this case ".", +meaning the current directory) and will print out information about the +video stream. + +The next step is to start the processing application. The following assumes +that the stream is NTSC 640x480 with 32Kbps audio. + +To use <bf>mencoder</bf> you would enter a command like: +<tscreen><verb> +mencoder -audiofile audout -audio-demuxer 20 -rawaudio rate=32000 \ +-rawvideo on:w=640:h=480:fps=29.97 -ovc lavc -oac mp3lame -o out.avi \ +vidout +</verb></tscreen> + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: You must use mencoder 1.0PRE1 or later. <bf>mencoder</bf> +version 0.9x <em>WILL NOT WORK!</em> +</caption> +</figure> +Using ffmepg: +<tscreen><verb> +ffmpeg -f u16le -ar 32000 -ac 2 -i audout -f rawvideo -s 640x480 -r 29.97 \ +-i vidout -vcodec mpeg4 -b 2000 -acodec mp3 -ab 128 out.avi +</verb></tscreen> + +Or to play directly using mplayer (again 1.0PRE1 or later is needed): +<tscreen><verb> +mplayer -audiofile audout -audio-demuxer 20 -rawaudio rate=32000 \ +-rawvideo on:w=640:h=480:fps=29.97 vidout +</verb></tscreen> + +If you wanted to write the raw data to separate audio and video files for +later processing, the following would work (note the use of --fifosync +for rate-control): +<tscreen><verb> +$ mythtranscode --chanid 1036 --starttime 2003-10-20T15:30:00 \ +--profile autodetect --fifodir . --fifosync & +$ cat audout > audio.raw & +$ cat vidout > video.yuv +</verb></tscreen> + +<sect1>Using a different window manager +<p>MythTV is not dependent on any particular window manager. If you wish to +run a lightweight window manager, the <tt>contrib/configfiles/</tt> directory has an +example of a <tt>.twmrc</tt> and <tt>.fvwmrc</tt> file you may use. + +<sect1>What capture resolution should I use? How does video work? +<label id="capture_resolution_"> +<!-- Lots of the following is from a Bruce Markey mailto:bjm@lvcm.com post +to the mailing list, 2003-01-21. Updated 2005-02-09 bjm --> +<p>While MythTV allows you to set various GUI and capture resolutions, not +all combinations make sense. + +First, analog video signals have a defined vertical resolution. In NTSC, +the video standard specifies that there are 525 vertical scan lines. Once +the "extra" lines are removed (they're used to synchronize the video signal, +and encode closed captioning data), you have 480 horizontal lines stacked +vertically. + +In PAL, there are 625 "raw" lines of resolution, with a net of 576 +horizontal lines stacked vertically. + +Horizontally, the maximum value allowed for a Bt8X8 chip is 720. However, +due to limitations in the chip and other limitations of broadcast +television, there may not be a noticeable improvement in image quality +beyond 400 or 500 pixels. + +With this in mind, there are certain commonly accepted values for +resolution. While other values may be accepted for the vertical +resolution, they will cause scan lines to be repeated or dropped. + +From "best" to "worst", in NTSC: +<itemize> +<item>720x480 "DVD" resolution. ReplayTV High and medium resolution +<item>704x480 DVD standalone recorder standard resolution +<item>640x480 4:3 +<item>544x480 TiVo Best resolution +<item>480x480 SuperVCD (SVCD) Video CD resolution, TiVo High resolution +<item>352x480 ReplayTV "Standard" quality, TiVo Basic and Medium resolution, DVD "LP" resolution +<item>320x480 +<item>544x240 +<item>480x240 +<item>352x240 Video CD (VCD) resolution +<item>320x240 +</itemize> + +As you can see, the lower quality values are half of the better ones. +720x240 is possible, but isn't a good tradeoff relative to the number of +vertical lines lost. In a PAL country, the you would use values like +720x576 or x288. + +The higher resolutions will be more CPU intensive if you're using software +encoding (PVR-250/350 will have minimal host CPU impact even if you're using +720x480). If the CPU is overtaxed, frames will be dropped causing uneven +motion. You will likely see the best results at resolutions which average at +least 10% CPU idle time. You can use system tools such as <tt>top</tt> or +<tt>sar</tt> to check the CPU % idle while recording. If the CPU average +usage is consistently exceeding 90%, frames will need to be dropped during +peak times when more than 100% of the available CPU would be needed to +process all of the frames. + +If you'd like to read more on this, go to the vcdhelp website at <url +url="http://www.vcdhelp.com/forum/userguides/94382.php" +name="http://www.vcdhelp.com/forum/userguides/94382.php">. + +<sect1>MythTV GUI and X Display Sizes +<p>MythTV is designed to be run as dedicated full screen TV application +but can also be run as a desktop application on a computer monitor. Here +are a few consideration for configuring sizes to best suit you needs. + +<sect2>X Dimensions +<p>For output to a Television, common resolutions are 640x480, 800x600, and +some rare devices support 1024x768. Generally, higher resolutions are +better. However, you may find that you prefer the picture quality at one of +the lower resolutions. Everything in MythTV is scalable and should 'fit' +regardless of the resolution you choose. + +Edit your X configuration file, usually <tt>/etc/X11/XF86Config-4</tt> for +XFree, or <tt>/etc/X11/xorg.conf</tt> for Xorg, so that the resolution you +want to use is listed first in the lists under "Screen". If this resolution +is higher than the resolutions supported by your output device, you will see +a 'panning' effect where moving the mouse to the edge will scroll around a +desktop area which is larger than the display size. If this happens, edit +your X configuration file to match the display size then restart X. + +<sect2>MythTV Dimensions +<p>From "mythfrontend" go to Setup->Appearance. +The default for the height and width is "0" - this will cause +MythTV to automatically size itself to full screen. + +If the MythTV GUI width and height are not 0, mythfrontend uses these GUI +dimensions and is anchored to the upper left corner of the X Desktop. If +the GUI X and/or Y are not 0, the upper left corner is positioned at the +specified coordinates. If the "Run the frontend in a window" box is checked, +the window will have a frame and can then be dragged to any position on the +desktop. + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: When the GUI is full screen, you may see windows rapidly +flipping on top of each other. If this happens you will need to set your +window manager to 'Click to Focus' for windows to stack properly. +</caption> +</figure> +The fonts for the GUI and OSD will scale to whatever sizes you use. Most +font sizes can be changed in setup selections or in the .xml files under +<tt>/usr/local/share/mythtv/</tt> . Make sure to use fonts large enough +to be read on a TV screen from a distance. + +The full screen TV size is based on the X display size. For Xinerama, you +can specify a screen in Setup->General. The TV picture will be stretched +to fit the entire GUI area regardless of the <ref id="capture_resolution_" +name="capture resolutions"> used. However, during playback, the "W" key can +to used to correct differences between 16:9 and 4:3. + +<sect2>Overscan Dimensions +<p>Because picture edges can be ragged and screen edges aren't straight, +Television is designed to project an image larger than the physical screen. +This is called "overscan". Underscan is fitting the entire image inside the +screen. Underscan is useful for computer monitors so that toolbars and +scrollbars at the edges can be seen. + +For best results, match the X display area as close as possible to the edges +of the physical screen. This can only be adjusted by your tv-out device or +by the settings for the television set. Many sets have these adjustments in +a 'service mode'. If you cannot make these adjustments, there will be black +borders around the edges of the X desktop, MythTV GUI and TV playback. + +MythTV has settings for "Overscan" in Setup->Playback. These can not, and do +not, cause the image to display beyond the edge of the X display area. The +purpose of these settings are to cut off rough edges and to expand the image +so that objects will appear to be the same size as a normal overscanned TV +picture. + +<sect1>Saving or restoring the database <label id="backupdb"> +<p>See the <bf>mysqldump</bf> manpage for more information. +<tscreen><verb> +$ mysqldump -u mythtv -pmythtv mythconverg -c > mythtv_backup.sql +</verb></tscreen> + +To restore: (assuming that you've dropped the database) +<tscreen><verb> +$ mysql -u root +mysql>create database mythconverg; +mysql>exit +$ mysql -u mythtv -pmythtv mythconverg < mythtv_backup.sql +</verb></tscreen> + +You may need to alter the MySQL permissions if this database is being shared +with multiple systems. See the <ref id="modify_perm_mysql" name="Modifying +access to the MySQL database for multiple systems"> section for more +information. + +<sect1>Deleting the MySQL database +<p><figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: Performing this step will remove the entire database. +You will lose all of your settings and will need to re-run the mc.sql script +to setup the database structure before running the mythtv-setup program. +</caption> +</figure> +<tscreen><verb> +$ mysql -u root +mysql> drop database mythconverg; +mysql> quit +</verb></tscreen> + +<sect1>Moving your data to new hardware +<p>This assumes that you will be moving your data to newer / bigger hardware +and don't want to lose your programs. + +The first step is to create a database backup as demonstrated in an earlier +section. + +Next, you will extract only the data that is relevant to the programs: +<tscreen><verb> +$ grep "INSERT INTO record " mythtv_backup.sql > restore.sql +$ grep "INSERT INTO recorded " mythtv_backup.sql >> restore.sql +$ grep "INSERT INTO oldrecorded " mythtv_backup.sql >> restore.sql +$ grep "INSERT INTO recordedprogram " mythtv_backup.sql >> restore.sql +$ grep "INSERT INTO recordedrating " mythtv_backup.sql >> restore.sql +$ grep "INSERT INTO recordedmarkup " mythtv_backup.sql >> restore.sql +$ grep "INSERT INTO recordedseek " mythtv_backup.sql >> restore.sql +</verb></tscreen> + +<bf>NOTE</bf>: Newer versions of <bf>mysqldump</bf> place backticks around +the table names. Backticks are not the same as apostrophes! On a typical +North American keyboard, backticks are located to the left of the "1" key, +on the same key as the tilde. Also, because the <bf>bash</bf> shell may try +to interpret the backticks, make sure you use a \ before each one. + +If your <tt>restore.sql</tt> file is empty, you'll need to re-run the +commands like this: +<tscreen><verb> +$ grep "INSERT INTO \`record\` " mythtv_backup.sql > restore.sql +$ grep "INSERT INTO \`recorded\` " mythtv_backup.sql >> restore.sql +$ grep "INSERT INTO \`oldrecorded\` " mythtv_backup.sql >> restore.sql +$ grep "INSERT INTO \`recordedprogram\` " mythtv_backup.sql >> restore.sql +$ grep "INSERT INTO \`recordedrating\` " mythtv_backup.sql >> restore.sql +$ grep "INSERT INTO \`recordedmarkup\` " mythtv_backup.sql >> restore.sql +$ grep "INSERT INTO \`recordedseek\` " mythtv_backup.sql >> restore.sql +</verb></tscreen> + +Note the space after the table name and the ">>" to append to the file for +all but the first <bf>grep</bf>. "recordedmarkup" and "recordedseek" are +huge and there may be hundreds of thousands of lines if you had lots of +hours of recordings. + +After you have moved the data files to the new hardware, configure MythTV +using the <bf>mythtv-setup</bf> program as you normally would with a +standard MythTV installation. + +At this point we will restore the information about your programs back into +the database: +<tscreen><verb> +$ mysql -u mythtv -pmythtv mythconverg < restore.sql +</verb></tscreen> + +After successful insertion of the data you may delete the +<tt>restore.sql</tt> file. + +<sect1>btaudio <label id="btaudio"> +<p>btaudio allows you to obtain the audio data from your tuner card directly +over the PCI bus without using a sound card. This is useful if you would +like to use multiple tuner cards in a system without adding a sound card for +each one, or if your existing sound card is not capable of full-duplex +operation. + +In order to use btaudio, your tuner card will need certain hardware +installed on it, and that hardware must be wired correctly. The chip that +will allow you to use the btaudio module is the MSP34xx. However, having a +MSP34xx is no guarantee that you will be able to use the btaudio module. + +As of 2003-03-31, this is the current list of cards and their status: +Works with btaudio: + +<itemize> +<item>Hauppauge WinTV-radio with dbx-TV stereo, model 401 +<item>Hauppauge WinTV-Theater, model 495, 498 (Europe) +<item>ATI TV Wonder +</itemize> + +The following cards do not work: +<itemize> +<item>Pinnacle Studio PCTV Pro - note: this has a MSP34xx, but it's not +wired correctly to the BT878 chip. +<item>ATI TV Wonder VE +<item>Leadtek Winfast 2000 XP (PAL, UK and NTSC) +<item>I/O Magic PC-PVR. No MSP34xx chip. +</itemize> + +The following cards have been reported to work, but have issues: +<itemize> +<item>Avermedia AVerTV Studio (no digital DSP output, "whiney noise" on +analog) +</itemize> + +Once btaudio loads, it should register additional <tt>/dev/dsp</tt> and +<tt>/dev/mixer</tt> devices. Typing <tt>$ dmesg</tt> will let you know +what's going on. + +<sect1>Removing unwanted channels +<p>If <bf>mythfilldatabase</bf> grabbed a channel which you do not want to +include in your TV listings, you can remove the entries from the grabber +configuration and the MySQL database. This often happens with premium +channels; for example, HBO or Showtime may be available on your cable TV +system, but is scrambled because you're not a subscriber to that channel. +Since you can never watch it, you want to get rid of it. + +If you are using the DataDirect service, login to your account at +<url url="http://labs.zap2it.com/" name="http://labs.zap2it.com/"> to +modify your lineup. Uncheck the boxes for any unwanted channels, and they +will no longer be included in your download. + +If you are using a grabber from XMLTV, comment out the channel from the +<tt>~/.mythtv/<sourcename>.xmltv</tt> file by inserting the word "not +" (including the space) in front of the unwanted entry. This will prevent +<bf>xmltv</bf> from grabbing future listings. + +Next, delete the unwanted item from the channel table so that it will not +appear in the EPG or when changing channels. To delete the data from the +database we need to perform some steps. First, assuming that HBO is channel +15, we need to find out the internal <tt>chanid</tt> used by MySQL: +<tscreen><verb> +$ mysql -u root mythconverg +mysql> select chanid from channel where channum=15; ++--------+ +| chanid | ++--------+ +| 1015 | ++--------+ +1 row in set (0.00 sec) +mysql> delete from channel where chanid = 1015; +</verb></tscreen> + +Old program data will be removed over the course of a week. However, you may +want to immediately delete any current program listings for the channel that +has been removed: +<tscreen><verb> +$ mysql -u root mythconverg +mysql> delete from program where chanid = 1015; +</verb></tscreen> + +<sect1>NFS +<p>You may want to use a central server to store your files. + +On the host machine, (in this case, the hostname is "masterbackend") you'll +want to edit your <tt>/etc/exports</tt> file and use something like: +<tscreen><verb> +/var/video (rw) +</verb></tscreen> + +To export the <tt>/var/video</tt> directory with read / write privileges. + +On the "slave" machine, you'll want to edit the <tt>/etc/fstab</tt> file and +add something like: +<tscreen><verb> +masterbackend:/var/video /var/video nfs rsize=8192,wsize=8192,hard,intr,nfsvers=3,actimeo=0 +</verb></tscreen> + +Then run <tt># mount -a</tt> to re-read the file to mount the file system. + +In this case, the source is a machine called "masterbackend" which is +exporting the directory "/var/video", which we're mounting locally at +"/var/video". The rsize and wsize options are used to increase the +performance of NFS; "hard,intr" is there because that's the recommendation +of the NFS-HOWTO, the nfsvers is required for filesizes over 2GB and actimeo +is used to turn off file attribute caching. Attribute caching for a shared +media point causes problems; you always want to see the latest state of the +directory and files. See <url +url="http://www.mythtv.org/wiki/index.php/Optimizing_Performance" +name="http://www.mythtv.org/wiki/index.php/Optimizing_Performance"> for +additional information regarding performance optimization. + +<sect1>Automatically starting mythfrontend at system boot time +<p>Here's an example submitted to the mythtv-dev list by Pat Pflaum +<url url="mailto:pat@netburp.com" name="mailto:pat@netburp.com"> using fvwm: +<tscreen><verb> +$ cat > .xinitrc +fvwm & +mythfrontend +^D +$ cat > .fvwmrc +Style myth* NoTitle, NoHandles, Sticky, WindowListSkip, SloppyFocus, GrabFocus, BorderWidth 0 +^D +$ +</verb></tscreen> + +The following also works with blackbox: +<tscreen><verb> +$ cat > .xinitrc +xset -dpms s off & +irxevent & +mythfrontend & +blackbox +</verb></tscreen> + +Make sure that your <tt>.blackboxrc</tt> file has: +<tscreen><verb> +session.screen0.focusNewWindows: True +session.screen0.focusModel: SloppyFocus +</verb></tscreen> in it. + +<label id="mythbackend_autostart"> +<sect1>Automatically starting mythbackend at system boot time +<sect2>Red Hat And Mandriva +<p>Here's a method for automatically starting mythbackend submitted by Mike +Thomson (<url url="mailto:linux@m-thomson.net" name="mailto:linux@m-thomson.net">) and Stu Tomlinson (<url +url="mailto:stu@nosnilmot.com" name="mailto:stu@nosnilmot.com">). + +Copy the files from the MythTV <tt>contrib</tt> directory or from Mike's web +site (<url url="http://m-thomson.net/mythtv/" +name="http://m-thomson.net/mythtv/">) as follows: + +<tt>etc.rc.d.init.mythbackend</tt> should be made executable and copied to +<tt>/etc/rc.d/init.d/</tt>: +<tscreen><verb> +$ cd contrib +$ su +# chmod a+x etc.rc.d.init.d.mythbackend +# cp etc.rc.d.init.d.mythbackend /etc/rc.d/init.d/mythbackend +</verb></tscreen> + +<tt>etc.sysconfig.mythbackend</tt> should be copied to +<tt>/etc/sysconfig/</tt>: +<tscreen><verb> +$ cd contrib +$ su +# cp etc.sysconfig.mythbackend /etc/sysconfig/mythbackend +</verb></tscreen> + +Edit <tt>/etc/sysconfig/mythbackend</tt> if you want to change the defaults +(the userid that should start mythbackend, location of the logfile and (if +required) the name and location of the mythbackend binary). + +Use <bf>chkconfig</bf> to make sure the script is called when +entering runlevels 3, 4 or 5: +<tscreen><verb> +$ su +# chkconfig --level 345 mythbackend on +# exit +$ +</verb></tscreen> + +<label id="logrotate"> +<sect3>Log files +<p>By default, the log file for mythbackend will be written to +<tt>/var/tmp/mythbackend.log</tt>. This has been tested and is known to work +on Mandriva and Red Hat, but many people prefer to place logs under +<tt>/var/log/</tt>. + +To do this, create a group called <tt>mythtv</tt> (or anything you prefer) +and add your usual MythTV users to that group. If you changed the user that +starts mythbackend from the default of root you <em>must</em> perform this +step. + +Create the directory <tt>/var/log/mythtv</tt> and set its +permissions as follows: +<tscreen><verb> +$ su +# mkdir /var/log/mythtv +# chown root:mythtv /var/log/mythtv +# chmod 0775 /var/log/mythtv +# exit +$ ls -ld /var/log/mythtv +drwxrwxr-x 2 root mythtv 4096 Apr 28 21:58 /var/log/mythtv/ +$ +</verb></tscreen> + +<!-- From an email by chris at cpr.homelinux.net on 2006-09-01 --> +Create a <tt>mythtv</tt> file in <tt>/etc/logrotate.d</tt>: +<tscreen><verb> +$ su +# cat > /etc/logrotate.d/mythtv +# Set default values for all log files first... + +# Rotate the logs once a week, or more frequently if they +# exceed 10Mb in size (size is checked daily). +weekly +size 10M + +# 'copytruncate' is used for logs generated by +# currently-running programs that should not be restarted +# (and can't be signalled to start a new log) after the +# rotation. It duplicates the existing log file and then +# sets the length of the existing file to 0. The only time +# this would break would be if the program writing the log +# was using lseek. +copytruncate + +# After rotating the files, leave the most recent rotated +# copy alone but gzip everything else to save space. +compress +delaycompress + +# If a log isn't present then don't worry about it. +missingok + +# Don't rotate an empty file. +notifempty + +# end of the global options + +/var/log/mythtv/mythbackend.log /var/log/mythtv/mythfrontend.log { + # Keep logs until they are 2 months old or the number of + # logs reaches 12. If the log files stay small, the age will + # kick in first and you'll only have 8 log files. If they + # get larger than 10Mb then you won't keep all 60 days. + rotate 12 + maxage 60 +} + +# Different options for mythfilldatabase: +/var/log/mythtv/mythfilldatabase.log { + rotate 2 +} +^D +# +</verb></tscreen> + +<sect3>Mandriva +<p>Mandriva adds one more twist in the form of the <tt>msec</tt> utility, +which runs regularly and (at the default or any higher security level) sets +permissions on many files, including those under <tt>/var/log</tt>. + +To tell msec about the MythTV log files and their directory, you need to +edit the <tt>/etc/security/msec/perm.local</tt> file to include the +following: +<tscreen><verb> +# /etc/security/msec/perm.local +# Local overrides to the msec program +# +# Full file path user.group permissions +/var/log/mythtv/ root.mythtv 775 +/var/log/mythtv/* root.mythtv 664 +</verb></tscreen> + +A copy of the above has been included in the contrib/ directory. You may +add it by typing: +<tscreen><verb> +$ cd contrib +$ su +# cat etc.security.msec.perm.local >> /etc/security/msec/perm.local +# exit +</verb></tscreen> + +Finally run the <tt>msec</tt> tool to check and implement your +changes. +<tscreen><verb> +$ su +# msec +# exit +$ +</verb></tscreen> + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: msec can only <em>reduce</em> the permissions of files, so if +you don't get the results you expect, check that you're not asking +<tt>msec</tt> to add missing permissions to the files or directories you +created. +</caption> +</figure> +<sect2>Gentoo +<p>The portage file for MythTV has scripts that will allow you to run +mythbackend at startup. + +To run mythbackend as a daemon which starts at boot time: +<tscreen><verb> +# rc-update add mythbackend default +</verb></tscreen> +To stop mythbackend as a daemon: +<tscreen><verb> +# /etc/init.d/mythbackend stop +</verb></tscreen> + +To obtain a list of options: +<tscreen><verb> +# /etc/init.d/mythbackend +</verb></tscreen> + +<sect1>Advanced Backend Configurations <label id="advanced_backend_config"> +<p>MythTV is flexible in the way that you define multiple backend tuner +configurations. The only hard-and-fast rule is that the Master backend +<em>must</em> have a capture device defined, but shouldn't imply that the +capture device in the Master backend must be the first capture card defined in the +database. + +One example of an advanced configuration is the round-robin scheme. Rather +than defining all of the cards on the master, you could first go into +mythtv-setup on the master to define globals such as the general configuration +and the channel lineup but not the host-specific configuration item like the +capture card. In this example, we will use a 4 tuner configuration, where two +slaves have one card each and the master has two. +<enum> +<item>Add the first capture card on one of the slaves. Complete the +configuration, connecting the input source to the card. This will get +cardid #1 in the database. Exit mythtv-setup. +<item>Configure the first capture card on the master backend. This will get +cardid #2 in the database. Exit mythtv-setup. +<item>Configure the first capture card on the second slave. This will be +cardid #3 in the database. Exit mythtv-setup. +<item>Configure the second capture card on the master backend. This will +get cardid #4 in the database. Exit mythtv-setup. +</enum> + +Using this scheme, the master backend will not use both capture cards until +one of the following happens: +<itemize> +<item>There are four recordings scheduled for the same time +<item>Both slaves are unavailable +</itemize> + +The scheduler in MythTV checks whether an encoder is available; if a slave +backend isn't running, its encoder isn't available, so the scheduler will +look for the next available encoder. This makes MythTV very flexible; slave +tuners can come and go, and as long as there are enough tuners for what +you'd like to record it doesn't matter which tuner in particular is going to +be used. + +Using this round-robin scheme along with a shared storage directory like +NFS and enabling the Master Backend Override setting will allow you to view +content even if the slave backend that recorded a program is not available. + +<sect1>Using the transcoder +<!-- Aran Cox, spin667 at mchsi.com --> +<p>MythTV's built-in transcoder re-encodes recordings from one codec to +another. The transcoder has three primary uses; it can transcode MPEG-2 +files captured using a hardware encoder (PVR cards, DVB cards, ATSC HD, +etc.) to MPEG-4, it can be used to transcode RTjpeg files (usually only used +on systems that can not real-time encode to MPEG-4 using a framegrabber) to +MPEG-4, and finally it can be used to remove commercials from a MPEG-2 file +while leaving the file in MPEG-2 format. + +When MythTV transcodes a file to MPEG-4 or RTjpeg the resulting file format +is NuppelVideo (nuv). NuppelVideo is a container which provides a method of +keeping the audio and video in sync throughout the recording, which is why +it is used instead of the <tt>.avi</tt> format. You may have difficulty +playing <tt>.nuv</tt> files in non-MythTV systems. + +<!-- If +you want something more portable you can look at some of the other sections +in this HOWTO. --> + +The original file is removed when the transcoding process is complete. +Unless you're sure that you will be satisfied with the result you may want +to enable the <bf>mythtv-setup</bf> option which causes <bf>mythbackend</bf> +to keep the original file after transcoding. This option is on the second +page of the General section in mythtv-setup. Enabling this allows you to +compare the two files and restore the original if you like. Outside of the +initial setup phase it usually isn't necessary to leave this option enabled. +A recording can be transcoded in two ways: + +<itemize> +<item>Automatically transcode the file once it has completed +recording.</item> +<item>Manually choosing to transcode a recording, usually after +importing a cutlist or manually marking commercials to be +removed.</item> +</itemize> + +The second method can be used on files that have already been transcoded (or +files which were are already in the desired format), so only the frames +immediately following a cut section will be re-encoded, resulting in a +minimal loss of quality when removing commercials with the added benefit of +being extremely quick. + +The current transcoding system has a lot flexibility, but there are +a number of steps involved in setting it up. In order to +automatically transcode a given recording you must do the following: +<enum> +<item>Configure recording profile for your capture source and enable +transcoding on one or more profiles.</item> +<item>Configure one or more transcoding profiles.</item> +<item>Create or alter existing scheduled recordings to enable +transcoding for that recording.</item> +</enum> + +<sect2>Configuring Recording Profiles to Allow Transcoding + +<p>Enter the Utilities/Setup > Setup > TV Settings > Recording Profiles +section in <bf>mythfrontend</bf>. Choose the option that corresponds to +your capture source (ignore the Transcoders for now.) Choose the quality +profile you are interested in using for transcoding. Ensure that "Enable +auto-transcode after recording" is checked. <!-- This option might ought to +be called "allow auto-transcode" as we'll soon see though. You might want to +verify that the other settings for this profile are correct while your here. +--> + +<sect2>Configure Transcoding Profiles + +<p>Enter the Recording Profiles > Transcoders menu. There are three quality +settings to choose from and a two special Autodetect settings. Later, when +scheduling recordings you'll have to choose one of Autodetect, High, Medium, +and Low Quality transcode settings in addition to the recording profile we +set up above. If you choose the Autodetect transcoding profile for a +recording, MythTV will use the "Autodetect from RTjpeg/MPEG-4" profile for +recordings which are RTjpeg/MPEG-4 files. Otherwise, it will use the +"Autodetect from MPEG-2" profile provided it's an MPEG-2 recording. If you +choose one of the others (High, Medium, Low) it will use the settings in +that profile regardless of the codec of the original recording. + +There are a number of options for transcoding but the simplest is to enable +lossless transcoding (the first option) which subsequently removes all other +options. Enabling lossless encoding simply removes commercials (if you've +marked them) and attempts to clean up MPEG-2 streams. Note that with this +option MythTV will not apply any sort of filters and will only attempt to +normalize the stream into something cleaner and less likely to have trouble +with other less forgiving MPEG-2 hardware/software (including players, video +editors, etc.) + +If you enable resizing of the recording the next page has the settings for +choosing the final resolution. MythTV will scale the video as appropriate, +not crop it to this resolution. + +The final two pages allow configuration of the video and audio codecs. +Although RTjpeg is an option for video codec there is no reason to transcode +<em>to</em> this format because it will produce larger files than MPEG-4 and +the recording will take <em>more</em> CPU power to play back. The MPEG-4 +settings are described in the documentation for the <bf>ffmpeg</bf> project +at <url url="http://ffmpeg.sourceforge.net/ffmpeg-doc.html" +name="http://ffmpeg.sourceforge.net/ffmpeg-doc.html">. It's a matter of +trial and error to discover which settings achieve a good compromise between +size and quality. + +If you wish to return to the default settings, they are Bitrate: 2200-2500, +MaxQ: 2, MinQ: 15, MaxQDiff: 3, and "Scale bitrate for frame size" is +enabled. The other options are unchecked. <!-- If you're getting weird +results from MPEG-4 transcoding try setting as above and go from there. --> + +<sect2>Create/Alter Scheduled Recordings to Enable Transcoding + +<p>Transcoding is actually enabled on a per-recording basis. Two things +must be true before any given recording will be auto-transcoded, however. +The first is that the recording must have been made with a recording profile +that has auto-transcode enabled. Under "Storage Options" for the recording +you must set the "Record using the "X" profile" to the profile you +configured in the first step. In addition, under the "Post Recording +Options" section of the recording you must also set "Transcode new +recordings." This is also where you specify the Transcoding profile to use +(Auto, High, Medium, Low.) + +It may not be obvious from above but the flexibility of this system is +primarily to make it possible to auto-transcode a show recorded via one +source (ie: pcHDTV 3000), and not transcode that same show if it's recorded +on another kind of card (ie: PVR-250.) There are other uses however. You +could have a PVR-250 and a V4L card. You may want to transcode the MPEG-2 +from the PVR-250 but there is no need to transcode the recordings made with +the V4L card, as it's already likely to be MPEG-4. + +As an example, you could configure the Default profile for "Hardware DVB +Encoders" (the profile group used for DVB cards, including ATSC cards like +the pcHDTV 3000) to "Enable auto-transcoding". In the Default profile for +MPEG-2 Encoders (PVR cards) you'd leave "Enable auto-transcoding" unchecked. +For programs that are available on both kinds of cards you'd set the +recording profile to Default and enable auto-transcoding in the record +settings. Then you pick your transcoding profile. The result is that when +a program is recorded on your DVB card, it will get transcoded. When it +plays on a channel available via your PVR card, it won't be. + +<sect2>Manual Transcoding + +<p>Manually transcoding is activated while watching a show by hitting 'x', +from the OSD menu by choosing the Transcode option, or by choosing Job +Options/Transcode from the info menu from the Watch or Delete +Recordings screens. + +The transcoding profile used for manual transcoding is whatever was set when +the recording was originally configured, even if you didn't enable +auto-transcoding. The only way to change what transcoding profile will be +used is to alter the transcoder column in the recorded table in the +database. The transcoder column contains a number which corresponds with +the id column in the recordingprofiles table. You can find out the id +number for each profile in the transcoder group with an SQL command like: + +<tscreen><verb> +mysql> select r.* from recordingprofiles r,profilegroups p where p.name='Transcoders' and p.id=r.profilegroup; ++----+----------------+------------+------------+--------------+ +| id | name | videocodec | audiocodec | profilegroup | ++----+----------------+------------+------------+--------------+ +| 21 | RTjpeg/MPEG4 | MPEG-4 | MP3 | 6 | +| 22 | MPEG2 | MPEG-4 | MP3 | 6 | +| 27 | High Quality | MPEG-4 | MP3 | 6 | +| 28 | Medium Quality | MPEG-4 | MP3 | 6 | +| 29 | Low Quality | MPEG-4 | MP3 | 6 | ++----+----------------+------------+------------+--------------+ +5 rows in set (0.01 sec) + +mysql> +</verb></tscreen> + +Armed with the knowledge of what the profile ID's are you can also choose to +run mythtranscode from the command line and explicitly specify the transcoder +profile. Run <tt>mythtranscode --help</tt> for usage information. + +<sect1>Changing your hostname +<!-- Edited instructions from a post by Alan Snyder ax763 at yahoo.com --> +<p>If you need to change the name of the computers used with MythTV you'll +need to perform a sequence of steps. There are a number of pieces of +information that MythTV keeps track of which are tied to the hostname of the +box, so changing the hostname involves altering the name in the +operating system and in the MySQL database. In the examples below, the old +name of the system was "frontend1" and we're going to change it to +"kidsroom". + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: Changing the hostname using direct SQL update commands will +break things. You <em>MUST</em> use this indirect method. +</caption> +</figure> + +1. Stop all backends. If you run <bf>mythbackend</bf> from a terminal +session, press control-c. If your backends are started with an init +script, you would do something like the following: +<tscreen><verb> +$ su +# /etc/init.d/mythbackend stop +</verb></tscreen> + +2. Change the hostname. + +For Red Hat and derived distributions, edit the +<tt>/etc/sysconfig/network</tt> file. Look for +<tt>HOSTNAME=frontend1</tt> and change this to +<tt>HOSTNAME=kidsroom</tt> or whatever you'll be using. For other +distributions, refer to the documentation, such as the +<verb>hostname(1)</verb> man page. + +<p> +To alter the +hostname in the current session, run: +<tscreen><verb> +# hostname kidsroom +</verb></tscreen> + +3. Dump the database. +<tscreen><verb> +$ mysqldump -u mythtv -pmythtv mythconverg -c > mythtv_backup.sql +</verb></tscreen> + +4. Rename the host in the database. First, ensure that the new hostname +you'll be using isn't already in the database. +<tscreen><verb> +$ grep kidsroom mythtv_backup.sql +</verb></tscreen> +Now we're actually going to change the name. The following should all be +typed on the same line: +<tscreen><verb> +$ cat mythtv_backup.sql | sed s/\'frontend1\'/\'kidsroom\'/g >> mythtv_restore.sql +</verb></tscreen> +If you don't feel comfortable using <bf>sed</bf>, you can open the +<tt>mythtv_backup.sql</tt> file in a text editor and perform a global search +and replace. When saving the file, make sure you use the new name, +<tt>mythtv_restore.sql</tt> or the rest of the steps below will fail. + +5. Drop and recreate the database. +<tscreen><verb> +$ mysql -u root +mysql>drop database mythconverg; +mysql>create database mythconverg; +mysql>exit +</verb></tscreen> + +6. Restore the database using your edited version. +<tscreen><verb> +$ mysql -u mythtv -pmythtv mythconverg < mythtv_restore.sql +</verb></tscreen> + +If you are running slave backends or frontends, don't forget to re-enable +access as detailed in <ref id="modify_perm_mysql" name="Modifying access to +the MySQL database for multiple systems">. + +7. Start the backends. If you use init scripts, do the following, otherwise +start them from terminal consoles. +<tscreen><verb> +# /etc/init.d/mythbackend start +</verb></tscreen> + +8. Quit and restart all frontends. Delete the <tt>mythtv_backup.sql</tt> +and <tt>mythtv_restore.sql</tt> files. + +<sect1>Can I run MythTV on my TiVo? +<sect1>Can I run MythTV on my ReplayTV? +<p>No. + +While it is true that the TiVo runs the Linux kernel, and TiVo has released +their changes to the kernel under the GPL, the TiVo is <em>not</em> a +general-purpose computer, and there is no programming information available +for the custom hardware contained within a TiVo. TiVo is under no +obligation to release the source code to their <em>application</em>. + +The ReplayTV runs VxWorks, a Real Time Operating System from Wind River +Systems. +<sect1>Can a wireless connection be used between the frontend and the backend? +<p>Yes, assuming that your wireless connection has sufficient bandwidth to +maintain the datarate between the frontend and the backend. 802.11b should +be sufficient if the encoded bitrate of the content is less than the +datarate of your wireless connection, which in the case of 802.11b would be +approximately 4 Mbps. (The advertised rate of 11Mbps gives an actual +throughput of 4 Mbps.) 802.11a and 802.11g, if operating in their high-speed +modes, or proprietary 802.11b "Turbo" schemes should be adequate. Multiple +wireless frontends, poor signal strength or other factors can severely +impact the viewing experience on the frontend. + +<sect1>How can I burn shows that I have recorded to a DVD? +<p>Use the mytharchive plugin. + +<sect1>Using the DBoxII within MythTV +<p>The configuration of the DBoxII for use within MythTV is tricky (as of +May 16 2005), that's why it's covered here. Your DBoxII has to be running +linux and the Neutrino GUI instead of the stock BetaNova firmware. For +further information, please refer to <url url="http://www.tuxbox.org" +name="http://www.tuxbox.org">. Additionally, you need to enable the SPTS +mode in Neutrino. + +<itemize> +<item>Add a new "Capture Card" in the setup. The "Card type" is "DBOX2 Input", +the other values have to be adjusted according to your setup. +The default values, except for the "DBOX2 host ip", should work fine. +<item>Define a new video source. It doesn't need to be configured, +you just need to define it. MythTV grabs the EPG from the DBoxII. +<item>Connect the DBoxII to the newly defined input source in "input connections". +<item>Since channel scanning is not implemented yet, you need to define channels +in the "Channel Editor". Make sure that you use the same value for +"Channel Name" as on the DBoxII. You can get a list of available +channels from the web interface of Neutrino at http://ip-of-your-box:80/. +Associate the channel with your new video source and repeat when needed. +</itemize> + +You may leave the Setup now and proceed as usual. + +<sect1>What do the icons on the Watch Recordings screen mean? +<p>Press "1" or F1 to get a popup. +<sect1>What do the letters mean when I change channels? +<p>These letters let you know what's going on with the backend as it tries +to tune to a channel. + +Lower case = seen + +Upper Case = seen & good +<itemize> +<item>l/L = Lock : This could be seen by PVR-250/BTTV users +<item>a/A = PAT : Any recording transmitted in MPEG +<item>m/M = PMT : Any recording transmitted in MPEG +<item>g/G = MGT : ATSC only +<item>v/V = VCT : ATSC only +<item>n/N = NIT : DVB only +<item>s/S = SDT : DVB only +</itemize> +<sect1>What is the difference between the various Hauppauge PVR models? +<p>This is covered in the hardware section, and extensively covered on the +Hauppauge website. (<url +url="http://www.hauppauge.com/pages/compare_pvr.html" +name="http://www.hauppauge.com/pages/compare_pvr.html">) Please check the +Hauppauge website for the most accurate information. + +A PVR-150 comes in a number of versions: +<itemize> +<item>The PVR-150 (Model 1045) is the retail kit. It comes with a remote +control and an IR Blaster. It does not have a radio tuner. +<item>The PVR-150 MCE (Model 1042) will usually come in a plain white box and is +sold as an OEM device. It does not come with a remote control, since it's +usually used as the second, third, etc capture device. +<item>The PVR-150 MCE Kit (Model 1062) does not have a radio tuner and +comes with a Microsoft Media Center remote control instead of Hauppauge's. +<item>The PVR-150 low profile (Model 1086) is a low-profile card. It has a +radio tuner and is approximately half the height of a standard card. +However, it comes with a low-profile PCI bracket, so it is not suitable for +use in a standard PCI slot without removing the bracket, which may not be +worth the trouble. +</itemize> + +A PVR-250 (Model 980) is a retail kit which comes with an IR receiver and a +remote control. + +The PVR-250 MCE (Model 975) contains a FM radio tuner. The PVR-250 MCE does +not contain a IR receiver or a remote. + +The PVR-250 Rev 1 contained an MPEG-2 decoder. However, this function was +not connected to any output jacks, and there doesn't appear to be any way to +pull decoded video from the card, so it's a fairly useless feature. + +The PVR-350 (model 990) has the features of the PVR-250 as well as being +able to decode MPEG-2. The encode and decode functions may be used +simultaneously. The MPEG-2 decoder function gives superior video quality +compared to what you'll find on a standard video card. However, the decoder +function is only available once Linux has started, so you will not see any +boot-time messages. Also, the card is not capable of resolutions higher +than 720x480, so it cannot be used with HDTV. Make a conscious decision +(and ask for advice on the mailing list) that you want to tradeoff potential +HDTV use in the future compared to video quality. + +The X-driver for the PVR-350 support playback using Xv efficiently but does +not support any other 2D or 3D acceleration. For some application this may +place a large load on the host CPU, some will run without any problem and +others (mplayer, xine, xmame etc.) should be configured to utilize the Xv +interface. + +Note that for the PVR-350 there are some <ref id="PVR-350" name="considerations"> +regarding the way audio is handled. + +The PVR-500 is a dual-encoder version of the PVR-150 card, so you can +simultaneously record two different programs at the same time, because there +are two encoder chips on the PCI card. Hauppuage has also installed an +onboard splitter, so you can use one COAX to feed both tuners. Current +versions of the PVR-500 should come with an adapter to allow you to connect +a second S-Video or composite input, but this will take up a second PCI +slot. Early adopters may need to purchase this item separately. + +<sect1>Changing channels on an external Set Top Box +<p>If you need to use an external Set Top Box (STB), such as for satellite +TV or for digital cable you will need some way for MythTV to tell the STB to +switch to a new channel. There are several methods: +<enum> +<item>Use an IR blaster. An IR blaster is an infrared transmitter connected +to your computer. When MythTV needs to change channels it will send IR +pulses, thereby emulating a remote control. +<item>Use a direct serial connection. Some STB's have a serial port on the +back, although it may not look like a serial port. It may look like a phone +jack, or a strange VGA connector. It may be labeled "Low Speed Data". A +direct serial connection is more reliable than an IR blaster. Not all STB's +that have a Low Speed Data port have it enabled; you may need to convince +your service provider to turn it on. Stating that you have a Tivo may help; +the Tivo has a direct-connect capability. +<item>Use a firewire connection. There is a <tt>6200ch.c</tt> in the MythTV +contrib directory which may work for you. +</enum> +<sect1>Configuring one machine to flag all commercials +<p>Commercial flagging can be CPU intensive. By default, the backend that +created a recording is the one which will flag commercials. You may wish to +use a different machine to run commercial flagging. + +On the slower machine: + +Start the mythtv-setup program. Advance through the pages until you get to +the Job Queue page. Turn off the setting that says "Allow Commercial +Detection jobs", thereby preventing any commercial flagging jobs from +running on this machine. + +Next, make sure that "Run Jobs only on original recording host" is turned +OFF so that new jobs are allowed to run anywhere. + +Restart <bf>mythbackend</bf> since it only reads this setting when it starts +up. + +On the faster machine: + +Start the <bf>mythtv-setup</bf> program. Advance through the pages until +you get to the Job Queue page. Ensure that "Allow Commercial Detection +jobs" is turned ON for this machine. + +Run <bf>mythjobqueue</bf>. <bf>mythjobqueue</bf> will examine the JobQueue +and run any jobs it finds. <bf>mythjobqueue</bf> should be left running so +that it will pick up any new commercial flagging jobs that are added to the +queue, otherwise new jobs will be added to the queue and your programs won't +be flagged until you run manually run <bf>mythjobqueue</bf>. + +Using this technique it's possible to add commercial flagging machines as +needed, even on systems that aren't running a backend. It's also possible +to run the commercial flagger in a virtual machine environment such as +VMWare. + +<sect>Example Configurations. +<sect1>Logical Volume Manager (LVM) <label id="LVM"> +<!-- Contributed by Martin Smith martin at spamcop.net --> +<!-- XXXXX REMOVE ME FOR 0.22 --> +<p>LVM greatly increases the flexibility you have in managing your storage +than traditional physical partitions. This section will provide some brief +notes on how to use LVM to create storage space for your video files and how +to add additional disk space in the future. There's lots more that can be +done with LVM, so check the LVM HOWTO <url +url="http://tldp.org/HOWTO/LVM-HOWTO/" +name="http://tldp.org/HOWTO/LVM-HOWTO/"> document for details. + +<p><figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption> +<bf>NOTE</bf>: If you are running MythTV 0.21 and you are using LVM to +create one large filesystem to store your recordings, it's no longer +recommended that you go the LVM route. The preferred solution is to use <ref +id="storagegroups" name="Storage Groups">. They're more flexible and less +likely to lose all of your recordings if you have a drive failure. +</caption> +</figure> + +If you don't understand how to partition a drive, or how to change the +partition type you should stop and look at documentation on how to perform +these steps. + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption> +<bf>BIG FAT WARNING</bf>: Using an incorrect parameter can make your files +inaccessible, prevent your computer from booting, etc. Be careful! +</caption> +</figure> + +Make sure your kernel configuration includes LVM support or that it's +available as a module. Today, most vendors include this by default. You'll +also want to ensure that you have a copy of the LVM utilities; check your +distribution, or get the latest versions from <url +url="http://www.sistina.com/products_lvm.htm" +name="http://www.sistina.com/products_lvm.htm"> and build them manually. + +Check that the <bf>vgscan</bf> program is being run at some point during +your boot sequence - most distributions do this by default. Look for a +message during boot up that looks like this: <tt>vgscan -- reading all +physical volumes (this may take a while...)</tt> If you don't see any +messages during boot, you may need to install a LVM init script or confirm +that you have all of the LVM packages installed from your distribution. + +LVM uses a few concepts you should be familiar with before starting. +<itemize> +<item>PV (Physical Volume). The actual partition on the hard drive. +<item>VG (Volume Group). The aggregation of all the PVs make a VG. +<item>LV (Logical Volume). Subdivision of the pool of space available in +the VG into individual chunks, like /usr, /var/video, etc. +</itemize> + +The following example assumes that you want to create a LVM partition from a +chunk of space in /dev/hda5, using a reiserfs filesystem and mounted on +/var/video. You later decide to extend this filesystem by adding a new disk: +/dev/hdb. + +You need to create at least one LVM partition for a physical volume. Use +<bf>fdisk</bf> or your favorite partition editor to set the type to LVM +(0x8e). If you're using an entire disk, create one big partition rather than +using the device itself. e.g. use /dev/hdb1 not /dev/hdb. + +In the following example, you have a 15GB disk. The first 6GB are set as +your boot partition. <tt>/dev/hda2</tt> was added as an extended partition, +and within that partition you created the <tt>/dev/hda5</tt> linux (ext2) +partition. + +<tscreen><verb> +# fdisk /dev/hda + +The number of cylinders for this disk is set to 1823. +There is nothing wrong with that, but this is larger than 1024, +and could in certain setups cause problems with: +1) software that runs at boot time (e.g., old versions of LILO) +2) booting and partitioning software from other OSs + (e.g., DOS FDISK, OS/2 FDISK) + +Command (m for help): p + +Disk /dev/hda: 15.0 GB, 15000330240 bytes +255 heads, 63 sectors/track, 1823 cylinders +Units = cylinders of 16065 * 512 = 8225280 bytes + + Device Boot Start End Blocks Id System +/dev/hda1 * 1 764 6136798+ 83 Linux +/dev/hda2 765 1823 8506417+ 5 Extended +/dev/hda5 765 1823 8506417 83 Linux + +Command (m for help): t +Partition number (1-6): 5 +Hex code (type L to list codes): 8e + +Command (m for help): p + +Disk /dev/hda: 15.0 GB, 15000330240 bytes +255 heads, 63 sectors/track, 1823 cylinders +Units = cylinders of 16065 * 512 = 8225280 bytes + + Device Boot Start End Blocks Id System +/dev/hda1 * 1 764 6136798+ 83 Linux +/dev/hda2 765 1823 8506417+ 5 Extended +/dev/hda5 765 1823 8506417 8e Linux LVM + +Command (m for help): w + +# +</verb></tscreen> + +Create the LVM physical volume from the partitions (repeat if you have +multiple partitions to use): +<tscreen><verb> +# pvcreate /dev/hda5 +</verb></tscreen> +Create a LVM volume group out of this physical volume called "VGforMyth" that is +allocated in chunks that are a multiple of 64MB +<tscreen><verb> +# vgcreate VGforMyth -s 64m /dev/hda5 +</verb></tscreen> +Create a logical volume of 5GB called "video" and then create the reiserfs +filesystem and mount it: +<tscreen><verb> +# lvcreate --name video --size 5G VGforMyth +# mkreiserfs /dev/VGforMyth/video +# mount /dev/VGforMyth/video /var/video +</verb></tscreen> +Now create a 3GB volume for mythmusic files if you like: +<tscreen><verb> +# lvcreate --name music --size 3G VGforMyth +# mkreiserfs /dev/VGforMyth/music +# mount /dev/VGforMyth/music /var/music +</verb></tscreen> +Display the volume group status: +<tt># vgdisplay -v</tt> + +Now, lets suppose you want to add a 60GB hard disk to the system as hdb and +allocate 50GB of it to video storage. + +First, create a single partition /dev/hdb1 covering the whole disk and make +it type 0x8e using your partition editor. + +<tt># fdisk /dev/hdb</tt> +.... create partition, set type, save and reboot if it says you have to + +Create the new LVM physical volume: + +<tt># pvcreate /dev/hdb1</tt> + +Add the new physical volume to the volume group: + +<tt># vgextend VGforMyth /dev/hdb1</tt> + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: You may get errors at this point stating that there are no +physical volumes available for adding to the LV, even though you know for a +fact that there are. You may need to specify the physical volume in the +<tt>/dev/ide/host/bus/target/lun/etc</tt> format. +</caption> +</figure> +Once you've completed one of the following two procedures, use <bf>df</bf> +to check that you've got more space. + +Make the logical volume used for video bigger: + +<tt># lvextend --size +50G /dev/VGforMyth/video</tt> +<sect2>ReiserFS +<p>Unmount, resize and remount the filesystem. Technically, you don't need to +unmount and remount the ReiserFS. +<tscreen><verb> +# umount /var/video +# resize_reiserfs /dev/VGforMyth/video +# mount /dev/VGforMyth/video /var/video +</verb></tscreen> + +<sect2>ext2 or ext3 +<p>LVM comes with a program called <bf>resize2fs</bf>. + +Unmount, resize and remount the filesystem. The filesystem <em>must</em> be +unmounted during this procedure. +<tscreen><verb> +# umount /var/video +# resize2fs --size +50G /dev/VGforMyth/video +# mount /dev/VGforMyth/video /var/video +</verb></tscreen> +<sect2>xfs +<p>XFS does not need to be unmounted to extend the size: +<tscreen><verb> +# xfs_growfs /var/video +</verb></tscreen> +<sect1>Advanced Partition Formatting <label +id="advancedpartitionformatting"> +<p>The partitions that your distribution sets up for you may not be +optimized for large files. Using LVM in conjunction with the following +techniques can be quite useful. + +Unlike a typical filesystem, a MythTV video partition is usually a very +large filesystem filled with a fairly small number of large files. +Filesystem I/O is usually not an issue, even in multi-tuner and/or +multi-frontend setups. + +There is however, one aspect of filesystem performance that can have a +bearing on the performance of MythTV. In Linux, deleting a file will +utilize I/O bandwidth until the deletion has been completed. If deleting +the file takes long enough, the video capture buffer may overrun, thereby +resulting in dropped frames. Some filesystems are faster at deleting files +than others and, for multi-gigabyte MythTV video files, these differences +can be significant. + +Fortunately, there are published tests (<url +url="http://aurora.zemris.fer.hr/filesystems/big.html" +name="http://aurora.zemris.fer.hr/filesystems/big.html">) that provide +insight into filesystem performance under conditions relevant to MythTV +usage. In addition, some limited testing (archived at <url +url="http://www.gossamer-threads.com/lists/mythtv/users/52672" +name="http://www.gossamer-threads.com/lists/mythtv/users/52672">) +with very large files (10 gigabytes) was reported in the MythTV Users +mailing list. + +<sect2>Ext2 +<p>Ext2 was the defacto standard Linux filesystem for many years. It is +stable, provides good I/O performance and can quickly delete large files. +The primary disadvantage of Ext2 is that it is not a journaling filesystem, +so a file system consistency check (fsck, which is normally only performed +after a system crash) can take many hours on a filesystem the size of a +typical MythTV partition. + +<sect2>Ext3 +<p>Ext3 is Ext2 with a journal, so your biggest gain is that in case of a +crash and reboot you won't have to wait very long for your partition to be +remounted. + +There are options available when formatting an Ext3 partition, as in: +<tscreen><verb> +# mkfs.ext3 -T largefile4 /dev/hdb1 +</verb></tscreen> + +This example assumes that <tt>/dev/hdb1</tt> has already been created using +<bf>fdisk</bf>. If you're using LVM, <tt>/dev/hdb1</tt> may be something like +<tt>/dev/VGforMyth/video</tt>. + +The "-T largefile4" option creates one inode per 4 megabytes, which can +provide a few percent more storage space. However, tests indicate that +using the "-T largefile4" option can drastically increase the amount of time +required to delete a large file and thus it should only be used with encoder +settings that produce small video files (YMMV). + +You can check on your filesystem using the <bf>dumpe2fs</bf> program. See +the man page for details. +<sect2>ReiserFS +<p>The Reiser filesystem is another journaling filesystem commonly +distributed with Linux. It is known to be an extremely efficient filesystem +and it especially excels at managing partitions containing a large number of +small files. However, tests indicate it is not the fastest at deleting very +large files. For that reason, it may not be the best choice when using +encoder bitrates that produce very large files. + +<sect2>JFS +<p>JFS (Journaling File System) is a journaling filesystem originally +developed by IBM for AIX which was later released as open source. While not +as common as Ext3 or ReiserFS, it is distributed with RedHat 9 (RH9), Fedora +Core and Mandriva as well as other distros. According to tests, JFS is the +file deletion speed king, deleting virtually any file in under one second, +even files as large as 10 gigabytes. + +<sect2>XFS +<p>XFS is a journaling file system originally developed by SGI for Irix, and +later released as open source. While not a part of the default RedHat Linux +9 or Fedora Core installation (although it is a part of Mandriva and Fedora +Core 2+), it can be easily installed via ATrpms. XFS provides deletion +speeds for large files only slightly slower than JFS. According to the test +results shown at (<url +url="http://aurora.zemris.fer.hr/filesystems/big.html" +name="http://aurora.zemris.fer.hr/filesystems/big.html">), XFS provide +higher I/O rates than JFS, albeit at a higher CPU loading. This may cause +issues if you do not have the spare CPU capacity to handle XFS, potentially +leading to dropped frames. + +<label id="migratingtoSD"> +<!-- Mostly from a post by Bruce Markey --> +<sect1>Migrating from DataDirect Labs to Schedules Direct + +<p>MythTV v0.20.2 or later is required to natively support Schedules Direct. +Code has been included to make the transition as simple as possible. + +<bf>You do not need to delete your existing video sources or add new ones!</bf> + +The following steps should work for most users: +<itemize> +<item>Create a Schedules Direct account and use the same information as your +existing lineups at Zap2It Labs. Do not add or delete channels at this +time. +<item>Shut down any running <bf>mythfrontend</bf> and <bf>mythbackend</bf> programs. +<item>Perform a backup of your existing database. See <ref id="backupdb" +name="Saving or restoring the database"> for instructions. +<item>Run <bf>mythtv-setup</bf> -> Video Sources. Change the grabber to +Schedules Direct, update the username and password fields with the account +information you created at Schedules Direct and select "Retrieve Lineups". +Click Finish. +<item>Exit <bf>mythtv-setup</bf> and run <bf>mythfilldatabase</bf>. Check +if there were any errors. +<item>Restart your <bf>mythbackend</bf> and <bf>mythfrontend</bf> programs. +</itemize> + +<sect1>Caching support for Schedules Direct +<p>MythTV 0.20.2 or later supports caching of downloaded information from +Schedules Direct, so devices that share a common source do not require +multiple downloads. + +Before beginning, perform a backup of your existing database. See <ref +id="backupdb" name="Saving or restoring the database"> for instructions. + +In the following scenario, assume that you have the following: +<enum> +<item>A PVR-150 MPEG-2 encoder card connected directly to a CATV source. +<item>A PVR-250 MPEG-2 encoder card connected via S-Video to a CATV Set Top Box. +</enum> + +What we are going to do is to create a single lineup at Schedules Direct and +then create two Video Sources which use the same login information but have +different channels associated with them. + +On your Schedules Direct account, create a lineup that has all of the +channels that you can receive. Because we have a Set Top Box (STB), choose +a Digital lineup. Yes, this means that you may have 900 channels in this +lineup, but that's OK. + +Use the Schedules Direct channel editor and unselect any channels that you +can't tune without the STB. This will usually be channels higher than 125, +but check your CATV provider lineup if you're not sure. Once you've +deselected them (using a click on the first channel you can't receive and +then a shift-click on the last channel you can't receive will deselect all +the channels in between those two.) click the Save Changes button at the +bottom of the screen. + +In <bf>mythtv-setup</bf>, create a Video Source with an appropriate name. +"SD-Analog Only" will be used in this example. Click "Retrieve Lineups" +and select the digital lineup you just created at Schedules Direct. + +Click "Finish" to return to the Video sources selector and then press the +ESC key to go back to the main screen. + +Now choose Input Connections. Select the PVR-150 which is connected +directly to the CATV. Set the Video Source to "SD-Analog Only" and click +"Fetch channels from listings source". + +Set the start channel to an appropriate value. + +<bf>NOTE</bf>: There is a bug where the "Fetch" command may not work; you +can tell that the Fetch did not retrieve any channels in one of two ways: in +the text-mode console, you will see a connection to Schedules Direct, but it +doesn't appear to retrieve any channel information: +<tscreen><verb> +2007-08-25 15:03:05.526 New DB DataDirect connection +2007-08-25 15:03:05.526 Connected to database 'mythconverg' at host: localhost +2007-08-25 15:03:05.536 DataDirect: Your subscription expires on 11/23/2007 01:12:10 PM +2007-08-25 15:03:05.707 New DB connection, total: 3 +2007-08-25 15:03:05.707 Connected to database 'mythconverg' at host: localhost +2007-08-25 15:03:05.708 sourceid 2 has lineup type: CableDigital +2007-08-25 15:03:06.623 Data fetching complete. +2007-08-25 15:03:06.624 DataDirect: Deleting temporary files +</verb></tscreen> + +or, the "Please add channels to this source" message in the "Starting +channel" field stays on the screen. + +If either of these happens, save the information on this screen by clicking +the "Finish" button. Exit back to the Input connections screen by pressing +ESC, then select this Input Connection again. This time the Fetch will work +and the "Please add channels to this source" message will disappear. + +If you look at the text-mode console, you'll see this if the channel +retrieval is working: +<tscreen><verb> +2007-08-25 15:04:32.437 New DB DataDirect connection +2007-08-25 15:04:32.437 Connected to database 'mythconverg' at host: localhost +2007-08-25 15:04:32.447 DataDirect: Your subscription expires on 11/23/2007 01:12:10 PM +2007-08-25 15:04:32.622 New DB connection, total: 3 +2007-08-25 15:04:32.622 Connected to database 'mythconverg' at host: localhost +2007-08-25 15:04:32.623 sourceid 2 has lineup type: CableDigital +2007-08-25 15:04:33.418 DataDirect: Adding channel 41 'AMC' (AMC). +2007-08-25 15:04:33.422 DataDirect: Adding channel 32 'A & E Network' (AETV). +2007-08-25 15:04:33.425 DataDirect: Adding channel 66 'Black Entertainment Television' (BET). +2007-08-25 15:04:33.427 DataDirect: Adding channel 180 'Bravo' (BRAVO). +2007-08-25 15:04:33.430 DataDirect: Adding channel 51 'ABC Family' (FAM). +2007-08-25 15:04:33.432 DataDirect: Adding channel 146 'Country Music Television' (CMTV). +2007-08-25 15:04:33.435 DataDirect: Adding channel 39 'CNBC' (CNBC). +2007-08-25 15:04:33.437 DataDirect: Adding channel 36 'Cable News Network' (CNN). +2007-08-25 15:04:33.440 DataDirect: Adding channel 35 'CNN Headline News' (CNNH). +</verb></tscreen> + +Repeat the Input Connection configuration for any other capture devices that +are connected directly to the CATV system. You do not need to click Fetch +once you've done one successful download of the channel information - the +Starting channel should be automatically populated. + +Go back to Schedules Direct and re-enable the channels that you had +previously deselected, then click Save Changes. + +Create a new Video Source, here called "SD-All Digital Channels". Perform +the same "Retrieve Listings" you did before. + +Go back to the Input Connections screen, select the PVR-250 which is +connected to the STB, assign the "SD-All Digital Channels" video source and +perform a retrieve channels. This will pull down the complete channel +listing, but only for <em>this</em> device. + +When <bf>mythfilldatabase</bf> runs, it will cache the "big" download which +is appropriate for the STB, and then copy the information to the channels +that can only be accessed without the STB. But by default +<bf>mythfilldatabase</bf> is going to notice that the "Analog only" video +source is missing the channels that are in the Digital lineup you created at +Schedules Direct, so we need to override the addition of new channels. + +When you run <bf>mythfilldatabase</bf> to populate your database, you'll +need to run it like this: + +<tscreen><verb> +$ mythfilldatabase --remove-new-channels +</verb></tscreen> + +You will also need to modify how the <bf>mythbackend</bf> calls +<bf>mythfilldatabase</bf> when it performs its automatic listings update. + +In <bf>mythfrontend</bf>, select "Setup" -> "General". + +Continue press ENTER until you reach the Mythfilldatabase configuration +screen. In the "mythfilldatabase Arguments" field, type +--remove-new-channels + +then press the TAB key until you reach Finish, then press ENTER to save. +You can then press ESC until you return to the main screen. +</article> +<!-- Revision History + +v0.21.00, 2008-03-10. Initial version for 0.21. Update link to ATSC +devices. Add note that ivtv driver is in kernel. Add note that xbox +mini-distribution site appears dead. Update information on HVR-1600. +Update minimum MySQL version. +v0.21.01, 2008-06-03. Add mythbuntu. +v0.21.02, 2008-06-04. Update minimyth link. +--> + +<!-- +To create documentation, run "make" in the docs/ subdirectory +--> + +<!-- Basic Style Guide for the HOWTO. + +Paths are specified with <tt> + +Program names are specified with <bf> + +Use full close tags, such as </tt> rather than the "/>" shortcut. + +For a URL link, the url= and name= should be the same. This ensures that +users who are reading the text version of the document will see what the URL +is. + +For "Notes", the format is <bf>NOTE</bf>: text here. + +label id's must be contained on one line. If they break across the right +margin the wrapped text will be considered as text and not a destination. + +Don't make a section "a" if there's no section "b". Same for numbers; no +number 1 if there's no number 2, etc. + +Itemized and enumerated items should be full sentences, and should end with +a period. + +All major sections end with a period; subsections don't. + +Dates must be in ISO8601 format YYYY-MM-DD. + +--> diff --git a/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO.txt b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO.txt new file mode 100644 index 0000000..f89175c --- /dev/null +++ b/abs/core-testing/local-website/htdocs/mythtv-doc/mythtv-HOWTO.txt @@ -0,0 +1,9235 @@ + Installing and using MythTV + Robert Kulagowski, mailto:rkulagow@rocketmail.com + <mailto:rkulagow@rocketmail.com> + 2008-06-04, v0.21.02 + + Initially, installation of MythTV seems like a huge task. There are + lots of dependencies, and various distributions seem to do the same + thing different ways. This document will attempt to give general + installation instructions, as well as including distribution-specific + instructions where necessary. + ______________________________________________________________________ + + Table of Contents + + + + 1. First things first. + 1.1 What is MythTV? + 1.2 QuickStart + 1.3 Upgrading from previous versions + 1.4 How to obtain this document / PDF versions of this document + 1.5 Books about MythTV + 1.6 Document conventions + 1.7 Mailing lists / getting help + 1.8 IRC + 1.9 Bug database + 1.10 Contributing to this document + + 2. Introduction. + 3. Checking prerequisites. + 3.1 Hardware + 3.1.1 CPU Type and Speed + 3.1.2 Memory + 3.1.3 Hard Disk(s) + 3.1.4 Filesystems + 3.1.5 Video Capture Device + 3.1.5.1 Frame Grabbers. + 3.1.5.2 Hardware MPEG-2 encoders. + 3.1.5.3 DVB capture cards. + 3.1.5.4 HDTV. + 3.1.5.5 Firewire. + 3.1.5.6 DBoxII or other devices running Neutrino + 3.1.5.7 USB Capture Devices. + 3.1.5.8 IP Recorder (RTSP, RTS, UDP) + 3.1.6 Hardware known NOT to work and other issues + 3.1.7 Sound card + 3.1.8 Video Display Card + 3.1.9 Cards with TV-out + 3.1.9.1 ATI + 3.1.9.2 NVIDIA + 3.1.9.3 Hauppauge PVR-350 + 3.1.9.4 Other Options + 3.1.10 External Adapters + 3.2 Software + 3.2.1 Pre-compiled packages + 3.2.1.1 Red Hat Linux / Fedora Core + 3.2.1.2 Mandriva + 3.2.1.3 Debian + 3.2.2 Manual installation + 3.2.3 Command-line installation + 3.2.3.1 Mandriva + 3.2.3.2 Gentoo. + 3.2.3.3 Debian. + + 4. System Configuration Requirements for Compiling MythTV. + 4.1 Software requirements for compiling MythTV + 4.1.1 General requirements + 4.2 Shared-Library requirements for MythTV + 4.2.1 Modifying /etc/ld.so.conf + 4.3 Environment variable requirements for MythTV + 4.3.1 General requirements + 4.3.1.1 QT libraries and binaries + 4.3.2 Distribution-Specific Notes + 4.3.2.1 Mandriva + 4.3.3 Device Permissions + + 5. Downloading and compiling. + 5.1 Building LAME + 5.2 XMLTV + 5.2.1 Red Hat Linux and Fedora Core: + 5.2.2 Mandriva + 5.2.3 Manual installation + 5.3 Configuring the Schedules Direct service + 5.4 Manually building MythTV + 5.4.1 Enabling real-time scheduling of the display thread. + 5.4.1.1 rlimits + 5.4.1.2 realtime module + 5.4.1.3 run as root option (not safe) + 5.4.2 Frontend-only configuration + 5.5 Gentoo + + 6. MySQL. + 6.1 Distribution-specific information + 6.1.1 Mandriva + 6.1.2 Red Hat Linux and Fedora Core + 6.1.3 Gentoo + 6.2 Setting up the initial database + 6.2.1 Mandriva and Red Hat Linux/Fedora Core + 6.2.2 Debian 3.0 + 6.2.3 Gentoo + 6.2.4 Modifying access to the MySQL database for multiple systems + + 7. Configuring Sound. + 7.1 Graphically setting up the mixer + 7.1.1 Mandriva and Red Hat Linux/Fedora Core + 7.1.1.1 Using ALSA. + 7.2 Setting the mixer from the command line + + 8. Setting up a remote control. + 8.1 Gentoo + 8.2 Obtaining and compiling lirc + 8.3 Completing the lirc install + 8.4 Additional information for lirc + 8.5 Configuring lirc for use with an IR blaster + + 9. Configuring MythTV. + 9.1 Configuring the Master backend system + 9.1.1 General + 9.1.2 Capture Cards + 9.1.3 Video Sources + 9.1.4 Input Connections + 9.1.5 Channel Editor + 9.1.6 Storage Groups + 9.1.6.1 Introduction. + 9.1.6.2 How to use Storage Groups. + 9.1.6.3 Migrating to Storage Groups. + 9.1.6.4 Advanced: Algorithm used by the Storage Group + 9.2 Post-configuration + 9.3 Configuring a non-master backend + 9.4 Configuring and running mythfilldatabase + 9.4.1 Periodically running mythfilldatabase + 9.5 Grabbing channel icons for Schedules Direct users + + 10. Configuring mythfrontend. + 10.1 General + 10.2 Appearance + 10.3 Program Guide + 10.4 Playback + 10.4.1 Video Filters + 10.4.2 Applying filters + 10.4.3 Currently Available Filters + 10.4.4 Usage Considerations + 10.5 Recording + 10.6 Xbox Frontends + + 11. Using MythTV. + 11.1 Keyboard commands + 11.1.1 mythfrontend + 11.1.2 Watching TV or a recording + 11.1.3 Watching TV only + 11.1.4 LiveTV Browse Mode + 11.1.5 Playback Recording Zoom Mode + 11.1.6 If you have two or more tuner cards + 11.1.7 Watching a recording only + 11.1.8 EPG + 11.1.9 Setting Program or Channel Recording Priorities + 11.1.10 Viewing Scheduled Recordings/Resolving Conflicts + 11.1.11 Viewing Search Listings + 11.1.12 Recording Profiles Setup Screen + 11.1.13 Recording Groups + 11.1.14 Watch Recordings Screen + 11.1.15 Remote Controls + 11.2 Using themes with MythTV + 11.3 Adding DishTV information to the database + 11.4 Adding support for an external tuner + 11.5 Using Shutdown/Wakeup + 11.5.1 A deeper look into the operation + 11.5.2 Setting up the MythTV side of this extension. + 11.5.2.1 Using WOL to wake your Master backend. + 11.5.2.2 Using BIOS wakeup to wake your Master backend. + 11.5.3 Wakeup the MySQL server using WOL + 11.5.4 Tips/Tricks: + 11.6 Controlling the mythfrontend via telnet + + 12. Scheduling Recordings. + 12.1 Record Types + 12.2 Scheduling Options + 12.2.1 Priority + 12.2.2 Duplicates + 12.2.3 Conflicts + 12.2.4 Scheduling decisions + 12.2.5 Reschedule Higher Priorities + 12.2.6 Controlling Your Schedule + 12.3 Storage Options + 12.3.1 Recording Profile + 12.3.2 Recording Group + 12.3.3 ANAME CDATA Storage Groups(REF)REF + 12.3.4 Playback Group + 12.3.5 Auto-Expire + 12.3.6 Episode Limit + 12.4 Post Recording Processing + 12.4.1 Commercial Flagging + 12.4.2 Transcoding + 12.4.3 User Jobs + 12.5 Advanced Recording Options + 12.5.1 Creating Power Search rules with Custom Record + 12.5.2 Getting Started + 12.5.3 How it Works + 12.5.4 Common Tricks and Tips + 12.5.5 Working with SQL + 12.6 Scheduling with more than one Input + 12.6.1 Mutually Exclusive Inputs + 12.6.2 Stations, Channels and Video Sources + 12.6.3 Order of Inputs + 12.6.4 Matching Callsigns + 12.6.5 Using Priorities to Prefer an Input + 12.6.6 Input Priority + 12.6.7 Channel Priority + 12.6.8 Preferred Input + 12.6.9 HDTV Priority + 12.6.10 Custom Priority + + 13. MythPlugins. + 14. MythWeb. + 14.1 Installation and prerequisites + 14.1.1 Mandriva + 14.2 Completing the installation + 14.3 Resetting the key binding table + 14.4 Resetting the theme. + + 15. MythGallery. + 15.1 Installation and prerequisites + 15.2 Using MythGallery + 15.3 Importing Pictures + + 16. MythGame. + 16.1 Setup Directory Structure + 16.2 Download and Install xmame + 16.3 Download extra files + 16.4 Download and Install MythGame. + 16.5 Setup xmame in MythGame + 16.6 Hints: + + 17. MythMusic. + 17.1 Manual installation of prerequisites + 17.2 Mandriva + 17.2.1 Additional options with MythMusic + 17.3 Red Hat Linux 9 + 17.4 Compiling MythMusic + 17.5 Configuring MythMusic + 17.6 Using MythMusic + 17.7 Troubleshooting MythMusic + 17.7.1 When I run MythMusic and try and look up a CD, I get an error message + + 18. MythWeather. + 19. MythVideo. + 20. MythDVD. + 20.1 Manual Compilation of Prerequisites + 20.2 Pre-compiled binaries + 20.3 Running the Myth Transcoding Daemon + + 21. MythNews. + 22. Troubleshooting. + 22.1 Compiling + 22.1.1 Compile errors + 22.1.2 make: *** No rule to make target /usr/lib/qt3/mkspecs/default/qmake.conf', needed by Makefile'. Stop. + 22.1.3 make: *** No rule to make target /mkspecs/default/qmake.conf', needed by Makefile'. Stop. + 22.1.4 Internal Segmentation Fault. + 22.2 Debugging + 22.2.1 MythTV segfaults + 22.2.2 MythTV isn't doing anything + 22.2.3 Debugging with GDB + 22.2.4 MythTV is crashing your system + 22.3 Installing + 22.3.1 When trying to run mythtv-setup, you get an error like this: "mythtv-setup: error while loading shared libraries:" + 22.4 Using + 22.4.1 No programs are displayed in "Watch Recordings" + 22.4.2 MySQL not connecting correctly + 22.4.3 MySQL database is corrupt + 22.4.4 Using a MPEG-2 encoder card and the video appears "jittery" + 22.4.5 Using a MPEG-2 encoder card and the video is jumping up and down + 22.4.6 Screen goes blank but returns when mouse is moved or keyboard is used + 22.5 Miscellaneous + 22.5.1 mythfilldatabase failing + 22.5.2 Fast CPU, choppy or jittery video + 22.5.3 Frontend appears to be slow at jumping / seeking. + 22.5.4 On-screen Display shows incorrect program length. + 22.5.5 Troubleshooting audio + 22.5.6 Mythbackend reports that your card is not reporting full duplex capabilities + 22.5.7 The mythbackend program told me to look at this section + 22.5.8 My remote doesn't work / works sometimes and not others / "ghost" keypresses + 22.5.9 Where's "canada-cable"? + 22.5.10 Channels are off by one + 22.5.11 Mythweb is showing a db_open error when I connect to it + 22.5.12 Mouse pointer disappears when placed over the MythTV windows + 22.5.13 What does "strange error flushing buffer" mean on the console? + 22.5.14 Can't change the channel when watching Live TV. + 22.5.15 Screen goes black when you try to play something + 22.5.16 Poor performance with NVidia cards and XvMC + 22.5.17 Computer is loading a media player application when you insert a CD or DVD + + 23. Miscellaneous. + 23.1 I'd like to watch the files without using MythTV / I'd like to convert the files to some other format + 23.1.1 mythtranscode example + 23.2 Using a different window manager + 23.3 What capture resolution should I use? How does video work? + 23.4 MythTV GUI and X Display Sizes + 23.4.1 X Dimensions + 23.4.2 MythTV Dimensions + 23.4.3 Overscan Dimensions + 23.5 Saving or restoring the database + 23.6 Deleting the MySQL database + 23.7 Moving your data to new hardware + 23.8 btaudio + 23.9 Removing unwanted channels + 23.10 NFS + 23.11 Automatically starting mythfrontend at system boot time + 23.12 Automatically starting mythbackend at system boot time + 23.12.1 Red Hat And Mandriva + 23.12.1.1 Log files + 23.12.1.2 Mandriva + 23.12.2 Gentoo + 23.13 Advanced Backend Configurations + 23.14 Using the transcoder + 23.14.1 Configuring Recording Profiles to Allow Transcoding + 23.14.2 Configure Transcoding Profiles + 23.14.3 Create/Alter Scheduled Recordings to Enable Transcoding + 23.14.4 Manual Transcoding + 23.15 Changing your hostname + 23.16 Can I run MythTV on my TiVo? + 23.17 Can I run MythTV on my ReplayTV? + 23.18 Can a wireless connection be used between the frontend and the backend? + 23.19 How can I burn shows that I have recorded to a DVD? + 23.20 Using the DBoxII within MythTV + 23.21 What do the icons on the Watch Recordings screen mean? + 23.22 What do the letters mean when I change channels? + 23.23 What is the difference between the various Hauppauge PVR models? + 23.24 Changing channels on an external Set Top Box + 23.25 Configuring one machine to flag all commercials + + 24. Example Configurations. + 24.1 Logical Volume Manager (LVM) + 24.1.1 ReiserFS + 24.1.2 ext2 or ext3 + 24.1.3 xfs + 24.2 Advanced Partition Formatting + 24.2.1 Ext2 + 24.2.2 Ext3 + 24.2.3 ReiserFS + 24.2.4 JFS + 24.2.5 XFS + 24.3 Migrating from DataDirect Labs to Schedules Direct + 24.4 Caching support for Schedules Direct + + + + ______________________________________________________________________ + + 1. First things first. + + + + NOTE: Please note that I, Robert Kulagowski, am NOT the + author/programmer of the MythTV application! I can not give you + personalized installation support. If you are having issues + installing MythTV you should examine the archives, or post your + question to the MythTV-users mailing list. If you send me "Does + MythTV work with 'X'"? messages - I will simply instruct you to ask + your question on the mythtv-users mailing list. + + 1.1. What is MythTV? + + MythTV is a GPL licensed suite of programs that allow you to build the + mythical home media convergence box on your own using Open Source + software and operating systems. MythTV is known to work on Linux and + Mac OS X (PowerPC and Intel). It does not run on Windows. + + MythTV has a number of capabilities. The television portion allows + you to do the following: + + +o You may pause, fast-forward and rewind live Television. + + +o You may install multiple video capture cards to record more than + one program at a time. + + +o You can have multiple servers (called "backends"), each with + multiple capture cards in them. All scheduling is performed by the + Master backend, which arbitrates which recording will be performed + by each device. All recording requests are managed by the Master + backend, so you can schedule a recording from any client. + + +o You can have multiple clients (called "frontends" in MythTV + parlance), each with a common view of all available programs. Any + client can watch any program that was recorded by any of the + servers, assuming that they have the hardware capabilities to view + the content; a low-powered frontend will not be able to watch HDTV, + for example. Clients can be diskless and controlled entirely by a + remote control. + + +o You may use any combination of standard analog capture card, + MPEG-2, MJPEG, DVB, HDTV, USB and firewire capture devices. With + appropriate hardware, MythTV can control set top boxes, often found + in digital cable and satellite TV systems. + + +o Program Guide Data in North America is downloaded from + schedulesdirect.org, a non-profit organization which has licensed + data from Tribune Media Services. This service provides almost two + weeks of scheduling information. Program Guide Data in other + countries is obtained using XMLTV. MythTV uses this information to + create a schedule that maximizes the number of programs that can be + recorded if you don't have enough tuners. + + +o MythTV implements a UPNP server, so a UPNP client should + automatically see content from your MythTV system. + + Other modules in MythTV include: + + +o MythArchive, a tool to create DVDs + + +o MythBrowser, a web browser + + +o MythControls, an application to configure your remote control + + +o MythFlix, a Netflix module + + +o MythGallery, a picture-viewing application + + +o MythGame + + +o MythMusic, a music playing / ripping application which supports MP3 + and FLAC + + +o MythNews, a RSS news grabber + + +o MythPhone, phone and videophone using SIP. + + +o MythVideo, DVD ripper and a media-viewer for content not created + within MythTV + + +o MythWeather + + +o MythWeb, which allows you to control your MythTV system using a web + browser. With MythWeb, you can schedule and delete recordings, + change keybindings and more. With proper security, you may even + schedule a program over the Internet and have it immediately acted + on by the Master backend. + + 1.2. QuickStart + + Custom mini-distributions are available to make it easier to install + MythTV. A mini-distribution removes many of the "general purpose" + workstation / server software packages that may be installed by + default if you use one of the big-name OS packages. + + See http://mysettopbox.tv <http://mysettopbox.tv> if you'd like to + install a custom version of Knoppix optimized for MythTV. + + See http://www.minimyth.org <http://www.minimyth.org> if you'd like to + install MythTV onto a diskless system. + + See http://bit.blkbk.com <http://bit.blkbk.com> if you'd like to + install MythTV on a Xbox. NOTE: Site appears unmaintained. + + See http://wilsonet.com/mythtv/ <http://wilsonet.com/mythtv/> for + instructions tailored to RedHat's Fedora Core distribution. + + See http://www.mythbuntu.org <http://www.mythbuntu.org> if you'd like + to install a customized version of Ubuntu optimized for MythTV. + + There is a MythTV wiki at http://wiki.mythtv.org + <http://wiki.mythtv.org>. + + If you are installing this version for Schedules Direct support, + please see the ``Migrating from DataDirect Labs to Schedules Direct'' + section for additional information. + + + 1.3. Upgrading from previous versions + + The upgrade from previous versions should be transparent. Any changes + to the database structure should be applied automatically. + + It is strongly recommended that you back up your database before + installing a new version of MythTV. + + See ``Saving or Restoring the database'' for instructions. + + + 1.4. How to obtain this document / PDF versions of this document + + This HOWTO document is maintained at the primary MythTV website: + http://www.mythtv.org <http://www.mythtv.org> by Robert Kulagowski + <mailto:rkulagow@rocketmail.com>. + + This document is available as a single-page HTML document at + http://www.mythtv.org/docs/mythtv-HOWTO-singlehtml.html + <http://www.mythtv.org/docs/mythtv-HOWTO-singlehtml.html> or as a PDF + at http://www.mythtv.org/docs/mythtv-HOWTO.pdf + <http://www.mythtv.org/docs/mythtv-HOWTO.pdf>. + + This HOWTO is for MythTV v0.21 + + Release notes for this version may be found in the MythTV Wiki at + http://www.mythtv.org/wiki/index.php/Release_Notes_-_0.21 + <http://www.mythtv.org/wiki/index.php/Release_Notes_-_0.21> + + + 1.5. Books about MythTV + + If you would like to purchase a book specifically about MythTV: + + + +o Hacking MythTV, ISBN 978-0470037874 by Wilson, Tittel, Wright and + Korelc + + +o Practical MythTV: Building a PVR and Media Center PC, ISBN + 978-1590597798 by Smith and Still + + + 1.6. Document conventions + + The following conventions are used throughout this document. + boldface - used for program names. + typewriter - used for program paths. + emphasis - Pay attention here. + + + + Pay more attention. + + + + Ignore at your own peril. + + + + Feature that has been added to SVN (subversion, a revision control system) + but is not available in the current release. + + + + 1.7. Mailing lists / getting help + + It's recommended that you join the user list at + http://www.mythtv.org/mailman/listinfo/mythtv-users + <http://www.mythtv.org/mailman/listinfo/mythtv-users>. The developer + list is at http://mythtv.org/cgi-bin/mailman/listinfo/mythtv-dev + <http://mythtv.org/cgi-bin/mailman/listinfo/mythtv-dev>. Please keep + the developer list strictly for development-related issues. + + Searchable archives for the lists are available at + http://www.gossamer-threads.com/lists/mythtv/ <http://www.gossamer- + threads.com/lists/mythtv/>. + + + 1.8. IRC + + There are two IRC channels dedicated to MythTV which can be found on + irc.freenode.net + + +o mythtv + + +o mythtv-users + + The mythtv channel is where the developers discuss code. It is not a + user-support channel. Please don't ask non-development related + questions there. + + + + Really. Even if there's no one in the mythtv-users IRC group or everyone + seems to be ignoring you. + + + 1.9. Bug database + + If you feel you need to contribute to a bug database, use the MythTV + bug ticketing system at http://svn.mythtv.org/trac + <http://svn.mythtv.org/trac>. + + Good entries will contain the following: + + 1. Qt version + + 2. Linux distribution + + 3. gcc version + + 4. the last entry in config.log to detail how you compiled + + 5. MythTV version numbers (e.g.from mythfrontend --version) + + 6. Hardware + + 7. How you are able to reproduce the bug + + See the instructions on how to debug in ``Section 22''. + + The bug database is not a chat room, so restrict your entries to what + is relevant. It's also not a repository of feature requests; a + feature request without an accompanying patch file to implement that + feature will be quickly closed. There is a feature wishlist on the + wiki at http://www.mythtv.org/wiki/index.php/Feature_Wishlist + <http://www.mythtv.org/wiki/index.php/Feature_Wishlist>. There is no + guarantee that anything on the wishlist will ever get code written to + implement it. + + If a developer closes out your bug, it's likely you didn't provide + enough information. Don't re-open a bug without providing additional + information. + + + 1.10. Contributing to this document + + Contributions to the HOWTO are welcome, especially if you find a + grammatical or spelling error, or if the wording of something is just + plain confusing. + + If you'd like to make a new contribution, create a ticket at + http://svn.mythtv.org/trac <http://svn.mythtv.org/trac> and click "New + Ticket". The type should be set to "patch" and the owner set to + "rkulagow" to ensure that I see your contribution. + + Please send it as either SGML or as plain text. NO HTML. The source + used to create the HOWTO is in SGML / Linuxdoc. Do not be afraid of + SGML! A quick look at the source of this HOWTO will show that it is + not difficult, because there aren't that many tags to worry about, so + at least try to submit as SGML. See the Linuxdoc HOWTO at + http://www.tldp.org/HOWTO/Howtos-with-LinuxDoc.html + <http://www.tldp.org/HOWTO/Howtos-with-LinuxDoc.html> for information + on the linuxdoc format itself, or look at the mythtv-HOWTO.sgml file + as an example. + + To create the actual patch, run diff -u origfilename newfile > + doc.patch and attach your contribution to the trac ticket. + + + 2. Introduction. + + This HOWTO document will focus on manually building MythTV in a North + American environment. If you have installation instructions for a + different region or Linux distribution, please send them to the author + so that it can be included in other versions of this document. + + + 3. Checking prerequisites. + + You must ensure that any firewalls (either hardware, or a software + firewall installed by your distribution) will not block access to the + ports that will be used by the MythTV clients and servers on the + "inside" LAN. The ports for MySQL (TCP port 3306) and mythbackend + (TCP ports 6543 and 6544) must be open. It is strongly recommended + that you do not expose the MythTV and MySQL ports to the Internet or + your "Outside" LAN. + + + 3.1. Hardware + + Hardware selection is a complex topic, one this HOWTO will only + discuss briefly and in general terms. The following subsections offer + some general guidance but stop short of offering specific + recommendations. + + For a good MythTV experience, you must understand that MythTV + exercises your hardware more than a typical desktop. Encoder cards + generate DMA across the PCI bus. The CPU is busy encoding / decoding + video. Hard drives are constantly reading and writing data. Building a + MythTV system on older / "spare" hardware may be an exercise in + frustration and can waste many hours of valuable time. + + For more detail about actual configurations that others have used, + Mark Cooper has setup a hardware database at + http://pvrhw.goldfish.org/ <http://pvrhw.goldfish.org/>. The website + will let you browse what other users have reported as their hardware + configuration, and how happy they are with the results. + + If you have specific questions about the suitability of specific + hardware choices, you can consult the archives of the mythtv-users + mailing list at http://www.gossamer-threads.com/lists/mythtv/ + <http://www.gossamer-threads.com/lists/mythtv/> or post a question to + the list. + + 3.1.1. CPU Type and Speed + + Selection of CPU type and speed is one of the trickiest elements of + hardware selection, mainly because there are so many tradeoffs which + can be made. For example, if you have plenty of CPU, you can use + higher bitrates or capture sizes, etc. + + MythTV has two modes of operation. First, it can function as a + software video encoder, which means that it uses a fairly generic + "dumb" video capture card to get frames of video, encodes them using + the CPU on your motherboard and writes them to disk. High-end video + capture cards and devices like the TiVo and ReplayTV have dedicated + encoder chips which use specialized hardware to convert the video + stream to the MPEG-2 format without using the motherboard CPU. The + main CPU has the responsibility of running the Operating System and + reading and writing the encoded frames to the disk. These tasks have + fairly low CPU requirements compared to encoding video, which is why a + device like a Series 1 TiVo can run with only 16MB of RAM and a 54MHz + CPU. + + There are many variables that go into the question: "How fast a CPU do + I need to run MythTV"? Obviously, the faster your CPU, the better + your experience will be with MythTV. If you are using the software + MPEG-4 encoder and performing the "Watch TV" function, where the CPU + is both encoding and decoding video simultaneously to allow Pause, + Fast Forward and Rewind functions for live TV requires more CPU then + just encoding or decoding. MythTV also supports multiple encoder + cards in a single PC, thereby increasing the CPU requirements if you + plan on simultaneously encoding multiple programs. As a general + guideline, plan on 1GHz per encoder if you are doing software-based + encoding, less if you are using a hardware-based encoder. + + Here are a few data points: + + +o A PIII/733MHz system can encode one video stream using the MPEG-4 + codec using 480x480 capture resolution. This does not allow for + live TV watching, but does allow for encoding video and then + watching it later. + + +o A developer states that his AMD1800+ system can almost encode two + MPEG-4 video streams and watch one program simultaneously. + + +o A PIII/800MHz system with 512MB RAM can encode one video stream + using the RTjpeg codec with 480x480 capture resolution and play it + back simultaneously, thereby allowing live TV watching. + + +o A dual Celeron/450MHz is able to view a 480x480 MPEG-4/3300kbps + file created on a different system with 30% CPU usage. + + +o A P4 2.4GHz machine can encode two 3300Kbps 480x480 MPEG-4 files + and simultaneously serve content to a remote frontend. + + The second mode of operation is where MythTV is paired with a + hardware-based video encoder, such as a Matrox G200 or a Hauppauge + WinTV-PVR-150/250/350/500. In this mode, because the video encoding + is being done by a dedicated video processor, the host CPU + requirements are quite low. See the ``Video Capture Device'' section + for details. + + The price differential between a frame grabber and a card that + implements hardware MPEG-2 encoding, such as the Hauppauge PVR-x50 + series, is now less than $30 US. Primary development in MythTV has + transitioned to supporting MPEG-2 capture devices and HDTV, so if + given the option, go with the hardware MPEG-2 encoder. + + If you have a Via M10000 series or a Hauppauge PVR-350, MythTV can use + the hardware-based video decoder for playback, which further reduces + CPU requirements. + + + 3.1.2. Memory + + A MythTV host that is both a backend and a frontend and using software + encoding with a single capture card should run adequately in 256MB of + RAM. Additional RAM above 256MB will not necessarily increase + performance, but may be useful if you are running multiple encoders. + + + 3.1.3. Hard Disk(s) + + Encoded video takes up a lot of hard disk space. The exact amount + depends on the encoding scheme, the size of the raw images and the + frames per second, but typical values for MythTV range from 700 + megabytes/hour for MPEG-4, 2 GB/hour for MPEG-2 and RTjpeg and 7 + GB/hour for ATSC HDTV. + + + + NOTE: You must use DMA for hard drive access to prevent + choppy or jittery video. Not all distributions enable DMA at boot + time. See the Troubleshooting Section for ``instructions'' on how to + do this. + + Writing video to disk is sensitive to timing issues; RTjpeg requires + less CPU with the tradeoff being larger files and needing to write to + the disk faster. MPEG-4 requires more CPU, but the files are smaller. + At the default resolution, MPEG-2 creates the largest files of all + with almost no CPU impact. + + See the Troubleshooting ``section'' for more information. + + + 3.1.4. Filesystems + + MythTV creates large files, many in excess of 4GB. You must use a 64 + or 128 bit filesystem. These will allow you to create large files. + Filesystems known to have problems with large files are FAT (all + versions), and ReiserFS (versions 3 and 4). + + Because MythTV creates very large files, a filesystem that does well + at deleting large files is important. Numerous benchmarks show that + XFS and JFS do very well at this task. You are strongly encouraged to + consider one of these for your MythTV filesystem. JFS is the absolute + best at deletion, so you may want to try it if XFS gives you problems. + MythTV .21 incorporates a "slow delete" feature, which progressively + shrinks the file rather than attempting to delete it all at once, so + if you're more comfortable with a filesystem such as ext3 (whose + delete performance for large files isn't that good) you may use it + rather than one of the known-good high-performance file systems. + There are other ramifications to using XFS and JFS - neither offer the + opportunity to shrink a filesystem; they may only be expanded. + + + + NOTE: You must not use ReiserFS v3 for + your recordings. You will get corrupted recordings if you do. + + Because of the size of the MythTV files, it may be useful to plan for + future expansion right from the beginning. If your case and power + supply have the capacity for additional hard drives, read through the + ``LVM'' and ``Advanced Partition Formatting'' sections for some + pointers. + + + 3.1.5. Video Capture Device + + In order to capture video, MythTV will need one or more video capture + devices with Linux drivers. There are a number of classes of hardware + available for capturing video. + + 3.1.5.1. Frame Grabbers. + + This class of card is the simplest and is usually the cheapest. There + is no on-board encoding of the analog video; hardware known as a + Digital-Analog Converter (DAC) takes the video and presents it to the + computer in an essentially raw digital form. + + For a list of video capture cards known to work with Linux, please see + /usr/src/linux/Documentation/video4linux/bttv for a partial listing; + even if your specific card is not listed, it may be that the vendor is + actually using a standard reference design and placing their own name + on it. See the video4linux mailing list + (https://listman.redhat.com/mailman/listinfo/video4linux-list + <https://listman.redhat.com/mailman/listinfo/video4linux-list>) for + more information and for specific hardware questions. + + The most common inexpensive cards available use the Bt848, Bt878 or + CX2388x series of video capture chips; examples are the "Hauppauge + WinTV Go" card and the "AverTV Desktop PVR" card, both of which use + the bttv kernel module. + + + ______________________________________________________________________ + NOTE: The ATI TV Wonder series and the ATI All-in-Wonder series of cards + are not the same. The All-in-Wonder cards will not work with MythTV. + ______________________________________________________________________ + + + + NOTE: The ATI All-in-Wonder cards (which are not the same + as the ATI TV Wonder, TV Wonder VE or TV Wonder Pro) will not work as + a MythTV capture device because the GATOS http://gatos.sourceforge.net + <http://gatos.sourceforge.net> drivers that are available provide only + a limited subset of the V4L API. The TV Wonder series of cards are + supported by the Bt8x8 Video4Linux driver. + + After you have installed a suitable capture device, you can check that + the kernel sees it with lspci. Look for an entry labeled "Multimedia + video controller". To get more detailed information about the card, + use lspci -v or lspci -vv. Ensure that your system is loading the + bttv modules by typing: + + + # lsmod |grep bttv + + + + You want to see the bttv module listed. + + 3.1.5.2. Hardware MPEG-2 encoders. + + While inexpensive video-capture cards simply capture raw frames, + leaving encoding to software, some higher-end cards incorporate + hardware-based encoding. Using either a G200 MJPEG encoder card, or a + MPEG-2 encoder card supported by the IvyTV project + http://ivtvdriver.org <http://ivtvdriver.org/> such as the Hauppauge + PVR-150/250/350/500, Avermedia M179, Hauppauge "Freestyle" or Yuan + M600 cards will allow you to use dedicated hardware encoders rather + than your CPU. (The PVR-350 can simultaneously be used as an output + device.) Using the on-board MPEG-2 encoder greatly reduces the CPU + requirements for encoding. + + The ivtv driver was incorporated into the Linux kernel starting at + v2.6.22. + + There is a Beta driver for the HVR-1600 card at + http://www.ivtvdriver.org/index.php/Cx18 + <http://www.ivtvdriver.org/index.php/Cx18> + + NOTE: Motherboards with the Via chipset are notoriously bad with DMA + and have caused numerous issues with ivtv, including hard locks. See + the ivtv website http://ivtvdriver.org <http://ivtvdriver.org> for the + latest information on what works and what doesn't. + + Here are some data points for encoding: + + +o A Celeron 450 uses 2% CPU for encoding a 480x480 16Mbps MPEG-2 + stream. + + Here are some data points for decoding: + + + +o An Athlon 1800XP can decode a 720x480 8Mbps MPEG-2 file using 10% + CPU + + +o An Athlon 1GHz can decode a 720x480 16Mbps MPEG-2 file using 30-50% + CPU, can decode a 480x480 16Mbps MPEG-2 using 30% CPU and + approximately 30% for Live TV at 416x480. + + +o A P3-550 can decode a 480x480 16Mbps MPEG-2 file with 55% CPU. + + +o A Celeron 450 (no SSE) can decode a 480x480 16Mbps MPEG-2 file with + 80% CPU. + + + 3.1.5.3. DVB capture cards. + + DVB is a video standard primarily found in Europe (where it comes in + DVB-C, DVB-T and DVB-S varieties for Cable, Terrestrial and Satellite) + and is also used as the programming interface for HDTV capture cards + in Linux. To see if your DVB card is supported, see the list of cards + in the "Supported Hardware" section of the DVB Wiki at + http://www.linuxtv.org/wiki/index.php/Main_Page + <http://www.linuxtv.org/wiki/index.php/Main_Page> for more + information. + + In the United States, you may use a card such as the TwinHan to obtain + unencrypted Free-To-Air satellite channels. See + http://www.lyngsat.com/ <http://www.lyngsat.com/> for the types of + content which is available. + + + 3.1.5.4. HDTV. + + There are a number of HDTV cards with Linux drivers which are known to + operate in the United States; a complete list of cards with DVB + drivers can be found at + http://www.linuxtv.org/wiki/index.php/ATSC_Devices + <http://www.linuxtv.org/wiki/index.php/ATSC_Devices> Some cards + support capture of unencrypted digital cable TV (utilizing QAM256), + others will only work with Over The Air (aka "OTA") signals captured + with an antenna (with 8VSB). + + Cards that have been reported to work include: + + +o pcHDTV HD-2000, Air2PC PCI rev 1-3 (8VSB only) + + +o SiliconDust HDHomeRun (8VSB, QAM256) + + +o pcHDTV HD-3000/5500 (8VSB, QAM256) + + +o Air2PC HD-5000 (8VSB, QAM256) + + +o DViCO Fusion HDTV Lite/Gold 5 (8VSB, QAM256) + + NOTE: There are no known consumer-level capture devices which will + allow you to capture the HDTV output (DVI, HDMI, VGA, YPbPr / + Component) from a set-top box commonly found with digital cable + systems or satellite systems. None of the capture devices listed above + perform any encoding; they merely allow your computer to save a copy + of a HDTV stream which has already been converted to MPEG-2 at the + broadcast facility. + + NOTE:: All of the cards listed above (except for the HD-2000 and + HDHomeRun) should be configured as DVB cards. The HD-2000 can be + configured as a pcHDTV card if you use the V4L drivers from + http://www.pchdtv.com <http://www.pchdtv.com> and use Linux kernel + 2.6.9 or earlier. With kernel 2.6.10 and higher it must be configured + as a DVB card, but you lose access to the second antenna input in ATSC + mode. The HDHomeRun should be configured as two HDHomeRun cards, one + for each tuner. + + To playback HDTV content, plan on a powerful CPU. "How powerful?" + depends on a number of factors, such as the capture resolution, + whether the video is progressive or interlaced, and whether your + display card has hardware-assist support for Linux. + + The Simple Answer: Once you are in the 3.2 Ghz P4-class of CPU you + should have no issues with viewing HDTV. + + + The Complicated Answer: + + For 720p content (1280x720), a 2.4GHz P4 should be sufficient. + + For 1920x1080i->1920x1080p with the better deinterlacing methods done + in real time a 2.4GHz CPU is taxed, but should work if you use "Bob + and Weave" deinterlacing, or if you have an NVIDIA card with MPEG-2 + hardware acceleration. If you enable the hardware acceleration, you + may be able to use a 1.8GHz processor. + + + 3.1.5.5. Firewire. + + You may use the Firewire output of the Motorola DCT6200 or the SA3250. + If your provider uses 5C encryption on a particular channel, you won't + be able to get any content. + + + 3.1.5.6. DBoxII or other devices running Neutrino + + You may use the Ethernet port of an DBoxII or a similar device to + capture MPEG2. Your set top box has to be running the Neutrino GUI. + + + 3.1.5.7. USB Capture Devices. + + The Plextor ConvertX PVR devices are supported through Linux drivers + available from http://www.plextor.com/english/support/LinuxSDK.htm + <http://www.plextor.com/english/support/LinuxSDK.htm>. MythTV uses the + Plextor to capture hardware encoded MPEG-4, so the host CPU + requirements are low. + + Hauppauge WinTV-PVR-USB2 (driver available at + http://www.isely.net/pvrusb2/ <http://www.isely.net/pvrusb2/>) + emulates a PVR-x50 card. + + + 3.1.5.8. IP Recorder (RTSP, RTS, UDP) + + MPEG-2, MPEG-4 and H.264 internet TS stream recording is supported + using the IPTV recorder in MythTV. This recorder expects the channels + to be supplied as a m3u playlist. If your DSL/Fiber provider supplies + television service, but does not provide a m3u playlist for the + channels, you can construct one for your own use. You do not need to + download it from the same server as the streams themselves, and can + also read it from a file if this is more convenient. + + NOTE: Some DSL providers only allow you to use one recorder at a time, + so you may need to limit yourself to one recorder in MythTV and turn + off any set top box the cable provider sold or rented to you with your + service. This limitation is independent of the bandwidth you have + purchased. + + + 3.1.6. Hardware known NOT to work and other issues + + + +o Hauppauge WinTV-D or -HD (no driver) + + +o Hauppauge WinTV-USB series + + +o Hauppauge WinTV-PVR-usb (model 602), or WinTV-PVR-PCI (model 880) + cards (no driver - this is not the PVR-250/350 series of cards + supported by the IvyTV driver) + + + +o ATI All-in-Wonder series + + + 3.1.7. Sound card + + The system needs a sound card or an on-board equivalent on the + motherboard to play back and in most cases, to record sound. Any sound + card that can be operated by the ALSA (Advanced Linux Sound + Architecture) kernel modules will work with MythTV. However, some + cards and drivers will provide better quality or compatibility than + others. In particular, many audio devices included on motherboards + can be problematic. + + The usual practice for capturing the audio associated with the video + is to run a cable from an audio output on the video capture card to + the Line input on a sound card. However, some video capture cards + provide on-board audio capabilities that work with the kernel btaudio + module instead, thereby eliminating the need for a cable. This is + useful if you will be using multiple capture cards in a single + chassis, since each capture card will not need its own sound card. + Note that a separate sound card is still required for playback when + using btaudio, and that often the audio recorded in this way will be + mono only. See the ``btaudio'' section for more information. + + + + NOTE: Analog video capture cards are the only ones which + require a soundcard for capturing audio. DVB, HDTV, and other + hardware encoder cards all provide a combined audio / video stream. + + + + NOTE: Plugging a Line-level device into the Mic input is + not recommended. Line-level devices have higher voltages and can + damage the sound card. In addition, even if it doesn't break your + card, you will be getting Mono sound. See the Linux MP3 HOWTO at + http://www.tldp.org/HOWTO/MP3-HOWTO.html + <http://www.tldp.org/HOWTO/MP3-HOWTO.html> for additional information. + + + 3.1.8. Video Display Card + + MythTV will work with just about any video card. However, it is + highly recommended that you use a card which supports XVideo (XV) + extensions. If your card does not support XV, color conversion and + scaling will be performed by your CPU rather than the video card. + This is very CPU and memory intensive and will often result in dropped + frames and a corresponding degradation of quality. Check the X + documentation for details if you are uncertain about your preferred + card. You may also run xvinfo; look for your video card to be listed + as one of the adapters. + + + If you want to use MythTV with a standard television, you will need a + physical connection from your video card to your TV set, which can + either be a TV-out port on the card itself or an external adapter that + converts the VGA signal to an appropriate video signal. "Appropriate" + depends on a number of factors, such as video standard (NTSC vs. PAL), + the type of input connection (Composite vs. SVideo), etc. + + Note that with some video cards and X drivers, XVideo extensions are + only supported on the VGA output, and not on the TV output. + + + 3.1.9. Cards with TV-out + + The next section deals with a number of cards that are known to have + TV-out ports. The list is unlikely to be complete, so if you know of + others, please post a message to the mythtv-users mailing list so the + information can be included in future versions of the HOWTO. The list + is organized by manufacturer. + + Reports here are based on what users of the cards have posted on the + mythtv-users mailing list, so if you need configuration details, + please search the archives at http://www.gossamer- + threads.com/lists/mythtv/ <http://www.gossamer- + threads.com/lists/mythtv/> using the card name in your search string. + + + 3.1.9.1. ATI + + ATI makes many cards with TV-out capability, but only offers Linux + drivers for Radeon 8500 and above cards. See the Drivers and Software + section of http://www.ati.com <http://www.ati.com/> for the driver and + additional information. + + The enhanced ati.2 X driver created by the GATOS + http://gatos.sourceforge.net <http://gatos.sourceforge.net> project + offers some support for TV-out on other ATI cards, but only in its + "experimental" version, available through CVS. There have been reports + from people who say they have made this driver work with one or + another ATI card. For example, Bruce Markey <mailto:bjm@lvcm.com> + writes (on the mythtv-users mailing list): "I got this to work. You + can quote me on that. I've used TV-out on several models of ATI cards + both All-In-Wonder and regular cards with TV-out." See the + "Adventurous Setup" section of + http://gatos.sourceforge.net/watching_tv.php + <http://gatos.sourceforge.net/watching_tv.php> for details. Also see + http://www.retinalburn.net/linux/tvout.html + <http://www.retinalburn.net/linux/tvout.html> for more information. + + + 3.1.9.2. NVIDIA + + Some NVIDIA cards with TV-out can be run using the standard nv driver + in X, combined with the userspace application nvtv to control the TV- + out port. See http://sourceforge.net/projects/nv-tv-out/ + <http://sourceforge.net/projects/nv-tv-out/> for details. Recent + versions of the NVIDIA driver have better support for overscan and + other features useful with TV-Out, so the nvtv application may not be + required. + + Some NVIDIA cards can be run with a proprietary NVIDIA X driver made + available by NVIDIA. See http://www.nvidia.com/object/unix.html + <http://www.nvidia.com/object/unix.html> for more information. + + NOTE: It's strongly recommended that you use the proprietary NVIDIA + drivers; they have excellent support for XvMC and ship with a good + configuration utility. XvMC provides MPEG-2 hardware acceleration, + which is important if you want to display HDTV. + + + 3.1.9.3. Hauppauge PVR-350 + + MythTV supports the TV-out and MPEG-2 decoder functions in the IvyTV + driver. + The PVR-350 is unique amongst the Hauppauge PVR-x50 cards in that it + also supports audio output, but you need to connect that audio output + to something. There are two courses of action you may take: + + 1. Take the audio output from the PVR-350 and plug it into an input on + a sound card on your machine. You may then use MythTV's internal + audio controls. + + 2. Take the audio output from the PVR-350 and connect it directly to + your television / audio system. You must indicate that you are + using external audio control on the PVR-350 setup page. + + + 3.1.9.4. Other Options + + Some devices with on-board TV-out capability, such as Xboxes converted + to Linux and some laptops can be used as MythTV frontends to display + on a television screen. Please consult the mythtv-users mailing list + for messages that report the details of these special arrangements. + + + 3.1.10. External Adapters + + External adapters convert standard VGA output to a form suitable for + display on a television. The output format varies by region, since + different countries have different TV standards. People on the mythtv- + users list have mentioned these adapters: + + + +o AITech Web Cable Plus, powered by external transformer or takes + power from PS/2 keyboard connector, support resolutions up to + 1024x768, outputs composite and SVideo, provides position + adjustment. + + +o Averkey lite, powered by a USB port, has Composite, SVideo, YPbPr + outputs; pan, brightness, overscan/underscan controls; supports up + to 1024x768 outputs; and supports PAL and NTSC. + + +o ADS TV Elite XGA + + +o AverKey iMicro (comments are generally favorable) + + +o AITech Web Cable (comments are generally unfavorable, different + than the "Plus" version above) + + +o TVIEW Gold (mentioned once, favorably) + + + 3.2. Software + + There are a few ways of installing programs on Linux systems; you can + either use a pre-compiled package, or install from a tarball after + satisfying any prerequisites. + + + + NOTE: you must have the MySQL database software installed on a + system to store the master database. This does not necessarily mean + that MySQL must run on one of the MythTV boxes. The minimum MySQL + version is 5.0. + + + + 3.2.1. Pre-compiled packages + + A number of people have created pre-compiled packages for MythTV that + may make your installation easier. + + + + BIG FAT WARNING: This HOWTO assumes that you have not + installed MythTV from a package. All example command lines and file + locations are based on the MythTV tarball defaults. Some packagers + have modified the filenames, binaries and file locations to match what + is commonly found in that distribution. Any issues with MythTV + installed via a pre-compiled package MUST be raised with the packager. + + If you use any of the pre-compiled packages you may not need to + perform any additional configuration steps in this HOWTO. The next + logical step is ``configuring MySQL'', which you may or may not have + to perform. See your package documentation. + + + 3.2.1.1. Red Hat Linux / Fedora Core + + The definitive documentation on installing MythTV on Red Hat Linux / + Fedora Core can be found in Jarod Wilson's (mailto:jcw@wilsonet.com + <mailto:jcw@wilsonet.com>) HOWTO at http://wilsonet.com/mythtv/ + <http://wilsonet.com/mythtv/> Just like 3rd-party packages, any 3rd- + party documentation problems should be brought up with the 3rd-parties + (maintainer, lists, bugzillas etc.). The installation instructions + which follow should be used as a guide only; refer to Jarod's guide. + + Red Hat Linux and Fedora Core packages for MythTV and all of its add- + on modules and some themes have been packaged by + mailto:Axel.Thimm@ATrpms.net <mailto:Axel.Thimm@ATrpms.net> and are + available at http://ATrpms.net/topic/multimedia/ + <http://ATrpms.net/topic/multimedia/>. All of the prerequisites for + MythTV (such as XMLTV) are available as RPM packages. If you have + problems with the RPMs, please contact the ATrpms lists at + http://lists.ATrpms.net/ <http://lists.ATrpms.net/> or file a bug + against http://bugzilla.ATrpms.net/ <http://bugzilla.ATrpms.net/>. + + Given the large number of dependent RPMs you are advised to use tools + like apt or yum for automatic retrieval and installation of the + required RPMs. (http://ATrpms.net/install.html + <http://ATrpms.net/install.html>) In this case a special meta-package + called mythtv-suite will allow you to install all of MythTV and its + add-ons, plus all dependencies. + + If you don't have apt or yum on your machine, download and install the + atrpms-kickstart package from http://ATrpms.net/name/atrpms-kickstart/ + <http://ATrpms.net/name/atrpms-kickstart/>. Install the package with: + + + # rpm -Uvh atrpms-kickstart* + + + + Then run: + + + + # apt-get update + # apt-get dist-upgrade + # apt-get update + + + + And finally: + + + # apt-get install mythtv-suite + + + + These steps however, do NOT perform the installation of any drivers + required for ALSA, capture cards, lirc kernel modules, etc., nor do + they set up your MythTV database. Check http://ATrpms.net/topic/multi- + media/ <http://ATrpms.net/topic/multimedia/> for the drivers you need. + + + 3.2.1.2. Mandriva + + Thac has created RPMs for MythTV for Mandriva which may be obtained + from http://rpm.nyvalls.se/ <http://rpm.nyvalls.se/> If you have + problems with the RPMs, please send him email directly at + thac@nyvalls.se <thac@nyvalls.se>. + + 3.2.1.3. Debian + + Debian packages for MythTV and most of its add-on modules are + maintained by Christian Marillat mailto:marillat@free.fr + <mailto:marillat@free.fr> and are available at http://www.debian- + multimedia.org/ <http://www.debian-multimedia.org/>. Installation + instructions can be found on those pages as well. All of the + prerequisites for MythTV are available as Debian packages, most of + them from the official Debian archive. + + If you have followed the instructions on the above page you should + have added + + + deb-src http://www.debian-multimedia.org sid main + + + + to your /etc/apt/sources.list file. Running apt-get update and then + executing apt-get build-dep mythtv should install all the pre- + requisites required to compile MythTV. + + + + NOTE: Due to the requirement for Qt 3.3+, there are no packages for + Debian woody/stable. + + + The Debian packages are configured such that MythTV programs should be + run as the mythtv user, which is automatically created during + installation. This user has access to write new recordings to disk in + the default directory, read and write the database, access the audio + and video devices, and everything else that MythTV needs to do. + + See /usr/share/doc/packagename/README.Debian for more information, + including copies of the MythTV documentation. The mythtv-doc package + contains a copy of this HOWTO in /usr/share/doc/mythtv-doc. + + 3.2.2. Manual installation + + You may use the graphical tools that come with your distribution, or + you can use command-line utilities. Either system will get the job + done, and it all depends on your comfort level with Linux. + + In order to compile MythTV, we need to make sure that the software it + needs is installed. This list includes mysql, gcc, freetype2-devel, + xorg-xserver-devel, qt-devel and lame. If you're going to use a + remote control with MythTV, you're going to need the cdialog package + in order to compile lircd if your distribution doesn't have a pre- + packaged lirc. If you are using XMLTV as a grabber, you will need + perl. + + + ______________________________________________________________________ + NOTE: Qt v3.3 or higher is required. + + NOTE: MythTV DOES NOT WORK with Qt4. + + NOTE: If you are going to be using RPMs to install various + components, you should be aware that not all packages include the necessary + headers for compiling. If you're having trouble compiling, ensure + that you've installed the -devel version of a prerequisite. + ______________________________________________________________________ + + + + 3.2.3. Command-line installation + + This section details the various methods for installing prerequisites + from the command line. + + + 3.2.3.1. Mandriva + + NOTE: The following instructions should be considered out of date as + of 2006-09-10. If updated instructions are not submitted by the + release of v0.21 of MythTV they will be removed. + + urpmi is the simplest tool for installation of packages from the + command line, but properly configuring it can be difficult. The + following website http://easyurpmi.zarb.org/ + <http://easyurpmi.zarb.org/> will allow you to choose a mirror site + and then present the command-line configuration text for that mirror. + You will most likely need to add a "Contrib" mirror to your setup. If + you add a site from the "Penguin Liberation Front", you will be able + to load the lame library without compiling from source. + + Open a shell, and execute the following. You may get asked a number of + questions regarding dependencies. It's best to answer "YES". + + + $ su + # urpmi mysql gcc gcc-c++ freetype2-devel cdialog alsa-utils + # urpmi XFree86-devel perl + # urpmi libqt3-devel libMesaGLU1-devel + + + + ______________________________________________________________________ + NOTE for Mandriva 9.1+ users: execute the following command. + + # urpmi libqt3-mysql + ______________________________________________________________________ + + + However, you might get this when you execute the commands above: + + + everything already installed + + + + In that case, you're ready to move to the next ``section''. Once you + have completed installing the pre-requisites, exit out of the shell + and start a new one to ensure that any environment variables setup by + the installation have a chance to take effect. + + + 3.2.3.2. Gentoo. + + NOTE: MythTV does not run on Qt4. If Qt has not been installed on + your system: Edit /etc/make.conf and locate the "USE" variable. If the + line is commented out, remove the comment. The line should have at + least: + + + USE="mysql alsa" + + + + Next you need to build Qt. If you don't plan on using the ebuilds as + described in the Gentoo section then you also need to install lame. + + + # emerge lame mysql qt + + + + If you have already installed Qt: you will need to rebuild because the + default installation doesn't include MySQL support, a requirement for + MythTV. To enable SQL support, add "mysql" to your USE variable in + /etc/make.conf and rebuild Qt by running + + + # emerge qt + + + + All the necessary files will be downloaded and built. Even on a fast + machine this may take a lot of time if you need to do a full Qt build. + + + 3.2.3.3. Debian. + + Build-dependencies for MythTV can be satisfied by adding the following + to your /etc/apt/sources.list + + + + # Christian Marillat's packages (mplayer, lame) + deb http://www.debian-multimedia.org sid main + deb-src http://www.debian-multimedia.org sid main + + + + and executing: + + + # apt-get build-dep mythtv + # apt-get source mythtv --compile + + + + 4. System Configuration Requirements for Compiling MythTV. + + Before you compile MythTV from the current source tarball or from + subversion, you may need to modify your system configuration in a few + ways. + + In general, if you install MythTV from pre-packaged binaries for your + Linux distribution/version, you don't need to be too concerned about + the issues in this section of the HOWTO - the install script for the + packages should take care of them. However, this section is still + recommended reading which may help if the packager skipped a step in + their packaging. + + + 4.1. Software requirements for compiling MythTV + + 4.1.1. General requirements + + MythTV is written in C++ and requires a fairly complete, but standard, + compilation environment, including a recent g++ compiler, make, and + appropriate header files for shared libraries. Any standard Linux + distribution should be able to install a suitable compilation + environment from its packaging system. Section 3.2 of this HOWTO + provides some details of how to install the required environment for + many distributions. + + Subsequent sections of this chapter address the few oddities that you + may have to adjust by hand before you compile MythTV. + + The reference compilation system for MythTV is Ubuntu. + + + 4.2. Shared-Library requirements for MythTV + + 4.2.1. Modifying /etc/ld.so.conf + + The runtime manager for shared libraries, /lib/ld.so, gets information + about the locations and contents of shared libraries from + /etc/ld.so.cache, a file created by ldconfig from information in + /etc/ld.so.conf. Because MythTV installs some shared libraries in + /usr/local/lib, that directory needs to be added to the list of + directories for ld.so to search when doing runtime linking of + programs, if it is not already there. You do this, as root, by + editing /etc/ld.so.conf, then running ldconfig. There are many ways to + do this; one that works is to enter this series of commands: + + + + $ su - + # echo /usr/local/lib >> /etc/ld.so.conf + # /sbin/ldconfig + # exit + $ + + + + 4.3. Environment variable requirements for MythTV + + 4.3.1. General requirements + + 4.3.1.1. QT libraries and binaries + + The compiler needs to be able to locate QT binaries and libraries in + order to compile MythTV. QTDIR needs to be set and the directory + holding the QT binaries needs to be added to your PATH. Your + distribution may already be making these changes as a part of the + installation of the software prerequisites detailed earlier. + + One way to do this is as follows: + + Open a shell and execute the following: + + + $ echo $PATH + /usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/usr/games:/usr/lib/qt3/bin:/home/mythtv/bin:/usr/lib/qt3/bin + $ echo $QTDIR + /usr/lib/qt3 + $ which qmake + /usr/lib/qt3/bin/qmake + + + + For Mandriva, you should see a value like /usr/lib/qt3 for QTDIR and + /usr/lib/qt3/bin should be in $PATH. + + For Gentoo, you should see a value like /usr/qt/3 for QTDIR and + /usr/qt/3/bin should be in $PATH. + + If you don't, do not proceed past this step until you have resolved + this error. You may need to manually specify the QTDIR and PATH at the + shell prompt before compiling. + + Also, check that there has been a link created in /usr/lib/qt3/mkspecs + (/usr/share/qt3/mkspecs for Debian) called default. If not, you'll get + errors during the compile. See the Troubleshooting Section for more + information. + + 4.3.2. Distribution-Specific Notes + + 4.3.2.1. Mandriva + + The following instructions work for Mandriva using bash as the shell, + and may be applicable for a distribution which uses /etc/profile.d. + + + + NOTE: Mandriva 10 installs a /etc/profile.d/qtdir3.sh + file, but it doesn't include the addition of the PATH variable. If + you're running Mandriva 10, don't create a mythtv.sh file as detailed + below; edit the qtdir3.sh file and add the PATH statement within the + if / fi block. As root, create the following file in /etc/profile.d + The example filename is "mythtv.sh". Use what you feel is appropriate. + + Open a shell, and switch to superuser mode. + + + + NOTE: ^D means press CTRL and d at the same time. + + + $ su + # cd /etc/profile.d + cat > mythtv.sh + export QTDIR=/usr/lib/qt3 + export PATH=$PATH:/usr/lib/qt3/bin + ^D + + # chmod a+x mythtv.sh + # exit + $ exit + + + + The last two commands are to exit out of the shell. This way, when you + next open a shell your new commands will take effect. + + + 4.3.3. Device Permissions + + MythTV will need access to the video4linux devices on your system. By + default, your distribution may restrict access to these devices to the + logged-in user, so if you will be automatically starting mythbackend + from a script rather than an interactive terminal session you will + need to make some adjustments. + + NOTE: The following instructions are accurate for Mandriva. + + Check for a file called /etc/security/console.perms. Open the file in + your favorite text editor and look for a line that has: + + + <console> 0600 <v4l> 0600 root.video + + + + and replace it with + + + <console> 0666 <v4l> 0666 root.video + + + + What we're doing is allowing read and write access to the files in the + video4linux directory. + + 5. Downloading and compiling. + + Get MythTV from the http://www.mythtv.org <http://www.mythtv.org> web + site. There are two installation methods you may choose from. The + first is to download the latest release in tarball format and compile. + The tarball release of MythTV should work on a wide variety of systems + and should be the preferred method for new users. If you wish to use + the subversion copy of MythTV you may obtain it from + http://svn.mythtv.org <http://svn.mythtv.org> + + + + NOTE: If you are going to use subversion to + compile MythTV rather than using the distribution tarball, you must + join the http://www.mythtv.org/mailman/listinfo/mythtv-commits/ + <http://www.mythtv.org/mailman/listinfo/mythtv-commits/> and + http://www.mythtv.org/mailman/listinfo/mythtv-dev/ + <http://www.mythtv.org/mailman/listinfo/mythtv-dev/> mailing lists to + keep up to date with the current status of the code. Code obtained + from subversion has no guarantees regarding stability, etc. + + If you are in North America you will use the Schedules Direct grabber + which is built-in to MythTV. You do not need to install XMLTV (so you + may skip XMLTV-related instructions), but you need wget version 1.9.1 + or higher. + + Get XMLTV from http://xmltv.sourceforge.net + <http://xmltv.sourceforge.net>. Download the latest version (0.5.51). + + + ______________________________________________________________________ + NOTE for Mandriva users: If you have added a "PLF" mirror, you may skip the + next step and type: + + # urpmi libmp3lame0 libmp3lame0-devel + + After downloading, be sure to install both: + # rpm -Uvh lame* + ______________________________________________________________________ + + + + Get lame from http://lame.sourceforge.net/ + <http://lame.sourceforge.net/>. Download the source code to v3.96.1 + by following the links from "Using" through "Download...". + + + 5.1. Building LAME + + Open a shell and switch to the directory where you saved lame. + + + $ tar -xzf lame-3.96.1.tar.gz + $ cd lame-3.96.1 + $ ./configure + $ make + $ make test + $ su + # make install + + + + Check that it worked: + + + + # ls -l /usr/local/lib + -rw-r--r-- 1 root root 381706 Nov 4 14:22 libmp3lame.a + -rwxr-xr-x 1 root root 674 Nov 4 14:22 libmp3lame.la* + lrwxrwxrwx 1 root root 19 Nov 4 14:22 libmp3lame.so -> + libmp3lame.so.0.0.0* + lrwxrwxrwx 1 root root 19 Nov 4 14:22 libmp3lame.so.0 -> + libmp3lame.so.0.0.0* + -rwxr-xr-x 1 root root 360197 Nov 4 14:22 + libmp3lame.so.0.0.0* + + # exit + $ + + + + 5.2. XMLTV + + 5.2.1. Red Hat Linux and Fedora Core: + + RPMs for XMLTV and all of its dependencies can be obtained from + http://ATrpms.net/name/xmltv/ <http://ATrpms.net/name/xmltv/>. The web + page has a list of all the dependent packages you must download and + install. + + + # rpm -Uvh xmltv* perl* + + + + If you install from this location you may skip to ``Manually building + MythTV''. + + 5.2.2. Mandriva + + RPMs for XMLTV and all of its dependencies are located in Mandriva's + "contrib". If you have added a contrib mirror, try installing XMLTV: + + + # urpmi xmltv xmltv-grabbers + + + + If this does not work, it is possible that contrib for your Mandriva + version does not have XMLTV, so you may install the XMLTV prerequi- + sites by typing: + + + # urpmi perl-xml-twig perl-xml-writer perl-datemanip perl-libwww-perl + + + + and skip straight to the XMLTV compilation step. + + + 5.2.3. Manual installation + + Untar the xmltv file: + + + $ tar -xjf xmltv-0.5.51.tar.bz2 + + Install the xmltv prerequisites. The following prerequisites are the + minimum required; when you actually start running the xmltv setup pro- + gram it may alert you to other modules that are required.: + + + + $ su + # perl -MCPAN -e shell + cpan> install XML::Twig + cpan> install Date::Manip + Date::Manip is up to date. + cpan> install LWP + cpan> install XML::Writer + cpan> exit + + + + Change to the XMLTV directory and compile it: + + + $ cd xmltv-0.5.51 + $ perl Makefile.PL + + + + You can answer "N" to the tv_check, tv_pick_cgi questions. Say "yes" + to the grabber required for your location. + + You may get errors about modules not being installed. You will need + to resolve any missing dependencies at this point, or your grabber may + not work correctly. + + + $ make + $ make test + $ su + # make install + # exit + + + + 5.3. Configuring the Schedules Direct service + + As of 2007-09-01, Tribune Media Services will no longer offer free + guide data. Schedules Direct is a non-profit organization which has + licensed the data to make it available to users of Freeware and Open + Source applications. + + If you wish to use Schedules Direct, you'll need to establish a user + account. Go to http://www.schedulesdirect.org + <http://www.schedulesdirect.org> and click on the "Membership" link. + + Once you've read and agreed to the Subscriber Agreement, Terms of Use + and Privacy Policy proceed to the lineup choices and configure your + account for your particular location and the channels that you have. + This configuration will be imported into MythTV when you first run the + mythtv-setup program. + + + + 5.4. Manually building MythTV + + If you are going to use subversion, execute the following instructions + to obtain the latest version of MythTV: + + + + $ mkdir mythtv + $ svn co http://svn.mythtv.org/svn/trunk/ mythtv + $ cd mythtv + + + + To use a release version, you can execute: + + + $ mkdir mythtv-release-0.21 + $ svn co http://svn.mythtv.org/svn/branches/release-0-21-fixes/ mythtv-release-0.21 + $ cd mythtv-release-0.21 + + + + NOTE: Using a svn version of the code allows you to stay up-to-date + with changes. So, if there's an update to the 0.21 release and you + originally obtained it using svn, you could enter the mythtv- + release-0.21 directory and type "svn up", which will update your copy + with the fixed version from the website. You would then recompile and + install the updated 0.21 code. + + If you are using the tarball, then unpack it: + + + $ tar -xjf mythtv-0.21.tar.bz2 + $ cd mythtv-0.21 + $ ./configure + + + + If you wish to change options, run ./configure --help to see what is + available and to override and automatically detected options. See the + config.log file after running configure to see previous runs. + + To compile: + + + $ make -j 2 + + + + The MythTV compile can take advantage of multiple CPUs, SMP and + Hyperthreading. If you want to build MythTV on a multi-CPU machine + (or with distcc), specify "-j numjobs", where "numjobs" is greater + than 2. In the above example, we had two concurrent jobs executing, + which is recommended for a single CPU system. Do not set the number + of jobs too high, or your compile will actually take longer to + complete than it would if you did a "normal" build. + + If you are using distcc, and you had two other host machines (red, + blue) participating, you would do something like: + + + + $ export DISTCC_HOSTS='localhost red blue' + $ make -j 6 CXX=distcc + + + + The actual speed-up, if any, is dependant on a number of factors, such + as number of CPUs / hosts, etc. The distcc documentation recommends + using a -j value of twice the number of CPUs available to keep all of + them busy. + + Some timing information. The following should only be used for + illustration; your actual results may vary. The test involves a + complete make distclean to the final binary. + + +o P4 3.2Ghz HT: "standard" make: 12m 49s + + +o P4 3.2Ghz HT: make -j 2: 11m 24s + + In the above example, we see that with a single CPU, a multi-stage + make does not significantly decrease compile time. + + Once the compile is done, switch to superuser: + + + $ su + # make install + # exit + + + + NOTE: subsequent configuration steps assume that you are within + the MythTV directory that you cd'd to above. + + + 5.4.1. Enabling real-time scheduling of the display thread. + + MythTV supports real-time scheduling of the video output thread. There + are three ways to go about enabling this: You can use rlimits, you can + use the realtime security module, or on older systems you can SUID the + executable. Enabling real-time scheduling is optional, but can make + the video display smoother, especially if you are decoding HDTV. + + + 5.4.1.1. rlimits + + The rlimits method is the preferred method and is included in Linux + 2.6.12 and above. Unfortunately, you need PAM version 0.79 or above, + which may not be supported by your distribution yet. Assuming anyone + running mythfrontend is in the audio group and rlimits are supported, + all you need to do is place this in your /etc/security/limits.conf + + + + * - rtprio 0 + * - nice 0 + @audio - rtprio 50 + @audio - nice 0 + + + 5.4.1.2. realtime module + + The second option is to use the Linux realtime kernel module. This is + will be phased out over time, but is currently supported by many + distributions that do not yet support rlimits. If you are not using + the distribution kernel you must configure your kernel with: + + + Security options : [*] Enable different security models + Security options : [M] Default Linux Capabilties + + + + You may also need to install the realtime module, using your distribu- + tion's realtime package. Assuming the users who will be running myth- + frontend will be in the audio group you can get the GUID of a named + group like so: + + + $ grep audio /etc/group + + + + If the number printed out from the grep was 18, you can now load this + module as root before starting mythfrontend: + + + # modprobe realtime gid=18 + + + + 5.4.1.3. run as root option (not safe) + + The final and least preferred option is to set the sticky bit on the + mythfrontend executable. This opens a security hole, but is the only + option on systems that do not support either rlimits or the realtime + module. This does not work on modern distributions either, and is not + recommended on any system connected to the Internet. This may also + make it impossible to debug MythTV without running gdb as root. If you + would still like to do this, you just need to run this as root: + + + # chmod a+s /usr/local/bin/mythfrontend /usr/local/bin/mythtv + + + + 5.4.2. Frontend-only configuration + + Since MythTV uses a client/server architecture, multiple frontend + computers can simultaneously access content on a Myth system. Live + TV, watching and scheduling recordings, etc. are all possible from + multiple frontends. + + To get a better picture of what is needed to run a frontend, note the + following: + + You do NOT need the MySQL server installed on your remote frontend + + You do NOT need XMLTV installed on your remote frontend + + You do NOT need to run the mythtv-setup program on your frontend + machine + + Other than the exclusion of the MySQL server and XMLTV, the MythTV + compilation procedure is the same as when you're setting up both a + backend and a frontend. However, you will need to install the + database access libraries. + + Once MythTV is compiled and installed: + + Run the mythtv-setup program on your Master backend. Under the + "General" menu, change the IP address of the current machine (by + default, "127.0.0.1") to the real external IP address - 127.0.0.1 is + the loopback address and no external machine can access it. Change the + Master Server IP setting to the same IP address as well. + + Run the mythfrontend program on your frontend machine, and a "Database + Configuration" screen should appear. Set the "Host name" field to + point to your Master backend's IP address. + + + 5.5. Gentoo + + Installation of MythTV on Gentoo consists of simply emerging the + desired ebuild because all of the packages are now part of the + official Portage tree. + + + $ su - + # emerge --sync # make sure portage is up to date. + # vi /etc/make.conf + + + + Add mysql to your USE variable. i.e. USE="mysql ...." + + + # emerge mythtv + + + + 6. MySQL. + + When you install MySQL 5.x you will also want to comment out "log-bin" + in your my.cnf configuration file. This option will quickly fill your + "/var" disk partition with many gigabytes of data, unless you are + doing database replication and deleting these files regularly. + + 6.1. Distribution-specific information + + 6.1.1. Mandriva + + If this is the system maintaining the database, make sure that MySQL + is running and started at boot. Click on Mandriva Control + Center->System->Services, find MySQL and click the "On Boot" button + and the "Start" button if the MySQL status shows that it isn't running + yet. + + + + NOTE: There have been reports that MySQL isn't starting at boot. + If this is happening to you, try running the following commands. + + + $ su + # chkconfig --level 35 mysql on + # /etc/rc.d/init.d/mysql start + # exit + + + + 6.1.2. Red Hat Linux and Fedora Core + + If this is the system maintaining the database, make sure that MySQL + is running and started at boot. Click on Redhat menu>Server + Settings>Services and enter the root password when asked. Check + "mysqld" and then click Start. Click Save, then close the window. + + This can be done from the command line by typing: + + + # /sbin/chkconfig mysqld on + # /sbin/service mysqld start + + + + 6.1.3. Gentoo + + After installing MySQL you need to initialize the database by running + mysql_install_db as root. + + 6.2. Setting up the initial database + + This step is only required on the system maintaining the database, + which may or may not be one of your MythTV boxes. If the database is + on a non-MythTV machine you'll need to copy the database/mc.sql file + to it. + + To setup the initial MySQL databases: + + + $ cd database + + + + 6.2.1. Mandriva and Red Hat Linux/Fedora Core + + + + $ mysql -u root < mc.sql + + + + 6.2.2. Debian 3.0 + + + + $ mysql < mc.sql + + + + 6.2.3. Gentoo + + + + $ su + # mysql < /usr/share/mythtv/database/mc.sql + + + + NOTE: It is good practice to set a root password for MySQL. Instruc- + tions for doing so can be found on MySQL's web site at + http://www.mysql.com/doc/en/Security.html <http://www.mysql.com/doc/en/Security.html>. + + 6.2.4. Modifying access to the MySQL database for multiple systems + + If you're going to have multiple systems accessing a master database, + you must grant access to the database from remote systems. By + default, the mc.sql script is only granting access to the local host. + + To allow other hosts access to your master database, you can either + set it up for no security at all, or with more granularity. Note that + the "%" is the wildcard character in MySQL. + + + + NOTE: The "no security" option is very dangerous unless + you're in a controlled environment. This example has no security at + all, and allows access from any host. + + + $ mysql -u root mythconverg + mysql> grant all on mythconverg.* to mythtv@"%" identified by "mythtv"; + mysql> flush privileges; + + + + For a more secure setup, you can restrict which machines or subnets + have access. If you have a complete DNS system operational, you could + do the following: + + + $ mysql -u root mythconverg + mysql> grant all on mythconverg.* to mythtv@"%.mydomain.com" identified by "mythtv"; + mysql> flush privileges; + + + + Finally, if you just want to restrict by IP subnet (in this example, + the 192.168.1. network): + + + $ mysql -u root mythconverg + mysql> grant all on mythconverg.* to mythtv@"192.168.1.%" identified by "mythtv"; + mysql> flush privileges; + + You'll also need to check that the "networking" feature of MySQL is + turned on. Check that /etc/mysql/my.cnf does not contain skip- + networking. If it does, remove it. Also verify that bind-address is + set to your IP address instead of 127.0.0.1. If you change either of + these items, restart MySQL. + + NOTE: Your distribution may have a customized MySQL configuration + file; in Mandriva, check /etc/sysconfig/mysqld for additional + configuration. + + + 7. Configuring Sound. + + If your video doesn't appear to be in-sync with your audio and you're + using an analog video capture card and a soundcard to capture audio, + it could be because you are listening to the real-time audio from your + video card rather than after it's been processed and synchronized to + the video by MythTV. Because MythTV is a personal video recorder, + "Live TV" isn't really live - to let you pause live TV, MythTV is + actually encoding the video, saving to disk, and then playing it back. + This procedure puts your MythTV "live" TV about 2 seconds behind real- + time, so it's important that you're not listening to the live audio. + However, if you're having an issue where the audio and video aren't + synchronized by small but varying amount, it's most likely because the + sound driver that you're using doesn't have the DSP_CAP_REALTIME + capability. This was the case with ALSA (0.5), but not with newer + versions. See the ``Troubleshooting Audio'' section for more + information if you're having issues with sound. Also, ensure that no + other programs are grabbing the audio output, like arts or esd. + + What you need to do is to mute the "line-in" of your sound card and + also set it as the recording source. + + There are two ways to do this. Graphically, and from the command + line. + + + 7.1. Graphically setting up the mixer + + 7.1.1. Mandriva and Red Hat Linux/Fedora Core + + Open Kmix by clicking K->Multimedia->Sound->Kmix for Mandriva, or + + RedHat Menu>Sound & Video>Volume Control + + + + Click on Settings->Configure Make sure that "Tick Marks" and "Show + labels" have "X"'s in them. This will make it easier to find the + correct audio source. Click OK. + + On the mixer page, look for Line-In on your sound card. You should + see two LED's - a green one at the top, and a red one at the bottom. + The green one at the top is for muting; you want to make sure that the + green LED is a dark green, meaning that it's "off". You also want to + click on the red LED so that it turns bright red, indicating that it's + "ON"; this insures that the Line-in is used as the source. Click OK, + and make sure that you save the settings so that this is your default. + + + 7.1.1.1. Using ALSA. + + To use ALSA, you'll need to correctly setup your asoundrc file. + Configuring this file is beyond the scope of this HOWTO. Once ALSA is + working correctly, change the output sound device in + mythfrontend->setup->Audio from /dev/dsp to ALSA:default. This field + may be edited to suit your ALSA requirements. + + + 7.2. Setting the mixer from the command line + + If you have installed the alsa-utils package, then the amixer program + can be used to setup the mixer. The "Master" volume setting is only + required on a frontend machine to ensure that the sound channels are + unmuted and configured for outputting sound. The "Line" and "Capture" + controls are required for your sound card to actually capture audio + from the external Line-in if it's connected to an analog frame + grabber. Not all sound cards have a "Capture" control, but if yours + does and you don't set it then MythTV will not capture audio. + + + ______________________________________________________________________ + Note the spelling in the following commands. + ______________________________________________________________________ + + + + $ amixer set Master,0 100%,100% unmute + $ amixer set PCM,0 100%,100% unmute + $ amixer set Line,0 75%,75% mute captur + $ amixer set Capture,0 100%,100% captur + $ su + # alsactl store + # exit + $ + + + + If you have multiple sound cards, then use the -c parameter to specify + which card to adjust. Note that the first card will be "0", the + second will be "1", etc. + + That takes care of setting the volume correctly, and the ALSA startup + script will restore the volume after a reboot. If you find that your + sound is distorted, it's possible that the levels in the above + examples are too high for your particular hardware combination. Try + reducing the percentages by 5-10% and checking again. Once you're + satisfied, re-run the alsactl store command. + + You may also use the alsamixer program to set the volume. If you are + using an ALSA version after 1.0.6, use alsamixer -V all First, start + alsamixer from the command line. You should start out on the "Master" + volume control slider. Use the up and down cursor to set the master + volume to around 75%. Next, use the left and right cursor keys to + move around on the screen until you find the "Line" slider. Press + SPACE to set it as the capture source, set the level to around 50-75% + and press "M" to mute it. You can now press ESC to exit out of the + alsamixer program. You can also have MythTV manage all volume and + mute settings, but this will only affect the "Master" or PCM volume, + not the capture volume. See the mythfrontend setup page for options. + + Finally, if you've performed all of the above steps, and you still + don't seem to have any sound, it's possible that your video capture + device is muting the audio output. + + + $ v4lctl -c /dev/video0 setattr mute off + + + + 8. Setting up a remote control. + + MythTV does not have native remote control receiver and decoder + software built-in. Instead, remote control functions are implemented + by cooperating with lirc, the Linux Infrared Remote Control program. + lirc handles the IR hardware and passes keystrokes to MythTV, which + then acts as if the user had pressed the keys on the keyboard. The + file keys.txt describes the keys used to control MythTV. + + + + NOTE: If you are running Mandriva, you may install + lirc by executing: # urpmi lirc lirc-remotes and bypass the manual + compilation steps described below by jumping to the ``Completing the + lirc install'' section. See the contrib/mandrake91.etc.sysconfig.lircd + file for an example of how to configure lircd. + + Some IR devices require a kernel recompile, and some don't. However, + all at least require having the kernel source available as a resource + for the lirc build process. + + + 8.1. Gentoo + + To install lirc on Gentoo, all you need to do is: + + + # emerge lirc + + + + 8.2. Obtaining and compiling lirc + + You're going to need to download and compile lircd. Go to + http://www.lirc.org <http://www.lirc.org> and download lirc; as of + 2006-01-21, the version available is 0.8.0. Grab the remotes.tar.bz2 + file as well. + + + $ tar -xjf lirc-0.8.0.tar.bz2 + $ cd lirc-0.8.0 + $ ./setup.sh + + + + You're going to need to know what sort of receiver you have and where + it's connected. In the case of the Pinnacle Studio TV card, with the + IR receiver connected to COM1 (/dev/ttys0), once the configuration + menu comes up, perform the configuration by going to Driver Configura- + tion->Other Serial Port Devices->Pinnacle Systems Receiver->OK and on + the next page select COM1->OK. + + Each remote is different; some remote receivers connect directly to + your capture card and not to a serial port, so make sure that you've + got the correct one. + + You then click "Save Configuration and run configure" to continue. + + Make sure you read the last text generated by the configure step. It + will tell you if you require a kernel recompile, and what the name of + your kernel module will be (if necessary). For instance a home-built + receiver may require a kernel recompile, so you would be notified that + you will have to load the lirc_serial module. If you did not get any + such messages skip the kernel recompile steps below and go directly to + making and installing the lirc driver. + + Once the configuration step is complete: + + + $ make + $ su + # make install + # chmod 666 /dev/lircd + + + + At this point, if you're using a serial receiver, check that there's a + lirc device in /dev: + + + $ ls -l /dev/li* + lr-xr-xr-x 1 root root 5 Jan 27 09:00 /dev/lirc -> ttyS0 + srw-rw-rw- 1 root root 0 Jan 27 15:01 /dev/lircd= + prw-r--r-- 1 root root 0 Jan 27 09:00 /dev/lircm| + + + + As you can see, there's a link from /dev/lirc to ttyS0, a.k.a. "COM1", + which is appropriate for the Pinnacle Systems PCTV Pro. However, you + may notice something like this: + + + crw------- 1 root root 61, 0 Dec 31 1969 lirc + + + + Some IR receivers (including some homebrew units) use a character + device as their data interface as opposed to a link to a serial port. + If the make install step has created a character device for you, don't + replace it with a link to a COM port. + + So, if the link or character device was not created (but should have + been), ensure that you ran the make install step as root. If it still + doesn't work, then there are three options. The first option is to + re-read the lirc documentation to determine whether your IR receiver + is a character device or should be a link to a serial port and to + create the link/character device manually. In this example, the IR + device is connected to ttyS0. If it were connected to "COM2", then + use ttyS1, etc. + + + $ su + # cd /dev + # ln -sf ttyS0 lirc + # exit + $ + + + + NOTE: The above example assumes that your receiver uses the + standard serial driver. Some receivers do not, including receivers + that plug into a TV capture card. Check the lirc documentation, but + it may be necessary to replace the link created above with a character + pipe: + + + # mknod /dev/lirc c 61 0 + + + + See the lirc documentation for additional information. The lirc + installation should create this for you, so manually creating it + indicates that your lirc installation may have other issues. + + The second option is to post your issue to the lirc list, not the + mythtv-users list. The lirc programmers will be the ones that can + assist you best. + + The third option is to dispense with lirc altogether by purchasing an + IR keyboard (various options exist, although Chicony appears to work + for some people) and a learning remote control. The IR keyboard + receiver plugs into the PS/2 keyboard port on your PC and you would + train your learning remote to emulate the various keystrokes from + keys.txt of your IR keyboard. Using this method removes lirc entirely + from the picture - your remote will be sending keypresses that your PC + "sees" on the keyboard port. + + + 8.3. Completing the lirc install + + + + NOTE to Mandriva 9.1 users: skip to the manual start paragraph + below. + + If the lirc configure program / compile did not mention anything about + a kernel module, then you are finished. If it did mention a kernel + module, you must edit the /etc/modules.conf file. Add this line as the + first thing in the file. It must come first, or it may not work. + + + alias char-major-61 XXX + + + + replace XXX with the name which you determined earlier, which in this + example was "lirc_serial" + + + $ su + # modprobe lirc_serial + # /sbin/ldconfig + + + + Next, we're going to manually start lircd the first time. Mandriva + 9.1 users, type: # /etc/rc.d/init.d/lircd start instead of: + + + # /usr/local/sbin/lircd + + + + NOTE: Read this next section if you're not familiar with how lirc + works! + + There are two separate files used by lirc, and both are required for + your remote control to do anything useful. First is the lircd.conf + file. lircd.conf tells the lirc daemon how to interpret the IR pulses + that it receives from a remote control and what name to assign to each + sequence of pulses. Without getting too involved, a particular series + of pulses may correlate to "Channel Up". The lircd.conf file will + then contain a line that looks something like this: + + + + ChannelUp 0x0000000000001020 + + + + The lircd.conf file can have multiple remote controls defined. + + The second file is lircrc, which takes the name of the button which + was pressed ("ChannelUp") in the above example, and correlates that to + an action to be performed by a program using the remote control. So + in MythTV, ChannelUp means one thing, while in mplayer it means + something different. lircrc gives you the flexibility of taking the + name of the button and having it perform different actions depending + on which program you're using at the time. + + NOTE: The definitions in lircd.conf come from the user community, and + there is no standard for the common button names. One lircd.conf file + may contain a definition for a button called "ChannelUp", while + another may contain a definition for "Chan+". Your lircrc file must + therefore be configured appropriately, or it won't work. + + If this fails, complaining of a missing lircd.conf file, then you must + find or make one. First look for a pre-made configuration file at + http://lirc.sourceforge.net/remotes/ + <http://lirc.sourceforge.net/remotes/>. Mandriva 9.1 users, look in + /usr/share/lirc-remotes. If you find one your remotes either on the + website or in /usr/share, download or copy the file, name it + lircd.conf and put it in your /etc directory. If you couldn't find + your remote, you must make your own lircd.conf file. + + To make your own lircd.conf file + + + $ irrecord myremote + + + + Follow the on-screen directions to train your remote and define keys. + If your remote ends up working well, you should consider submitting + your lircd.conf file back to the lirc developers. Once finished: + + + $ su + # cp myremote /etc/lircd.conf + + + + now try to start lircd again: + + + # /usr/local/sbin/lircd + + + + Now, we're going to add the commands necessary for lircd to run each + time we boot. Mandriva 9.1 users, you can execute: + + + $ su + # chkconfig --level 35 lircd on + # exit + + + + All other distributions: + + + # cd /etc/rc.d + # cat >> rc.local + echo "Starting lircd" + /usr/local/sbin/lircd + ^D + # exit + $ + + + + This takes care of the lircd portion, which "listens" for the IR + signals. If everything went well, the install script for lircd put an + appropriate configuration file for your remote into /etc/lircd.conf + This file maps the buttons on the remote control to the IR pulses + coming from the receiver. + + The next step is to convert those signals into something that can be + used to control MythTV. MythTV now includes native support for lirc + and can interact directly with + + + + $ cd ~/mythtv-0.21/contrib/configfiles + $ cp lircrc.example ~/.lircrc + + + + or + + + $ cp lircrc.example.pinnaclestudiopctv ~/.lircrc + + + + if you've got a Pinnacle Studio PCTV remote. + + + $ irw + + + Start pressing the keys on your remote; irw will print the name of the + button as it is defined in your /etc/lircd.conf. If you don't see any- + thing at this point, you need to troubleshoot further by going back to + the lirc home page and investigating from there. + + If it is working, then press CTRL-C to abort the program. Once you + know that your remote is working, you can either recompile MythTV with + native lirc support by enabling it in configure or you need to run the + irxevent program, which takes the key presses and sends them to + MythTV. If you use native lirc support, you don't need to run + irxevent. If you are going to use irxevent, then you need to run it + like this: + + + $ irxevent & + + + + If irxevent isn't running, then MythTV will not respond to your remote + control unless you're using native lirc support. + + + 8.4. Additional information for lirc + + Take a look at the lircrc.example files in the contrib/configfiles/ + directory. In my case, (Pinnacle Studio card) the channel up and down + functions weren't working, due to the fact that the button names were + different than the default lircrc.example file that came with MythTV. + + The lircrc.example file has this: + + + begin + prog = irxevent + button = ChannelUp + config = Key Up CurrentWindow + end + + begin + prog = irxevent + button = ChannelDown + config = Key Down CurrentWindow + end + + + + but the /etc/lircd.conf that comes in the lircd package defines the + buttons for the Pinnacle Studio PCTV as: + + + channel+ 0x0000000000000017 + channel- 0x000000000000001C + + + + rather than "ChannelUp" and "ChannelDown". I added the following to + my /home/[yourusername]/.lircrc file: + + + + begin + prog = irxevent + button = channel+ + repeat = 3 + config = Key Up CurrentWindow + end + + begin + prog = irxevent + button = channel- + repeat = 3 + config = Key Down CurrentWindow + end + + + + which took care of basic functionality. Because the PCTV Studio + remote has additional buttons, look at the contrib/configfiles/lir- + crc.example.pinnaclestudiopctv for an example of how to define addi- + tional buttons, and how to debug potential button name conflicts + between the lircrc.example file and how your remote defines the button + names. + + By examining the button names defined in /etc/lircd.conf and using the + irw program to make sure that your remote is working, you can create + the appropriate mappings in .lircrc to get excellent remote + functionality with MythTV. + + Note the repeat = parameter. This informs the irxevent program to + pass through every third keypress. By default, lirc will only send + one keypress to the application, even if you're holding down the key. + The actual repeat = number will vary from system to system, so + experiment and see which value works best for you. + + + 8.5. Configuring lirc for use with an IR blaster + + Lirc has support for various IR transmitters. A popular model is the + Actisys IR-200L http://store.snapstreamstore.com/accessories.html + <http://store.snapstreamstore.com/accessories.html>. It was originally + designed for IRDA communication, but can be used to transmit A/V + remote control codes. By using the lirc SIR driver, this device can + easily be integrated with MythTV. I have tested this device with an + AT&T DCT2000 digital cable box but the instructions can be used to + configure other IRDA devices and A/V remotes. + + Follow the steps in the previous section. When you run setup.sh, + select option 1, driver configuration. From here select option 6, IrDA + hardware. Select your appropriate device and the corresponding serial + port, then Save configuration & run configure from the main menu. Once + configure is done type: + + + $ make + + + + Please note: unlike the Pinnacle receiver above you will be compiling + lircd in addition to a kernel module for the SIR transmitter. + Depending on whether you have your serial port driver configured as a + kernel module you might see the following message during make: + + + + lirc_sir.c:56:2: warning: #warning + "******************************************" + + lirc_sir.c:57:2: warning: #warning "Your serial port driver is compiled into " + + lirc_sir.c:58:2: warning: #warning "the kernel. You will have to release the " + + lirc_sir.c:59:2: warning: #warning "port you want to use for LIRC with:" + + lirc_sir.c:60:2: warning: #warning "setserial /dev/ttySx uart none" + + lirc_sir.c:61:2: warning: #warning + "******************************************" + + + + If you do receive this statement make sure to run the setserial + command before you load the lirc_sir module. Follow this with the + install: + + + $ su + # make install + + + + You will notice that lirc installs the kernel module in + /lib/modules/uname -a/misc. + + The configuration for starting lircd differs if you're going to be + sending and receiving IR versus just receiving. + + + + # cd /etc/rc.d + # cat >> rc.local + echo "Starting lircd" + setserial /dev/ttySx uart none # (if required) + modprobe lirc_sir + /usr/local/sbin/lircd + ^D + # exit + $ + + + + At this point you have to populate the /etc/lircd.conf file with the + proper codes for your A/V remote. You should be able to find your + remote within the lirc remote tar file located at + http://www.lirc.org/remotes.tar.bz2 + <http://www.lirc.org/remotes.tar.bz2>. In my case I extracted the file + from remotes/motorola/DCT2000 (gi-motorola-dct2000) + + To test the lirc_sir module you can run irw to verify the codes are + being received. If everything is configured correctly you should see + something similar to the following: + + + $ irw + 0000000000007ff0 00 1 gi-motorola-dct2000 + 000000000000bff8 00 2 gi-motorola-dct2000 + 000000000000f7f0 00 ENTER gi-motorola-dct2000 + + Once you've verified lirc is working you can press CTRL-C to exit irw + and configure the channel changing script. + + The path to the channel changing script will need to be entered on the + mythtv-setup screen for Input Connections. + + This csh script will be called each time MythTV needs to change the + channel. Below is a copy of the script followed by the corresponding + perl script. Make sure both are in your path. Also make sure you + leave the #!/bin/csh setting and not change it to Bourne or bash. This + will create a frustrating symptom to diagnose where MythTV cannot open + /dev/device. Unlike Bourne or bash, csh scripts automatically close + parent file descriptors before they start. + + + $ cd /usr/local/bin + # su + # cat > change_channel.csh + #!/bin/csh + echo "changing to $1" + /usr/local/bin/channel.pl $1 & + ^D + # chmod a+x change_channel.csh + # exit + $ exit + + + + See contrib/channel.pl for the actual file. Copy it to + /usr/local/bin/ + + The last statement within the perl script is the lirc rc command. This + is the command that transmits the code to your cable/DSS box. Make + sure to have the IRDA device within a few feet of the box. + + + 9. Configuring MythTV. + + By this point, all of the compile-time prerequisites have been + installed, mysql is running and has had its initial database setup. + It's now time to configure MythTV. + + + + NOTE: If you're running Debian unstable and you have compiled + MythTV from source, you will need to install an additional package + before you will be able to run MythTV. Execute the following to + install the MySQL driver for QT. + + + $ su - + # apt-get install libqt3c102-mt-mysql + # exit + + + + 9.1. Configuring the Master backend system + + Open a shell and decide where you will store your video files. This + may be one directory or multiple directories on the same or different + filesystems. There is no default directory used for new recordings, + you must create at least one storage directory and configure Myth to + use it by running mythtv-setup. If you do not do this, then MythTV + will be unable to record anything. The following example is specific + for /var/video, but the same instructions would apply for any + directory name you choose to use. See the ``Advanced Partition + Formatting'' section for hints on creating a partition for MythTV. + + + + $ su + # mkdir /var/video + # chmod a+rwx /var/video + # exit + + + + NOTE: The last slash "/" is not required. + + + TIP: Try not to have your video mount point on the same partition as + your root partition, which could lead to the filling up of your root + partition with video data if the mount fails. For example: + + If /var/video is created on your root partition and you then perform a + mount of another drive to this directory there won't be any problems + if everything is working the way it should. However, if the mount + fails for some reason, /var/video still exists, so MythTV will find + the directory and write files to it. If your / mount point is space + limited, /var/video will also be space limited, and it won't take long + to fill the partition. This will cause a number of side-effects, most + of them bad. Instead, create subdirectories as the destination for + the storage group. + + Your directory structure could then look something like this: + + + /mnt/video/drive1/video + /mnt/video/drive2/video + + + + Your /etc/fstab would look like this: + + + /dev/hdb1 /mnt/video/drive1 + /dev/hdc1 /mnt/video/drive2 + + + + Because the Storage Group path is /mnt/video/drive1/video, if the + mythbackend can only find /mnt/video/drive1 it will not write files to + that share. + + After you create the desired directory or directories for storing your + video files, you will need to add them to the proper Storage Group + using mythtv-setup. This procedure is described below in the + ``Storage Groups'' section. + + The first thing to configure is the Master backend system. If you are + running multiple backend systems, the Master backend will make all + decisions about which programs will be recorded on which tuners. If + you have only one backend, then it will be its own master. + + + The Master backend will always choose the first available tuner in the + same order as you add cards through "mythtv-setup". In other words, + the second card you add will only be used when there are two + overlapping recordings, the third when there are three, and so on. + Therefore, you will want to have the greatest amount of disk space on + the Master backend because its tuner will always be the first choice. + You will then want to add your ``other backends'' in the order of your + preference for recording. + + + + NOTE: It is possible to not have the cards on the Master + backend be the first ones used. However, if you are new to MythTV it + is easier to configure the Master backend first before moving on to + the Slaves, at least until you become more familiar with the MythTV + system. See ``Advanced Backend Configurations'' for information on + configuring multiple backend systems in various ways. + + Because MythTV uses a database to store all configuration variables, + part of the bootstrap of MythTV is to indicate the location of the + MySQL database server. If the frontend, backend and MySQL database + server are all going to be running on the same box, you can continue + to the next step. If not, you'll need to change the Host Name in the + "Database Configuration" screen of the mythfrontend program. + + + + NOTE: Users that have been running the frontend and the backend on + different machines have stated that they have been having issues with + remote access to the MySQL database. The following instructions may + or may not work. Add the following to /etc/my.cnf on the backend + machine and restart MySQL. + + + skip-innodb + set-variable=thread_stack=256k + + + + Run the setup program: + + + $ mythtv-setup + + + + The backend setup program will start and offer you a number of + choices. It is strongly recommended that you go through them in + order. + + The first question will ask if you wish to clear out your existing + configurations for your capture cards. Initially, you should say + "YES" so that there are no surprises later. + + The next question will ask you if you wish to clear out your video + source information. You should answer "YES" to this as well. + + + Once the graphical setup starts, you'll see that there are six choices + + + + The Storage Directories feature is available only in the SVN version + of MythTV. + + + 1. General + + 2. Capture Cards + + 3. Video Sources + + 4. Input connections + + 5. Channel Editor + + 6. Storage Directories + + Use the arrow keys to move around, and press the space bar to select + which option you wish to configure. + + + 9.1.1. General + + The first screen of the General configuration deals with IP addresses + of the system that you're running mythtv-setup on and any master + backend you may have. If you've only got one machine, then the + default values are fine and you can move to the next page by pressing + the space bar. If you need to move around the screen, use the arrow + keys to move focus between settings, not the mouse. + + If you will be deploying multiple backends, or if your backend is on + one system and you're running the frontend on another machine then do + not use the "127.0.0.1" IP address. + + NOTE: If you modify the 127.0.0.1 address and use a "real" IP address, + you must use real IP addresses in both fields, otherwise your frontend + machines will generate "Unexpected response to MYTH_PROTO_VERSION" + errors. + + Changing any of the port settings is very strongly discouraged. (If + you do accidentally change them, the defaults are 6543 for the + master/backend server, and 6544 for the HTTP requests) + + Once you're satisfied with the values, move the focus down to Next and + hit the space bar. + + The next screen details the Host-specific Backend setup. This is + where you will set the specific directory paths for this particular + backend. Make sure that you've followed the steps at the beginning of + this section and created a directory that exists and that MythTV will + have write privileges to. When you're done, press Next to continue, + taking you to the Global Backend Setup. + + On the Global Backend Setup configure your backend with the + appropriate settings. Use the left and right arrow keys to iterate + through the choices available on each setting, and the up and down + keys to move between settings. Move to Finish when you're done and + press the space bar, taking you back to the main configuration screen. + + + 9.1.2. Capture Cards + + You should have no capture cards defined, so the highlight will be on + (New Capture Card). Press space to begin. + + Choose the appropriate settings for your particular tuner. Use the + arrow keys to move around and to make your choices, and press RETURN + when complete. Pressing RETURN will take you back to the Capture + Cards screen; if you have additional capture cards in this machine, + press the space bar when the highlight is on the (New Capture Card) + row to define another card. + + If you have made a mistake, you can delete a card by highlighting it + and pressing the 'D' key, or you can highlight it and press the RETURN + or 'E' key to edit it. + + Once you have no additional cards to setup, press ESC. + + + + NOTE: If you have a dual digital/analog card, such as the pcHDTV + cards and some DViCO cards, then you should not configure this as two + separate cards. Configure the digital portion as a DVB card, then + click on the "Analog Options" button within the DVB configuration + panel for the card and configure the analog portion of the card there. + + + 9.1.3. Video Sources + + When you start, the highlight should be on (New Video Source). Press + the space bar to begin. The first field asks for the name of the + video source. You may choose something easy to remember, like + "Antenna" or "Cable". Once you've chosen a name, press the down arrow + to move to the next field. + + If you're in North America, change the grabber to + "SchedulesDirect.org(Internal)", then continue pressing the down arrow + to move to the next field. Fill in the username (lowercase only) and + password that you have established with Schedules Direct, then move to + the "Retrieve Listings" button and press the space bar. + + NOTE: You need wget version 1.9.1 or higher to use Schedules Direct. + + The mythtv-setup program will contact the Schedules Direct servers and + get your account information. Once you're done, you may click the + Finish button and skip the next few paragraphs in this document since + they only apply to users that are using the external XMLTV script to + get their guide data. + + If you wish to continue using the XMLTV grabber, then move to the + Zip/postal code field and put in the appropriate value. + + If you're outside of North America, then some manual interaction will + be required with XMLTV. You may need to switch from the MythTV setup + program to the console it was run on to interact with XMLTV. + + Once you have chosen your provider, press RETURN to continue. XMLTV + will now begin collecting the initial data for your location. The + screen may blank for a few seconds to several minutes, depending on + the load of the listings provider and the speed of your connection to + the Internet. Be patient! + + + You will then be returned to the Video Sources screen. If you have + multiple video sources available, such as Antenna, Cable, etc, go + ahead and define them all, even if they're not all going to be + physically connected to the master backend server. Once you're done, + press ESC to return to the main screen. + + + 9.1.4. Input Connections + + The final configuration item is Input Connections. On this screen, + you will associate the various video sources you defined earlier with + a physical input to a encoder card. It's entirely possible that you + have multiple tuners, and each tuner has a different input, so on this + screen you let MythTV know which device will connect to which input + source. + + When you start this screen, you should see a listing of the various + input connections available on each of the Capture cards you defined + earlier. For example, you may have a capture card with a tuner, a + SVideo and a Composite connection. If you wanted to associate the + tuner (a.k.a., "Television") with an "Antenna" source you defined in + Video Sources, you would move to the /dev/videodevice (Television) -> + line and press the space bar. Using the left and right arrow keys + will show you the various choices you have already created for video + source. In our case, you would use the left/right cursor keys until + "Antenna" was shown in the Video Source field. Press down to move to + the next setting. + + On the connection pane there is a "Scan for channels" button, if you + are configuring a digital source such as a DVB card, you need scan for + channels and you must do this before pressing the "Fetch channels from + listings source" button. You may scan for analog channels on an analog + input, but this is not needed. + + + The other button is called "Fetch channels from listings source". As + long as you have a real listings source you should fetch channels from + them for analog channels. You can do this for digital sources as well + (unless the listing source is transmitted EIT data). If you are using + XMLTV, you may need to switch from the MythTV setup program to the + console it was run on to interact with XMLTV after pressing this + button. It is possible to fetch the channels on the command line using + mythfilldatabase. But if you need to do this, you will probably need + to re-enter the MythTV setup program to configure the "Starting + channel" setting for this source->input connection. + + + + NOTE: If you have a Hauppauge PVR-500, you must think of + it has two PVR-150's on a single PCI card. For example, if you have a + single PVR-500 card, it will appear as /dev/video0 and /dev/video1. + Each /dev/video device will have a Tuner input. Once you're done, + press RETURN to go back to the Input Connections screen. You would + then finish associating the video sources to any other hardware + devices you have available. + + + + NOTE: Don't add a video source to a hardware input if you don't + actually have anything connected there. For example, adding "Cable" + to the Tuner and to the Composite inputs without having something + connected to Composite will lead to blank recordings. + + Press ESC to return to the main menu, and press ESC again if you have + no further items to configure, thereby returning you to the command + line. + + + 9.1.5. Channel Editor + + The channel editor is used to globally alter channel information, + including items like hue, contrast, fine tuning and others. Users in + North America shouldn't run the channel editor until you've completed + the initial mythtv-setup and ran mythfilldatabase at least once to + populate the database. + + + 9.1.6. Storage Groups + + + + New in MythTV 0.21 + + 9.1.6.1. Introduction. + + Storage Groups are lists of directories that are used to hold MythTV + recording files giving you a flexible way to allow you to add capacity + to your MythTV system without having to use exotic solutions such as + LVM, filesystem expansion or RAID Online Capacity Expansion. You can + also use Storage Groups to organize recordings and to put recordings + of a certain type into one subdirectory. + + Storage Groups do not offer redundancy in case of hard drive failure, + but unlike LVM, if you lose a hard drive, you only lose the recordings + that were on that drive. With LVM, if you lose a hard drive, you will + most likely lose everything. + + + 9.1.6.2. How to use Storage Groups. + + By default, there is only one Storage Group called "Default", and it + is used for all recordings and Live TV. + + + + NOTE: You need to add at least one directory to the Default + Storage Group or else you will not be able to record anything with + MythTV. + + For example, if you have 5 hard drives in your system, your first hard + drive could be your "boot" drive, and the remaining four could be + dedicated to media storage. You could format the drives and mount them + as /mnt/store/d2, /mnt/store/d3, /mnt/store/d4 and /mnt/store/d5. + + Within each mount point, it's strongly recommended that you use a sub- + directory and make that the destination path for the Storage Group. + See the ``Tip'' in the "Configuring the Master backend" section for + additional information. + + + You would then add the four subdirectories you created under the mount + points (/mnt/store/d1/video, etc) into the "Default" Storage Group. + + At recording time, if there were four simultaneous recordings, MythTV + would put one recording onto each drive. + + Or, say that you originally installed MythTV to a 80GB hard drive, and + that hard drive is now filling up. You could simply add a new drive + to your system, mount it and update the Storage Group to add + additional space. + + You may create additional Storage Groups to store specific recordings + in their own directories. Storage Groups are edited via the 'Storage + Directories' section of mythtv-setup. + + You can also create multiple Storage Groups to group recordings + together; recording schedules now have an option to specify which + Storage Group to use. + + MythTV will balance concurrent recordings across the available + directories in a Storage Group in order to spread out the file I/O + load. MythTV will prefer filesystems that are local to the backend + over filesystems that are remote until the local filesystem has 2 + concurrent recordings active or other equivalent I/O, then the next + recording will go to the remote filesystem. The balancing method is + based purely on I/O, Myth does not try to balance out disk space + unless a filesystem is too low on free disk space in which case it + will not be used except as a last resort. + + Storage Groups are global, but can be overridden on a slave backend by + creating a local Storage Group by running mythtv-setup on the slave. + If a problem occurs and the slave backend is unable to use the desired + Storage Group, it will fail back and try the directories defined in + the master's Storage Group. + + There's also a special 'LiveTV' Storage Group, but the directory list + starts out empty. If you add a directory to the Storage Group, it + will be used instead of putting LiveTV recordings in the Default + Storage Group. This will allow you to put your LiveTV recordings on + their own filesystem, which is similar to the old MythTV method which + used a RingBuffer for LiveTV. Of course, you don't have to do + anything, and Live TV recordings will just go into the Default Storage + Group where they'll be the first programs eligible for expiration if + the system needs free space for recordings. + + Usage information for all Storage Group directories is visible on the + mythfrontend status screen as well as the mythbackend status webpage. + MythTV is smart enough to determine which directories are on shared + filesystems so it should not count free or used space multiple times + if you have more than one directory on the same filesystem. + + + 9.1.6.3. Migrating to Storage Groups. + + Migrating to Storage groups is very simple: if you have existing + recordings in a storage directory, then the system will automatically + add that directory to the Default Storage Group. If you then add + additional directories to a storage group, the system is flexible + enough to check all Storage Groups for a file before deciding that it + can't be found, which means that you can use the mv command from the + Unix command line to arrange files however you'd like. + + + + 9.1.6.4. Advanced: Algorithm used by the Storage Group + + This section details the logic of the Storage Group allocation engine. + + The current load-balancing preferences (in order) are: + + +o Local filesystems over remote + + +o Less-busy (less weight) over more-busy (more weight) + + +o More Free Space over Less Free Space + + The 'business' of a filesystem is determined by weights. The following + weights are added to a filesystem if it is in use for the following + things: + + +o recording = +10 + + +o playback = +5 (mythfrontend) + + +o comm flagging = +5 (mythcommflag) + + +o transcoding = +5 (mythtranscode) + + If a recording is due to end within 3 minutes, it is not counted + against the weight of a filesystem. This is done to account for the + pre/post-roll and start-early/end-late settings. + + + 9.2. Post-configuration + + Run the mythfilldatabase program as directed. The master backend will + obtain guide data for all the video sources you defined during setup. + + NOTE: If you are using Schedules Direct and watching the output + messages on the console or the log file it is normal to see a "401 + Unauthorized" error followed by a "200 OK" when the connection to + Schedules Direct is being established. + + + From : Sun Jun 13 05:00:00 2004 To : Mon Jun 14 05:00:00 2004 (UTC) + --02:58:01-- + http://datadirect.webservices.zap2it.com/tvlistings/xtvdService + => -' + Resolving datadirect.webservices.zap2it.com... 206.18.98.160 + Connecting to datadirect.webservices.zap2it.com[206.18.98.160]:80... + connected. + HTTP request sent, awaiting response... 401 Unauthorized + Connecting to datadirect.webservices.zap2it.com[206.18.98.160]:80... + connected. + HTTP request sent, awaiting response... 200 OK + Length: unspecified [text/xml] + + [ <=> ] 114,125 63.57K/s + + 02:58:03 (63.53 KB/s) - -' saved [114125] + + Your subscription expires on 08/20/2004 12:00:00 AM + Grab complete. Actual data from Sun Jun 13 05:00:00 2004 to Mon Jun 14 + 00:00:00 2004 (UTC) + + + + Once mythfilldatabase has finished, start the master server before + continuing. + $ mythbackend + + + + mythbackend will print information about connections and what it's + doing to the console. If you'd like to see the options that are + available for mythbackend, type mythbackend -h for help. + + As of MythTV v0.21, the available options are: + + + $ mythbackend --help + Valid options are: + -h or --help List valid command line parameters + -l or --logfile filename Writes STDERR and STDOUT messages to filename + -p or --pidfile filename Write PID of mythbackend to filename + -d or --daemon Runs mythbackend as a daemon + -v or --verbose debug-level Use '-v help' for level info + --printexpire List of auto-expire programs + --printsched Upcoming scheduled programs + --testsched Test run scheduler (ignore existing schedule) + --resched Force the scheduler to update + --nosched Do not perform any scheduling + --nojobqueue Do not start the JobQueue + --noautoexpire Do not start the AutoExpire thread + --version Version information + + + + Running mythbackend as a daemon and using the logfile option will + allow you to have mythbackend automatically start up during boot. You + can follow the steps outlined in the section called ``Automatically + starting mythbackend at system boot time'' for configuration steps. + + If you enable the -l parameter, you will want to keep your logfiles + rotated (so that they don't fill up a partition). See the section + called ``Automatically rotating logs'' for more information. + + + 9.3. Configuring a non-master backend + + Ensure that you've granted access to the master MySQL database for + remote backends as discussed in the section titled ``Modifying access + to the MySQL database for multiple systems'' and that you have the + correct IP address for the database server in the "Database + Configuration" screen of the mythtv-setup application on this slave + backend. + + + + NOTE: Slave backends must not run a local MySQL + daemon. By default, they will connect to their local daemon rather + than the central database, causing unexpected behavior such as empty + "Watch Recordings" lists and a failure to locate the Video Sources + defined on the master backend. Modify the + /usr/local/share/mythtv/mysql.txt file on all slave backends to ensure + that the DBHostName has the address of the MySQL server. Caveat: You + may make a slave backend the primary MySQL server, or run a non-MythTV + database on a slave backend as long as you have edited the mysql.txt + file on all systems and made it consistent. There can be only one + authoritative MySQL database in a MythTV system - errors such as the + one above ensue if backends and frontends have differing ideas of + which MySQL database they should talk to. + + Make sure that the IP addresses on the General setup screen are + accurate. If the slave backend can't communicate with the master + backend due to IP address misconfiguration then MythTV will not + function properly. + + Configuration of a non-master backend follows the same general + procedure as that of the master backend, with the exception that you + skip over the "Video Sources" step. All possible video sources need + to be defined on the master backend system; only the master backend + will query a listings provider to obtain guide data for all the non- + master backends. + + + + NOTE: Do not run mythfilldatabase on a non-master backend. + + 9.4. Configuring and running mythfilldatabase + + + + NOTE: mythfilldatabase might take a while to complete, + depending on any number of factors, most of which you can't control. + It's best to just let the program run to completion. mythfilldatabase + --help will give a full listing of the options available. + + mythfilldatabase --manual is another option; the manual option will + allow you to fine tune channel frequencies and specify which channels + will be added to the database. + + mythfilldatabase --file is an option if there isn't an XMLTV grabber + for your country, but you do have an XML formatted listings file + created by some other program. + + mythfilldatabase --xawchannels is an option if you have used xawtv to + fine-tune your channels and would like to import the fine tuning + offsets into MythTV. + + mythfilldatabase --refresh-today will only pull guide data for today + (in case of late-breaking changes to the schedule). + + + + 9.4.1. Periodically running mythfilldatabase + + In order to keep your database filled, mythfilldatabase should be run + once a day. + + To use MythTV's built-in capability, you'll need to run the + mythfrontend Setup option. From the mythfrontend, enter the + Setup>General screen and advance to "Mythfilldatabase", the fourth + screen. Select the checkbox, then complete the options as you see + fit. The mythbackend program will now run mythfilldatabase for you. + + + + 9.5. Grabbing channel icons for Schedules Direct users + + While the Schedules Direct TV listings service has several advantages, + it does not support grabbing logo icons for the stations you receive. + However, there are utilities provided with MythTV which you may use to + grab your initial set of icons and to keep them updated if your + lineups change. + + First, you need to generate or obtain an XML file with the information + for your stations. + + If you have XMLTV software installed, there is a perl script in + MythTV's contrib/ directory which will generate this file for you. Run + the command: + + + $ perl mkiconmap.pl + + + + You will be asked for your zip code and the service that you use. If + there are no errors, the iconmap.xml file that you need for the next + step will be created. + + If you do not have XMLTV software installed and do not want to install + it for the sake of this minor task, there is a generic + contrib/master_iconmap.xml which you can copy and use but this may not + be as complete as using the specific information for your service. + + Once you have an iconmap.xml file, add the icon information to your + database and grab any new icons with the command: + + + $ mythfilldatabase --import-icon-map iconmap.xml --update-icon-map + + + + 10. Configuring mythfrontend. + + Once you have completed configuration of your backend systems, the + next step is to configure the frontend client. + + When you start mythfrontend for the first time, it will attempt to + connect to a configuration database on the local machine. If there is + none, a "Database Configuration" screen will appear, and you will need + to fill in some details. The "Host name" field needs the backend or + database server's IP address or DNS name, and the User or password + fields may need to be set to match your database user accounts. After + editing those fields, press Enter twice to write these configurations + on your local machine, and attempt to connect to the database. If you + make any mistakes, the screens will pop up again. + + Now that mythfrontend has started up, you should have a number of + buttons/choices. Before doing anything, go to TV, then to Setup and + configure the frontend client. + + + + NOTE: You should go through the various setup screens in + mythfrontend before using any other modules to ensure that the the + database is correctly initialized. + 10.1. General + + The General screen has configuration items that don't really fit + anywhere else. The first few configuration items ask you to indicate + the number of seconds to record before or after a program, which is + useful if the broadcast network or your system clock are out of sync + and will help prevent you missing the beginning or end of a program. + + To change the value, use the left and right arrow keys to increment + and decrement the number of seconds. When you're satisfied with the + result, use the down arrow to put the input focus on the Next button + or press RETURN to continue to the next page. + + The next page has a number of options to do with how channels are + displayed on your system. The help text will give you more + information. Move the focus to Next and press the space bar to + continue. + + The last General page sets up some final configuration items. See the + help text for more information. + + + 10.2. Appearance + + This set of screens is mostly concerned with how MythTV will look on + your system. From here, you can choose different themes and set the + resolution of your system. + + + 10.3. Program Guide + + Fairly self explanatory. Note that the alternate program guide does + not use the same font settings as defined in Appearance, so if the EPG + is unreadable this is where you make the adjustments to fonts, number + of elements displayed, etc. + + + 10.4. Playback + + The one configuration item which may cause problems on your system is + the "Deinterlace playback" setting. MythTV uses a linear blend + algorithm for deinterlacing, which will improve how the image looks on + your screen. Deinterlacing requires that your processor support SSE. + (Streaming SIMD Extensions, aka "MMX2"). Early Intel Celeron (those + that don't use the Coppermine 0.18um core and are usually <600MHz), + Pentium Pro and Pentium II CPUs do not have SSE, so make sure you + haven't enabled deinterlacing if your processor doesn't support it. If + you enable it, and your processor doesn't support SSE, you will get + "Illegal Instruction" errors. + + To determine if you've got SSE on an Intel processor, you can: + + + $ cat /proc/cpuinfo + [snip] + flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca + cmov pat pse36 mmx fxsr sse + + + + Notice the sse at the end of the line - this tells you that this + processor will be able to deinterlace correctly. + + On an AMD processor, look for "3dnow" in the cpuinfo line; "3dnow" is + AMD's implementation of SSE instructions, so if your processor has + 3dnow you shouldn't have any issues with deinterlacing. + + 10.4.1. Video Filters + + MythTV provides a means of employing video filters while recording and + during playback. These filters can be used to improve or modify the + video image, including hiding the effects of an interlaced image or + reducing the impact of noise in a poor video signal. The following is + a brief introduction to introduce you to the filters that are + available in MythTV version 0.20 and higher. + + 10.4.2. Applying filters + + One or more filters can be included in a "filter chain". The filters + to be used are identified in a "filter string". A filter string is a + group of filter names and parameters separated by commas. To include + parameters, the filter name is followed by "=" and the parameter + information. There should be no spaces in the filter string. Here is + an example filter string: + + With parameters: kerneldeint=10:1,denoise3d=12 + + Without: kerneldeint,denoise3d + + Recording filters are set for each individual channel. These may be + used when encoding in software (MPEG-4, RTjpeg) but do not apply when + using a capture card with hardware encoding such as those supported by + the ivtv driver, DVB, HDTV or MJPEG cards. You can run MythTV's + "setup" program and select the "Channel Editor". On the first page for + each channel, you can enter a filter string in the box titled "Video + filters". If you are running "mythweb" on your web server, you can + click on "Settings" then "Channels" and enter filter strings in the + "videofilters" column. + + Playback filters are per-host and apply to any recording you watch + from the frontend where filters have been applied. Playback filtering + can only work with software decoding so the viaslice, xvmc, and ivtv + outputs ignore filters entirely. From "mythfrontend" go to Setup->TV + Settings->Playback. Enter your filter string in the box titled + "Custom Filters". + + + 10.4.3. Currently Available Filters + + "Deinterlace Playback" checkbox. + + This implements special behavior needed for the "bobdeint" filter but + can also be used to choose any of the deinterlace filters. If you + prefer, you may leave this unchecked and include any of the + deinterlace filters, other than "bobdeint", in your custom filter + chain. + + o The "invert" filter + + Invert ignores any parameters and inverts the pixel values of the + video frames. In other words, a negative image. This would rarely be + useful but may be a good example to verify that your filter strings + take effect. + + o The "linearblend" filter + + It is a simple deinterlacing filter that ignores parameters and works + by blending adjacent lines. It replaces combing in interlaced video + with a less distracting "ghost" image. + + + o The "bobdeint" filter + + This filter splits the interlaced image into two separate fields that + can be line doubled then displayed at twice the frame rate. If the + display is at the same refresh rate as the recording (59.92Hz NTSC or + 50Hz PAL) this will cause each refresh to show objects in motion in a + new position with no jagged edges. However, if the display is not + synchronous, it will cause flickering or the appearance of the picture + moving up and down by one line. + + + + NOTE: This filter requires the frame rate to be doubled + and therefore can only be used with the "Deinterlace Playback" + checkbox. Do not include this in your filter chain. + + o The "kerneldeint" filter + + Kerneldeint is a more complex deinterlacing filter which applies a + filter kernel using input from several lines. It generally removes + combing without a "ghost" image, sometimes leaving a faint outline of + the image from the other field. It is considered to be less + distracting to watch than linearblend or no filter at all. It accepts + one or two integer parameters separated by a colon. + + The first parameter is the filter threshold and defaults to 12. + Adjacent lines differing by more than the threshold value are + filtered. The second option defaults to 0. If set to a non-zero + value, it will cause the filter to skip chroma, and filter only the + luminance. It may be useful on some capture cards which do not + capture the chroma fields of interlaced video correctly. + + o The "onefield" filter + + This is a simple one-field deinterlacing filter that uses only one + field of the interlaced video. By default it keeps the top field, + though passing the parameter "bottom" will cause it to keep the bottom + field instead. + + This filter is primarily useful for those who display 1080i HDTV + signals with a video mode that has 540 pixels vertically. The + advantage over other deinterlacing filters is that scenes with motion + never show combing or ghosting. + + o The "adjust" filter + + This filter adjusts the digital values for luma and chroma to ensure + that they will fall within the ranges specified in the ITU-R601 + standard. By default, this corrects a known problem for the luma range + used by bt8x8 chips which causes video to look washed out. If + parameters are passed, there need to be exactly six. However, passing + a single parameter of "-1" will disable the filter. + + 1: luma minimum input value (int) 2: luma maximum input value (int) 3: + luma gamma correction (float) 4: chroma minimum input value (int) 5: + chroma maximum input value (int) 6: chroma gamma correction (float) + + The default bt8x8 correction values are equivalent to + "16:253:1.0:2:253:1.0". Output ranges are fixed at ITU-R601 values + (16-235 luma, 16-240 chroma). + + NOTE: If it is not already specified in the filter chain, this filter + will be automatically applied when recording with the "bttv" driver. + o The "quickdnr" filter + + A fast temporal denoiser. This can take 1, 2 or 4 parameters, each + being a value from "0" for the least filtering to "255" for the + greatest filtering. With one parameter, the filter will compute the + values it should use for all of its variables. Two parameters will set + the filter strength for luma and chroma independently. If you are + interested in how the algorithm works, you may examine the source code + to see how four parameter are used. + + o The "denoise3d" filter + + A slower denoiser that applies a spatial and temporal low-pass filter. + The spatial filter can remove some noise that quickdnr can't, but a + more powerful CPU is needed. This filter accepts 3 float parameters: + + + +o luma spatial filter strength + + +o chroma spatial filter strength + + +o luma temporal filter strength + + Reasonable defaults will be selected for omitted parameters. The + chroma temporal filter strength is calculated from the other filter + strengths. + + o The "crop" filter + + Covers edges of video with black bars. This helps improve video + quality when the edges of the frame are distorted. By default, this + removes 16 pixels from each edge. This can optionally take four + parameters representing top:left:bottom:right. The number times 16 is + the number of pixels to remove so, for example, the default is + "=1:1:1:1". + + o The "forceyv12" and "forceyuv422p" filters + + These force the filter manager to use the given format. You can use + one of these at the head of a filter chain to change the capture + format. The most likely use would be forceyuv422p to use YUV422P + capture on cards with known chroma interlacing problems with YV12. + + There are some filters included in the MythTV source code that should + not be used: + + o The "forcergb24" and "forceargb32" filters + + The two RGB formats should not be used because there is no conversion + filter for them yet. + + o The "convert" filter + + It exists but don't use it. The filter manager uses this filter + automatically when it is unable to match the input/output formats of + two adjacent filters. + + o The "postprocess" filter + + While this exists in MythTV source code, it is currently not + recommended for use. + + + + 10.4.4. Usage Considerations + + There are trade-offs to consider when deciding if it would be wise to + use a filter. Any processing will modify the original image so you + should assess if the filter has made a noticeable improvement to the + picture in order to justify the impact of the processing. Adding any + filter will inherently increase CPU usage. The impact can vary + dramatically depending on your CPU type and speed, the resolution of + the recording, which filters you are using and other factors. You can + only determine what is right for you through experimentation. However, + as a starting point, here are some filter strings that you may find + useful: + + For typical broadcast stations: "kerneldeint,quickdnr" + + For stations with poor signal quality: "linearblend,denoise3d=12" + + For synchronous TV-out: check Deinterlace with "Bob (2x framerate)" + + + 10.5. Recording + + Depending on your capture card, MythTV offers different video + encoders. The following types of hardware encoding cards are + supported: + + +o MJPEG - Zoran-based cards; see http://mjpeg.sourceforge.net + <http://mjpeg.sourceforge.net> + + +o MPEG-2 - iTVC15/16 based cards (Hauppauge PVR-250/PVR-350); see + http://ivtvdriver.org <http://ivtvdriver.org> + + +o HDTV - pcHDTV cards; see http://pchdtv.com <http://pchdtv.com> and + the Air2PC-ATSC-PCI see + http://www.cyberestore.com/product_info.php?cPath=28&products_id=103 + <http://www.cyberestore.com/product_info.php?cPath=28&products_id=103> + + +o DVB - cards supporting DVB; see http://linuxtv.org + <http://linuxtv.org> + + For cards without hardware encoding capabilities (all cards + supported by V4L not listed above), Myth includes two methods for + software encoding: RTjpeg and MPEG-4. RTjpeg has significantly + fewer CPU demands than MPEG-4, but it generates larger files than + MPEG-4 for a given recording. + + For DVB and HDTV cards, no further configuration is required after + setting up the card using the 'mythtv-setup' program. For all other + cards, configuration is done through MythFrontend. Selecting + 'Recording Profiles' from the 'TV Settings' screen will list the + profiles currently available for the cards in your system. Depending + on what types of cards you have installed you may see: + + + (Create new profile group) + Software Encoders + Hardware MPEG Encoders + Hardware MJPEG Encoders + Transcoders + + + + The '(Create new profile group)' option will allow you to create cus- + tom profiles in case you have multiple backends. Note that custom + profiles are per backend and card type. If you have 2 MPEG-2 encoders + in a given backend system, creating a custom profile will affect both + of them. This option should not be needed otherwise. + + The 'Transcoders' group is a little different from the others. + Selecting this group will result in a menu with the following options: + 'RTjpeg/MPEG-4' and 'MPEG-2'. These types indicate what transcoder + options will be used for a given input type (i.e. the 'MPEG-2' + settings would be used to transcode MPEG-2 files into MPEG-4. The + source of the MPEG-2 stream (DVB, HDTV, or PVR-x50) does not matter. + Configuration of the options is the same as below (although any + resolution settings will be ignored). + + Selecting any of the other options will show a new screen with a list + of four profiles: + + +o Default + + +o Live TV + + +o Low Quality + + +o High Quality + + The Default profile will be used for any recording which does not + otherwise have a specific profile assigned. The 'Live TV' profile will + be used when watching TV. The remaining two profiles are available + for customizing to allow for more precise control over what quality is + used for a given program. + + Selecting a profile will allow you to adjust the relevant options for + that card. The most significant setting is the recording resolution, + but you can also choose encoding format, audio format, and tweak other + encoder specific properties. + + + + NOTE: although the width and height can be changed to almost + anything, if you start MythTV and don't see video or you get + "segmentation fault" errors, it is likely that the video4linux (v4l) + subsystem did not like the height and width parameters specified. + It's best to leave the default as-is until you're sure that MythTV is + operational. + + See the ``What capture resolution should I use? How does video work?'' + section for more information. + + + 10.6. Xbox Frontends + + MythTV is able to control the LED on the Xbox to indicate backend + recording status. + + To control the LED, you will need the blink program from the xbox- + linux project, which is installed as /bin/led on GentooX. On Xebian + (the new Ed's Debian) you must install it yourself. On other + distributions it may or may not be installed as a program called blink + and should be located in your path. (Type which blink to see if the + program is available.) If you do not have blink, you may obtain it + from the Xbox-Linux project site at http://xbox-linux.sf.net/ + <http://xbox-linux.sf.net/>. The program you need is part of the + eds_i2c_staff module in CVS. Note the spelling. + + + Once you have installed blink you will need to set permissions. blink + needs write permission to the i2c device to function properly. There + are three methods to accomplish this. First, you could run + mythfrontend as root, which is the simplest method, but could + potentially be a security risk. Next, you may make the blink binary + setuid root, which allows non-privileged users to run a program with + root capability. This is done by typing the command: + + + $ su + # chmod u+s /path/to/blink + + + + The final technique would be to set the /dev/i2c/0 device read/write + for all users, but this is the least preferred method. + + Now it's time to setup MythTV for Xbox hardware. Enter Setup -> + General. On the second page check the 'Enable Xbox Hardware' option. + Upon reentering the settings, you should have a new option named + 'Xbox'. Within this option you may select the distribution, LED + colors for recording and the update interval. If you select GentooX + as the distribution led will be used as the blink binary name, + otherwise, blink is used. Colors should be self explanatory. The + update interval determines how often the frontend should poll the + backend to determine if the status has changed. + + + 11. Using MythTV. + + + + NOTE to Red Hat/Fedora 4 users: Red Hat Linux and Fedora Core ship + with Gnome as the default desktop environment. However, Gnome seems + to have issues with window focus and window switching which sometimes + cause mythfrontend to obscure the video. KDE does not seem to have any + such issues. Therefore you will need to switch to KDE by selecting + RedHatMenu>Extras>System Settings>Desktop Switching Tool and choose + "KDE". NOTE to Fedora Core 5 and 6 users: Fedora 5 and 6 no longer + have this tool in the Menu. Use "switchdesk KDE" from a command line. + Read "man switchdesk" for further information about changing to other + desktop environments. + + 11.1. Keyboard commands + + The keys.txt file describes what the various keyboard commands are. + If you have loaded mythweb, you may change the default keys to your + liking. + + 11.1.1. mythfrontend + + + Arrow keys used to move the highlight point around + ALT-F4 exit out of the application + Space/Enter take action on the item under the highlight point + P play in both "Watch a Recording" and "Delete a Recording" + D delete in both "Watch a Recording" and "Delete a Recording" + U to view details for the currently selected show on the Watch or Delete screens, EPG, "Program Finder", "Fix Scheduling Conflicts" and search results screens + O to list the upcoming episodes for the currently selected show on the EPG, "Program Finder", "Program Recording Priorities", "Fix Scheduling Conflicts" or search results screens + I edit recording options from the EPG, "Program Finder", "Program Recording Priorities", or "Fix Scheduling Conflicts" screens. From the Playback and Delete screens, 'I' presents options for recorded shows such as Auto Expire or Stop Recording. Pressing 'I' while on the Recording Options screen will take you to the Advanced Recording Options screen. + + + 11.1.2. Watching TV or a recording + + + Up or down keys change the channel + num pad Type a number to enter a channel number or jump amount (HHMM format) + P pause / play. You may also add an explicit keybinding for 'Play' through MythWeb, returning you to normal speed if you are in slow motion, rewind fast forward or pause mode. + C change inputs on TV Tuner card + ESC quits + I puts the On-screen Display up again. During playback, 'I' toggles between position and show description info. If a jump amount is entered, jump to that position. + M brings up the electronic program guide (Grid) -- see the EPG section + Page Up jump back the configured number of minutes (default is 10) + Page Down jump ahead the configured number of minutes (default is 10) + End or Z skip to next commercial break marker + Home or Q skip back to previous commercial break marker + T toggle close caption support Pressing 0-9 (preferably 3 times) + T changes teletext page and turns on teletext. + F rotate between the various Picture Adjustments (Colour, Hue, etc.) While Picture Adjustment is on-screen, use Left and Right arrows to adjust. These settings adjust the look of the video playback, and are independent of the G-key settings used at record-time. + [ or F10 decrease volume + ] or F11 increase volume + or F9 toggle mute + / jump to the next "favorite" channel + ? mark/unmark the current channel as a "favorite" + U increase the play speed + J decrease the play speed + A Adjust time stretch (speed up or slow down normal play of audio and video + W cycle through zoom and fill modes: 4:3 aspect ratio, 16:9, 4:3 Zoom (like Pan and Scan), 16:9 Zoom, and 16:9 Stretch (eliminates black sidebars in TV signal) + F8 toggle the sleep timer 30m->1hr->1hr30m->2hr->Off + CTRL-B Jump to the beginning of the recording / ringbuffer + + Switch between audio streams + Left (if a jump amount is entered) to jump back that amount + Right (if a jump amount is entered) to jump ahead that amount + + + Without the stickykeys option selected + Left rewind the configured number of seconds (default is 5) + Right fast forward the configured number of seconds (default is 30) + < starts rewind mode as if stickykeys are selected + > starts fast forward mode as if stickykeys are selected + + + With Stickykeys option selected + Right starts fast forward mode + Left starts rewind mode + + + In fast forward or rewind mode: + Left/Right increases the ff/rew speed + 0 plays at normal speed, but leaves the time indicator on screen + 1 or 2 plays back more slowly than normal ff/rew speed (1 is slowest) + 3 plays back at normal ff/rew speed + 4-9 plays back faster than normal ff/rew speed (9 is fastest) + Space exits fast forward or rewind mode + + + While video is paused: + Left rewind 1 frame + < rewind 1 second + Right advance 1 frame + > advance 1 second + + + 11.1.3. Watching TV only + + + + G rotate between the various Picture Adjustments (Colour, Hue, etc.) for recording. These values affect the look of the resulting .nuv file, and are independent of the playback picture settings. While Picture Adjustment is on-screen, use Left and Right arrows to adjust. + H Channel history. Each repeat steps back through the previous channels. + O Turns on 'Browse' mode, allowing user to browse channels and program info while watching current show FullScreen. + Y switch between multiple capture cards. NOTE: you will lose your LiveTV buffer on your current card. Useful for different-sourced cards (such as Dish Network on one, HDTV over-the-air on another card.) + + 11.1.4. LiveTV Browse Mode + + + Left browse program prior to current listed program + Right browse program following current listed program + Up browse program on channel above current listed channel/program + Down browse program on channel below current listed channel/program + / browse program on next favorite channel + 0-9 enter a channel number to browse + Space/Enter change channel to channel of current listed program + R/r Toggle recording of current program (cycles through types) + ESC/O Exit Browse mode + + + 11.1.5. Playback Recording Zoom Mode + + + Left Move video to Left + Right Move video to Right + Up Move video Up + Down Move video Down + PageUp Zoom In + PageDown Zoom Out + Space/Enter Exit Zoom mode leaving picture at current size and position + ESC Exit Zoom mode and return to original size + + + 11.1.6. If you have two or more tuner cards + + + V toggle Picture-in-picture on or off + B toggles the window focus (lets you change channels on the PiP window) + N swaps the two channels by changing channels on both cards + + + 11.1.7. Watching a recording only + + + Space/Enter set a bookmark at that point. Next time you start the recording, you will automatically jump forward to this point and clear the bookmark. + X queues the current recording for transcoding + O brings up menu to allow toggling settings such as Commercial Auto-Skip, Auto-Expire, etc. + D exits the current recording and displays the Delete menu + E or M enters/exits edit mode. + + + In edit mode + Left/Right move forward and backward + Up/Down alter the amount of time you jump forward and backward. Increments are: nearest cutpoint, nearest video keyframe, 1 frame, 0.5 seconds, 1 second, 20 seconds, 1 minute, 5 minutes, and 10 minutes. + PageUp/PageDown move forward and backward to the nearest cut point + < or > move forward or backward by 10 times the normal jump amount + Space/Enter allows you to set or delete a cut point + Z loads the commercial skip list (if one exists) into the cutlist + C or Q clear all cut points in the cutlist + I Inverts the cutlist + + + 11.1.8. EPG + + + + Arrows are used to move the highlighted program point around + A, D, S, W perform the same as left, right, down and up + PageUp/PageDown move the channel list up or down a page + Home/End move the highlight left or right by one day + Ctrl+Left or < move the highlight left by one page + Ctrl+Right or > move the highlight right by one page + 9, 3, 7, 1 (like a numeric keypad) perform the same as PageUp, PageDown, Home and End + I bring up more information about a show, and allow you to schedule a recording. If you select "Record this showing" while watching Live TV you can "Instant Record" a program. + Space/Enter allow you resolve conflicts or change overrides. If the program is not already scheduled to record, it will instead act like pressing 'I'. + M when on a channel will change to that channel + ESC or C exits without changing the channel + R change the current item from Recording/Not-Recording. Successive keypresses cycle through the scheduled recording type list. + X change the channel to the currently selected channel without leaving the EPG (Most useful in the alternate EPG) + ? mark/unmark the current channel as a "favorite" + / or 4 toggle the guide listing between all channels and filtered "favorites" + + 11.1.9. Setting Program or Channel Recording Priorities + + + Right increases priority value + Left decreases priority value + 1 sorts by title + 2 sorts by priority + Home/End toggle sort priority + I edit recording options + ESC commits changes and exits + + + 11.1.10. Viewing Scheduled Recordings/Resolving Conflicts + + + 1 show all recordings + 2 show only important recordings + Home/End toggle show showing all/important + I edit recording options + Space/Enter resolve conflict or override + + + 11.1.11. Viewing Search Listings + + + Home change to the previous view if applicable + End change to the next view if applicable + M select another view if applicable. In the title and description search popup, press M again to edit or delete the selected view. + + + 11.1.12. Recording Profiles Setup Screen + + + D on a custom profile group displays a popup to delete the group + + + 11.1.13. Recording Groups + + In the Watch Recordings screen, Recording Groups allow you to separate + programs into user-defined categories, such as "Kids", "Alice", "Bob", + etc. This can be used to reduce clutter, or to segregate content if + you use the PIN function. + + M change the view or to set a group password + I move a program from one Recording Group to another + + + + 11.1.14. Watch Recordings Screen + + + 1 or F1 Meaning of the icons + / Tags a recording. Tagged recordings can be played either in order or shuffled and deleted as a group. You can also change the recording group for several recordings at once by tagging them and using the Menu (m) button, selecting "Playlist options", then "Change Recording Group". + ? Clear the tagged list. + + + 11.1.15. Remote Controls + + If you are using MythTV with just a remote control then it is + suggested that you map the remote control keys as described below. + Your remote control may not have the same set of keys as those named + below, the names are only a suggestion that roughly correspond to the + function. + + If you are adding new key bindings to the program then consideration + of this suggested list will help users with remote controls. + + This list assumes a minimal remote control that only has 20 keys, + nearly all features can be used with this configuration. If you have + more keys then you can access all of the features. With only 16 keys + most features are usable. + + REMOTE CONTROL LIRC KEYSTROKE FUNCTION + 0 - 9 0 - 9 channel selection, EPG navigation, ff/rew speed setting (with stickykeys) + Left Arrow Left scroll left, rewind + Right Arrow Right scroll right, fast forward + Up Arrow Up scroll up, channel change up + Down Arrow Down scroll down, channel change down + Select / OK / Play Space Select item, play (with stickykeys) set bookmark + Cancel Escape Cancel, quit playback + Menu m EPG (from watching TV) edit (from playback). + Pause p Pause + Other key 1 i Information + Other key 2 c Change tuner card input + + + + 11.2. Using themes with MythTV + + MythTV is "themeable", meaning that the visual appearance of the + program can be modified by the user without re-compiling or altering + the program functionality. Download the MythThemes tarball from the + website and untar it: + + + + $ tar -xjf myththemes-0.21.tar.bz2 + $ cd ~/myththemes-0.21 + $ qmake myththemes.pro + $ su - + # make install + # exit + $ + + + + The theme will now be available in the mythfrontend Appearance + section. + + + + 11.3. Adding DishTV information to the database + + A script for adding Pay Per View information into the MythTV database + for DishTV subscribers is available at http://www.mythppv.com/ + <http://www.mythppv.com/>. + + + 11.4. Adding support for an external tuner + + MythTV supports changing the channel on an external tuner. If you + have an external tuner, such as a DirecTV or digital cable set top + box, you should add /usr/local/bin/changechannel to your Input + Connections in the mythbackend configuration GUI. + + However, there is not changechannel program per-se, because this is + going to be dependent on what sort of external tuner you have. Look + in the contrib/channel_changers directory for a number of programs and + scripts which may be used to change channels. Once you find one which + works, copy it to /usr/local/bin/changechannel. + + Feel free to browse some of what sort of hardware is available at + http://store.snapstream.com/accessories.html + <http://store.snapstream.com/accessories.html>, or if you wish to + assemble your own, rather than purchase, the following may be helpful: + http://www.dtvcontrol.com/ <http://www.dtvcontrol.com/> for cable + pinouts. + + + 11.5. Using Shutdown/Wakeup + + What does the MythTV Shutdown/Wakeup function do? The scheduler on the + Master backend (MBE) keeps track of the idle status of the entire + MythTV system, including the Slave backends (SBE). If it considers the + system to be idle, and thus ready to shutdown, it sets the wakeuptime + to the time of the next recording and then proceeds to shut down all + Slave backends and then itself. Once it is time to begin recording, + the Master backend and the Slave Backends are automatically woken up. + This system allows MythTV to record like a normal VCR, thereby + conserving power when not in active use. + + In order to use the Shutdown/Wakeup function there must be some method + of waking up the Master backend. There are any number of solutions, + but we will discuss in detail two possibilities: + + + +o Use another server that runs 24/7 and have it send a WakeOnLAN + (WOL) packet to wake the Master backend. This assumes that you + have the WOL tools installed, and that your Master backend + motherboard supports WOL. + + +o Use your motherboard's BIOS wakeup capability. You'll need a + motherboard that supports BIOS wakeup, and some tools. Two that + work are: http://sourceforge.net/projects/nvram-wakeup + <http://sourceforge.net/projects/nvram-wakeup> and + http://www.malloc.de/tools/wakeup_clock.html + <http://www.malloc.de/tools/wakeup_clock.html> + + + 11.5.1. A deeper look into the operation + + The scheduler keeps track of the idle status of the MythTV system. To + determine whether or not the MythTV system is idle, the following + conditions must be met for a period of time defined in the "Idle + timeout (secs)" parameter. + + + +o no client is connected to the server + + +o no recording (neither LiveTV nor a regular recording) is currently + taking place + + +o no recording starts within a definable amount of time ("Max. wait + for recording (min)") + + +o the "pre Shutdown check-command" returns 0 + + If we get to this idle state the Master backend will set the + wakeuptime using the "Set wakeuptime command", which is the same for + WOL and BIOS wakeup. The Master backend will then shut down the Slave + backends and itself using the "Server halt command". + + One caveat is that the scheduler tries to guess if the Master backend + was started by a wakeup call or by the user. If it thinks it was woken + up by a user, it blocks shutdown until a client connects to the Master + backend, after which it will behave as described above. To disable + this feature, unset "Block shutdown before client connected" in the + mythfrontend Setup->Setup->General screen. + + Once it is time to startup the system, the Master backend is woken up + first and will wakeup the Slave backends using the "Wake command for + slaves". At this time, there is no support for starting only the + required Slave backend, so all Slave backends will startup. + + + 11.5.2. Setting up the MythTV side of this extension. + + There are a number of options that are used to control the Shutdown / + Wakeup feature. + + Shutdown/Wakeup Options: + + +o "Idle timeout (secs)" is the time the server waits while idle until + a shutdown occurs. + + +o "Max. wait for recording (min)" is the time the Master backend + waits for a recording without shutting down. For example, this + would be used to prevent a 10 minute system shutdown if a recording + is set to start 15 minutes from now. + + +o "Startup before rec. (secs)" Sets how long before a programmed + recording the MythTV system will be woken up. This should be + roughly be the time your systems need to bootup, and if you have + Slave backends, you'll need to ensure this value is long enough for + all your machines to perform their bootup cycle. + + +o "Wakeup time format" is the format of the wakeup time that is given + in the "Set wakeuptime command" as a parameter "$time". You need to + set this according to your wakeup mechanism. If you need seconds + since the epoch (1970-01-01) set the "Wakeup time format" to + "time_t". + + +o "Set wakeuptime command" is the command executed to set the new + wakeuptime. + + +o "Server Halt Command" is the command executed to shutdown the + Master backend and the Slave backends. + + +o "pre Shutdown check-command" is used to give a "Go/NO-GO" decision + from a non-MythTV source. This command is executed immediately + before the shutdown would occur. The return value is use to make + the following choices: + + +o If it returns a "0" the shutdown will occur as scheduled. + + +o If it returns a "1" the "idle timeout" will be reset and the + system waits again for the timeout. + + +o If it returns a "2" the entire shutdown sequence is reset. This + means that a new client connect is needed before a shutdown + occurs, unless you have the "Wait for client connect" setting + disabled, in which case this is the same as returning "1". An + example of a use for this return value is to prevent the + shutdown if a user is currently logged in, or if a specific + program (i.e. transcode, automatic updates, etc.) is currently + running. If you don't need it, leave the field blank. + + The "WakeOnLan settings": These settings have nothing to do with using + BIOS or WOL wakeup, they are the same for both. + + +o "Master backend" This setting defines timings for the frontends to + wakeup the Master backend using WOL. Useful if your frontend can + emit a WOL packet so you don't need to physically go to the Master + backend if you're trying to watch TV. + + +o "Reconnect wait time (secs)" is the time the frontend waits after + executing the "Wake command" before attempting to retry the + connection. This should be roughly the amount of time your Master + backend needs for bootup. Set to "0" to disable. The frontends + will retry to connect for "Count of reconnect tries" times before + giving up. + + +o "Wake command for slaves" is the one command executed to wake your + Slave backends. This should be a script that contains the calls to + wakeup all Slave backend systems. + + + 11.5.2.1. Using WOL to wake your Master backend. + + To use WOL to wake your Master backend you will need a WOL capable + Master backend, a machine that runs 24/7 which can execute an at-job + and nc (netcat) on the Master backend. I use some little bash scripts + to make my DSL router wakeup my mythbox if required. + + Replace $SERVER and $PORT with your own settings! On my Master + backend I have a script that gets called as 'setwakeuptime command' + which looks like the following: + + + #! /bin/sh + echo $@ | nc $SERVER $PORT + + + + This simply cats the parameters (that is $time) to my 24/7 server. On + my $SERVER I have (x)inetd listening on $PORT starting a little script + which cares about setting the at-job. The following additions are nec- + essary on the $SERVER: + + If you use inetd: + + In /etc/inetd.conf add: + + + mythwake stream tcp nowait mythtv /usr/sbin/tcpd /usr/local/bin/mythwake + + + + If you use xinetd, save the following as mythwake in your + /etc/xinet.d/ directory: + + + service mythwake + { + socket_type = stream + wait = no + user = mythtv + protocol = tcp + id = mythwake + server = /usr/local/bin/mythwake + } + + + + and add the following to /etc/services: + + + mythwake $PORT/tcp + + + + Finally, /usr/local/bin/mythwake looks like: + + + #! /bin/bash + #this should be a command to wake your server + WAKECMD="#!/bin/sh\n /usr/local/bin/wakeMBE" + #first we need to delete all wake jobs in queue + for JOB in atq | cut -f 1 ; do + atrm $JOB; + done + #now we read the date from 'nc' + read date; + #now set the atjob + echo -e "$WAKECMD" | at $date ; + + + + SECURITY WARNING: Be sure to secure $SERVER:$PORT from untrusted net- + works, because this allows 3rd parties to run arbitrary code on your + server! + + + 11.5.2.2. Using BIOS wakeup to wake your Master backend. + + Since I don't use this, I cannot say much about this. If your + motherboard supports any wakeup tool you have to call that tool as + "Set wakeuptime command" with the "Wakeup time format" suitable for + that tool. + + 11.5.3. Wakeup the MySQL server using WOL + + If your MySQL server and your Master backend are not on the same + machine, you can have the Master backend wake your MySQL server using + WOL. You will find the settings for this in the second page of the + mythtv-setup program, or at the end of mysql.txt. The meanings are + the same as discussed in "The WakeOnLan settings" above. + + + + 11.5.4. Tips/Tricks: + + If, for example, one of the Slave backends is also your desktop + computer, you could simply use a little script as 'server halt + command' which first calls /sbin/shutdown -t TIMEOUT where TIMEOUT is + a value sufficient for you to react. You could then popup a window + using *dialog, asking for permission to shutdown. If you cancel the + shutdown, simply call /sbin/shutdown -c. + + If you get "nvram-wakeup: /dev/rtc: Device or resource busy" your set- + wakeuptime-script should stop the program that uses /dev/rtc before + setting the wakeuptime. + + 11.6. Controlling the mythfrontend via telnet + + To use this feature you must first enable it in + Settings>General>General + + The network control listens on port 6546, as demonstrated below: + + + + $ telnet basement 6546 + Connected to basement. + Escape character is '^]'. + MythFrontend Network Control + Type 'help' for usage information + --------------------------------- + # help + Valid Commands: + --------------- + jump - Jump to a specified location in Myth + key - Send a keypress to the program + play - Playback related commands + query - Queries + exit - Exit Network Control + + Type 'help COMMANDNAME' for help on any specific command. + + # help jump + Usage: jump JUMPPOINT + + Where JUMPPOINT is one of the following: + channelpriorities - Channel Recording Priorities + channelrecpriority - Channel Recording Priorities + deletebox - TV Recording Deletion + deleterecordings - TV Recording Deletion + guidegrid - Program Guide + livetv - Live TV + livetvinguide - Live TV In Guide + mainmenu - Main Menu + ...snip... + # exit + $ + + + + Please note that this feature only allows one connection at a time, so + any new connections will automatically terminate prior ones. + + + 12. Scheduling Recordings. + + The MythTV master backend is responsible for managing the schedule for + all TV tuner cards on the master and any slave. Its job is to search + the TV listing for the shows you have requested and assign recordings + to the TV tuner cards. If none of the shows that you've chosen + overlap, it simply records all of them. However, if there are shows + where the beginning and end times overlap, the scheduler follows rules + that you've specified or makes logical decisions about what would be + best if you haven't expressed your preference. Further, the "Upcoming + Recordings" page allows you make specific decisions about what you + really do and don't want to record. + + + 12.1. Record Types + + When you choose a show that you would like to record from the Options + Page, there are eight different types of rules to help the scheduler + find which showings you would like to record. + + + +o Single Record -- record only this title at this specific time and + this station. This is the best way to be sure that a certain + showing will be recorded. However, if the TV listings change and + the show is not broadcast at that time, the show will not be + recorded but will be marked as Not Listed to let you know that you + should investigate. + + +o Find One -- this will record a title once from any of the times + that appear in the TV listings. This is useful for recording a + movie or special that has multiple showings because it allows the + scheduler to choose one that doesn't conflict. It is not a good + choice for recording a single episode of a series because it + records the first available showing of the title without regard to + the episode information. + + +o Record Weekly -- this records a show whenever the title is listed + on the same channel, weekday and time. Note that if the TV station + changes the schedule for a special episode, it would not be + recorded. However, you can add a Single record for the special + episode. If there are no matching showings in the TV listings, a + Not Listed item will be added to your schedule for the next time + slot to let you know that you should investigate. + + +o Find Weekly -- this will record a title once per week from any of + the times that appear in the TV listings beginning from the time of + the showing that was selected when the rule was set. This is useful + for news, current events or other programs where the same episode + is shown several times each week but the listings may not include + descriptive information. This may not be a good choice if there are + different episodes shown during the week. + + +o Record Daily -- this records a show whenever the title is listed + for the time and station on any day of the week. Here again, a show + will not be recorded if the time was altered by the station. If + there are no matching showings in the TV listings, a Not Listed + item will be added to your schedule for the next time slot to let + you know that you should investigate. + + +o Find Daily -- this will record a title once per day from any of the + times that appear in the TV listings beginning from the time of the + showing that was selected when the rule was set. This is useful for + news, current events or other programs where the same episode is + shown several times each day but the listings may not include + descriptive information. This may not be a good choice if there are + different episodes shown during the day. + + +o Channel Record -- records one showing of each unique episode from + any of the times the title is listed on this station. This is + perhaps the most common rule to use for most shows. + +o Record All -- records one showing of each unique episode from any + of the times this title is listed on any channel. This can be + useful if a station has sister stations where shows are rebroadcast + allowing the scheduler to record rebroadcasts on the other station + when the original airing cannot be recorded. + + + 12.2. Scheduling Options + + 12.2.1. Priority + + By default, all shows you select have equal value to the scheduler. + There are a set of rules to make good choices when two or more shows + are in conflict. However, priority values let the scheduler know what + you prefer so that it can set the schedule based on your preferences. + + Initially, recording rule priority values are set to zero. You may + choose to leave everything at "0" and let the scheduler follow rules + to guess what you might prefer when there are conflicts. However, if + you have one or two favorite shows, you may want to increase the + priority value so the scheduler will know that you would prefer + recording these over other shows. You might use certain values to rate + shows so that all favorites are 2. good shows are 1 and extra 'filler' + shows are all -1 for example. You could sort each title on the "Set + Priorities" page to have a unique value so the scheduler can know + which show you'd prefer versus any other show. The choice and style + are entirely up to you. However, the more information you give to the + scheduler, the more likely it will make the choices you would prefer + in the first place. + + The scheduler choices are based on the total priority for a showing by + adding up all priority factors that match the showing. By default, + most of these factors are "0" but you may use any combination to + express your likes and needs. + + + +o Per record rule -- this is the "priority" selection in the + "Scheduling Options" section of the options page and this value is + included for any showings that match the recording rule. You may + choose to only use these values and not use the other factors for + the sake of simplicity and clarity. + + +o Per record type -- Setup->TV Settings->Recording + Priorities->General allows you to add to the priority based on the + type. It may make sense to increase the value for "Single" so that + by default they have an extra advantage over other shows. The + default is +1. You may want to decrease the value for Find rules so + that they will be less likely to interfere with regularly scheduled + shows and will be more likely to record in a non-conflicting time + instead. The default is -1. + + +o Per channel -- Setup->TV Settings->Recording Priorities->Channel + Priorities can be useful if you believe that you prefer any of the + shows on certain channels. This would give all shows on a channel + an advantage by default. + + +o Input priority -- in the "mythtv-setup" program, the "Input + Connections" section allows you to add additional priority in the + "Input priority". This is simply another priority factor but has + an interesting effect. If a card input has a higher value than the + other cards, the scheduler will see that you would rather record + showings of episodes on this input rather than a showing on other + inputs. If you have multiple cards of different quality, you may + want to set input priority to encourage the scheduler to record + shows on your best card(s) whenever possible. This can also be + useful if you have multiple video sources which include the same + stations. For example, with digital and analog cable you could + increase the digital cable input preference by 1 to tell the + scheduler that you want to record from the digital channel whenever + possible but the channel on the analog input could still be used + when the digital input is busy. + + +o Custom Priority -- this allows you to add any specialized factors + you would like in order to influence scheduling decisions. See the + ``Custom Priority'' section below. + + For any single showing of any show you've chosen to record, these + factors are added together to find the "total priority". This is + the priority that the scheduler uses to decide which showings are + given the first choice when filling in the schedule. + + The scheduling priority of a show may also be used to determine auto- + expiration of recordings when disk space gets full (see ``Auto- + Expire'', below). + + + 12.2.2. Duplicates + + Singles will record without regard to duplicate matching. + + + The standard recurring methods of All, Channel, Weekly and Daily use + the descriptive information in the TV listings to try to record only + one showing of each unique episode. However, This goal is sometimes + complicated by the fact that the stations may not include a + description for a specific episode but use a generic description for + the series instead. When there is a generic description, the default + behavior is to assume that it may be an episode that you have not seen + and to record it for you. One of the duplicate matching options is + "Record new episodes only". If this is selected, listing that have an + original air date of more than 14 days earlier are considered repeats + and are not eligible to record. Generally, generic episodes will be + marked as repeats also. + + + Because of generic episodes and other situations, MythTV offers an + alternative approach where shows may be recorded by choosing from + multiple showings even when the descriptive information is not + reliable. All of the "Find" record types look for matching titles in + the listings. If there is a showing with specific episode information + and that episode has recorded before, that showing is marked as + previously or currently recorded. The scheduler will then choose to + record the earliest non-conflicting showing from any of other + remaining showings regardless of the descriptive information. + Generally, Find One is most useful for movies or specials and the Find + Daily and Find Weekly rules are best for news or current events shows + that are repeated. However, these may be useful in other situations + where the standard recording rules may not work correctly. + + + 12.2.3. Conflicts + + As you add more shows that you would like to record, the scheduler + will eventually encounter conflicts. If there are two shows at the + same time and you have two or more TV tuner cards, both shows will + record. However, if there are more shows than cards, the scheduler + will have to decide what it thinks it should not record based on the + information you have given. If you see an unexpected situation you are + not "stuck" with the scheduler's choice. You can still tell the + scheduler exactly which shows you do want to record and/or don't want + to record in any situation. + + 12.2.4. Scheduling decisions + + Here are the actual decisions made by the scheduler as it fills in the + schedule. + + + +o Currently recording beats not currently recording -- A recording in + progress can not be moved to another input or time so it "wins" its + current timeslot. + + +o Single, Daily, or Weekly rules with no match are marked Not Listed + -- If these or Overrides do not match the current listings because + the listings have changed, they are added to the schedule and + marked to indicate that they will not record. + + +o Rules that could record beat rules that can not record a showing -- + If two rules match the same showing of a program, a rule marked as + inactive or a showing marked as a repeat, for example, yield to the + other rule. + + +o More specific record type is used in place of less specific -- If + two rules match the same showing of a program, preference is given + to Don't Record then Override, Single, Find One, Record Weekly, + Find Weekly, Record Daily, Find Daily, Channel and finally All. + + +o Higher total priority beats lower total priority -- This is the + core of the scheduling process. Episodes of the highest priority + show are placed on the first available input followed by the next + highest priority show and so on. + + +o Future start time beats past start time -- If there is an episode + in progress and also a later showing of the same episode, it is + better to record the complete episode. If there isn't another + showing, it will start recording immediately to record the + remaining portion. This should only happen if you add a new rule + while the show is in progress or if the master backend is started + after the start time of a scheduled show. + + +o More specific record type beats less specific record type -- If two + shows are on at the same time and have the same total priority but + different types they will be sorted by Single then Find One, Record + Weekly, Find Weekly, Record Daily, Find Daily, Channel and finally + All. This only applies if the priorities are the same. + + +o If both start times have passed, later start time beats earlier + start time -- This attempts to miss the least amount of time. + + +o If neither start time has passed, earlier start time beats later + start time -- This helps assure that the earliest showing of an + episode has the advantage. + + +o Lower input id beats higher input id -- The scheduler fills in open + time slots on the first available input for the video source. The + next input is used when there is another show already placed for + the card of the first input. + + +o Older record rule beats newer record rule -- If two shows are still + equal after all of these other checks, the show whose record rule + was added first is preferred over a more recent addition. + + +o Postpone showings to resolve conflicts -- If Reschedule Higher + Priorities is set or if a conflict has the same priority as a show + that was scheduled at the same time, the scheduler will check to + see if a scheduled show can be moved to another input or later + matching showing without creating a new conflict so that the + conflicting show can be scheduled to record. + 12.2.5. Reschedule Higher Priorities + + Setup->TV Settings->Recording Priorities->General has a checkbox for + "Reschedule Higher Priorities" which tells the scheduler to try to be + a little smarter in certain situations. If this is checked, the + scheduler will look for situations where a show cannot record because + all inputs for the channel are used for higher priority shows. It will + check to see if any of the other shows could be recorded at another + time so that the conflicting show can be recorded in its place. + + Generally, this is a good strategy but there are tradeoffs. If a + higher priority show is postponed, you will not get to watch it until + it is recorded in the later timeslot. There is also a risk that the TV + listings may change and the later showing may go away. In this rare + case the higher priority show may never record. On the other hand, if + you do not use this option you will miss recording some lower priority + shows unnecessarily unless you manually make similar changes. + + By using Reschedule Higher Priorities, the scheduler will do a better + job of recording as many of your shows as possible when left + unattended. It will also be easy to see that shows have been marked to + record at a later time. You can then decide for yourself when you + would prefer to record the first showing by clicking "Record anyway". + + + 12.2.6. Controlling Your Schedule + + The Manage Recordings->Upcoming Recordings page is your control center + for the MythTV scheduler. Unlike other DVR systems, this one page + gives you all of the information and tools you need to see all of your + alternatives and make whatever adjustments you desire. + + The upper half of the screen has a scrollable box listing items that + match your record rules sorted by time. The lower half shows the + details for the highlighted item. There are two 'views' available. + Press "1" to include all of the items that match record rules even if + they do not need to be recorded. Press "2" to focus on just the things + that will record and items that may need your attention. The message + in the upper right-hand corner will remind you when there are + conflicts that would prevent one or more shows from being recorded. + + The items in the list are colored in the record color for things that + will record, white for things that may need attention, gray for those + that do not need to record and yellow when there is a time conflict. + Items at the top of the list may also be highlighted indicating that + the recording is in progress. + + Along with the channels, start times and titles, the right-hand column + has a status code. Numbers indicate which card number has been + assigned to record the show. Letters are used to indicate the reason + that something will not be recorded. Just below the box is a short + status message for the highlighted item that indicates the type of + record rule that was matched, the "total priority" for this showing + and a one or two word explanation of the status code. If you press + SELECT, you will see more information about the status. + + There are a few status codes that may require your attention. "C" + indicates that there are more overlapping shows to record than there + are TV tuners to record them. "L" indicates that the scheduler found + that it may be better to record a later showing of this episode. These + states happen as a result of your choices and should normally reflect + your preferences. However, you may notice situations where you would + like to modify the scheduler's initial choices. + + The first thing you can do is to highlight an item and press INFO to + see the recording options page. From this page you can change the + record rule type, the duplicate matching rules, or raise or lower the + priority to resolve whatever problem you noticed. + + Additionally, you can treat any individual showing as an exception + that you do want to record or don't want to record. To use these + "override" features, highlight the item and press SELECT. You will see + a message explaining the current status and at least an "OK" button to + exit without making changes. + + For items scheduled to record, there will be a button for "Don't + record" which will prevent recording this showing but will still allow + the same episode to record in the future. If there is episode + description information, you may also see a button for "Never record". + This prevents recording this showing and tells MythTV to remember that + this is an episode that you've seen or don't need to see if it is ever + in the TV listings again. + + For items that are not scheduled to record, the message will describe + the reason and in the case of "C" or "L" it will include a list of the + shows that are scheduled to record instead. For any item that could + potentially be recorded there will be buttons for "Edit Options" and + "Add Override". "Edit Options" will allow you to change the options + for the existing record rule such as raising the priority so that the + show will record. These changes would apply to this and all future + showings that match this record rule. "Add Override" will allow you + to set options that apply to the specific showing without affecting + the recurring record rule. + + If you return to an override page after an override has already been + set, you will also see a "Clear Override" to undo your changes. This + option makes it very easy to try out some "what if" attempts when + deciding on your best strategy in a difficult situation. + + For a recording in progress, there will be a "Change Ending Time" + button. This will take you to the options page for a Single or + Override or create an Override if it is a recurring rule. Here you can + go to the Recording Options section to change the program end time + offset. If you extend the end time so that it overlaps upcoming + recordings, the schedule will change to accommodate the new end time. + This may cause a conflict or later showing even for a show with higher + priority. Therefore, it is a good idea to check your schedule after + changing the end time of a recording in progress. + + + 12.3. Storage Options + + 12.3.1. Recording Profile + + Each recording rule can be configured with a different recording + profile. For example, colorful cinematography can be configured with + a "High Quality" profile, while 'talking heads' interviews shows can + be configured with a "Low Quality" profile. These recording profiles + need to be configured before using them (see ``Recording'', above). + + + 12.3.2. Recording Group + + For organization of the "Watch Recordings" screen and the MythWeb + interface, recordings can be assigned into "recording groups". + + + 12.3.3. ``Storage Groups'' + + This allows you to select any special "Storage Groups" you may have + created to determine where recordings from this rule should be stored + on your disks. The "Default" storage group is always available. + 12.3.4. Playback Group + + This selects a set of pre-configured playback parameters which can be + created and edited in Setup->TV Settings->Playback Groups. When the + recording is played, the values from this playback group will be used. + This allows you to choose a default time stretch value, skip and jump + amounts appropriate for this type of television program. + + + 12.3.5. Auto-Expire + + MythTV will "autoexpire" old recordings to make room for new + recordings when disk space gets filled up. This option can be set to + "Don't allow auto expire" to prevent these recordings from being + automatically deleted when disk space fills up. + + + The default setting is for all scheduled recordings to be eligible for + auto-expiration; this can be changed in the Settings->TV + Settings->General page by manipulating the "Auto Expire Default" + checkbox. + + + The default auto-expire policy is "Oldest Show First"; the oldest + recordings are deleted first. The "Lowest Priority First" method + chooses to expire the lowest-priority recordings first. + + + 12.3.6. Episode Limit + + An episode limit can also be configured to limit the maximum number of + episodes recorded of a single series, to restrict that series' disk + usage. If this is set, you can further decide what to do when this + limit is reached; either stop recording that series, or to delete the + oldest episodes in favor of the new ones. + + + 12.4. Post Recording Processing + + 12.4.1. Commercial Flagging + + Select whether or not to automatically flag commercials for these + recordings. Commercial Flagging parameters can be set in Setup->TV + Settings->General. + + + 12.4.2. Transcoding + + Select whether or not to automatically transcode recordings to save + disk space. Before using this, you must first enable auto-transcode in + the recording profile and configure the transcoding parameters; see + ``Recording'', above. + + + 12.4.3. User Jobs + + User Jobs allow you to configure up to 4 custom commands to run on + recordings. They can be configured in mythtv-setup. The following + tokens have special meaning when used in the User Job commands: + + + +o %DIR% - the directory component of the recording's filename + + +o %FILE% - the filename component of the recording's filename + + + +o %TITLE% - the title of the recording (e.g., name of the series) + + +o %SUBTITLE% - the subtitle of the recording (e.g., name of the + episode) + + +o %DESCRIPTION% - description text for the recording (from guide + data) + + +o %HOSTNAME% - the backend making the recording + + +o %CATEGORY% - the category of the recording (from guide data) + + +o %RECGROUP% - the ``recording group'' + + +o %CHANID% - the MythTV channel ID making the recording + + +o %STARTTIME% - the recording start time (YYYYMMDDhhmmss) + + +o %ENDTIME% - the recording end time (YYYYMMDDhhmmss) + + +o %STARTTIMEISO% - the recording start time in ISO 8601 format (YYYY- + MM-DDTHH:MM:SS) + + +o %ENDTIMEISO% - the recording end time in ISO 8601 format + + +o %PROGSTART% - the recording's start time (from guide data; + YYYYMMDDhhmmss) + + +o %PROGEND% - the recording's end time (from guide data) + + +o %PROGSTARTISO%, %PROGENDISO% - the recording's start and end time + in ISO 8601 format. + + + 12.5. Advanced Recording Options + + 12.5.1. Creating Power Search rules with Custom Record + + MythTV's "Custom Record" feature gives you unlimited control for + creating specialized search recording rules to meet your needs. It + allows you to choose your criteria to search for matching shows based + on any of the information in the program listings, channel + information, time functions and more. This goes beyond the + capabilities of any other DVR system and it is unlikely that this + level of scheduling customization will ever be available in any + commercial DVR system. + + + 12.5.2. Getting Started + + Go to Schedule Recordings->Custom Record. This page, helps you build a + database search one clause at a time. Each added clause further limits + which showings will be matched in the TV listings. You can test the + search at any time and when you are done, you can save your search as + a recording rule. + + To familiarize yourself with how you can create custom rules, create a + simple rule to record "Nova" only in primetime. + + The first item at the top of the page allows you to edit an existing + rule or create a new rule. Leave it on "<New rule>". Arrow down to the + third item which says "Match an exact title". Right and left arrows + would allow you to select any of several prefabricated pieces or full + examples but leave it on the default for now. Arrow down to "Add this + example clause" and press SELECT (Enter or Space on a keyboard). The + large text box should now show: + program.title = 'Nova' + + + + As you have probably guessed, this says that we want to search for all + programs with the title "Nova" regardless of the time, day, channel, + etc. + + If you do not receive a PBS station that carries "Nova" or would like + to use another title, edit the title by pressing the down arrow to + highlight the text box and right arrow over the the word "Nova". If + you are using a keyboard you can simply delete the four letters and + type a different title between the quotes. With a remote control, you + can do 'cell phone' style text entry with the number pad. The delete + key is the "X" in the grouping for "1", zero is grouped with "9" and + "0" acts as the "Caps Lock" key. You can press ENTER in the text box + to popup a virtual keyboard. + + Note: the text box honors many familiar Emacs control keys. It is also + possible to cut and paste text into the text box so you can edit with + a favorite editor or insert a rule sent in email or from other + sources. + + In any case, choose a title that is shown both in primetime and late + night or daytime. Next, click the "Test" button. You should see a list + of the upcoming episodes for "Nova" just as if you had clicked the + Upcoming button for "Nova" elsewhere in MythTV. + + Press ESC to go back to the Custom Record page. Move to the example + selector then press the right or left arrows until you find "Only in + primetime". Click "Add this example clause". You should now see: + + + program.title = 'Nova' + AND HOUR(program.starttime) >= 19 + AND HOUR(program.starttime) < 23 + + + + Click "Test". You should now see a shorter list with only the showings + that begin between 7PM and 11PM. To create a rule for this, press ESC + to go back to the custom page and move to "Rule Name:" then type + "Nova" or anything else you would like. This is only a label and will + not affect the search results. Once a name has been entered, the + "Record" button will light up. Click this to enter the recording + options page. If you named it "Nova" the title will say "Nova (Power + Search)". Set whatever options you would like then click "Save these + settings". You now have a special rule to record "Nova" but only when + it is shown in primetime. + + You can make further modifications to this rule by returning to the + Custom Record page then press the right or left arrow keys on "Edit + Rule:" until you find "Nova". You can experiment and test but the + saved rule will not be updated until you click "Record" then "Save + these settings". + + To remove this, or any other rule, you can go to the "Recording + Priorities" page, arrow down to the title, press Enter and change the + the recording type to "Do not record this program" then "Save these + settings". + + + + 12.5.3. How it Works + + MythTV stores TV program information in a database and uses the + Structured Query Language (SQL) to access the data. Information about + each TV program is stored in the 'program' table and information about + each TV station you receive is stored in 'channel'. These two tables + are used in the scheduler queries and their columns are available to + be used in your rules. The rules you create are stored in 'record'. + + Normal rules in MythTV simply match the title in the rule with the + titles in the 'program' table. MythTV also has search rules for + "Titles", "Keywords" and "People". These store the key phrase in the + description column of the rule and includes them in specialized SQL + replacements for the normal title check. There is also a type called + "Power Search" which takes the raw SQL in the description as the + replacement for title matching. + + Custom Record is a tool to help you build valid SQL for Power Search + rules. You do not need to be a SQL expert to use Custom Record + because the examples are known to work correctly and are usually self- + explanatory so you can choose the pieces you need then modify them. + Many powerful solutions to unique problems are possible by combining + the examples. With some creativity and some knowledge of SQL, the + possibilities are limitless. + + + 12.5.4. Common Tricks and Tips + + The example clauses marked "complete example" are actual rules that + have been used to address specific problems. You may find that some of + these are useful for you as-is or with slight modifications. These + show off how powerful custom rules can be but there are also several + simple idioms that you may find useful for many of the shows you would + like to record. + + Wait for a known title -- If there is a movie that you anticipate will + be televised in the coming months but is not yet in the listings, you + can select "Match an exact title", edit the movie title, click + "Record" then choose "Record one showing of this title". The rule will + wait weeks, months or years until this title shows up in your listings + then it will record one showing. These rules have no impact on the + scheduler throughout the day and only take a tiny fraction of a second + when the master backend starts or when the listings are updated. + + Silence series out of season -- "Celebrity Poker Showdown", for + example, will have new episodes for a while then long periods where + reruns are shown dozens of times per week. By checking the previously + shown flag you can create a rule that will only match new episodes. + Therefore, your schedule won't be polluted with dozens of entries + marked as "Repeat" or "Previously Recorded". + + + program.title = "Celebrity Poker Showdown" + AND program.previouslyshown = 0 + + + + This allows you to keep rules for your favorite shows that are dormant + while out of season but will spring back to life when new episodes + appear. + + Choose showings on certain days -- Several cable stations will show + their highest rated shows a dozen on more times per week. However, the + scheduler only needs two or three choices to do a good job of making a + flexible choice. + program.title LIKE "Celebrity Fit Club%" + AND DAYNAME(program.starttime) = "Sunday" + + + + This says to choose any showing of an episode that hasn't been + recorded when it appears on Sunday. This prevents all the other show- + ings during the week from being listed in the schedule. + + Notice the word "LIKE" and the "%" at the end. This does wildcard + matching so that this would match even if the title ended with "2". + "III" or ":Revenge of the Snapple Lady". This can be useful where the + title may change from one season to the next like "Survivor: %", "Big + Brother%" or "The Amazing Race%". + + + 12.5.5. Working with SQL + + As you experiment, it is possible that you may misplace a quote or + mistype a word. If there is a mistake when you press "Test" or + "Record" you will see an error message returned from the database. + This will usually give you a good idea about what needs to be fixed. + However, for more subtle MySQL syntax errors, you can find more + information in the documentation at http://dev.mysql.com/doc/mysql/en/ + <http://dev.mysql.com/doc/mysql/en/>. This contains a lot of + information that can be useful for Power Search rules such as the + "Date and Time Functions". There are many other good resources for SQL + on the Web. + + While the example clauses demonstrate how to use many of the data + columns, you can get a more complete list of all the columns that are + available by using a MySQL client program: + + + $ mysql -u mythtv -pmythtv mythconverg + mysql> describe program; + mysql> describe channel; + + + + This will show the names of all of the columns along with their type + and default value. Most are easy to understand but a few need some + explanation in order to use them effectively with Power Search. + + +o "program.category_type" holds one of these exact four strings: + "movie", "series", "sports" or "tvshow". + + +o "program.airdate" is a string representing the year of release for + movies and may have no meaning for other types of shows. + + +o "program.stars" is a floating point number from 0.0 to 1.0. On a + four star scale, 1.0 would be four stars, 0.75 would be three stars + and so on. + + +o "program.originalairdate" if provided is the date when a show was, + or will be, first televised. This may be useful for finding + episodes before or after a certain date such as finding just the + original series of "Battlestar Galactica". + + +o "program.previouslyshown" is a column created by MythTV to try to + determine if a showing is more than 14 days after its original air + date or if the show was marked as a repeat and did not have a date + for the first airing. If this is "0" it usually means that this is + a brand new show or a rebroadcast within the first two weeks. + +o "program.generic" is a column created by MythTV to try mark + showings for a series where the specific episode information is not + included. When these generic showings appear, it is impossible for + the system to determine if they are repeats of the same episode(s) + or if they are all different episodes. + + +o "program.first" is a column created by MythTV to mark the first + showing in the current listings for each episode, movie or special. + Choosing to match only the "first" showing can be useful for sports + that are brodcast live then repeated. + + +o "program.last" is a column created by MythTV to mark the last + showing in the current listings for each episode, movie or special. + If a showing is marked both "first" and "last" then it is the only + showing of that program in the current TV listings. + + +o "program.programid" is the Tribune Media Service database record + identifier for each program description. In general, these start + with a two letter prefix, MV, EP, SP or SH that correspond to the + "program.category_type". For most, the last four digits are "0000" + except EP where the last four digits are the episode number in the + series. Note that these are generated by TMS and not the show's + producers but they are usually in the same order as the original + air dates for the episodes. + + +o "program.videoprop" also "audioprop" and "subtitletypes". These + columns contain bit flags for a variety of attributes that may be + associated with a program. These are filled with information + offered by the TV listings provider. However, your listings source + will not have information for all of the available flags. + Therefore, some of these may not be useful for your search rules. + This information is organized in "sets" and the MySQL function + FIND_IN_SET() can be used to test for any of these flags. For + example: + + + FIND_IN_SET('SURROUND', program.audioprop) > 0 + + + + would be true for the programs where the surround sound bit is + present. To see all of the available attribute names: + + + $ mysql -u mythtv -pmythtv mythconverg + mysql> SHOW COLUMNS FROM program LIKE '%prop'\G + mysql> SHOW COLUMNS FROM program LIKE 'subtitletypes'\G + + + + Finally, if you are doing something very experimental and a column is + not giving you the results you had anticipated, you can always check + the MythTV source code to see exactly how a column is used. The open + source for MythTV is available from http://www.mythtv.org/ + <http://www.mythtv.org/> . + + + 12.6. Scheduling with more than one Input + + + MythTV is designed to allow recording television programs from one or + more service providers, or video source, on one or more video input + from each provider. Some inputs may not be allowed to record at the + same time as each other while others may record simultaneously. + A television station may be broadcast on more than one channel from + one provider or may be available on channels from two or more + providers. If a TV station is available from more than one source, the + video quality or type of broadcast may differ. Therefore, MythTV + allows you to control how you would like the scheduler to select the + best channel and input for a show which is available on more than one + input or more than one channel. + + + 12.6.1. Mutually Exclusive Inputs + + A single TV capture card may have video connections to more than one + of its inputs and each input may be from a different service. The + card may only be allowed to record from one of these inputs at one + time because there is only one encoder on the card that actually + captures the content. + + + + These are mutually exclusive meaning that only one input or the other + may record at a given time but not both. + + Usually, inputs on different cards can record at the same time but two + or more inputs on the same card cannot. However, there are cases where + inputs on different cards should not be allowed to record at the same + time, for example, a firewire card and s-video analog card connected + to the same set top cable box. + + + + | + | coax +--------------+ firewire ------------------+ + | .-=|Cable Provider|=------------=| Card 1 input 1 | HDTV + | | |HD/Cable STB |=--. +-----|||||||||||| + | | +--------------+ | s-video ------------------+ + | | `---------=| input 2 | Digital + |wall | coax | Card 2 | + |=---=^=------------------------------=| input 3 | Cable + | +-----|||||||||||| + + + + Input 1 and input 2 receive content from the same set top box and the + channels can not be tuned independently. Therefore only one of these + two inputs should be used at any given time. The solution is to create + an "Input Group" with mythtv-setup in "Input connections". Including + these two inputs in the same Input Group will tell the scheduler that + these are mutually exclusive and may not record at the same time. + Inputs 2 and 3 are automatically mutually exclusive because they are + on the same card so there is no need to create an Input Group for + these inputs. + + Cards such as the Hauppauge PVR-500 are able to record as two cards + simultaneously because it has two MPEG-2 encoders and each encoder + appears as a separate device. DVB cards may be allowed to capture + content from more than one channel at a time if the channels are in + the same MUX. + + + + 12.6.2. Stations, Channels and Video Sources + + Although we may be accustomed to thinking of a broadcast station and + its channel number as being synonymous, stations and channels are very + different things. A "station" is in a building with wires and + employees. A "channel" is a carrier frequency or digital ID that + carries a broadcast stream. The same TV station may be broadcast over + different frequencies in different cities or by different providers in + the same city. The same frequency will carry different stations in + different cities. In the digital realm of DVB and ATSC (HDTV), it is + even possible for a single frequency to carry multiple program streams + but each of these streams of content are actually different channels + that the receiving devices can 'tune' to independently. + + + +o Station: building + + +o Channel: frequency + + In MythTV, a "video source" is a set of channels from a provider, or + over the air, that can be received by an input. The set defines the + channels and the broadcasters primarily associated with each of those + channels. If you have more than one device or cable from the same + provider connected to more than one card and input, you only need to + create one video source in mythtv-setup then associate that one source + with each of these connected inputs. This will let your MythTV system + know that the same channels and their TV listings are available to be + recorded from any of these inputs. + + For example. A MythTV system may have two capture cards. Both have a + cable connected to the coaxial connectors. These cables carry the + local cable TV service. In mythtv-setup, the user should create one + "Video source" called "Cable", for example. Under "Input connections", + "Cable" should be associated with each of the two tuner inputs. The + scheduler will then know that any program on one of the channels from + the "Cable" source could be recorded by either card from the card's + tuner input. + + You need to create a different video source for each provider or + service that has a different set of channels. Each input with a + connection to that service should be associated with the video source + for that service so the system will know which set of channels are + available for each of your active inputs. + + Let's say that this user also has one digital cable set top box. The + digital cable service carries channels that are not available over + basic cable. The user would create another source called "Digital". + This set top box is connected to the second card by S-Video so under + "Input connections", "Digital" is associated with the S-Video input of + card 2. The system would then know that programs on channels from the + Digital source can only be recorded from this input. Further, the + scheduler understands that it can only record one show at a time from + card 2 so it can assign Cable or Digital shows to the card but not + both at the same time. + + Some TV stations may be broadcast over a channel from the Cable source + and also broadcast over a channel from the Digital source. Note that + two channels carrying the same primary station may not have the same + TV listings due to carrying the primary station part time, including + local programming exclusive to one of the channels, the channels may + be in different timezones, etc. Listings information must be + associated with each channel even if two or more channels report that + they carry the same station. + + + + 12.6.3. Order of Inputs + + By default the scheduler chooses the first (lowest numbered) input + which has a showing of the scheduled program as it fills the schedule. + If a lower priority show is on at the same time as a higher priority + show that has been assigned to input 1, then input 2 will be used next + and so on. Therefore, configure your best card and input first and + next best card and input second. There may be differences in the type + or brand of capture card, signal quality from the cable, system + resources such as disk space, CPU, etc. By configuring your best input + first, more recordings, and your highest priority recordings, will use + that input. + + A common situation is that a newer and better card is added last. For + example, you may initially setup your system with two analog cable + cards and then add a HDTV card. If NBC is on a cable channel and "The + Apprentice" is shown in HDTV on an NBC HD channel, the scheduler would + still prefer analog inputs 1 and 2 over the new HD input 3. + + So, if you'd like the scheduler to prefer a new source, the simplest + thing is to run mythtv-setup and "Delete all capture cards" then enter + your cards and inputs in your preferred order. This will not remove + your sources and channels - you want to keep those and only renumber + your cards and inputs. In this example, once the changes have been + made and the Master Backend is restarted, the scheduler would then + choose "The Apprentice" in HD on the new input 1 and only use the + analog inputs (now numbered 2 and 3) when the HDTV input was occupied + with another show. + + + 12.6.4. Matching Callsigns + + If a recording rule is a type that can record from any channel, "The + Apprentice" would match for any channel that shows episodes which may + include CNBC or BRAVO. However, for Single, Timeslot, Weekslot or + Channel rules, "The Apprentice" would only match showings on the + selected station as identified by the "callsign". For example, KVBC is + an NBC affiliate on channel 3. Channel 733 is KVBCDT which is HDTV + over cable from the same station. If a Single record rule was set for + "The Apprentice" on KVBC channel 3, it could not record this showing + from KVBCDT on 733. If 733 was chosen when the rule was saved, channel + 3 could not be used to record. + + However, the "Channel Editor" in mythtv-setup can be used to change + the Callsign for channel 733 to "KVBC". MythTV would then understand + that both of these channels are from the same broadcast station. + Assuming the HDTV input was input number "1", "The Apprentice" would + record on 733. If, however, this HDTV input already had a higher + priority show assigned to it in that time slot, "The Apprentice" would + be assigned to KVBC channel 3 on input 2. + + Having two channels with the same callsign may affect how program + information is shown in mythfrontend. If two sources have the same + callsign and channel number, the program guide and program lists will + only show one instance of the channel number and callsign. If the same + callsign is on two different channel numbers, both will be shown and + if two sources have different callsigns with the same channel number, + both of those will be shown. + + Continuing with the example above, the Electronic Program Guide would + include rows for both "3 KVBC" and "733 KVBC". If channel 3 KVBC was + also included in the Digital cable source, the EPG would still include + just one line for "3 KVBC" even though there are two different + channels, Cable and Digital, with this identification. Regardless of + how these are displayed and which "KVBC" channel you select to add a + rule to record "The Apprentice", the scheduler will pick the best + channel, source and input to record "The Apprentice" on "KVBC". + + + 12.6.5. Using Priorities to Prefer an Input + + The fundamental concept to keep in mind is that the MythTV scheduler + will choose the lowest numbered input available when showings have the + same priority. If there are factors that cause two showings of the + same show to have different priorities then the higher priority + showing will be considered before the showings with lower priority. + + + 12.6.6. Input Priority + + "Input Connections" in mythtv-setup includes a box to set "Input + priority" which defaults to "0". If a value is set, that amount will + be added to the "total priority" for showings on that input. This can + be used to influence using favored cards or not using less favored + cards unless necessary. + + Let's say the "The Apprentice" is on at 8:00pm with a priority of 3. + "Who Cares" is -2 and an episode is shown at 8:00pm then repeated at + 11:00pm. The scheduler would assign "The Apprentice" to card 1 and + "Who Cares" to card 2 at 8:00pm. If the input priority for the input + on card 2 was changed to -1, "Who Cares" would have a total priority + of -2 for showings on card 1 and -3 for showings on card 2. The + scheduler would assign "The Apprentice" to card 1 at 8:00pm and "Who + Cares" to card 1 at 11:00pm when the better card is available. If + there was another higher priority show at 11pm, the next best choice + for "Who Cares" would be card 2 at 8pm with the priority -3. + + Card 1 and 2 have input priority "0": + + + + Time Title Priority Card Status + 8:00 The Apprentice +3 1 Will Record + 8:00 Who Cares -2 2 Will Record + 11:00 Who Cares -2 1 Earlier Showing + + + + Card 2 with input priority "-1": + + + + Time Title Priority Card Status + 8:00 The Apprentice +3 1 Will Record + 8:00 Who Cares -3 2 Later Showing + 11:00 Who Cares -2 1 Will Record + + + + Card 2 at "-1" but higher priority shows at both 8 P.M. and 11 P.M.: + + + + Time Title Priority Card Status + 8:00 The Apprentice +3 1 Will Record + 8:00 Who Cares -3 2 Will Record + 11:00 The Daily Show +1 1 Will Record + 11:00 Who Cares -3 2 Earlier Showing + + + + Note the two different effects, each of which may be what you desire + depending on circumstance. If input priorities are equal, shows will + record at the earliest time if any input is available. If input + priorities differ, shows may be postponed to a later time in order to + record on the best input. + + + 12.6.7. Channel Priority + + Priority can be added for individual channels (remember, frequencies + from a video source, not stations). This can be used to tell the + system that you generally prefer the content of the station on a + channel over the formats of other stations. You may want to raise the + priority for ESPN, SciFi, Comedy Central or lower the priority for + CSPAN, CourtTV, etc. If the same station is on two different channels, + you can use channel priority to have the same effect for these + channels as input priority would have for whole inputs. + + For example, say CNN is on analog channel 20 and there is an HD CNN on + 750. You may not want to tie up the HD input for news originating in + standard definition. Under TV Settings->Recording Priorities->Channel + Priorities you could set channel 750 to -1. The scheduler would then + prefer to record CNN shows on any analog channel 20 before considering + using 750 only when there are no analog inputs available. + + + 12.6.8. Preferred Input + + For an even finer grain of control, there is a per rule option to + specify which input should be preferred for showings that match the + rule. By default, this adds +2 to the priority for showings on the + specified input. + + For illustration, let's say there will be a Space Shuttle launch on + CNN that will be broadcast in high definition. Adding a rule to record + the launch with priority "0" should default to channel 20 on input 2. + Channel 750 would have this at -1 due to the channel priority set in + the previous example. If on the recording options page for this rule, + the "Scheduling Options" had the input set to prefer the HD input on + card 1, then the showing on channel 750 for this input would be + increased in value by +2 for a total of +1 and would be the best + choice for this launch coverage. While this one rule would prefer the + HD input with channel 750, all other rules that match shows on CNN + would still prefer channel 20. + + Note that this will not work properly if the preferred input priority + does not out weigh differences in input and channel priorities. The + value of the priority boost when this option is chosen defaults to +2 + but can be modified in TV Settings->Recording Priorities->Set + Recording Priorities. + + + 12.6.9. HDTV Priority + + In the preceeding fictious example, the Space Shuttle launch is + broadcast in high definition and a preferred input is selected to give + preference to the HD input. However, TV listings from zap2it.com + through the DataDirect service may allow this to work without having + to use this per rule option. + + In Settings->Recording Priorities->Set Recording Priorities there is + an option for "HDTV Recording Priority". This value will be added + automatically if the listings for the show have the "hdtv" flag set. + DataDirect will set this flag for shows known to be broadcast in HDTV + on HD channels. However, the flag is not set for standard definition + channels. This is another example of the listings being different for + the same station on a different channel. If the HDTV priority is set + to "+2", the shuttle launch would automatically have a total priority + of +1 so that channel 750 would be preferred over channel 20 for this + HDTV broadcast. + + Channel "750 CNN" at priority "-1" and HDTV broadcast priority at + "+2": + + + + 12.6.10. Custom Priority + + + + New for MythTV 0.21 + + While Input, Channel, and HDTV Priority can be used for indicating a + preference for certain programs and inputs, there may be circumstances + that cannot be resolved easily with these standard features. MythTV + version 0.21 includes a feature for "power priority". The Custom + Priority editor in mythfrontend's "TV Settings" screen is similar to + Custom Record, however, Custom Priority allows you to create + specialized power priority factors to influence scheduling decisions. + + For example, the 'program.closecaptioned' flag can be used in a + similar way as the 'program.hdtv' flag. + + + + Priority Rule Name: Closed Captioned priority + Priority Value: 2 + program.closecaptioned > 0 + + + + This will raise the priority of shows marked with "CC" over those that + are not by applying the "Priority Value" whenever the SQL fragment + evaluates to true. If the expression evaluates to false for a showing, + the "Priority Value" is not applied. + + + + Priority Rule Name: Priority when shown once + Priority Value: 1 + program.first > 0 AND program.last > 0 + + + + The "first" and "last" flags for an episode will only be set for the + same showing when there is only one showing of that episode in the + current TV listings. This rule would raise the priority in these cases + so that these shows would have an advantage to record in their only + available time slot. + + + + Priority Rule Name: Input 1 signal quality + Priority Value: -1 + cardinput.cardinputid = 1 AND + channel.channum IN (3, 5, 39, 66) + + + + A common issue with two or more analog capture cards is that one of + the cards may have more interference on some channels than the same + channels on other cards. This example gives a disadvantage to the + channels in this list but only for the first input. Therefore, a show + on channel 39 would choose input 2 or 3 if possible but for channels + not in this list, input 1 is still the first choice. + + The Custom Priority editor includes many example fragments and + complete examples that can be used or you can create your own to suit + your needs. + + + 13. MythPlugins. + + MythTV has a rich set of plugins available. Once you have downloaded + the tarball, untar it and run the configure script: + + + + $ tar -xjf mythplugins-0.21.tar.bz2 + $ cd mythplugins-0.21 + $ ./configure --help + + Usage: configure [options] + Options: [defaults in brackets after descriptions] + NB: all --enable-* options can be reversed with --disable-* + + Generic options: + --help print this message + --enable-all Enable all options + --enable-opengl enable OpenGL (Music and Gallery) [default=no] + + MythBrowser related options: + --enable-mythbrowser build the mythbrowser plugin [default=yes] + + MythDVD related options: + --enable-mythdvd build the mythdvd plugin [default=yes] + --enable-transcode enable DVD ripping and transcoding [default=no] + --enable-vcd enable VCD playing [default=no] + + MythGallery related options: + --enable-mythgallery build the mythgallery plugin [default=yes] + --enable-exif enable reading of EXIF headers [default=no] + + MythGame related options: + --enable-mythgame build the mythgame plugin [default=yes] + + MythMusic related options: + --enable-mythmusic build the mythmusic plugin [default=yes] + --enable-fftw enable fftw visualizers [default=no] + --enable-sdl use SDL for the synaesthesia output [default=no] + --enable-aac enable AAC/MP4 audio file decompression [default=no] + + MythNews related options: + --enable-mythnews build the mythnews plugin [default=yes] + + MythPhone related options: + --enable-mythphone build the mythphone plugin [default=yes] + --enable-festival enable festival TTS Engine [default=no] + + MythVideo related options: + --enable-mythvideo build the mythvideo plugin [default=yes] + + MythWeather related options: + --enable-mythweather build the mythweather plugin [default=yes] + + + + The sections detailing configuration of the plugins assume that you + are already in the ~/mythplugins-0.21/ directory. + + Note that a single configure script now does configuration for all + modules. By default, it will compile all modules. If you do not wish + to compile a module, either because it is of no use to you, or you do + not have the prerequisites, the simplest course of action is to go + through the various sections below, satisfying the prerequisites, and + then compile all modules at once. + + For example, you would only like to compile and install MythGallery + and MythMusic. For MythGallery, you would like to use the EXIF data + in the .JPG file to present additional information onscreen. For + MythMusic, you would like to enable support for the opengl and FFT + visualizations. The command line would look like: + + $ cd ~/mythplugins-0.21 + $ ./configure --disable-all --enable-opengl --enable-mythgallery --enable-exif --enable-mythmusic --enable-fft + $ qmake mythplugins.pro + $ make + $ su - + # make install + # exit + $ + + + + For simplicity, the examples below will disable compilation of all + other modules other than the one being discussed. + + + 14. MythWeb. + + MythWeb allows you to use a web page to control various aspects of + your MythTV system. MythWeb is a separate application, but it's + dependent on MythTV being installed and operational. + + + 14.1. Installation and prerequisites + + Mythweb is a part of the mythplugins package. See ``MythPlugins'' for + instructions on downloading the tarball. The next step depends on + whether your distribution has a web server and if you have PHP + support. + + + 14.1.1. Mandriva + + Mandriva has apache and PHP pre-packaged, so installation is quite + simple. + + + + NOTE: Mandriva 9.1 users, perform the following: + + + # urpmi apache2 apache2-mod_php php-mysql + # chkconfig --level 345 httpd on + # /etc/rc.d/init.d/httpd restart + + + + 14.2. Completing the installation + + + + $ cd ~/mythplugins-0.21/mythweb + $ su + # mkdir /var/www/html/mythweb + # cp -r . /var/www/html/mythweb + # exit + $ + + + + By default, MythWeb uses an Apache .htaccess file to restrict access + to the website and to configure some variables. + + To create the password file for Apache (if your system doesn't already + have one), you could do something like this: + + + # cd /var/www + # htpasswd -c htpasswd mythtv + New password: + Re-type new password: + Adding password for user mythtv + + + + See the man page for htpasswd for more examples. + + To access the web page, open a web browser and use http://[name or ip + address]/mythweb/ + + + + NOTE: Make sure that you have a trailing slash on the URL, + otherwise you will get a 404 Page not Found error. + + 14.3. Resetting the key binding table + + MythWeb allows you to configure which keys are bound to which actions + within MythTV. If you'd like to reset this back to the default, + execute the following command: + + + $ echo "delete from keybindings ;" | mysql -u mythtv -pmythtv mythconverg + + + + 14.4. Resetting the theme. + + If you find yourself wedged into a theme that isn't working, open your + web browser and go to site: + http://mythweb_name_or_ip_address/mythweb/settings.php?RESET_THEME=yes + + 15. MythGallery. + + MythGallery is a photo and slideshow application. MythGallery is a + separate application, but it's dependent on MythTV being installed and + operational. + + 15.1. Installation and prerequisites + + MythGallery is a part of the mythplugins package. See ``MythPlugins'' + for instructions on downloading the tarball. + + There are a number of transitions available, some requiring OpenGL + support. You will also need to install a TIFF library. Under + Mandriva, you would perform the following command: + + + # urpmi libtiff3-devel + + + Once you have satisfied the prerequisites for your distribution, + install the application: + + + $ cd ~/mythplugins-0.21 + $ ./configure --disable-all --enable-opengl --enable-mythgallery + $ qmake mythplugins.pro + $ make + # su + # make install + # exit + $ + + + + The configuration for MythGallery is accessed through the main Setup + option in mythfrontend. Make sure you set your pictures directory to + wherever you're storing your photos. + + The controls for MythGallery can be found in the README that comes + with the application. + + 15.2. Using MythGallery + + When you first start MythGallery, you will see a thumbnail view of any + folders and pictures in the Gallery Directory you specified in setup. + If this is the first time you have accessed this directory, the + thumbnails will be generated on the fly. If the Gallery Dir is + writable, these thumbnails will be cached thus speeding up future + access. On the left is a greyed-out menu of options. + + Use the arrow keys to select a folder or picture to open/view with the + Select key, or use the Menu key to toggle access the menu on the left. + The menu options are as follows: + + +o Slideshow - Will cycle through all the pictures in the current + folder. The currently selected item must be a picture (not a + folder) for this to work. It does not currently traverse + subfolders. + + +o Rotate CW - Rotate the current image 90 degrees in the clockwise + direction. This change persists if the current directory is + writable. + + +o Rotate CCW - As above except the direction of rotation is + counter(anti) clockwise. + + +o Import - Import pictures into your Gallery Dir. This option is + described in the next section. + + +o Settings - Access the MythGallery settings screen. + + 15.3. Importing Pictures + + The import path in the setup dialog is a colon separated list of + directories and/or executable files. When the import key is pressed, + a new directory (the destination directory) under the current + directory will be created and the import path will be searched. If + the item in the import path is a directory (the source directory), the + contents of that directory will be copied to the destination + directory. If you would like the source directory to be that of a + removable device, it might be a good idea to use autofs. See the + automount howto at www.linuxdoc.org <www.linuxdoc.org> for info on how + to get it working. + + If the item in the import path is an executable file, MythGallery will + attempt to execute it with the destination directory as its sole + argument. Be careful when using executable scripts that the script + runs unattended (doesn't need user intervention) and returns properly, + otherwise it could create the appearance of MythGallery hanging (e.g. + running smbclient and prompting for password). Also be sure that + scripts have executable permissions set. + + Here is an example script that a user may want to run on import: + + + #!/bin/csh + + if ($#argv == 0) then + echo "Usage: $0 dest_dir" + exit + endif + + cd $argv[1] + + # get stuff over the network + wget http://www.somesite.dom/dir/file1.jpg + wget http://www.somesite.dom/dir/file2.jpg + wget http://www.somesite.dom/dir/file3.jpg + + # stuff that requires manual module loading and/or fs mounting + modprobe camera_module + mount /dev/camera /mnt/camera + cp /mnt/camera/* $argv[1] + umount /mnt/camera + rmmod camera_module + + # perform some processing + foreach pname (`ls *.jpg`) + jpegtran -flip vertical $pname > $pname.new + mv $pname.new $pname + end + + + + 16. MythGame. + + MythGame can used as a frontend to start any emulator that your host + OS runs. This is an example of how to set up xmame on Linux. + http://www.mameworld.net/ <http://www.mameworld.net/> is an excellent + resource for all things mame. + + Installation overview: + + 1. Setup directory structure + + 2. Download and install xmame + + 3. Download and place extra files (artwork/catver.ini/etc..) + + 4. Download and install MythGame plugin + + 5. Setup xmame in MythGame + + 6. Hints + + + + 16.1. Setup Directory Structure + + To keep things organized, create the following directories for xmame + to use in /usr/local/share/xmame: hiscore, roms, and snaps. + + + + $ mkdir -p /usr/local/share/xmame/{highscore,roms,snaps} + + + + 16.2. Download and Install xmame + + NOTE: There may be pre-packaged versions of xmame available for your + distribution. Check http://x.mame.net/download.html + <http://x.mame.net/download.html> for the latest version. + + Download the source to xmame from + http://x.mame.net/download/xmame-0.103.tar.bz2 + <http://x.mame.net/download/xmame-0.103.tar.bz2> + + + + $ wget http://x.mame.net/download/xmame-0.103.tar.bz2 + $ tar -xjf xmame-0.103.tar.bz2 + $ cd xmame-0.103 + + + + Edit the Makefile with your favorite editor. Adjust the options as + required for your system. + + + $ joe Makefile + + + + Then make and install xmame + + + $ make + $ su + (enter password) + # make install + # exit + + + + After mame has been installed, we need to create some defaults. + + + $ mkdir ~/.xmame + $ cp docs/xmamerc.dist ~/.xmame/xmamerc + + + + Because some ROMS work better with different display toolkits, or + possibly even older versions of xmame, it's convenient to keep all of + your xmame binaries and to rename them to include the version number. + MythGame allows you to match individual roms to preferred binaries. + $ su + (enter password) + # mv /usr/local/bin/xmame.x11 /usr/local/bin/xmame-0.103.x11 + # exit + + + + NOTE: Depending on how you compiled xmame, you may have xmame.X11, + xmame.SDL or xmame.xgl based on what display toolkit you used. Also, + you may need to remove and recreate xmamerc after upgrading since some + of the default options may have changed. + + Edit ~/.xmame/xmamerc to include your paths. + + + ### Fileio Related ### + rompath /usr/local/share/xmame/roms + snapshot_directory /usr/local/share/xmame/snaps + cheat_file /usr/local/share/xmame/cheat.dat + hiscore_file /usr/local/share/xmame/hiscore.dat + hiscore_directory /usr/local/share/xmame/hiscore + history_file /usr/local/share/xmame/history.dat + mameinfo_file /usr/local/share/xmame/mameinfo.dat + + + + Confirm that xmame works before running it inside MythTV. Place your + ROM in the /usr/local/share/xmame/roms directory you created earlier. + + NOTE: There are three public domain ROM sets available at + http://www.mame.net/downmisc.html <http://www.mame.net/downmisc.html> + + Launch xmame with your game of choice. In this example, we are using + Gauntlet. + + + $ xmame gauntlet + + + + Some basic mame keyboard commands: + + + 5 = Insert coin + 1 = Player 1 start + arrow keys = movement + left control = button 1 + left alt = button 2 + SPACE = button 3 + ESC = exit + TAB - menu + ~ to adjust Volume + < and > + + + + 16.3. Download extra files + + The following files allow you to add extra functionality. Place them + into /usr/local/share/xmame + + - catver.ini is a catalog of categories and versions of popular mame + ROMs. + + Useful for keeping large libraries of ROMs organized. + + It may be downloaded from http://www.catver.com + <http://www.catver.com> or http://www.mameworld.net/catlist + <http://www.mameworld.net/catlist> + + - Screenshots aka "snaps" + + These may be downloaded from http://www.classicgaming.com/mame32qa/ + <http://www.classicgaming.com/mame32qa/> + + Screenshots are displayed when you are browsing your ROMS in mythgame. + Unzip and place them in /usr/local/share/xmame/snaps + + - history.dat + + Download from http://www.arcade-history.com/ <http://www.arcade- + history.com/> This file fills in a bit of background about each ROM. + + - hiscore.dat + + Download from http://www.mameworld.net/highscore/ + <http://www.mameworld.net/highscore/> + + - Cheats + + Download from http://cheat.retrogames.com/ + <http://cheat.retrogames.com/> + + + 16.4. Download and Install MythGame. + + MythGame is part of the mythplugins package. See the instructions in + the ``Downloading and Compiling'' section to obtain mythplugins. + + Switch to the mythplugins directory: + + + $ cd ~/mythplugins-0.21 + + + + Compile and install mythgame: + + + $ ./configure --disable-all --enable-mythgame + $ qmake mythplugins.pro + $ make + $ su + (enter password) + # make install + # exit + + + + 16.5. Setup xmame in MythGame + + Start mythfrontend and navigate to Utilities/Setup > Setup > Media + Settings > Game Settings > Game Players. Select (New Game Player). + + To set up a new player for xmame enter the following: + + + + Player Name: xmame-0.103.x11 (Name by which you want your emulator or game called) + Type: xmame (This is used for display purposes only and does not affect the function of your system) + Command: xmame-0.103.x11 -vidmod 1 -fullscreen (Path and name of binary + any optional parameters) + Rom Path: /usr/local/share/xmame/roms (This tells MythGame what directories to scan for roms to be used with this emulator) + ScreenShots: /usr/local/share/xmame/snaps (This tells MythGame what directories to scan for snapshots to be used with these roms) + Working Directory: (Directory to change to before launching game or emulator. Blank in our case ignores this setting) + File Extensions: (List of all file extension to be used for this emulator. Blank menas any file under the Rom Path) + [] Allow games to span multiple roms/disks (will treat game.1.rom game.2.rom game.3.rom as one game) + + + + 16.6. Hints: + + + +o Rom name before options: %s can be used as a standin for rom names + on the command line. + + +o Multiple disk/rom games: %d1 %d2 etc can be used as standins for + multiple disc games on the command line. + + +o Associating a rom with an emulator: Browse to the desired rom and + press 'M' to enter the settings page for that rom. + + +o Assign a Game Favorite Status: Browse to the desired game and press + "/". + + + 17. MythMusic. + + MythMusic has a number of prerequisites that must be satisfied before + it is operational. Depending on your distribution, some of these + prerequisites can be satisfied through the various package managers. + If your distribution doesn't offer pre-compiled versions of the + software below, then follow the generic instructions for manually + compiling and installing the software. + + The prerequisites for MythMusic are: + + +o MAD + + +o taglib + + +o libogg and libvorbis + + +o FLAC + + +o libcdaudio + + +o CDParanoia + + + 17.1. Manual installation of prerequisites + + These instructions are for distributions which don't have pre-compiled + versions of the software necessary to run MythTV. + + Download MAD from http://www.underbit.com/products/mad + <http://www.underbit.com/products/mad> and install: + + + $ tar -xzf mad-0.15.1b.tar.gz + $ cd mad-0.15.1b + $ ./configure + $ make + $ su + # make install + # exit + + + + Download TagLib from http://developer.kde.org/~wheeler/taglib.html + <http://developer.kde.org/~wheeler/taglib.html> and install: + + + + $ tar -xzf taglib-1.4.tar.gz + $ cd taglib-1.4 + $ ./configure + $ make + $ su + # make install + # exit + + + + Download libogg and libvorbis from http://www.xiph.org/downloads + <http://www.xiph.org/downloads> and install in a similar manner to the + above packages. + + Download FLAC from http://flac.sourceforge.net + <http://flac.sourceforge.net> and install: + + + $ tar -xzf flac-1.1.2.tar.gz + $ cd flac-1.1.2 + $ ./configure + $ make + $ su + # make install + # exit + $ + + + + Download libcdaudio from http://libcdaudio.sourceforge.net + <http://sourceforge.net/project/showfiles.php?group_id=27134> and + install: + + + $ tar -xzf libcdaudio-0.99.12p2.tar.gz + $ cd libcdaudio-0.99.12p2 + $ ./configure + $ make + $ su + # make install + # exit + $ + + + + Download cdparanoia from http://www.xiph.org/paranoia/down.html + <http://www.xiph.org/paranoia/download/cdparanoia-III- + alpha9.8.src.tgz>. + + + $ tar -xzf cdparanoia-III-alpha9.8.src.tgz + $ cd cdparanoia-III-alpha9.8 + $ ./configure + $ make + $ su + # make install + # cd /usr/lib + # ln -sf libcdda_interface.so.0.9.8 libcdda_interface.so + # ln -sf libcdda_paranoia.so.0.9.8 libcdda_paranoia.so + # exit + $ + + + + 17.2. Mandriva + + Mandriva has a number of the prerequisites available on the + installation CD. Some of the software you're going to need will have + to be obtained from the "contrib" or "cooker" development + repositories. Applications downloaded from "cooker" come from the + development branch, so there may be issues with some software. It + isn't recommended that you mix cooker and release-level software. + + + urpmi is the simplest tool for installation of packages from the + command line. The difficult part is the configuration, but this has + been made easier at the following website: + http://addmedia.linuxfornewbies.org/ + <http://addmedia.linuxfornewbies.org/> The website will allow you to + choose a mirror site and then present the command-line configuration + text for that mirror. You will most likely need to add a "Contrib" + mirror to your setup. Once you have done that, you can proceed. If + urpmi prompts you about other modules that need to be installed to + satisfy dependencies, say "Yes". + + + + # urpmi libmad0 libmad0-devel libflac4 libflac4-devel libcdaudio1 cdparanoia + # urpmi libcdda0 libcdda0-devel libvorbis0 libvorbis0-devel + # urpmi libcdaudio1-devel libid3tag0 libid3tag0-devel + + + + 17.2.1. Additional options with MythMusic + + Additional visualizations have been added to MythMusic. If you wish + to use these, there are some prerequisites you must install prior to + compiling. + + + +o fftw + + +o OpenGL + + +o SDL + + fftw may be obtained from http://www.fftw.org/ <http://www.fftw.org/>. + In Mandriva it may be installed by typing: + + # urpmi libfftw2 libfftw2-devel + + + + OpenGL should be installed on practically all distributions. However, + you will need the devel module. In Mandriva it may be installed by + typing: + + + # urpmi libMesaGLU1-devel + + + + SDL may be obtained from http://www.libsdl.org + <http://www.libsdl.org>. In Mandriva it may be installed by typing: + + + # urpmi libSDL1.2 libSDL1.2-devel + + + + 17.3. Red Hat Linux 9 + + Red Hat provides packages for several of the prerequisites, making + installation very simple. Of the prerequisites, Red Hat provides + packages for Vorbis, cdparanoia, SDL, and OpenGL (which you probably + already have installed). To install these all at once, simply type + (all on the same line): + + + $ up2date --solvedeps libvorbis libvorbis-devel vorbis-tools cdparanoia-devel cdparanoia-libs cdparanoia SDL-devel SDL + + + + If you get the following message: "None of the packages you requested + were found, or they are already updated" it probably means you already + have all of those packages installed. + + You must install the remaining packages, (MAD, FLAC, libcdaudio and + optionally fftw) manually following the installation directions above. + When installing fftw do not use the rpm package offered on the website + because it will cause an error, so use the source package instead. + + + + NOTE: you can use the instructions given at the ``automated + installation section'' to install all of MythMusic in one + step. + + 17.4. Compiling MythMusic + + Once all the prerequisites have been installed, you can proceed with + compiling MythMusic. + + + + $ cd ~/mythplugins-0.21 + $ ./configure --disable-all --enable-mythmusic --enable-fftw --enable-sdl --enable-aac + $ qmake mythplugins.pro + $ make + $ su + # make install + # exit + + + + 17.5. Configuring MythMusic + + Configuration of MythMusic occurs in two places. The main + mythfrontend Setup is for global MythMusic configuration. Go to the + Setup/MythMusic/General Setup screen and adjust it for your particular + configuration. + + The second configuration screen is within the MythMusic program and + will allow you rescan your music library, etc. + + Here's some explanation about the Ignore_ID3 and The + NonID3FileNameFormat: + + If Ignore_ID3 is set to TRUE, MythMusic will try to determine the + Genre, Artist, Album, Track Number, and Title from the filename of the + mp3 file. The NonID3FileNameFormat variable should be set to the + directory/file format where the mp3 files are stored. For instance, I + store mine in the above shown Genre/Artist/Album/Track format. + MythMusic will then use this information to fill in the proper fields + when it populates the musicmetadata table rather than searching for an + ID3 tag in the mp3 file. + + The files can be laid out in any format, such as: + + Genre/Artist/Album/Title Artist/Genre/Album/Title Artist/Album/Title + (with Genre left as Unknown) + + The track number is optional but can be specified with the title by + using the TRACK_TITLE keyword instead of TITLE. If TRACK_TITLE is + used, then the filename can have a space, hyphen, or underscore + separating the track number from the track title. Keywords are case + insensitive, so if you specify GENRE it's the same as Genre in the + format field. + + The Ignore_ID3 option does not disable the code that determines the + track length, just the portion that tries to read ID3 info. + + + 17.6. Using MythMusic + + MythMusic is fairly simple to use. It is recommended that you insert + the CD before selecting "Import CD". You should also ensure that your + system doesn't try to automount the CD and begin playing it + automatically. + + Here's some information on playlist management: + + Q: How do I create a new playlist? A: Using the MythMusic "Select + Music" menu option, setup the playlist as you normally would by adding + songs or other playlists as needed. When you are ready to save the + new playlist, highlight "Active Play Queue" at the bottom of the + selection tree and hit the "i" key. This will pop up a menu allowing + you to name and save the new playlist. You can also hit Enter to + bring up the popup on the Active Play Queue. This does not work on the + playlists above, as Enter is obviously bound to checking/unchecking + the boxes. Any number (i.e. keypad on remote) will also bring up the + menu in both cases. + + Q: How do I enter the playlist name in the text field without a + keyboard? A: Use the keypad number keys (bound to your remote) to + select letters quasi-cell phone style. Keys 2-9 work pretty much like + any cell phone text entry. 1 cycles through a few special characters, + delete, and space. 0 is like a CAPS LOCK. Hard to describe, fairly + easy to use. You will soon be able to specify the cycle timing in a + Setup screen. You can type fairly quickly through a combination of + jumping around the number keys AND hitting a non-number key (right + arrow is particularly good for this) to force the current character. + + Q: How do I edit a playlist? A: Highlight the playlist in the + selection tree and hit the "i" key then select "Move to Active Play + Queue" in the popup. You can now modify the "Active Play Queue" like + normal, adding songs and playlists by selecting them from the song + tree. When you are done, highlight the "Active Play Queue" in the + selection tree and hit the "i" key then select "Save Back to Playlist + Tree". And whatever you were editing as your Active Queue before you + moved an existing playlist "on top" of Active reappears. Think of + Active has having a push on, pop off capability, but with a depth of + only 1. + + Q: How do I delete an item from a playlist? A: Highlight the item in + the selection tree and hit the "d" key. + + Q: How do I rearrange the songs in my playlist? A: Highlight a song + and hit the "space" bar, the song will now have pair of red arrows in + front of it. Use the up and down arrow keys to move it around in the + playlist. When you have it where you want it, hit the "space" bar + again. + + Q: How do I delete a playlist? A: Highlight the playlist in the + selection tree and hit the "i" key then select "Delete this Playlist" + from the popup. + + + 17.7. Troubleshooting MythMusic + + You may run into errors when running MythMusic. + + 17.7.1. When I run MythMusic and try and look up a CD, I get an error + message + + The full text of the message will say: + + databasebox.o: Couldn't find your CD. It may not be in the freedb + database. More likely, however, is that you need to delete /.cddb + and /.cdserverrc and restart mythmusic. Have a nice day. + + If you get this message, you should go to the home directory of + whatever user MythMusic is running as and type: + + + rm .cdserverrc + rm -rf .cddb/ + + + + These files aren't automatically deleted because of a conscious design + decision by the author that programs that automatically delete things + are bad. + + The files are used to locally cache CD lookups. If you are re- + inserting CDs, your machine will not actually have to go out to the + Internet to determine what is on them. However, the URL used to + access the freedb database has recently changed, so the stale + information in the files from previous runs of MythMusic would cause + the error above. Once the files have been deleted the stale + information will be gone and your local database will be rebuilt as + you use CDs. + + + 18. MythWeather. + + MythWeather is a part of the mythplugins package. See ``MythPlugins'' + for instructions on downloading the tarball. + + + + $ cd ~/mythplugins-0.21 + $ ./configure --disable-all --enable-mythweather + $ qmake mythplugins.pro + $ make + $ su + # make install + # exit + + + + MythWeather uses MSNBC.com as its source for weather data and + weather.com for its radar image. + + These are the keyboard commands for MythWeather: + + + Left Key Goes back one page, and extends the time spent + on the page you are on. + Right Key Goes forward one page, see above. + Space Pause, wait on the current page until space is hit + again. + Numeric Keys You can check other weather by keying in other ZIP codes. + Enter Key Switch between Celsius and Fahrenheit. Can also + be used a way to force a data update. + "m" Key Resets the location to the database default, then updates the data. + "i" Enter / Save settings + ESC Exit the settings screen without saving / Exit the program + + + + MythWeather also has an "Aggressiveness" setting. This affects how + long MythWeather waits for data from the msnbc.com website before + timing out. If you are on a slow connection, or have a slow DNS, or + MythWeather just doesn't seem to be working and you've already tried + everything else, then try increasing the aggressiveness level + parameter. This parameter is inverse; a higher number actually means + that MythWeather will be less aggressive, and will therefore wait + longer before timing out. + + MythWeather will print debugging information on the terminal. If you + wish to see additional debugging information while MythWeather is + running, run mythweather from the command line with as mythweather + --debug + + You may also force mythweather to re-run the configuration by starting + it on the command line as mythweather --configure. These two options + are mutually exclusive. + 19. MythVideo. + + MythVideo is a part of the mythplugins package. See ``MythPlugins'' + for instructions on downloading the tarball. + + MythVideo will allow you to use an external program to watch media + files that are not directly supported by MythTV. + + + + $ cd ~/mythplugins-0.21 + $ ./configure --disable-all --enable-mythvideo + $ qmake mythplugins.pro + $ make + $ su + # make install + # exit + + + + See MythVideo's README file for additional information. + + + 20. MythDVD. + + MythDVD is a part of the mythplugins package. See ``MythPlugins'' for + instructions on downloading the tarball. MythDVD is an application + which rips DVDs and makes them available for use with MythVideo. You + may also transcode the DVD content from MPEG-2 to other formats which + should greatly reduce the amount of space the DVD material takes up on + your hard drive. + + MythDVD has a number of prerequisites to enable transcoding + functionality. If you only wish to play DVDs rather than convert them + to something like MPEG-4 or xvid you may skip the prerequisite + installation step. + + + 20.1. Manual Compilation of Prerequisites + + + 20.2. Pre-compiled binaries + + Mandriva users may install the prerequisites this way: + + + # urpmi libdvdread3 libdvdread3-devel a52dec liba52dec-devel + # urpmi mplayer ogle xine + + + + Assuming that you've added a PLF mirror, you may also load the rest of + the prerequisites using the following command: + + + # urpmi xvid xvid-devel fame libfame0.9-devel transcode libdvdcss + + + + In the example below, we have enabled support for transcoding and for + VCD playing. You may remove these options if you don't need them. + + + $ cd ~/mythplugins-0.20 + $ ./configure --disable-all --enable-mythdvd --enable-transcode --enable-vcd + $ qmake mythplugins.pro + $ make + $ su + # make install + + + + 20.3. Running the Myth Transcoding Daemon + + Transcoding ("ripping") a DVD requires you to run the Myth Transcoding + Daemon (mtd). To ensure that mtd is configured correctly, you should + first test it at the command line. + + + $ mtd -n + + + + The last line of text should show something like: + + + mtd is listening on port 2342 + + + + This indicates that mtd is ready for use. Once you've successfully + tested mtd in the foreground, type CTRL-C to stop mtd. You may then + start it as a background (daemon) process. + + + $ mtd -d + + + + Running mtd as a daemon will allow you to automatically start it + during the boot process. For example, you may add mtd -d to your + rc.local file, or you can adjust the script/steps outlined in the + section called ``Automatically starting mythbackend at system boot + time'' to start mtd instead of mythbackend. + + + 21. MythNews. + + MythNews is a part of the mythplugins package. See ``MythPlugins'' + for instructions on downloading the tarball. MythNews is a RSS + reader. + + + $ cd ~/mythplugins-0.21 + $ ./configure --disable-all --enable-mythnews + $ qmake mythplugins.pro + $ make + $ su + # make install + + + + 22. Troubleshooting. + + 22.1. Compiling + + 22.1.1. Compile errors + + Some compile errors are worse than others. If you get an error that + doesn't abort the compilation, and says something like: + + + cc1plus: warning: changing search order for system directory + "/usr/local/include" + cc1plus: warning: as it has already been specified as a non-system + directory + + + + then it shouldn't be a problem. + + If you get an error like /usr/bin/ld: cannot find -lXext, the compiler + is telling you that you don't have XFree86-devel installed, or that + your distribution hasn't set it up correctly. This needs to be fixed + before MythTV will compile. + + + 22.1.2. make: *** No rule to make target + /usr/lib/qt3/mkspecs/default/qmake.conf', needed by Makefile'. Stop. + + This error happens when there's a missing link in the + /usr/lib/qt3/mkspecs directory. There are two ways to fix this error: + + 1. Create the link manually: + + + $ su + # cd /usr/lib/qt3/mkspecs + # ln -sf linux-g++ default + + + + and then restart the compile, + + or + + 2. Run qmake mythtv.pro in the mythtv directory. Rerunning qmake + will create a new Makefile for you, however this still doesn't fix the + root cause of the issue, which is that your distribution didn't create + the symlink for you when the qt3 package was installed. The first + choice is the better solution. + + + 22.1.3. make: *** No rule to make target + /mkspecs/default/qmake.conf', needed by Makefile'. Stop. + + You didn't set your QTDIR. Re-read the section on ``Setting up + paths''. + + + 22.1.4. Internal Segmentation Fault. + + This is most likely to be caused by an overheating processor rather + than an actual programming fault within gcc. + + + 22.2. Debugging + + 22.2.1. MythTV segfaults + + 22.2.2. MythTV isn't doing anything + + 22.2.3. Debugging with GDB + + Without details, the developers will not be able to determine if you + have discovered a genuine code-bug, or if the problem is with your + system. In order to determine what's going on, you must recompile + MythTV with debugging support and run MythTV within gdb, the GNU + debugger. Note that, on OS X, some data is provided without going + through these steps. See + /Library/Logs/CrashReporter/MythFrontend.crash.log + + Re-run the configure script and add --compile-type=debug to any + previous configuration options you may have used. Check the + config.log file if you have forgotten. + + Now, you need to clear out the old versions of the software to ensure + that you're running with the debugging code, then compile and install. + + + $ make distclean + $ ./configure --compile-type=debug + $ make + $ su + # make install + # exit + + + + At this point, you now have debug-enabled software ready. To make + sure that you don't forget to type a command required for debugging, + it's best to setup a gdbcommands file. This will be read by gdb when + it's started. Put the following into gdbcommands in your home + directory: + + + + handle SIGPIPE nostop noprint + handle SIG33 nostop noprint + set logging on + set pagination off + set args -l myth.log -v record,channel,siparser + run + thread apply all bt full + set logging off + + + + Let's assume that the problem you're having is in mythbackend. + + + + $ gdb mythbackend -x gdbcommands + GNU gdb 6.3-debian + Copyright 2004 Free Software Foundation, Inc. + GDB is free software, covered by the GNU General Public License, and you are + welcome to change it and/or distribute copies of it under certain conditions. + Type "show copying" to see the conditions. + There is absolutely no warranty for GDB. Type "show warranty" for details. + This GDB was configured as "i386-linux".Using host libthread_db library "/lib/tls/libthread_db.so.1". + [Thread debugging using libthread_db enabled] + + + + gdb will automatically read the commands that you've placed in the + gdbcommands file and begin running the program you specified on the + command line. + + If the program appears to be locked up, press CTRL-C to create the + backtrace file. + + All of the output from gdb.txt should be posted to the mythtv-dev + mailing list, along with the steps you followed to get the program to + crash. + + NOTE: If you're trimming the gdb.txt file to remove extraneous + information from the beginning of the file, make sure you include at + least 10 lines prior to the point where the backtrace actually begins. + This ensures that there is some context to the backtrace, and so that + it's possible to see what exactly caused the segfault. + + gdb has a number of options, read the man page for more information. + + Using the gdbcommands file in conjunction with a while loop will + ensure that gdb creates a trace file and then restarts: + + + + $ while true; do date >> gdb.txt; gdb mythbackend -x gdbcommands; done; + + + + NOTE: To exit this loop you will need to kill the while loop. + + If you're trying to troubleshoot and you can't get back to the gdb + window for some reason, it may be easier to use two systems or to + start mythfrontend from the text console. + + If you're going to troubleshoot from a remote system, connect to the + machine that you're going to test using ssh or telnet. Next, type $ + export DISPLAY=localhost:0.0. This will allow the graphics to be + displayed on the X console (usually ALT-F6 or ALT-F7) and still give + you output and control of mythfrontend, either from the ssh session, + or by switching back to the text console by pressing CTRL-ALT-F1. You + can now continue troubleshooting using gdb as detailed in the + instructions. + + + 22.2.4. MythTV is crashing your system + + When run as a non-privileged user, MythTV can not crash your system. + If your system is crashing when you run MythTV, then you have some + issue with the drivers for your capture card or other hardware, or the + CPU fan has fallen off/broken and your system is overheating when + asked to perform a CPU intensive task like encoding video. + + If you are running as root, which is strongly discouraged, it is + possible that your system may crash due to the real-time thread using + all available CPU. You will not be able to interrupt the process, so + for all intents and purposes your computer will have crashed. + + + 22.3. Installing + + 22.3.1. When trying to run mythtv-setup, you get an error like this: + "mythtv-setup: error while loading shared libraries:" + + You didn't add /usr/local/lib to /etc/ld.so.conf. See the section on + modifying ``/etc/ld.so.conf''. + + + 22.4. Using + + 22.4.1. No programs are displayed in "Watch Recordings" + + This situation occurs most often with a system that acts as a frontend + and a slave backend. MythTV supports system-global and user-specific + configuration files, with user-configuration files taking precedence. + 99% of the configuration for MythTV is in the MySQL database, but + MythTV still needs to know where the MySQL server is running. This + information is in the mysql.txt file. By default, it will be + installed to /usr/local/share/mythtv, but a copy placed into ~/.mythtv + will over-ride the global configuration. + + You must ensure that there aren't multiple, conflicting versions of + this file on your system! + + + $ locate mysql.txt + /usr/local/share/mythtv/mysql.txt + /home/mythtv/.mythtv/mysql.txt + $ + + + + As you can see, in this example there are two mysql.txt files. If + they are not identical, then there may be unintended consequences. + + You may also see this error if you completely fill the /var partition. + The most likely mythtv-related reason for this is an overly large + mythbackend or mythfrontend log file in /var/log. If you have logging + enabled for the backend, and myth runs for weeks at a time, this may + creep up and surprise you. Note that many system processes also write + to /var and the system may not boot if it is unable to write to /var + due to a full partition. + + + 22.4.2. MySQL not connecting correctly + + Your MySQL installation may have networking turned off. Check that + /etc/mysql/my.cnf does not contain skip-networking. If it does, + remove it. Also verify that bind-address is set to your IP address + instead of 127.0.0.1. If you change either of these items, restart + MySQL. + + + 22.4.3. MySQL database is corrupt + + If you have reason to believe that your MySQL database is corrupt, + execute the following commands to attempt to repair it. + + NOTE: Ensure that there are no programs accessing the database while + you attempt to repair it. Make sure that all backend and frontend + programs have exited. + + mysqlcheck -r -umythtv -p<password> mythconverg + + + 22.4.4. Using a MPEG-2 encoder card and the video appears "jittery" + + 22.4.5. Using a MPEG-2 encoder card and the video is jumping up and + down + + This is a different problem than the one discussed in the previous + section. Currently, the ivtv driver or firmware appear to have some + issues if the vertical capture resolution is not the full screen + height. If you are having a jitter problem then ensure that you are + capturing either 480 lines (for NTSC) or 576 lines (for PAL). The + default capture profiles may need to be edited for your setup. Go to + Settings->TV Settings->Recording Profiles and adjust the Default and + Live TV options to 480 or 576 from their defaults. + + + 22.4.6. Screen goes blank but returns when mouse is moved or keyboard + is used + + This is due to DPMS, the Display Power Management System, which is + used to save power by turning off your monitor when the system decides + that it's not being used or due to a screensaver that has defaulted to + a blank screen. MythTV now has DPMS support built-in, and should + intelligently handle the screen. Continue reading if you wish to + override DPMS and force it off. + + Since it's likely that watching TV will not generate keyboard or mouse + events for a time, you need to turn off DPMS and the screensaver. + There are a few ways to do this. You may also need to check your BIOS + for power saving modes and disable screen blanking there as well. + + Edit your /etc/X11/XF86Config-4 or /etc/X11/xorg.conf file, and look + for: + + + Section "ServerFlags" + #DontZap # disable <Ctrl><Alt><BS> (server abort) + #DontZoom # disable <Ctrl><Alt><KP_+>/<KP_-> (resolution switching) + AllowMouseOpenFail # allows the server to start up even if the mouse doesn't work + + Option "blank time" "0" + Option "standby time" "0" + Option "suspend time" "0" + Option "off time" "0" + Option "NoPM" "1" + EndSection + + + + Also, look for: + + + + Section "Device" + Identifier "device1" + VendorName "nVidia Corporation" + BoardName "NVIDIA GeForce 256 (generic)" + Driver "nv" + Option "DPMS" + EndSection + + + + In this case, you would need to either delete the Option "DPMS" line, + or change it to # Option "DPMS" to comment it out. The next time you + start XFree this change will take effect. + + Finally, check: + + + Section "Monitor" + Identifier "monitor1" + VendorName "Plug'n Play" + HorizSync 30-85 + VertRefresh 50-160 + + # Sony Vaio C1(X,XS,VE,VN)? + # 1024x480 @ 85.6 Hz, 48 kHz hsync + ModeLine "1024x480" 65.00 1024 1032 1176 1344 480 488 494 563 -hsync -vsync + + # TV fullscreen mode or DVD fullscreen output. + # 768x576 @ 79 Hz, 50 kHz hsync + ModeLine "768x576" 50.00 768 832 846 1000 576 590 595 630 + + # 768x576 @ 100 Hz, 61.6 kHz hsync + ModeLine "768x576" 63.07 768 800 960 1024 576 578 590 616 + EndSection + + + + Ensure that there isn't an Option "DPMS" in the Monitor configuration. + + You can also turn off DPMS from the Command Line, but this will not + survive a reboot. + + + $ xset -dpms + + + + Using xset +dpms will turn it back on. + + Another technique to try, which will turn off the screensaver: + + + $ xset s off + + + + You may also combine the command to turn off DPMS and the screensaver: + + + $ xset -dpms s off + + + Finally, depending on your distribution, you may be able to turn it + off from within the control panel. + + 22.5. Miscellaneous + + 22.5.1. mythfilldatabase failing + + If mythfilldatabase suddenly appears to be failing, there are at least + two things to check. + + First, if you are in North America, ensure that your DataDirect + subscription is still valid, otherwise, check to see what version of + XMLTV you're running and that it's the latest version. + + + + NOTE: It is highly recommended that you run the latest + version of XMLTV available. Your listings provider may have made + changes which negatively impact XMLTV. + + + 22.5.2. Fast CPU, choppy or jittery video + + First, you should check that your kernel has been enabled for DMA: + + + [mythtv@pvr mythtv]$ dmesg |grep DMA + ide0: BM-DMA at 0xd800-0xd807, BIOS settings: hda:DMA, hdb:DMA + ide1: BM-DMA at 0xd808-0xd80f, BIOS settings: hdc:DMA, hdd:pio + hda: 156301488 sectors (80026 MB) w/2048KiB Cache, CHS=9729/255/63, UDMA(33) + hdb: 80043264 sectors (40982 MB) w/2048KiB Cache, CHS=4982/255/63, UDMA(33) + + + + From the listing above, you can see that hda, hdb and hdc are set for + DMA, and hdd is set for pio. If your kernel is not reporting DMA + being enabled, you may need to recompile your kernel. Check your + motherboard's chipset (look in the "ATA/IDE/MFM/RLL support" section + in "make menuconfig") for more information. + + Next, check that the hard drive has DMA enabled. Use the hdparm + program to check and enable DMA. + + + # hdparm -d /dev/hd? + + + + will tell you the DMA status for your hard drives. If you run hdparm + with the -d1 parameter, it will turn DMA on. + + + You may also setup your PC to do this at boot time, either by adding + the command to your /etc/rc.local file, or by adding files to + /etc/sysconfig. + + On Mandriva and other distributions, if you install hdparm from an RPM + you will most likely get a /etc/sysconfig/harddisks file installed. + This file will be parsed by the /etc/rc.sysinit script. If you use + the default harddisks file, your changes will affect all IDE devices + (including CD ROMs). If you wish to use different parameters for + various devices, rename and/or copy the file to harddiskhda, + harddiskhdb, etc. Edit the file to your liking and on the next reboot + your setting will be preserved. + + + 22.5.3. Frontend appears to be slow at jumping / seeking. + + 22.5.4. On-screen Display shows incorrect program length. + + This may occur when MythTV doesn't have an accurate seek table. Run + mythcommflag --rebuild + + + 22.5.5. Troubleshooting audio + + + + NOTE: the following instructions do not apply to PVR-250/350 + encoders; the MPEG-2 file will have the audio embedded in the stream + so it is not accessible using /dev/dsp. + + Audio appears to be one of the bigger issues that users run into on + the mailing list. If the audio isn't configured correctly, then + MythTV will often appear to hang, when in fact it is trying to + manipulate the audio subsystem and failing. You may or may not + receive error messages indicating that the source of the error is the + audio subsystem. + + You can not use xawtv to determine if your audio is working correctly, + since xawtv is simply using the analog sound patched through line-in + to line-out. It doesn't need to digitize the sound unless you are + using the recording function. + + A better test to verify that sound will work for MythTV (and recording + with xawtv for that matter) is to startup xawtv, mute the line-in then + run aplay /dev/dsp. You should hear the recorded audio slightly + delayed behind the real-time video. You should see messages about + "underrun". These can be ignored but they do confirm that the driver + is loaded and there is an active device. Once this test succeeds, + MythTV should work correctly because it writes to and read from + /dev/dsp in the same way that aplay does. + + To record audio along with video the audio signal must be digitized by + a DSP so that the audio data can be stored in a file. On playback, the + audio data is written to /dev/dsp and converted back to an analog + signal. This analog signal should then be sent to your speakers. Here + is what is needed in alsamixer. If you are using an ALSA version after + 1.0.6, use alsamixer -V all: + + CAPTUR source - the analog source to be sent to the DSP. This should + be set to the input source from the tuner card to the sound card. In + most cases this is Line but this could also be Aux, CD, Mic, etc., + depending on how you connect the input cable. This source should be + muted to prevent patching through the analog sound. The volume of this + source will not affect the record level. + + Capture mixer - this sets the level for the analog to digital + recording. While a volume of 100% is recommended for testing, + distortion may occur. Lowering this level to 75% to 85% may result in + better audio quality. "Capture" should be marked as the CAPTUR + destination. + + PCM mixer - this sets the level for the digital to analog playback. + While a volume of 100% is recommended for testing, distortion may + occur. Lowering this level to 75% to 85% may result in better audio + quality. + + Master mixer - sets the level for the analog signal sent to line-out + or the speakers. + + You may also want to ensure that /dev/dsp , or whatever device file is + being used, hasn't already been grabbed by another process, like esd + or artsd. If the device file isn't available, then MythTV won't work. + You may wish to run configure and enable support for these. + + If you wish to see what application is grabbing a resource, you can + use the fuser command: + + + # fuser -v /dev/dsp + + + + To disable aRts in KDE, go to KDE->Control Center->Sound->Sound System + and uncheck the "Start aRts soundserver on KDE startup" box. Run # + killall artsd from the command line to stop the artsd program. + + If you're using multiple sound cards and multiple tuners, use + alsamixer -c 1 to work with the second sound card. The first card is + #0, the second card is #1, etc. + + + 22.5.6. Mythbackend reports that your card is not reporting full + duplex capabilities + + 22.5.7. The mythbackend program told me to look at this section + + mythbackend does a check to see if your sound device is capable of + full duplex operation. If it's not, it's most likely that you're + going to run into issues when you try to record and play sound at the + same time. If your backend is a separate machine than your frontend, + then there's no problem, since you're only going to be doing one thing + at a time with the card. Likewise, if you're running the frontend and + backend on the same machine, but you're using btaudio or a hardware + encoder card such as the Hauppauge PVR-250, DVB cards or HDTV capture + cards as your recording source and you're only using the playback + function of your sound card, then you also shouldn't have an issue, + since the sound card isn't being asked to perform two functions at + once. + + If you can't get your sound card to go full-duplex and need it to, + then check your distribution for updated sound drivers. If your sound + card is not capable of full-duplex operation, either because the + drivers don't support it, or it has been designed that way, then + you're pretty much out of luck and will either need to purchase a new + sound card, or will need to get btaudio ``operational''. + + + 22.5.8. My remote doesn't work / works sometimes and not others / + "ghost" keypresses + + This can be due to a number of factors. The simplest case is the + "ghost" keypresses. For me, it was due to compact fluorescent lights + in the same room as the IR receiver, which the receiver was picking up + as keypresses. Once the lights were switched to incandescent bulbs, + the ghost went away. + + You may have an issue with lirc misinterpreting IR commands from a + different remote. I also have an issue where the TiVo "Peanut" remote + will eventually cause lircd to stop responding; even though lircd is + configured for the Pinnacle Systems remote, the TiVo remote IR + patterns are being seen by the IR receiver. + + If your remote has been properly configured, and irw and irxevent are + working correctly, then it's highly likely that your window manager is + not giving focus correctly to the various Myth programs as they run. + The following window managers are known to work correctly: + + + +o fvwm + + +o blackbox (using "Sloppy Focus" and "Focus New Windows") + + NOTE: You do not need to use irxevent if you are using MythTV's + native LIRC support, so the window manager focus issue does not apply + in that case. + + + 22.5.9. Where's "canada-cable"? + + 22.5.10. Channels are off by one + + There is no such thing as "Canada Cable"; Canada uses the same + frequencies as the United States. "Canada Cable" was a hack that some + people used when they would discover that their channels were off-by- + one, i.e. when tuning to channel 42, they might get channel 41 or 43. + This is actually due to the tuner on the video capture device being + mis-detected. You must manually specify the tuner type in your + /etc/modules.conf. See the video4linux mailing list + (https://listman.redhat.com/mailman/listinfo/video4linux-list + <https://listman.redhat.com/mailman/listinfo/video4linux-list>) for + more information. + + + 22.5.11. Mythweb is showing a db_open error when I connect to it + + Find your php.ini file. Make sure you've got a line in it like this: + + extension=mysql.so + + Restart apache for it to take effect. + + + 22.5.12. Mouse pointer disappears when placed over the MythTV windows + + This is the intended behavior. The MythTV interface is meant for use + with a remote control or a keyboard. + + + 22.5.13. What does "strange error flushing buffer" mean on the con- + sole? + + Nothing, really. It's just lame (the mp3 encoder) complaining for + some obscure reason. This seems to be fixed in more recent versions + of the libmp3lame library. + + + 22.5.14. Can't change the channel when watching Live TV. + + Something's wrong with your program database. Did mythfilldatabase + run with no major errors? Or, MythTV may not have permissions to the + appropriate video4linux devices. See the section titled ``Device + Permissions'' for an example. + + + 22.5.15. Screen goes black when you try to play something + + MythTV prints error and status messages to the shell that was used to + start the application. If nothing seems to be happening when you try + to view a program, try switching back to the shell and look for error + messages there, or, if you're running from a startup script, check the + log file. + + + 22.5.16. Poor performance with NVidia cards and XvMC + + XvMC is a NVidia driver feature which is supposed to help with + decoding video. Users have reported that rather than speeding up + their video it appears to be doing the opposite. You may want to + check that your color depth is set for 24bpp. + + + 22.5.17. Computer is loading a media player application when you + insert a CD or DVD + + You need to disable any sort of auto-running media player in your + environment, otherwise MythDVD or MythMusic will not be able to work + properly. + + In KDE, you may want to perform the following: + + + $ rm ~/.kde/Autostart/Autorun.desktop + + + + 23. Miscellaneous. + + 23.1. I'd like to watch the files without using MythTV / I'd like to + convert the files to some other format + + First, check if the mytharchive plugin does what you want. If not, + then read on: + + MythTV comes with a utility called mythtranscode which can decode nuv + files into raw format for use with other applications. This command- + line utility was not designed to be used by the end-user, but instead + to be called by other applications or scripts. Programs like + nuvexport (http://forevermore.net/myth/ + <http://forevermore.net/myth/>) are better suited for the end user. + However, since mythtranscode can be a useful tool, directions on using + it follow. + + mythtranscode creates raw streams, which means that they do not + contain any container information such as resolution, frame-rate, or + audio sampling rate. In order to process the output, you must supply + this information to the processing utility. mythtranscode provides + the relevant information on STDOUT. + + There are two modes in which mythtranscode can create raw streams. + The first has no synchronization and assumes that the processing + utility will read audio and video at a constant rate. This method is + useful when a single application will be processing the raw output, + such as mencoder or ffmpeg. The second method assumes that two + separate applications will be processing the audio and video streams + independently, and there is no rate control between them which means + that the two programs don't coordinate their efforts to maintain + synchronization. + + + 23.1.1. mythtranscode example + + First, start mythtranscode. You will need to determine the channel + and the start time manually. + + + $ mythtranscode --chanid 1036 --starttime 2003-10-20T15:30:00 --profile \ + autodetect --fifodir . & + + + + When mythtranscode begins executing, it will create two FIFOs + ("audout" and "vidout") in the directory specified (in this case ".", + meaning the current directory) and will print out information about + the video stream. + + The next step is to start the processing application. The following + assumes that the stream is NTSC 640x480 with 32Kbps audio. + + To use mencoder you would enter a command like: + + + mencoder -audiofile audout -audio-demuxer 20 -rawaudio rate=32000 \ + -rawvideo on:w=640:h=480:fps=29.97 -ovc lavc -oac mp3lame -o out.avi \ + vidout + + + + NOTE: You must use mencoder 1.0PRE1 or later. mencoder + version 0.9x WILL NOT WORK! Using ffmepg: + + + ffmpeg -f u16le -ar 32000 -ac 2 -i audout -f rawvideo -s 640x480 -r 29.97 \ + -i vidout -vcodec mpeg4 -b 2000 -acodec mp3 -ab 128 out.avi + + + + Or to play directly using mplayer (again 1.0PRE1 or later is needed): + + + mplayer -audiofile audout -audio-demuxer 20 -rawaudio rate=32000 \ + -rawvideo on:w=640:h=480:fps=29.97 vidout + + + + If you wanted to write the raw data to separate audio and video files + for later processing, the following would work (note the use of + --fifosync for rate-control): + + + $ mythtranscode --chanid 1036 --starttime 2003-10-20T15:30:00 \ + --profile autodetect --fifodir . --fifosync & + $ cat audout > audio.raw & + $ cat vidout > video.yuv + + + + 23.2. Using a different window manager + + MythTV is not dependent on any particular window manager. If you wish + to run a lightweight window manager, the contrib/configfiles/ + directory has an example of a .twmrc and .fvwmrc file you may use. + + + 23.3. What capture resolution should I use? How does video work? + + While MythTV allows you to set various GUI and capture resolutions, + not all combinations make sense. + + First, analog video signals have a defined vertical resolution. In + NTSC, the video standard specifies that there are 525 vertical scan + lines. Once the "extra" lines are removed (they're used to + synchronize the video signal, and encode closed captioning data), you + have 480 horizontal lines stacked vertically. + + In PAL, there are 625 "raw" lines of resolution, with a net of 576 + horizontal lines stacked vertically. + + Horizontally, the maximum value allowed for a Bt8X8 chip is 720. + However, due to limitations in the chip and other limitations of + broadcast television, there may not be a noticeable improvement in + image quality beyond 400 or 500 pixels. + + With this in mind, there are certain commonly accepted values for + resolution. While other values may be accepted for the vertical + resolution, they will cause scan lines to be repeated or dropped. + + From "best" to "worst", in NTSC: + + +o 720x480 "DVD" resolution. ReplayTV High and medium resolution + + +o 704x480 DVD standalone recorder standard resolution + + +o 640x480 4:3 + + +o 544x480 TiVo Best resolution + + +o 480x480 SuperVCD (SVCD) Video CD resolution, TiVo High resolution + + +o 352x480 ReplayTV "Standard" quality, TiVo Basic and Medium + resolution, DVD "LP" resolution + + +o 320x480 + + +o 544x240 + + +o 480x240 + + +o 352x240 Video CD (VCD) resolution + + +o 320x240 + + As you can see, the lower quality values are half of the better ones. + 720x240 is possible, but isn't a good tradeoff relative to the number + of vertical lines lost. In a PAL country, the you would use values + like 720x576 or x288. + + The higher resolutions will be more CPU intensive if you're using + software encoding (PVR-250/350 will have minimal host CPU impact even + if you're using 720x480). If the CPU is overtaxed, frames will be + dropped causing uneven motion. You will likely see the best results at + resolutions which average at least 10% CPU idle time. You can use + system tools such as top or sar to check the CPU % idle while + recording. If the CPU average usage is consistently exceeding 90%, + frames will need to be dropped during peak times when more than 100% + of the available CPU would be needed to process all of the frames. + + If you'd like to read more on this, go to the vcdhelp website at + http://www.vcdhelp.com/forum/userguides/94382.php + <http://www.vcdhelp.com/forum/userguides/94382.php>. + + + 23.4. MythTV GUI and X Display Sizes + + MythTV is designed to be run as dedicated full screen TV application + but can also be run as a desktop application on a computer monitor. + Here are a few consideration for configuring sizes to best suit you + needs. + + + 23.4.1. X Dimensions + + For output to a Television, common resolutions are 640x480, 800x600, + and some rare devices support 1024x768. Generally, higher resolutions + are better. However, you may find that you prefer the picture quality + at one of the lower resolutions. Everything in MythTV is scalable and + should 'fit' regardless of the resolution you choose. + + Edit your X configuration file, usually /etc/X11/XF86Config-4 for + XFree, or /etc/X11/xorg.conf for Xorg, so that the resolution you want + to use is listed first in the lists under "Screen". If this resolution + is higher than the resolutions supported by your output device, you + will see a 'panning' effect where moving the mouse to the edge will + scroll around a desktop area which is larger than the display size. If + this happens, edit your X configuration file to match the display size + then restart X. + + + 23.4.2. MythTV Dimensions + + From "mythfrontend" go to Setup->Appearance. The default for the + height and width is "0" - this will cause MythTV to automatically size + itself to full screen. + + If the MythTV GUI width and height are not 0, mythfrontend uses these + GUI dimensions and is anchored to the upper left corner of the X + Desktop. If the GUI X and/or Y are not 0, the upper left corner is + positioned at the specified coordinates. If the "Run the frontend in a + window" box is checked, the window will have a frame and can then be + dragged to any position on the desktop. + + + + NOTE: When the GUI is full screen, you may see windows rapidly + flipping on top of each other. If this happens you will need to set + your window manager to 'Click to Focus' for windows to stack properly. + The fonts for the GUI and OSD will scale to whatever sizes you use. + Most font sizes can be changed in setup selections or in the .xml + files under /usr/local/share/mythtv/ . Make sure to use fonts large + enough to be read on a TV screen from a distance. + + The full screen TV size is based on the X display size. For Xinerama, + you can specify a screen in Setup->General. The TV picture will be + stretched to fit the entire GUI area regardless of the ``capture + resolutions'' used. However, during playback, the "W" key can to used + to correct differences between 16:9 and 4:3. + 23.4.3. Overscan Dimensions + + Because picture edges can be ragged and screen edges aren't straight, + Television is designed to project an image larger than the physical + screen. This is called "overscan". Underscan is fitting the entire + image inside the screen. Underscan is useful for computer monitors so + that toolbars and scrollbars at the edges can be seen. + + For best results, match the X display area as close as possible to the + edges of the physical screen. This can only be adjusted by your tv-out + device or by the settings for the television set. Many sets have these + adjustments in a 'service mode'. If you cannot make these adjustments, + there will be black borders around the edges of the X desktop, MythTV + GUI and TV playback. + + MythTV has settings for "Overscan" in Setup->Playback. These can not, + and do not, cause the image to display beyond the edge of the X + display area. The purpose of these settings are to cut off rough edges + and to expand the image so that objects will appear to be the same + size as a normal overscanned TV picture. + + + 23.5. Saving or restoring the database + + See the mysqldump manpage for more information. + + + $ mysqldump -u mythtv -pmythtv mythconverg -c > mythtv_backup.sql + + + + To restore: (assuming that you've dropped the database) + + + $ mysql -u root + mysql>create database mythconverg; + mysql>exit + $ mysql -u mythtv -pmythtv mythconverg < mythtv_backup.sql + + + + You may need to alter the MySQL permissions if this database is being + shared with multiple systems. See the ``Modifying access to the MySQL + database for multiple systems'' section for more information. + + + 23.6. Deleting the MySQL database + + + + NOTE: Performing this step will remove the entire database. You will + lose all of your settings and will need to re-run the mc.sql script + to setup the database structure before running the mythtv-setup + program. + + + $ mysql -u root + mysql> drop database mythconverg; + mysql> quit + + + 23.7. Moving your data to new hardware + + This assumes that you will be moving your data to newer / bigger + hardware and don't want to lose your programs. + + The first step is to create a database backup as demonstrated in an + earlier section. + + Next, you will extract only the data that is relevant to the programs: + + + $ grep "INSERT INTO record " mythtv_backup.sql > restore.sql + $ grep "INSERT INTO recorded " mythtv_backup.sql >> restore.sql + $ grep "INSERT INTO oldrecorded " mythtv_backup.sql >> restore.sql + $ grep "INSERT INTO recordedprogram " mythtv_backup.sql >> restore.sql + $ grep "INSERT INTO recordedrating " mythtv_backup.sql >> restore.sql + $ grep "INSERT INTO recordedmarkup " mythtv_backup.sql >> restore.sql + $ grep "INSERT INTO recordedseek " mythtv_backup.sql >> restore.sql + + + + NOTE: Newer versions of mysqldump place backticks around the table + names. Backticks are not the same as apostrophes! On a typical North + American keyboard, backticks are located to the left of the "1" key, + on the same key as the tilde. Also, because the bash shell may try to + interpret the backticks, make sure you use a \ before each one. + + If your restore.sql file is empty, you'll need to re-run the commands + like this: + + + $ grep "INSERT INTO \`record\` " mythtv_backup.sql > restore.sql + $ grep "INSERT INTO \`recorded\` " mythtv_backup.sql >> restore.sql + $ grep "INSERT INTO \`oldrecorded\` " mythtv_backup.sql >> restore.sql + $ grep "INSERT INTO \`recordedprogram\` " mythtv_backup.sql >> restore.sql + $ grep "INSERT INTO \`recordedrating\` " mythtv_backup.sql >> restore.sql + $ grep "INSERT INTO \`recordedmarkup\` " mythtv_backup.sql >> restore.sql + $ grep "INSERT INTO \`recordedseek\` " mythtv_backup.sql >> restore.sql + + + + Note the space after the table name and the ">>" to append to the file + for all but the first grep. "recordedmarkup" and "recordedseek" are + huge and there may be hundreds of thousands of lines if you had lots + of hours of recordings. + + After you have moved the data files to the new hardware, configure + MythTV using the mythtv-setup program as you normally would with a + standard MythTV installation. + + At this point we will restore the information about your programs back + into the database: + + + $ mysql -u mythtv -pmythtv mythconverg < restore.sql + + + + After successful insertion of the data you may delete the restore.sql + file. + + + + 23.8. btaudio + + btaudio allows you to obtain the audio data from your tuner card + directly over the PCI bus without using a sound card. This is useful + if you would like to use multiple tuner cards in a system without + adding a sound card for each one, or if your existing sound card is + not capable of full-duplex operation. + + In order to use btaudio, your tuner card will need certain hardware + installed on it, and that hardware must be wired correctly. The chip + that will allow you to use the btaudio module is the MSP34xx. + However, having a MSP34xx is no guarantee that you will be able to use + the btaudio module. + + As of 2003-03-31, this is the current list of cards and their status: + Works with btaudio: + + + +o Hauppauge WinTV-radio with dbx-TV stereo, model 401 + + +o Hauppauge WinTV-Theater, model 495, 498 (Europe) + + +o ATI TV Wonder + + The following cards do not work: + + +o Pinnacle Studio PCTV Pro - note: this has a MSP34xx, but it's not + wired correctly to the BT878 chip. + + +o ATI TV Wonder VE + + +o Leadtek Winfast 2000 XP (PAL, UK and NTSC) + + +o I/O Magic PC-PVR. No MSP34xx chip. + + The following cards have been reported to work, but have issues: + + +o Avermedia AVerTV Studio (no digital DSP output, "whiney noise" on + analog) + + Once btaudio loads, it should register additional /dev/dsp and + /dev/mixer devices. Typing $ dmesg will let you know what's going on. + + + 23.9. Removing unwanted channels + + If mythfilldatabase grabbed a channel which you do not want to include + in your TV listings, you can remove the entries from the grabber + configuration and the MySQL database. This often happens with premium + channels; for example, HBO or Showtime may be available on your cable + TV system, but is scrambled because you're not a subscriber to that + channel. Since you can never watch it, you want to get rid of it. + + If you are using the DataDirect service, login to your account at + http://labs.zap2it.com/ <http://labs.zap2it.com/> to modify your + lineup. Uncheck the boxes for any unwanted channels, and they will no + longer be included in your download. + + If you are using a grabber from XMLTV, comment out the channel from + the ~/.mythtv/<sourcename>.xmltv file by inserting the word "not " + (including the space) in front of the unwanted entry. This will + prevent xmltv from grabbing future listings. + + Next, delete the unwanted item from the channel table so that it will + not appear in the EPG or when changing channels. To delete the data + from the database we need to perform some steps. First, assuming that + HBO is channel 15, we need to find out the internal chanid used by + MySQL: + + + $ mysql -u root mythconverg + mysql> select chanid from channel where channum=15; + +--------+ + | chanid | + +--------+ + | 1015 | + +--------+ + 1 row in set (0.00 sec) + mysql> delete from channel where chanid = 1015; + + + + Old program data will be removed over the course of a week. However, + you may want to immediately delete any current program listings for + the channel that has been removed: + + + $ mysql -u root mythconverg + mysql> delete from program where chanid = 1015; + + + + 23.10. NFS + + You may want to use a central server to store your files. + + On the host machine, (in this case, the hostname is "masterbackend") + you'll want to edit your /etc/exports file and use something like: + + + /var/video (rw) + + + + To export the /var/video directory with read / write privileges. + + On the "slave" machine, you'll want to edit the /etc/fstab file and + add something like: + + + masterbackend:/var/video /var/video nfs rsize=8192,wsize=8192,hard,intr,nfsvers=3,actimeo=0 + + + + Then run # mount -a to re-read the file to mount the file system. + + In this case, the source is a machine called "masterbackend" which is + exporting the directory "/var/video", which we're mounting locally at + "/var/video". The rsize and wsize options are used to increase the + performance of NFS; "hard,intr" is there because that's the + recommendation of the NFS-HOWTO, the nfsvers is required for filesizes + over 2GB and actimeo is used to turn off file attribute caching. + Attribute caching for a shared media point causes problems; you always + want to see the latest state of the directory and files. See + http://www.mythtv.org/wiki/index.php/Optimizing_Performance + <http://www.mythtv.org/wiki/index.php/Optimizing_Performance> for + additional information regarding performance optimization. + 23.11. Automatically starting mythfrontend at system boot time + + Here's an example submitted to the mythtv-dev list by Pat Pflaum + mailto:pat@netburp.com <mailto:pat@netburp.com> using fvwm: + + + $ cat > .xinitrc + fvwm & + mythfrontend + ^D + $ cat > .fvwmrc + Style myth* NoTitle, NoHandles, Sticky, WindowListSkip, SloppyFocus, GrabFocus, BorderWidth 0 + ^D + $ + + + + The following also works with blackbox: + + + $ cat > .xinitrc + xset -dpms s off & + irxevent & + mythfrontend & + blackbox + + + + Make sure that your .blackboxrc file has: + + + session.screen0.focusNewWindows: True + session.screen0.focusModel: SloppyFocus + + + + in it. + + + 23.12. Automatically starting mythbackend at system boot time + + 23.12.1. Red Hat And Mandriva + + Here's a method for automatically starting mythbackend submitted by + Mike Thomson (mailto:linux@m-thomson.net <mailto:linux@m-thomson.net>) + and Stu Tomlinson (mailto:stu@nosnilmot.com + <mailto:stu@nosnilmot.com>). + + Copy the files from the MythTV contrib directory or from Mike's web + site (http://m-thomson.net/mythtv/ <http://m-thomson.net/mythtv/>) as + follows: + + etc.rc.d.init.mythbackend should be made executable and copied to + /etc/rc.d/init.d/: + + + $ cd contrib + $ su + # chmod a+x etc.rc.d.init.d.mythbackend + # cp etc.rc.d.init.d.mythbackend /etc/rc.d/init.d/mythbackend + + + + etc.sysconfig.mythbackend should be copied to /etc/sysconfig/: + + + $ cd contrib + $ su + # cp etc.sysconfig.mythbackend /etc/sysconfig/mythbackend + + + + Edit /etc/sysconfig/mythbackend if you want to change the defaults + (the userid that should start mythbackend, location of the logfile and + (if required) the name and location of the mythbackend binary). + + Use chkconfig to make sure the script is called when entering + runlevels 3, 4 or 5: + + + $ su + # chkconfig --level 345 mythbackend on + # exit + $ + + + + 23.12.1.1. Log files + + By default, the log file for mythbackend will be written to + /var/tmp/mythbackend.log. This has been tested and is known to work on + Mandriva and Red Hat, but many people prefer to place logs under + /var/log/. + + To do this, create a group called mythtv (or anything you prefer) and + add your usual MythTV users to that group. If you changed the user + that starts mythbackend from the default of root you must perform this + step. + + Create the directory /var/log/mythtv and set its permissions as + follows: + + + $ su + # mkdir /var/log/mythtv + # chown root:mythtv /var/log/mythtv + # chmod 0775 /var/log/mythtv + # exit + $ ls -ld /var/log/mythtv + drwxrwxr-x 2 root mythtv 4096 Apr 28 21:58 /var/log/mythtv/ + $ + + + + Create a mythtv file in /etc/logrotate.d: + + + + $ su + # cat > /etc/logrotate.d/mythtv + # Set default values for all log files first... + + # Rotate the logs once a week, or more frequently if they + # exceed 10Mb in size (size is checked daily). + weekly + size 10M + + # 'copytruncate' is used for logs generated by + # currently-running programs that should not be restarted + # (and can't be signalled to start a new log) after the + # rotation. It duplicates the existing log file and then + # sets the length of the existing file to 0. The only time + # this would break would be if the program writing the log + # was using lseek. + copytruncate + + # After rotating the files, leave the most recent rotated + # copy alone but gzip everything else to save space. + compress + delaycompress + + # If a log isn't present then don't worry about it. + missingok + + # Don't rotate an empty file. + notifempty + + # end of the global options + + /var/log/mythtv/mythbackend.log /var/log/mythtv/mythfrontend.log { + # Keep logs until they are 2 months old or the number of + # logs reaches 12. If the log files stay small, the age will + # kick in first and you'll only have 8 log files. If they + # get larger than 10Mb then you won't keep all 60 days. + rotate 12 + maxage 60 + } + + # Different options for mythfilldatabase: + /var/log/mythtv/mythfilldatabase.log { + rotate 2 + } + ^D + # + + + + 23.12.1.2. Mandriva + + Mandriva adds one more twist in the form of the msec utility, which + runs regularly and (at the default or any higher security level) sets + permissions on many files, including those under /var/log. + + To tell msec about the MythTV log files and their directory, you need + to edit the /etc/security/msec/perm.local file to include the + following: + + + + # /etc/security/msec/perm.local + # Local overrides to the msec program + # + # Full file path user.group permissions + /var/log/mythtv/ root.mythtv 775 + /var/log/mythtv/* root.mythtv 664 + + + + A copy of the above has been included in the contrib/ directory. You + may add it by typing: + + + $ cd contrib + $ su + # cat etc.security.msec.perm.local >> /etc/security/msec/perm.local + # exit + + + + Finally run the msec tool to check and implement your changes. + + + $ su + # msec + # exit + $ + + + + NOTE: msec can only reduce the permissions of files, so if + you don't get the results you expect, check that you're not asking + msec to add missing permissions to the files or directories you + created. + + 23.12.2. Gentoo + + The portage file for MythTV has scripts that will allow you to run + mythbackend at startup. + + To run mythbackend as a daemon which starts at boot time: + + + # rc-update add mythbackend default + + + + To stop mythbackend as a daemon: + + + # /etc/init.d/mythbackend stop + + + + To obtain a list of options: + + # /etc/init.d/mythbackend + + + + 23.13. Advanced Backend Configurations + + MythTV is flexible in the way that you define multiple backend tuner + configurations. The only hard-and-fast rule is that the Master + backend must have a capture device defined, but shouldn't imply that + the capture device in the Master backend must be the first capture + card defined in the database. + + One example of an advanced configuration is the round-robin scheme. + Rather than defining all of the cards on the master, you could first + go into mythtv-setup on the master to define globals such as the + general configuration and the channel lineup but not the host-specific + configuration item like the capture card. In this example, we will + use a 4 tuner configuration, where two slaves have one card each and + the master has two. + + 1. Add the first capture card on one of the slaves. Complete the + configuration, connecting the input source to the card. This will + get cardid #1 in the database. Exit mythtv-setup. + + 2. Configure the first capture card on the master backend. This will + get cardid #2 in the database. Exit mythtv-setup. + + 3. Configure the first capture card on the second slave. This will be + cardid #3 in the database. Exit mythtv-setup. + + 4. Configure the second capture card on the master backend. This will + get cardid #4 in the database. Exit mythtv-setup. + + Using this scheme, the master backend will not use both capture cards + until one of the following happens: + + +o There are four recordings scheduled for the same time + + +o Both slaves are unavailable + + The scheduler in MythTV checks whether an encoder is available; if a + slave backend isn't running, its encoder isn't available, so the + scheduler will look for the next available encoder. This makes MythTV + very flexible; slave tuners can come and go, and as long as there are + enough tuners for what you'd like to record it doesn't matter which + tuner in particular is going to be used. + + Using this round-robin scheme along with a shared storage directory + like NFS and enabling the Master Backend Override setting will allow + you to view content even if the slave backend that recorded a program + is not available. + + + 23.14. Using the transcoder + + MythTV's built-in transcoder re-encodes recordings from one codec to + another. The transcoder has three primary uses; it can transcode + MPEG-2 files captured using a hardware encoder (PVR cards, DVB cards, + ATSC HD, etc.) to MPEG-4, it can be used to transcode RTjpeg files + (usually only used on systems that can not real-time encode to MPEG-4 + using a framegrabber) to MPEG-4, and finally it can be used to remove + commercials from a MPEG-2 file while leaving the file in MPEG-2 + format. + + When MythTV transcodes a file to MPEG-4 or RTjpeg the resulting file + format is NuppelVideo (nuv). NuppelVideo is a container which + provides a method of keeping the audio and video in sync throughout + the recording, which is why it is used instead of the .avi format. + You may have difficulty playing .nuv files in non-MythTV systems. + + + The original file is removed when the transcoding process is complete. + Unless you're sure that you will be satisfied with the result you may + want to enable the mythtv-setup option which causes mythbackend to + keep the original file after transcoding. This option is on the + second page of the General section in mythtv-setup. Enabling this + allows you to compare the two files and restore the original if you + like. Outside of the initial setup phase it usually isn't necessary + to leave this option enabled. A recording can be transcoded in two + ways: + + + +o Automatically transcode the file once it has completed recording. + + +o Manually choosing to transcode a recording, usually after importing + a cutlist or manually marking commercials to be removed. + + The second method can be used on files that have already been + transcoded (or files which were are already in the desired format), so + only the frames immediately following a cut section will be re- + encoded, resulting in a minimal loss of quality when removing + commercials with the added benefit of being extremely quick. + + The current transcoding system has a lot flexibility, but there are a + number of steps involved in setting it up. In order to automatically + transcode a given recording you must do the following: + + 1. Configure recording profile for your capture source and enable + transcoding on one or more profiles. + + 2. Configure one or more transcoding profiles. + + 3. Create or alter existing scheduled recordings to enable transcoding + for that recording. + + + 23.14.1. Configuring Recording Profiles to Allow Transcoding + + Enter the Utilities/Setup > Setup > TV Settings > Recording Profiles + section in mythfrontend. Choose the option that corresponds to your + capture source (ignore the Transcoders for now.) Choose the quality + profile you are interested in using for transcoding. Ensure that + "Enable auto-transcode after recording" is checked. + + + 23.14.2. Configure Transcoding Profiles + + Enter the Recording Profiles > Transcoders menu. There are three + quality settings to choose from and a two special Autodetect settings. + Later, when scheduling recordings you'll have to choose one of + Autodetect, High, Medium, and Low Quality transcode settings in + addition to the recording profile we set up above. If you choose the + Autodetect transcoding profile for a recording, MythTV will use the + "Autodetect from RTjpeg/MPEG-4" profile for recordings which are + RTjpeg/MPEG-4 files. Otherwise, it will use the "Autodetect from + MPEG-2" profile provided it's an MPEG-2 recording. If you choose one + of the others (High, Medium, Low) it will use the settings in that + profile regardless of the codec of the original recording. + + + There are a number of options for transcoding but the simplest is to + enable lossless transcoding (the first option) which subsequently + removes all other options. Enabling lossless encoding simply removes + commercials (if you've marked them) and attempts to clean up MPEG-2 + streams. Note that with this option MythTV will not apply any sort of + filters and will only attempt to normalize the stream into something + cleaner and less likely to have trouble with other less forgiving + MPEG-2 hardware/software (including players, video editors, etc.) + + If you enable resizing of the recording the next page has the settings + for choosing the final resolution. MythTV will scale the video as + appropriate, not crop it to this resolution. + + The final two pages allow configuration of the video and audio codecs. + Although RTjpeg is an option for video codec there is no reason to + transcode to this format because it will produce larger files than + MPEG-4 and the recording will take more CPU power to play back. The + MPEG-4 settings are described in the documentation for the ffmpeg + project at http://ffmpeg.sourceforge.net/ffmpeg-doc.html + <http://ffmpeg.sourceforge.net/ffmpeg-doc.html>. It's a matter of + trial and error to discover which settings achieve a good compromise + between size and quality. + + If you wish to return to the default settings, they are Bitrate: + 2200-2500, MaxQ: 2, MinQ: 15, MaxQDiff: 3, and "Scale bitrate for + frame size" is enabled. The other options are unchecked. + + + 23.14.3. Create/Alter Scheduled Recordings to Enable Transcoding + + Transcoding is actually enabled on a per-recording basis. Two things + must be true before any given recording will be auto-transcoded, + however. The first is that the recording must have been made with a + recording profile that has auto-transcode enabled. Under "Storage + Options" for the recording you must set the "Record using the "X" + profile" to the profile you configured in the first step. In + addition, under the "Post Recording Options" section of the recording + you must also set "Transcode new recordings." This is also where you + specify the Transcoding profile to use (Auto, High, Medium, Low.) + + It may not be obvious from above but the flexibility of this system is + primarily to make it possible to auto-transcode a show recorded via + one source (ie: pcHDTV 3000), and not transcode that same show if it's + recorded on another kind of card (ie: PVR-250.) There are other uses + however. You could have a PVR-250 and a V4L card. You may want to + transcode the MPEG-2 from the PVR-250 but there is no need to + transcode the recordings made with the V4L card, as it's already + likely to be MPEG-4. + + As an example, you could configure the Default profile for "Hardware + DVB Encoders" (the profile group used for DVB cards, including ATSC + cards like the pcHDTV 3000) to "Enable auto-transcoding". In the + Default profile for MPEG-2 Encoders (PVR cards) you'd leave "Enable + auto-transcoding" unchecked. For programs that are available on both + kinds of cards you'd set the recording profile to Default and enable + auto-transcoding in the record settings. Then you pick your + transcoding profile. The result is that when a program is recorded on + your DVB card, it will get transcoded. When it plays on a channel + available via your PVR card, it won't be. + + + 23.14.4. Manual Transcoding + + Manually transcoding is activated while watching a show by hitting + 'x', from the OSD menu by choosing the Transcode option, or by + choosing Job Options/Transcode from the info menu from the Watch or + Delete Recordings screens. + + The transcoding profile used for manual transcoding is whatever was + set when the recording was originally configured, even if you didn't + enable auto-transcoding. The only way to change what transcoding + profile will be used is to alter the transcoder column in the recorded + table in the database. The transcoder column contains a number which + corresponds with the id column in the recordingprofiles table. You + can find out the id number for each profile in the transcoder group + with an SQL command like: + + + + mysql> select r.* from recordingprofiles r,profilegroups p where p.name='Transcoders' and p.id=r.profilegroup; + +----+----------------+------------+------------+--------------+ + | id | name | videocodec | audiocodec | profilegroup | + +----+----------------+------------+------------+--------------+ + | 21 | RTjpeg/MPEG4 | MPEG-4 | MP3 | 6 | + | 22 | MPEG2 | MPEG-4 | MP3 | 6 | + | 27 | High Quality | MPEG-4 | MP3 | 6 | + | 28 | Medium Quality | MPEG-4 | MP3 | 6 | + | 29 | Low Quality | MPEG-4 | MP3 | 6 | + +----+----------------+------------+------------+--------------+ + 5 rows in set (0.01 sec) + + mysql> + + + + Armed with the knowledge of what the profile ID's are you can also + choose to run mythtranscode from the command line and explicitly + specify the transcoder profile. Run mythtranscode --help for usage + information. + + + 23.15. Changing your hostname + + If you need to change the name of the computers used with MythTV + you'll need to perform a sequence of steps. There are a number of + pieces of information that MythTV keeps track of which are tied to the + hostname of the box, so changing the hostname involves altering the + name in the operating system and in the MySQL database. In the + examples below, the old name of the system was "frontend1" and we're + going to change it to "kidsroom". + + + + NOTE: Changing the hostname using direct SQL update commands will + break things. You MUST use this indirect method. + + 1. Stop all backends. If you run mythbackend from a terminal + session, press control-c. If your backends are started with an init + script, you would do something like the following: + + + $ su + # /etc/init.d/mythbackend stop + + + + 2. Change the hostname. + + For Red Hat and derived distributions, edit the /etc/sysconfig/network + file. Look for HOSTNAME=frontend1 and change this to + HOSTNAME=kidsroom or whatever you'll be using. For other + distributions, refer to the documentation, such as the + + hostname(1) + + + + To alter the hostname in the current session, run: + + + # hostname kidsroom + + + + 3. Dump the database. + + + $ mysqldump -u mythtv -pmythtv mythconverg -c > mythtv_backup.sql + + + + 4. Rename the host in the database. First, ensure that the new + hostname you'll be using isn't already in the database. + + + $ grep kidsroom mythtv_backup.sql + + + + Now we're actually going to change the name. The following should all + be typed on the same line: + + + $ cat mythtv_backup.sql | sed s/\'frontend1\'/\'kidsroom\'/g >> mythtv_restore.sql + + + + If you don't feel comfortable using sed, you can open the + mythtv_backup.sql file in a text editor and perform a global search + and replace. When saving the file, make sure you use the new name, + mythtv_restore.sql or the rest of the steps below will fail. + + 5. Drop and recreate the database. + + + $ mysql -u root + mysql>drop database mythconverg; + mysql>create database mythconverg; + mysql>exit + + + + 6. Restore the database using your edited version. + + + + $ mysql -u mythtv -pmythtv mythconverg < mythtv_restore.sql + + + + If you are running slave backends or frontends, don't forget to re- + enable access as detailed in ``Modifying access to the MySQL database + for multiple systems''. + + 7. Start the backends. If you use init scripts, do the following, + otherwise start them from terminal consoles. + + + # /etc/init.d/mythbackend start + + + + 8. Quit and restart all frontends. Delete the mythtv_backup.sql and + mythtv_restore.sql files. + + + 23.16. Can I run MythTV on my TiVo? + + 23.17. Can I run MythTV on my ReplayTV? + + No. + + While it is true that the TiVo runs the Linux kernel, and TiVo has + released their changes to the kernel under the GPL, the TiVo is not a + general-purpose computer, and there is no programming information + available for the custom hardware contained within a TiVo. TiVo is + under no obligation to release the source code to their application. + + The ReplayTV runs VxWorks, a Real Time Operating System from Wind + River Systems. + + 23.18. Can a wireless connection be used between the frontend and the + backend? + + Yes, assuming that your wireless connection has sufficient bandwidth + to maintain the datarate between the frontend and the backend. + 802.11b should be sufficient if the encoded bitrate of the content is + less than the datarate of your wireless connection, which in the case + of 802.11b would be approximately 4 Mbps. (The advertised rate of + 11Mbps gives an actual throughput of 4 Mbps.) 802.11a and 802.11g, if + operating in their high-speed modes, or proprietary 802.11b "Turbo" + schemes should be adequate. Multiple wireless frontends, poor signal + strength or other factors can severely impact the viewing experience + on the frontend. + + + 23.19. How can I burn shows that I have recorded to a DVD? + + Use the mytharchive plugin. + + + 23.20. Using the DBoxII within MythTV + + The configuration of the DBoxII for use within MythTV is tricky (as of + May 16 2005), that's why it's covered here. Your DBoxII has to be + running linux and the Neutrino GUI instead of the stock BetaNova + firmware. For further information, please refer to + http://www.tuxbox.org <http://www.tuxbox.org>. Additionally, you need + to enable the SPTS mode in Neutrino. + + +o Add a new "Capture Card" in the setup. The "Card type" is "DBOX2 + Input", the other values have to be adjusted according to your + setup. The default values, except for the "DBOX2 host ip", should + work fine. + + +o Define a new video source. It doesn't need to be configured, you + just need to define it. MythTV grabs the EPG from the DBoxII. + + +o Connect the DBoxII to the newly defined input source in "input + connections". + + +o Since channel scanning is not implemented yet, you need to define + channels in the "Channel Editor". Make sure that you use the same + value for "Channel Name" as on the DBoxII. You can get a list of + available channels from the web interface of Neutrino at http://ip- + of-your-box:80/. Associate the channel with your new video source + and repeat when needed. + + You may leave the Setup now and proceed as usual. + + + 23.21. What do the icons on the Watch Recordings screen mean? + + Press "1" or F1 to get a popup. + + 23.22. What do the letters mean when I change channels? + + These letters let you know what's going on with the backend as it + tries to tune to a channel. + + Lower case = seen + + Upper Case = seen & good + + +o l/L = Lock : This could be seen by PVR-250/BTTV users + + +o a/A = PAT : Any recording transmitted in MPEG + + +o m/M = PMT : Any recording transmitted in MPEG + + +o g/G = MGT : ATSC only + + +o v/V = VCT : ATSC only + + +o n/N = NIT : DVB only + + +o s/S = SDT : DVB only + + 23.23. What is the difference between the various Hauppauge PVR mod- + els? + + This is covered in the hardware section, and extensively covered on + the Hauppauge website. + (http://www.hauppauge.com/pages/compare_pvr.html + <http://www.hauppauge.com/pages/compare_pvr.html>) Please check the + Hauppauge website for the most accurate information. + + A PVR-150 comes in a number of versions: + + +o The PVR-150 (Model 1045) is the retail kit. It comes with a remote + control and an IR Blaster. It does not have a radio tuner. + + +o The PVR-150 MCE (Model 1042) will usually come in a plain white box + and is sold as an OEM device. It does not come with a remote + control, since it's usually used as the second, third, etc capture + device. + +o The PVR-150 MCE Kit (Model 1062) does not have a radio tuner and + comes with a Microsoft Media Center remote control instead of + Hauppauge's. + + +o The PVR-150 low profile (Model 1086) is a low-profile card. It has + a radio tuner and is approximately half the height of a standard + card. However, it comes with a low-profile PCI bracket, so it is + not suitable for use in a standard PCI slot without removing the + bracket, which may not be worth the trouble. + + A PVR-250 (Model 980) is a retail kit which comes with an IR receiver + and a remote control. + + The PVR-250 MCE (Model 975) contains a FM radio tuner. The PVR-250 + MCE does not contain a IR receiver or a remote. + + The PVR-250 Rev 1 contained an MPEG-2 decoder. However, this function + was not connected to any output jacks, and there doesn't appear to be + any way to pull decoded video from the card, so it's a fairly useless + feature. + + The PVR-350 (model 990) has the features of the PVR-250 as well as + being able to decode MPEG-2. The encode and decode functions may be + used simultaneously. The MPEG-2 decoder function gives superior video + quality compared to what you'll find on a standard video card. + However, the decoder function is only available once Linux has + started, so you will not see any boot-time messages. Also, the card + is not capable of resolutions higher than 720x480, so it cannot be + used with HDTV. Make a conscious decision (and ask for advice on the + mailing list) that you want to tradeoff potential HDTV use in the + future compared to video quality. + + The X-driver for the PVR-350 support playback using Xv efficiently but + does not support any other 2D or 3D acceleration. For some application + this may place a large load on the host CPU, some will run without any + problem and others (mplayer, xine, xmame etc.) should be configured to + utilize the Xv interface. + + Note that for the PVR-350 there are some ``considerations'' regarding + the way audio is handled. + + The PVR-500 is a dual-encoder version of the PVR-150 card, so you can + simultaneously record two different programs at the same time, because + there are two encoder chips on the PCI card. Hauppuage has also + installed an onboard splitter, so you can use one COAX to feed both + tuners. Current versions of the PVR-500 should come with an adapter + to allow you to connect a second S-Video or composite input, but this + will take up a second PCI slot. Early adopters may need to purchase + this item separately. + + + 23.24. Changing channels on an external Set Top Box + + If you need to use an external Set Top Box (STB), such as for + satellite TV or for digital cable you will need some way for MythTV to + tell the STB to switch to a new channel. There are several methods: + + 1. Use an IR blaster. An IR blaster is an infrared transmitter + connected to your computer. When MythTV needs to change channels + it will send IR pulses, thereby emulating a remote control. + + 2. Use a direct serial connection. Some STB's have a serial port on + the back, although it may not look like a serial port. It may look + like a phone jack, or a strange VGA connector. It may be labeled + "Low Speed Data". A direct serial connection is more reliable than + an IR blaster. Not all STB's that have a Low Speed Data port have + it enabled; you may need to convince your service provider to turn + it on. Stating that you have a Tivo may help; the Tivo has a + direct-connect capability. + + 3. Use a firewire connection. There is a 6200ch.c in the MythTV + contrib directory which may work for you. + + 23.25. Configuring one machine to flag all commercials + + Commercial flagging can be CPU intensive. By default, the backend + that created a recording is the one which will flag commercials. You + may wish to use a different machine to run commercial flagging. + + On the slower machine: + + Start the mythtv-setup program. Advance through the pages until you + get to the Job Queue page. Turn off the setting that says "Allow + Commercial Detection jobs", thereby preventing any commercial flagging + jobs from running on this machine. + + Next, make sure that "Run Jobs only on original recording host" is + turned OFF so that new jobs are allowed to run anywhere. + + Restart mythbackend since it only reads this setting when it starts + up. + + On the faster machine: + + Start the mythtv-setup program. Advance through the pages until you + get to the Job Queue page. Ensure that "Allow Commercial Detection + jobs" is turned ON for this machine. + + Run mythjobqueue. mythjobqueue will examine the JobQueue and run any + jobs it finds. mythjobqueue should be left running so that it will + pick up any new commercial flagging jobs that are added to the queue, + otherwise new jobs will be added to the queue and your programs won't + be flagged until you run manually run mythjobqueue. + + Using this technique it's possible to add commercial flagging machines + as needed, even on systems that aren't running a backend. It's also + possible to run the commercial flagger in a virtual machine + environment such as VMWare. + + + 24. Example Configurations. + + 24.1. Logical Volume Manager (LVM) + + LVM greatly increases the flexibility you have in managing your + storage than traditional physical partitions. This section will + provide some brief notes on how to use LVM to create storage space for + your video files and how to add additional disk space in the future. + There's lots more that can be done with LVM, so check the LVM HOWTO + http://tldp.org/HOWTO/LVM-HOWTO/ <http://tldp.org/HOWTO/LVM-HOWTO/> + document for details. + + + + NOTE: If you are running MythTV 0.21 and you are using LVM to + create one large filesystem to store your recordings, it's no longer + recommended that you go the LVM route. The preferred solution is to + use ``Storage Groups''. They're more flexible and less likely to lose + all of your recordings if you have a drive failure. + + If you don't understand how to partition a drive, or how to change the + partition type you should stop and look at documentation on how to + perform these steps. + + + + BIG FAT WARNING: Using an incorrect parameter can make your files + inaccessible, prevent your computer from booting, etc. Be careful! + + Make sure your kernel configuration includes LVM support or that it's + available as a module. Today, most vendors include this by default. + You'll also want to ensure that you have a copy of the LVM utilities; + check your distribution, or get the latest versions from + http://www.sistina.com/products_lvm.htm + <http://www.sistina.com/products_lvm.htm> and build them manually. + + Check that the vgscan program is being run at some point during your + boot sequence - most distributions do this by default. Look for a + message during boot up that looks like this: vgscan -- reading all + physical volumes (this may take a while...) If you don't see any + messages during boot, you may need to install a LVM init script or + confirm that you have all of the LVM packages installed from your + distribution. + + LVM uses a few concepts you should be familiar with before starting. + + +o PV (Physical Volume). The actual partition on the hard drive. + + +o VG (Volume Group). The aggregation of all the PVs make a VG. + + +o LV (Logical Volume). Subdivision of the pool of space available in + the VG into individual chunks, like /usr, /var/video, etc. + + The following example assumes that you want to create a LVM partition + from a chunk of space in /dev/hda5, using a reiserfs filesystem and + mounted on /var/video. You later decide to extend this filesystem by + adding a new disk: /dev/hdb. + + You need to create at least one LVM partition for a physical volume. + Use fdisk or your favorite partition editor to set the type to LVM + (0x8e). If you're using an entire disk, create one big partition + rather than using the device itself. e.g. use /dev/hdb1 not /dev/hdb. + + In the following example, you have a 15GB disk. The first 6GB are set + as your boot partition. /dev/hda2 was added as an extended partition, + and within that partition you created the /dev/hda5 linux (ext2) + partition. + + + + # fdisk /dev/hda + + The number of cylinders for this disk is set to 1823. + There is nothing wrong with that, but this is larger than 1024, + and could in certain setups cause problems with: + 1) software that runs at boot time (e.g., old versions of LILO) + 2) booting and partitioning software from other OSs + (e.g., DOS FDISK, OS/2 FDISK) + + Command (m for help): p + + Disk /dev/hda: 15.0 GB, 15000330240 bytes + 255 heads, 63 sectors/track, 1823 cylinders + Units = cylinders of 16065 * 512 = 8225280 bytes + + Device Boot Start End Blocks Id System + /dev/hda1 * 1 764 6136798+ 83 Linux + /dev/hda2 765 1823 8506417+ 5 Extended + /dev/hda5 765 1823 8506417 83 Linux + + Command (m for help): t + Partition number (1-6): 5 + Hex code (type L to list codes): 8e + + Command (m for help): p + + Disk /dev/hda: 15.0 GB, 15000330240 bytes + 255 heads, 63 sectors/track, 1823 cylinders + Units = cylinders of 16065 * 512 = 8225280 bytes + + Device Boot Start End Blocks Id System + /dev/hda1 * 1 764 6136798+ 83 Linux + /dev/hda2 765 1823 8506417+ 5 Extended + /dev/hda5 765 1823 8506417 8e Linux LVM + + Command (m for help): w + + # + + + + Create the LVM physical volume from the partitions (repeat if you have + multiple partitions to use): + + + # pvcreate /dev/hda5 + + + + Create a LVM volume group out of this physical volume called + "VGforMyth" that is allocated in chunks that are a multiple of 64MB + + + # vgcreate VGforMyth -s 64m /dev/hda5 + + + + Create a logical volume of 5GB called "video" and then create the + reiserfs filesystem and mount it: + + + + # lvcreate --name video --size 5G VGforMyth + # mkreiserfs /dev/VGforMyth/video + # mount /dev/VGforMyth/video /var/video + + + + Now create a 3GB volume for mythmusic files if you like: + + + # lvcreate --name music --size 3G VGforMyth + # mkreiserfs /dev/VGforMyth/music + # mount /dev/VGforMyth/music /var/music + + + + Display the volume group status: # vgdisplay -v + + Now, lets suppose you want to add a 60GB hard disk to the system as + hdb and allocate 50GB of it to video storage. + + First, create a single partition /dev/hdb1 covering the whole disk and + make it type 0x8e using your partition editor. + + # fdisk /dev/hdb .... create partition, set type, save and reboot if + it says you have to + + Create the new LVM physical volume: + + # pvcreate /dev/hdb1 + + Add the new physical volume to the volume group: + + # vgextend VGforMyth /dev/hdb1 + + + + NOTE: You may get errors at this point stating that there are no + physical volumes available for adding to the LV, even though you know + for a fact that there are. You may need to specify the physical + volume in the /dev/ide/host/bus/target/lun/etc format. Once you've + completed one of the following two procedures, use df to check that + you've got more space. + + Make the logical volume used for video bigger: + + # lvextend --size +50G /dev/VGforMyth/video + + 24.1.1. ReiserFS + + Unmount, resize and remount the filesystem. Technically, you don't + need to unmount and remount the ReiserFS. + + + # umount /var/video + # resize_reiserfs /dev/VGforMyth/video + # mount /dev/VGforMyth/video /var/video + + + + 24.1.2. ext2 or ext3 + + LVM comes with a program called resize2fs. + + Unmount, resize and remount the filesystem. The filesystem must be + unmounted during this procedure. + + + # umount /var/video + # resize2fs --size +50G /dev/VGforMyth/video + # mount /dev/VGforMyth/video /var/video + + + + 24.1.3. xfs + + XFS does not need to be unmounted to extend the size: + + + # xfs_growfs /var/video + + + + 24.2. Advanced Partition Formatting + + The partitions that your distribution sets up for you may not be + optimized for large files. Using LVM in conjunction with the following + techniques can be quite useful. + + Unlike a typical filesystem, a MythTV video partition is usually a + very large filesystem filled with a fairly small number of large + files. Filesystem I/O is usually not an issue, even in multi-tuner + and/or multi-frontend setups. + + There is however, one aspect of filesystem performance that can have a + bearing on the performance of MythTV. In Linux, deleting a file will + utilize I/O bandwidth until the deletion has been completed. If + deleting the file takes long enough, the video capture buffer may + overrun, thereby resulting in dropped frames. Some filesystems are + faster at deleting files than others and, for multi-gigabyte MythTV + video files, these differences can be significant. + + Fortunately, there are published tests + (http://aurora.zemris.fer.hr/filesystems/big.html + <http://aurora.zemris.fer.hr/filesystems/big.html>) that provide + insight into filesystem performance under conditions relevant to + MythTV usage. In addition, some limited testing (archived at + http://www.gossamer-threads.com/lists/mythtv/users/52672 + <http://www.gossamer-threads.com/lists/mythtv/users/52672>) with very + large files (10 gigabytes) was reported in the MythTV Users mailing + list. + + + 24.2.1. Ext2 + + Ext2 was the defacto standard Linux filesystem for many years. It is + stable, provides good I/O performance and can quickly delete large + files. The primary disadvantage of Ext2 is that it is not a + journaling filesystem, so a file system consistency check (fsck, which + is normally only performed after a system crash) can take many hours + on a filesystem the size of a typical MythTV partition. + + + + 24.2.2. Ext3 + + Ext3 is Ext2 with a journal, so your biggest gain is that in case of a + crash and reboot you won't have to wait very long for your partition + to be remounted. + + There are options available when formatting an Ext3 partition, as in: + + + # mkfs.ext3 -T largefile4 /dev/hdb1 + + + + This example assumes that /dev/hdb1 has already been created using + fdisk. If you're using LVM, /dev/hdb1 may be something like + /dev/VGforMyth/video. + + The "-T largefile4" option creates one inode per 4 megabytes, which + can provide a few percent more storage space. However, tests indicate + that using the "-T largefile4" option can drastically increase the + amount of time required to delete a large file and thus it should only + be used with encoder settings that produce small video files (YMMV). + + You can check on your filesystem using the dumpe2fs program. See the + man page for details. + + 24.2.3. ReiserFS + + The Reiser filesystem is another journaling filesystem commonly + distributed with Linux. It is known to be an extremely efficient + filesystem and it especially excels at managing partitions containing + a large number of small files. However, tests indicate it is not the + fastest at deleting very large files. For that reason, it may not be + the best choice when using encoder bitrates that produce very large + files. + + + 24.2.4. JFS + + JFS (Journaling File System) is a journaling filesystem originally + developed by IBM for AIX which was later released as open source. + While not as common as Ext3 or ReiserFS, it is distributed with RedHat + 9 (RH9), Fedora Core and Mandriva as well as other distros. According + to tests, JFS is the file deletion speed king, deleting virtually any + file in under one second, even files as large as 10 gigabytes. + + + 24.2.5. XFS + + XFS is a journaling file system originally developed by SGI for Irix, + and later released as open source. While not a part of the default + RedHat Linux 9 or Fedora Core installation (although it is a part of + Mandriva and Fedora Core 2+), it can be easily installed via ATrpms. + XFS provides deletion speeds for large files only slightly slower than + JFS. According to the test results shown at + (http://aurora.zemris.fer.hr/filesystems/big.html + <http://aurora.zemris.fer.hr/filesystems/big.html>), XFS provide + higher I/O rates than JFS, albeit at a higher CPU loading. This may + cause issues if you do not have the spare CPU capacity to handle XFS, + potentially leading to dropped frames. + + + + 24.3. Migrating from DataDirect Labs to Schedules Direct + + MythTV v0.20.2 or later is required to natively support Schedules + Direct. Code has been included to make the transition as simple as + possible. + + You do not need to delete your existing video sources or add new ones! + + The following steps should work for most users: + + +o Create a Schedules Direct account and use the same information as + your existing lineups at Zap2It Labs. Do not add or delete + channels at this time. + + +o Shut down any running mythfrontend and mythbackend programs. + + +o Perform a backup of your existing database. See ``Saving or + restoring the database'' for instructions. + + +o Run mythtv-setup -> Video Sources. Change the grabber to Schedules + Direct, update the username and password fields with the account + information you created at Schedules Direct and select "Retrieve + Lineups". Click Finish. + + +o Exit mythtv-setup and run mythfilldatabase. Check if there were + any errors. + + +o Restart your mythbackend and mythfrontend programs. + + + 24.4. Caching support for Schedules Direct + + MythTV 0.20.2 or later supports caching of downloaded information from + Schedules Direct, so devices that share a common source do not require + multiple downloads. + + Before beginning, perform a backup of your existing database. See + ``Saving or restoring the database'' for instructions. + + In the following scenario, assume that you have the following: + + 1. A PVR-150 MPEG-2 encoder card connected directly to a CATV source. + + 2. A PVR-250 MPEG-2 encoder card connected via S-Video to a CATV Set + Top Box. + + What we are going to do is to create a single lineup at Schedules + Direct and then create two Video Sources which use the same login + information but have different channels associated with them. + + On your Schedules Direct account, create a lineup that has all of the + channels that you can receive. Because we have a Set Top Box (STB), + choose a Digital lineup. Yes, this means that you may have 900 + channels in this lineup, but that's OK. + + Use the Schedules Direct channel editor and unselect any channels that + you can't tune without the STB. This will usually be channels higher + than 125, but check your CATV provider lineup if you're not sure. + Once you've deselected them (using a click on the first channel you + can't receive and then a shift-click on the last channel you can't + receive will deselect all the channels in between those two.) click + the Save Changes button at the bottom of the screen. + + In mythtv-setup, create a Video Source with an appropriate name. "SD- + Analog Only" will be used in this example. Click "Retrieve Lineups" + and select the digital lineup you just created at Schedules Direct. + Click "Finish" to return to the Video sources selector and then press + the ESC key to go back to the main screen. + + Now choose Input Connections. Select the PVR-150 which is connected + directly to the CATV. Set the Video Source to "SD-Analog Only" and + click "Fetch channels from listings source". + + Set the start channel to an appropriate value. + + NOTE: There is a bug where the "Fetch" command may not work; you can + tell that the Fetch did not retrieve any channels in one of two ways: + in the text-mode console, you will see a connection to Schedules + Direct, but it doesn't appear to retrieve any channel information: + + + 2007-08-25 15:03:05.526 New DB DataDirect connection + 2007-08-25 15:03:05.526 Connected to database 'mythconverg' at host: localhost + 2007-08-25 15:03:05.536 DataDirect: Your subscription expires on 11/23/2007 01:12:10 PM + 2007-08-25 15:03:05.707 New DB connection, total: 3 + 2007-08-25 15:03:05.707 Connected to database 'mythconverg' at host: localhost + 2007-08-25 15:03:05.708 sourceid 2 has lineup type: CableDigital + 2007-08-25 15:03:06.623 Data fetching complete. + 2007-08-25 15:03:06.624 DataDirect: Deleting temporary files + + + + or, the "Please add channels to this source" message in the "Starting + channel" field stays on the screen. + + If either of these happens, save the information on this screen by + clicking the "Finish" button. Exit back to the Input connections + screen by pressing ESC, then select this Input Connection again. This + time the Fetch will work and the "Please add channels to this source" + message will disappear. + + If you look at the text-mode console, you'll see this if the channel + retrieval is working: + + + 2007-08-25 15:04:32.437 New DB DataDirect connection + 2007-08-25 15:04:32.437 Connected to database 'mythconverg' at host: localhost + 2007-08-25 15:04:32.447 DataDirect: Your subscription expires on 11/23/2007 01:12:10 PM + 2007-08-25 15:04:32.622 New DB connection, total: 3 + 2007-08-25 15:04:32.622 Connected to database 'mythconverg' at host: localhost + 2007-08-25 15:04:32.623 sourceid 2 has lineup type: CableDigital + 2007-08-25 15:04:33.418 DataDirect: Adding channel 41 'AMC' (AMC). + 2007-08-25 15:04:33.422 DataDirect: Adding channel 32 'A & E Network' (AETV). + 2007-08-25 15:04:33.425 DataDirect: Adding channel 66 'Black Entertainment Television' (BET). + 2007-08-25 15:04:33.427 DataDirect: Adding channel 180 'Bravo' (BRAVO). + 2007-08-25 15:04:33.430 DataDirect: Adding channel 51 'ABC Family' (FAM). + 2007-08-25 15:04:33.432 DataDirect: Adding channel 146 'Country Music Television' (CMTV). + 2007-08-25 15:04:33.435 DataDirect: Adding channel 39 'CNBC' (CNBC). + 2007-08-25 15:04:33.437 DataDirect: Adding channel 36 'Cable News Network' (CNN). + 2007-08-25 15:04:33.440 DataDirect: Adding channel 35 'CNN Headline News' (CNNH). + + + + Repeat the Input Connection configuration for any other capture + devices that are connected directly to the CATV system. You do not + need to click Fetch once you've done one successful download of the + channel information - the Starting channel should be automatically + populated. + + + Go back to Schedules Direct and re-enable the channels that you had + previously deselected, then click Save Changes. + + Create a new Video Source, here called "SD-All Digital Channels". + Perform the same "Retrieve Listings" you did before. + + Go back to the Input Connections screen, select the PVR-250 which is + connected to the STB, assign the "SD-All Digital Channels" video + source and perform a retrieve channels. This will pull down the + complete channel listing, but only for this device. + + When mythfilldatabase runs, it will cache the "big" download which is + appropriate for the STB, and then copy the information to the channels + that can only be accessed without the STB. But by default + mythfilldatabase is going to notice that the "Analog only" video + source is missing the channels that are in the Digital lineup you + created at Schedules Direct, so we need to override the addition of + new channels. + + When you run mythfilldatabase to populate your database, you'll need + to run it like this: + + + + $ mythfilldatabase --remove-new-channels + + + + You will also need to modify how the mythbackend calls + mythfilldatabase when it performs its automatic listings update. + + In mythfrontend, select "Setup" -> "General". + + Continue press ENTER until you reach the Mythfilldatabase + configuration screen. In the "mythfilldatabase Arguments" field, type + --remove-new-channels + + then press the TAB key until you reach Finish, then press ENTER to + save. You can then press ESC until you return to the main screen. + + + diff --git a/abs/core-testing/local-website/htdocs/mythtv-doc/stop.eps b/abs/core-testing/local-website/htdocs/mythtv-doc/stop.eps new file mode 100644 index 0000000..534208a --- /dev/null +++ b/abs/core-testing/local-website/htdocs/mythtv-doc/stop.eps @@ -0,0 +1,103 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: tiff2ps +%%Title: stop.tif +%%CreationDate: Tue Feb 24 10:42:00 2004 +%%DocumentData: Clean7Bit +%%Origin: 0 0 +%%BoundingBox: 0 0 19 19 +%%LanguageLevel: 1 +%%Pages: (atend) +%%EndComments +%%BeginSetup +%%EndSetup +%%Page: 1 1 +gsave +100 dict begin +18.750000 18.750000 scale +/bwproc { + rgbproc + dup length 3 idiv string 0 3 0 + 5 -1 roll { + add 2 1 roll 1 sub dup 0 eq { + pop 3 idiv + 3 -1 roll + dup 4 -1 roll + dup 3 1 roll + 5 -1 roll put + 1 add 3 0 + } { 2 1 roll } ifelse + } forall + pop pop pop +} def +/colorimage where {pop} { + /colorimage {pop pop /rgbproc exch def {bwproc} image} bind def +} ifelse +%ImageData: 25 25 8 3 0 1 2 "false 3 colorimage" +/line 75 string def +25 25 8 +[25 0 0 -25 0 25] +{currentfile line readhexstring pop} bind +false 3 colorimage +ffffffffffffffffffffffffffffffffffffffffffffc3c3ff9f9fff9f9fff9f9f +ff9f9fff9f9fff9f9fff9f9fff9f9fff9f9fffb7b7ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffbcbcffc1c1 +ffbfbfffbfbfffbfbfffbfbfffbfbfffbfbfffbfbfffbfbfffbfbfffc7c7ffabab +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffbcbcffc1c1ff3030ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000 +ff0000ff2020ffbfbfffababffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffbcbcffc1c1ff3030ff0000ff0000ff0000ff0000ff0000ff0000 +ff0000ff0000ff0000ff0000ff0000ff2020ffbfbfffababffffffffffffffffff +ffffffffffffffffffffffffffbcbcffc1c1ff3030ff0000ff0000ff0000ff0000 +ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff2020ffbfbf +ffababffffffffffffffffffffffffffffffffbcbcffc1c1ff3030ff0000ff0000 +ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000 +ff0000ff0000ff2020ffbfbfffababffffffffffffffffffffbcbcffc1c1ff3030 +ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000 +ff0000ff0000ff0000ff0000ff0000ff0000ff2020ffbfbfffababffffffffc3c3 +ffc1c1ff3030ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000 +ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff2020 +ffbfbfffb9b9ffafafff9f9fff0000ff3030ff4040ff4040ff3030ff2020ff4040 +ff4040ff4040ff4040ff0808ff0000ff3030ff4040ff1818ff0000ff0000ff1818 +ff4040ff3838ff0000ff8080ffbfbfffafafff9f9fff9797ffffffffffffffffff +ffbfbfff8080ffffffffffffffffffffffffff2020ffa7a7ffffffffffffffffff +ff4848ff3838ffffffffffffffffffffc7c7ff8080ffbfbfffafafff9f9ffff7f7 +ffe7e7ff5050ff4040ff3030ff2020ff4040ffffffffb7b7ff4040ff0808fff7f7 +ffd7d7ff7070ffffffff9f9fff9797ffffffff8787ffc7c7ffffffff8c8cffbfbf +ffafafff9f9fffffffffcfcfff4040ff0808ff0000ff0000ff0000ffffffff9f9f +ff0000ff0000ffffffff8080ff0000ffdfdfff9f9fff9f9fffffffff4040ffb7b7 +ffffffff9090ffbfbfffafafff9f9fffafaffffffffffffffff7f7ff5050ff0000 +ff0000ffffffff9f9fff0000ff0000ffffffff8080ff0000ffdfdfff9f9fff9f9f +ffffffffffffffffffffdfdfff8080ffbfbfffafafff9f9fff0808ff6060ff8f8f +ffffffffb7b7ff0000ff0000ffffffff9f9fff0000ff0000ffffffff8080ff0000 +ffdfdfff9f9fff9f9fffffffff8080ff7070ff1818ff8080ffbfbfffafafff9f9f +ff0000ff0000ff1818ffefefffbfbfff0000ff0000ffffffff9f9fff0000ff0000 +ffffffffb7b7ff2020fff7f7ff9f9fff9f9fffffffff0000ff0000ff0000ff8080 +ffbfbfffafafff9f9fffffffffffffffffffffffffff8f8fff0000ff0000ffffff +ff9f9fff0000ff0000ffcfcfffffffffffffffffffff7070ff9f9fffffffff0000 +ff0000ff0000ff8080ffbfbfffafafff9f9fff8080ff8080ff8080ff6868ff1010 +ff0000ff0000ff8080ff5050ff0000ff0000ff2828ff7878ff8080ff6868ff0808 +ff5050ff8080ff0000ff0000ff0000ff8080ffbfbfffaeaeffbfbfff0808ff0000 +ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000 +ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ffafafffb2b2ffffff +ffa3a3ffafafff0808ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000 +ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff9f9f +ff9c9cffffffffffffffffffffa3a3ffafafff0808ff0000ff0000ff0000ff0000 +ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000 +ff0000ff9f9fff9c9cffffffffffffffffffffffffffffffffa3a3ffafafff0808 +ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000 +ff0000ff0000ff0000ff9f9fff9c9cffffffffffffffffffffffffffffffffffff +ffffffffa3a3ffafafff0808ff0000ff0000ff0000ff0000ff0000ff0000ff0000 +ff0000ff0000ff0000ff0000ff0000ff9f9fff9c9cffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffa3a3ffafafff0808ff0000ff0000ff0000 +ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff9f9fff9c9cffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffa3a3ffb7b7 +ff8080ff8080ff8080ff8080ff8080ff8080ff8080ff8080ff8080ffafafff9c9c +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffb7b7ffbfbfffbfbfffbfbfffbfbfffbfbfffbfbfffbfbfffbfbf +ffbfbfffb2b2ffffffffffffffffffffffffffffffffffffffffff +end +grestore +showpage +%%Trailer +%%Pages: 1 +%%EOF diff --git a/abs/core-testing/local-website/htdocs/mythtv-doc/stop.png b/abs/core-testing/local-website/htdocs/mythtv-doc/stop.png new file mode 100644 index 0000000..bf24d76 Binary files /dev/null and b/abs/core-testing/local-website/htdocs/mythtv-doc/stop.png differ diff --git a/abs/core-testing/local-website/htdocs/mythtv-doc/warning.eps b/abs/core-testing/local-website/htdocs/mythtv-doc/warning.eps new file mode 100644 index 0000000..e9bf928 --- /dev/null +++ b/abs/core-testing/local-website/htdocs/mythtv-doc/warning.eps @@ -0,0 +1,134 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: tiff2ps +%%Title: warning.tif +%%CreationDate: Tue Feb 24 11:06:30 2004 +%%DocumentData: Clean7Bit +%%Origin: 0 0 +%%BoundingBox: 0 0 24 24 +%%LanguageLevel: 1 +%%Pages: (atend) +%%EndComments +%%BeginSetup +%%EndSetup +%%Page: 1 1 +gsave +100 dict begin +23.250000 23.250000 scale +/bwproc { + rgbproc + dup length 3 idiv string 0 3 0 + 5 -1 roll { + add 2 1 roll 1 sub dup 0 eq { + pop 3 idiv + 3 -1 roll + dup 4 -1 roll + dup 3 1 roll + 5 -1 roll put + 1 add 3 0 + } { 2 1 roll } ifelse + } forall + pop pop pop +} def +/colorimage where {pop} { + /colorimage {pop pop /rgbproc exch def {bwproc} image} bind def +} ifelse +%ImageData: 31 31 8 3 0 1 2 "false 3 colorimage" +/line 93 string def +31 31 8 +[31 0 0 -31 0 31] +{currentfile line readhexstring pop} bind +false 3 colorimage +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffff8ffffdcffffbaffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4 +ffff7affff10ffff27fcfcc1f7f7f9fdfdffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffff9feff92fcfe03ffff00 +ffff03f1f116b4b48dcbcbefffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffcffcf739e4dd01ffff28ffff21fefe00 +b3b315757595cecef6ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffff9ffffa3f9e601ffe40dffff4cffff3bffff04f5f51146464a +7e7ed4fefef8ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fafacff9fa38e6e400ffff07ffff1affff34ffff19ffff0096962b5f5f8ecfcfe9 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffff7efee94ece800 +f5ff00ffff12ffff14ffff1bffff1cffff00f7f7004343538282eafcfcf9ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffed5fffa38e2de00e7f606ffff0a +fffd00fffc16ffff1dffff07ffff008d8d2b61618ad5d5defffffcffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffff7ffffa9e6dc00e5f208fde21fd1d1199f8a009e8700 +d7d71effff1affff00dbdd004b4a559a9ddcfaf9f6ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffff8d2fcf82ed7e200fffa0ec9cc182c2c000000060000104b4d23e8eb27 +fff706fffc008b8e325e4e9dd5ddf4ffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfdf4a7 +eedc00e8e609fff40e9396000000080b0023080046231742c1b82afff01afff608 +dde3114a2d479dabe9f8fdfeffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffae1fff951d5ca00ffe90d +ffff169494000000181200340b004522114ec2af0fffff1efff019ffff008b9134 +5a5a96e5d2f2ffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffdfcf7a7e9d400e9ef00ffff06ffff0fa9ab00 +0c111405004312003c3d3324cbcf0cffff22ffe816ffe300dfde10474a49bda3ea +fbf9feffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffae3fff84ce8d200ffef0affff21ffff17e4d6004a3b120a0551 +2e1365706020e7eb00ffff13ffff1cffec0affff008c8f36404391dedef3ffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc +fbf9a8eecb00ffd000ffeb09fff615ffed00fff200695a1112055b342a738c9624 +fcf300fff400ffff27fff017ffe300e3e10f2f304cb0b0e7fbfbfeffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffff9e4fff747d3c700 +ffdb0bfff915ffe000ffee00fdfe0084750a362a84563389a89c0cfff900ffde00 +fff411ffee1dffc80afffd008f97365755a3e8e7fbffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffdf9f8a7e7ca00edd200fff107ffed15 +ffda00fff800fff000a79a0d1822724e4064cbbc05fff400ffe300ffe200fff625 +ffef16ffe600e4c80c2e4365aeb9f0fcf9ffffffffffffffffffffffffffffffff +fffffffffffffffffffffae7fff240d4ca00ffdc0afff818ffe500ffe800ffe000 +fff800c7bd14190655464e30eef800ffe200ffeb00ffe100ffe727ffff13ffd800 +ffe9007870364b4a86e8e8f1ffffffffffffffffffffffffffffffffffffffffff +fffffcf7f9a4e1cc00f0c800ffdb05fff213ffcb00ffe900ffe500fff000f4da07 +4c294763593dfee700ffe900ffe700ffcd00ffee0fffff1fffd708ffdc00ebd30d +4d4753a2a4d1fafafdfffffffffffffffffffffffffffffffffffffffaf0ffec56 +efcd00ffd40affe81bffe600ffe100ffcb00ffea00ffe900f9db006060247d602a +ffea00ffe900ffea00ffd400ffd300fff528fff22dffcf08ffff0072773a5655ae +ececfbfffffffffffffffffffffffffffffffffffcf9faaae7cc0affc800ffdb03 +fff611ffc900ffea00ffe100ffcc00ffe900fce600bd981cc5ad1efff400ffcf00 +ffd200ffee00ffd400ffed0cffff33ffd80fffd700d9d70b424566a2a2d6fbfafe +fffffffffffffffffffffffffffaeaffe730d4ce00ffd309ffeb1dffe400ffe500 +ffcc00ffea00ffde00ffdf00ffff00fff507ffed08ffee00ffd800ffdd00ffe900 +ffd000ffd300fff50bfff321ffd00affe000918e38595ba8eaeafbffffffffffff +fffffffffffcf9f3a3e1ad01f3c900ffdb03fff80effce00ffd900ffc700ffcd00 +ffea12ffe7179e85114a4e12504b0fc3a412fff800ffea00ffcd00ffc800ffc700 +fff100ffff2affd710ffc700edc40a4a4468a0a1d4fafafefffffffffffffffcf1 +fcdb4ad8c402ffca09ffce1fffd700ffc800ffd80effe71effd700fff707b1a509 +131606000006000017403c32d3bc10ffd500ffe500ffdd00ffc800ffd400fff729 +fff50effd400ffce006e88355761adedebfbfffffffffffff9fbc6e0d00ff6cd00 +ffd603ffec0cffc800ffcb00ffd105ffd60bffce00fff70091930000000c12153c +250e56301e64bcbb2affe600ffd300ffd200ffcb00ffc900ffd209fff923dfda0b +f9cc00dfc1072b296bbebfd4fffffffffdf7fdd172f4b005dfca00ffd000ffd500 +ffd800ffed00ffc700ffda00ffe800ffdb00ac9414040a180c052e5d40bba184b7 +e4d524ffec00ffc300ffe800ffdd00ffc900ffc800fff409f4da04fdcc00ffcd00 +6a615b5052a2f0f0fafffbf0facb39e1c603f4cb00ffcc00f4c900e0cf00f3d600 +e0cb00ffd100eed500e2c900f2dd06b3a4135f46478c776eecb937fed205ffd100 +e3cb00edd400ffd100e0cb00f2cc00ffd300e0cf00f7cd00ffce009c73341c1772 +bfc2d0fffbf4f9cb5cd7ab06d5aa00d4c500dfa100efaf00e0bf00efb000d2be00 +e4b000edbb00d4ba00edd700f0bf0df2c606ebb300d4bb00d3b300edbd00e5b100 +d2be00efb200e1c100d3ac00f1c200e3b000f4c4005b6e4d2d34709997c3fffffe +fef3dcf3c834d1c40bc09500c49b01cab501c59601ca9301c19701c69301c99601 +c19101c79a00d19e00cf9a00c7af00c1ac01c19101c99601c69401c19401cab401 +c5a501c18f01cc9701e9b6018778282a145e1d3977b79ac8fffffffffffffffce9 +bbbbac534b6c4d49654c4f664f47664c49664f47664d49664e47664e4b664e4766 +4c47664d46664e4d664e4c664f48664d47664e49664e47664e4f664d4966504966 +4d4865544f671d1d8f342d766c709defeaf3fffffffffffffffffff1f3ffc0b6ee +b4a0cd9db2cab1a1caa0b2caafa2caa2b0caada2caa4c6caaba9caa7a8caa8aaca +a9aacaa6a7caacaecaa3a5caadafcaa1a3cab0b0ca9fa0cab2b4ca9d9fcab1b3cb +9c9dd1bbbcc9f3f2f3ffffff +end +grestore +showpage +%%Trailer +%%Pages: 1 +%%EOF diff --git a/abs/core-testing/local-website/htdocs/mythtv-doc/warning.png b/abs/core-testing/local-website/htdocs/mythtv-doc/warning.png new file mode 100644 index 0000000..b0c668b Binary files /dev/null and b/abs/core-testing/local-website/htdocs/mythtv-doc/warning.png differ diff --git a/abs/core-testing/local-website/htdocs/remote/COPYING b/abs/core-testing/local-website/htdocs/remote/COPYING new file mode 100644 index 0000000..caa0a06 --- /dev/null +++ b/abs/core-testing/local-website/htdocs/remote/COPYING @@ -0,0 +1,341 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) 19yy <name of author> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/abs/core-testing/local-website/htdocs/remote/CREDITS b/abs/core-testing/local-website/htdocs/remote/CREDITS new file mode 100644 index 0000000..7d959f8 --- /dev/null +++ b/abs/core-testing/local-website/htdocs/remote/CREDITS @@ -0,0 +1,11 @@ +Credits +------- + +Original concept - Steven Ellis <support@openmedia.co.nz> + +Initial base php code - Mike Poublon <poublon@geeksoft.dyndns.org> + +Original remote layout, core design and coding - Steven Ellis <support@openmedia.co.nz> + +CSS based layouts and IE support - Michael Lynch <lynchmv@gmail.com> +Additional PDA Layout - Michael Lynch <lynchmv@gmail.com> diff --git a/abs/core-testing/local-website/htdocs/remote/Changelog b/abs/core-testing/local-website/htdocs/remote/Changelog new file mode 100644 index 0000000..71172d9 --- /dev/null +++ b/abs/core-testing/local-website/htdocs/remote/Changelog @@ -0,0 +1,131 @@ +mythtv-web-remote (0.0.17) unstable; urgency=low + + * Remove old ie_hover.htc code as we no longer need it + * Tidy up style sheet + * Add stylesheet support for additional active buttons + * Rebuild all png files to optimise for size + * Generate new active png files for remaining buttons + * Redo index.html to point at new code + * Correct selected png files in gimp due to IE transparency issues + + -- OpenMedia Support <support@openmedia.co.nz> Sun, 17 Dec 2006 16:05:46 +1300 + +mythtv-web-remote (0.0.16) unstable; urgency=low + + * Merge of IE Fixes and new layout code so that we have IE roll over buttons + * For the moment we are still using a table based layout + + -- OpenMedia Support <support@openmedia.co.nz> Sun, 17 Dec 2006 14:04:37 +1300 + +mythtv-web-remote (0.0.15) unstable; urgency=low + + * Add apache configuration file remote.conf + * Fix IE roll over support on apache - AddType text/x-component .htc + + -- OpenMedia Support <support@openmedia.co.nz> Sun, 17 Dec 2006 13:41:28 +1300 + +mythtv-web-remote (0.0.14) unstable; urgency=low + + * Change host to work for myPVR + * Fix missing support for Record button + * Create a remote-wide.html based on remote.html and layout-wide.html + + -- OpenMedia Support <support@openmedia.co.nz> Sat, 16 Dec 2006 18:59:06 +1300 + +mythtv-web-remote (0.0.13) unstable; urgency=low + + * Extra work from Mike Poublon <poublon@geeksoft.dyndns.org> + * Support image based submit buttons under IE + * Seperate GUI and PHP code + + -- OpenMedia Support <support@openmedia.co.nz> Sat, 16 Dec 2006 18:46:10 +1300 + +mythtv-web-remote (0.0.12) unstable; urgency=low + + * Makefile needs to install csshover.htc + + -- OpenMedia Support <support@openmedia.co.nz> Sat, 16 Dec 2006 18:28:18 +1300 + +mythtv-web-remote (0.0.11) unstable; urgency=low + + * Update wide layout to use new buttons + * Wide layout is still table based at this stage + * Correct some of the submit buttons on the normal layour as they were + passing the wrong value + + -- OpenMedia Support <support@openmedia.co.nz> Sat, 16 Dec 2006 18:24:54 +1300 + +mythtv-web-remote (0.0.10) unstable; urgency=low + + * Merge changes from Michael Lynch <lynchmv@gmail.com> + * Better IE support in layout.html + * Additional layout for his PDA + * Some php rework + * Add CREDITS file to track changes + + -- OpenMedia Support <support@openmedia.co.nz> Sat, 16 Dec 2006 18:04:51 +1300 + +mythtv-web-remote (0.0.9) unstable; urgency=low + + * Add in README, COPYING, Issues and Changelog files + * First release to MythTV team + + -- OpenMedia Support <support@openmedia.co.nz> Tue, 12 Dec 2006 09:19:13 +1300 + +mythtv-web-remote (0.0.8) unstable; urgency=low + + * Make sure we enable the Network Control port when installing on myPVR + + -- OpenMedia Support <support@openmedia.co.nz> Mon, 4 Dec 2006 15:23:26 +1300 + +mythtv-web-remote (0.0.7) unstable; urgency=low + + * Add wide layout + + -- OpenMedia Support <support@openmedia.co.nz> Sun, 3 Dec 2006 11:43:47 +1300 + +mythtv-web-remote (0.0.6) unstable; urgency=low + + * Load new layout into remote.php + * Issues with IE because of use if submit images + + -- OpenMedia Support <support@openmedia.co.nz> Sun, 3 Dec 2006 11:28:47 +1300 + +mythtv-web-remote (0.0.5) unstable; urgency=low + + * Add wide layout + * Try and make layouts HTML standards compliant + * Can't make CSS standards compliant due to IE hacks + * Correct permissions on installed files + + -- OpenMedia Support <support@openmedia.co.nz> Sun, 3 Dec 2006 09:56:22 +1300 + +mythtv-web-remote (0.0.4) unstable; urgency=low + + * Limited button roll over support for IE + + -- OpenMedia Support <support@openmedia.co.nz> Sun, 3 Dec 2006 09:18:51 +1300 + +mythtv-web-remote (0.0.3) unstable; urgency=low + + * Setup index.html holder + * Rename php remote file + * More tidy ups of layout file + * Add remote.css to install + + -- OpenMedia Support <support@openmedia.co.nz> Mon, 27 Nov 2006 23:05:58 +1300 + +mythtv-web-remote (0.0.2) unstable; urgency=low + + * Update layout + * Add stylesheet remote.css + * Additional images for roll over graphics + + -- OpenMedia Support <support@openmedia.co.nz> Mon, 27 Nov 2006 22:40:33 +1300 + +mythtv-web-remote (0.0.1) unstable; urgency=low + + * Initial version of the mythtv-web-remote + * This is a web based virtual remote control for MythTV + + -- OpenMedia Support <support@openmedia.co.nz> Sun, 26 Nov 2006 11:57:33 +1300 diff --git a/abs/core-testing/local-website/htdocs/remote/Issues b/abs/core-testing/local-website/htdocs/remote/Issues new file mode 100644 index 0000000..95f808f --- /dev/null +++ b/abs/core-testing/local-website/htdocs/remote/Issues @@ -0,0 +1,18 @@ +MythTV Web Remote ISSUES +------------------------ + +Limited IE Support +------------------ +At present the roll overs don't work very well in IE. Also the way the icons +are mapped as submit buttons needs modification as in IE it submits the image +co-ordinates rather than the value + +Rapid Clicking can cause mythfrontend to freeze +----------------------------------------------- +Possible an issue with the telnet control interface. If a user clicks too +rapidly it can cause the front end to lock up, requiring a restart of the GUI. + +Roll Over images required for remaining buttons +----------------------------------------------- +At present only the number and text buttons have rollover and click alternate +images diff --git a/abs/core-testing/local-website/htdocs/remote/README b/abs/core-testing/local-website/htdocs/remote/README new file mode 100644 index 0000000..ecc4797 --- /dev/null +++ b/abs/core-testing/local-website/htdocs/remote/README @@ -0,0 +1,43 @@ +MythWeb Remote - Version 0.0.9 +-------------- + +This has been designed to improve MythTV access for people with certain forms +of disability. It has two web based interfaces that are based on the Hauppauge +MCE Remote control with its additional fast access hotkeys. + +For more details on how the hotkeys are mapped see + http://openmedia.co.nz/openmedia/content/view/27/58/ + +All html/php/css code is released under GPL V2, and all images under +Creative Commons (http://web.resource.org/cc/PublicDomain) as they are based on +the Etiquette Icons by Andy Fitzsimon, see - + http://openclipart.org/clipart/computer/buttons/b_down.txt + + +Installing +---------- +In order to use this install as a directory called "remote" under your web +document root. You should then be able to access it as + http://mythtv/remote +You will also need to enable the Network Control port for the MythTV frontend +for the controls to work. + + +See COPYING for details on the GPL V2 license. + +See ISSUES for outstanding problems + +See Changelog for recent changes + +GPL 2.0 Components +------------------ +Original php code (c) 2006 Mike Poublon <poublon@geeksoft.dyndns.org> +Enhancements (c) 2006 Steven Ellis <support@openmedia.co.nz> +CSS (c) 2006 Steven Ellis <support@openmedia.co.nz> +Remote Layouts (c) 2006 Steven Ellis <support@openmedia.co.nz> + +Creative Commons +---------------- +Original image design (c) Andy Fitzsimon +Final buttom images (c) 2006 Steven Ellis <support@openmedia.co.nz> + diff --git a/abs/core-testing/local-website/htdocs/remote/backend.php b/abs/core-testing/local-website/htdocs/remote/backend.php new file mode 100644 index 0000000..530d220 --- /dev/null +++ b/abs/core-testing/local-website/htdocs/remote/backend.php @@ -0,0 +1,168 @@ +<? +# +# Original code (c) 2006 Mike Poublon <poublon@geeksoft.dyndns.org> +# +# Enhancements (c) 2006 Steven Ellis <support@openmedia.co.nz> and +# (c) 2006 Mike Poublon <poublon@geeksoft.dyndns.org> +# + +#change the line below that has localhost pointing to the address of your frontend. +$HOSTNAME = "localhost"; + +$submit = $_POST['submit']; + +#workaround for IE's image button wierdness +if ( $submit == "" ) +{ + $submit = $_POST['buttonvalue']; +} + +#if we aren't being posted to, then don't do anything useful +if ( $submit == "" ) +{ + echo "Sorry, this file is meant to be called by one of the frontend "; + echo "pages, please try using one of them instead."; + exit(); +} + +# We set jump when we want to perform more complex commands +$jump=""; + +if ($submit == "Power"){ + #Power - not really used yet + $key = ""; +} else if ($submit == "TV"){ + $jump = "livetv"; +} else if ($submit == "Music"){ + $jump = "playmusic"; +} else if ($submit == "Video"){ + $jump = "mythvideo"; +} else if ($submit == "Recordings"){ + $jump = "playbackrecordings"; +} else if ($submit == "Guide"){ + $jump = "programguide"; +} else if ($submit == "Pictures"){ + $jump = "mythgallery"; +} else if ($submit == "Back") { + $key = "escape"; +} else if ($submit == "Info") { + $key = "i"; +} else if ($submit == "Menu") { + #Menu + $key = "m"; +} else if ($submit == "U") { + $key = "up"; +} else if ($submit == "L") { + $key = "left"; +} else if ($submit == "D") { + $key = "down"; +} else if ($submit == "R") { + $key = "right"; +} else if ($submit == "OK") { + $key = "enter"; +} else if ($submit == "Page Up") { + $key = "pageup"; +} else if ($submit == "Page Dn") { + $key = "pagedown"; +} else if ($submit == "Vol Up") { + $key = "bracketright"; +} else if ($submit == "Vol Dn") { + $key = "bracketleft"; +} else if ($submit == "Mute") { + $key = "f9"; +} else if ($submit == "Pause") { + $key = "p"; +} else if ($submit == "Stop") { + $key = "s"; +} else if ($submit == "Play") { + $key = "p"; +} else if ($submit == "Rec") { + $key = "r"; +} else if ($submit == "<<") { + $key = "left"; +} else if ($submit == ">>") { + $key = "right"; +} else if ($submit == "|<") { + #skip commercial back + $key = "q"; +} else if ($submit == ">|") { + #skip commercial + $key = "z"; +# Special keys used by myPVR +} else if ($submit == "#") { + # Change tuner + $key = "y"; +} else if ($submit == "*") { + #skip commercial + $key = "z"; +} else if ($submit == "0" || + $submit == "1" || + $submit == "2" || + $submit == "3" || + $submit == "4" || + $submit == "5" || + $submit == "6" || + $submit == "7" || + $submit == "8" || + $submit == "9" ) { + $key = $submit; +} + +#set the maximum time to execute the page +set_time_limit (5); + +#open the socket to the frontend +$fp = fsockopen($HOSTNAME, 6546, $errno, $errstr, 30); + +if (!$fp) { + #couldn't connect, print the error + echo "ERROR: $errstr ($errno)<br />\n"; + exit(); +} else { + #set up a place for the banner to get read into + $banner = ""; + + #read through the banner, one char at a time and append + #to the banner string until we see a '#' + $c = fgetc($fp); + while ($c !== false && $c != "#") + { + $banner .= $c; + $c = fgetc($fp); + } + if ($c !== false) + { + #if the connection is still valid then read + #in the extra space after the # + $c = fgetc($fp); + } + + #create the command to issue to the frontend based + #on what the user clicked on + if ($jump != "") { + $cmd = "jump $jump\x0d\x0a"; + $jump=""; + } else { + $cmd = "key $key\x0d\x0a"; + } + + #write the command to the socket + fwrite($fp,$cmd); + + #close the socket + fclose($fp); + + #get the specified page to redirect to + $redirectpage = $_POST['redirectpage']; + if ( $redirectpage == "" ) + { + #use the refering page if all else fails + $redirectpage = getenv('HTTP_REFERER'); + } + + #redirect to the desired location + header( "Location: $redirectpage" ); +} + +?> + diff --git a/abs/core-testing/local-website/htdocs/remote/csshover.htc b/abs/core-testing/local-website/htdocs/remote/csshover.htc new file mode 100644 index 0000000..f6e8f3c --- /dev/null +++ b/abs/core-testing/local-website/htdocs/remote/csshover.htc @@ -0,0 +1,120 @@ +<attach event="ondocumentready" handler="parseStylesheets" /> +<script> +/** + * Whatever:hover - V1.42.060206 - hover & active + * ------------------------------------------------------------ + * (c) 2005 - Peter Nederlof + * Peterned - http://www.xs4all.nl/~peterned/ + * License - http://creativecommons.org/licenses/LGPL/2.1/ + * + * Whatever:hover is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Whatever:hover is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * Credits and thanks to: + * Arnoud Berendsen, Martin Reurings, Robert Hanson + * + * howto: body { behavior:url("csshover.htc"); } + * ------------------------------------------------------------ + */ + +var csshoverReg = /(^|\s)(([^a]([^ ]+)?)|(a([^#.][^ ]+)+)):(hover|active)/i, +currentSheet, doc = window.document, hoverEvents = [], activators = { + onhover:{on:'onmouseover', off:'onmouseout'}, + onactive:{on:'onmousedown', off:'onmouseup'} +} + +function parseStylesheets() { + if(!/MSIE (5|6)/.test(navigator.userAgent)) return; + window.attachEvent('onunload', unhookHoverEvents); + var sheets = doc.styleSheets, l = sheets.length; + for(var i=0; i<l; i++) + parseStylesheet(sheets[i]); +} + function parseStylesheet(sheet) { + if(sheet.imports) { + try { + var imports = sheet.imports, l = imports.length; + for(var i=0; i<l; i++) parseStylesheet(sheet.imports[i]); + } catch(securityException){} + } + + try { + var rules = (currentSheet = sheet).rules, l = rules.length; + for(var j=0; j<l; j++) parseCSSRule(rules[j]); + } catch(securityException){} + } + + function parseCSSRule(rule) { + var select = rule.selectorText, style = rule.style.cssText; + if(!csshoverReg.test(select) || !style) return; + + var pseudo = select.replace(/[^:]+:([a-z-]+).*/i, 'on$1'); + var newSelect = select.replace(/(\.([a-z0-9_-]+):[a-z]+)|(:[a-z]+)/gi, '.$2' + pseudo); + var className = (/\.([a-z0-9_-]*on(hover|active))/i).exec(newSelect)[1]; + var affected = select.replace(/:(hover|active).*$/, ''); + var elements = getElementsBySelect(affected); + if(elements.length == 0) return; + + currentSheet.addRule(newSelect, style); + for(var i=0; i<elements.length; i++) + new HoverElement(elements[i], className, activators[pseudo]); + } + +function HoverElement(node, className, events) { + if(!node.hovers) node.hovers = {}; + if(node.hovers[className]) return; + node.hovers[className] = true; + hookHoverEvent(node, events.on, function() { node.className += ' ' + className; }); + hookHoverEvent(node, events.off, function() { node.className = node.className.replace(new RegExp('\\s+'+className, 'g'),''); }); +} + function hookHoverEvent(node, type, handler) { + node.attachEvent(type, handler); + hoverEvents[hoverEvents.length] = { + node:node, type:type, handler:handler + }; + } + + function unhookHoverEvents() { + for(var e,i=0; i<hoverEvents.length; i++) { + e = hoverEvents[i]; + e.node.detachEvent(e.type, e.handler); + } + } + +function getElementsBySelect(rule) { + var parts, nodes = [doc]; + parts = rule.split(' '); + for(var i=0; i<parts.length; i++) { + nodes = getSelectedNodes(parts[i], nodes); + } return nodes; +} + function getSelectedNodes(select, elements) { + var result, node, nodes = []; + var identify = (/\#([a-z0-9_-]+)/i).exec(select); + if(identify) { + var element = doc.getElementById(identify[1]); + return element? [element]:nodes; + } + + var classname = (/\.([a-z0-9_-]+)/i).exec(select); + var tagName = select.replace(/(\.|\#|\:)[a-z0-9_-]+/i, ''); + var classReg = classname? new RegExp('\\b' + classname[1] + '\\b'):false; + for(var i=0; i<elements.length; i++) { + result = tagName? elements[i].all.tags(tagName):elements[i].all; + for(var j=0; j<result.length; j++) { + node = result[j]; + if(classReg && !classReg.test(node.className)) continue; + nodes[nodes.length] = node; + } + } + + return nodes; + } +</script> diff --git a/abs/core-testing/local-website/htdocs/remote/images/blank.gif b/abs/core-testing/local-website/htdocs/remote/images/blank.gif new file mode 100644 index 0000000..35d42e8 Binary files /dev/null and b/abs/core-testing/local-website/htdocs/remote/images/blank.gif differ diff --git a/abs/core-testing/local-website/htdocs/remote/images/button_30.png b/abs/core-testing/local-website/htdocs/remote/images/button_30.png new file mode 100644 index 0000000..198b062 Binary files /dev/null and b/abs/core-testing/local-website/htdocs/remote/images/button_30.png differ diff --git a/abs/core-testing/local-website/htdocs/remote/images/button_30g.png b/abs/core-testing/local-website/htdocs/remote/images/button_30g.png new file mode 100644 index 0000000..19166b2 Binary files /dev/null and b/abs/core-testing/local-website/htdocs/remote/images/button_30g.png differ diff --git a/abs/core-testing/local-website/htdocs/remote/images/button_30r.png b/abs/core-testing/local-website/htdocs/remote/images/button_30r.png new file mode 100644 index 0000000..3411381 Binary files /dev/null and b/abs/core-testing/local-website/htdocs/remote/images/button_30r.png differ diff --git a/abs/core-testing/local-website/htdocs/remote/images/button_text.png b/abs/core-testing/local-website/htdocs/remote/images/button_text.png new file mode 100644 index 0000000..2976a2d Binary files /dev/null and b/abs/core-testing/local-website/htdocs/remote/images/button_text.png differ diff --git a/abs/core-testing/local-website/htdocs/remote/images/button_textg.png b/abs/core-testing/local-website/htdocs/remote/images/button_textg.png new file mode 100644 index 0000000..6f2146c Binary files /dev/null and b/abs/core-testing/local-website/htdocs/remote/images/button_textg.png differ diff --git a/abs/core-testing/local-website/htdocs/remote/images/button_textr.png b/abs/core-testing/local-website/htdocs/remote/images/button_textr.png new file mode 100644 index 0000000..02b5738 Binary files /dev/null and b/abs/core-testing/local-website/htdocs/remote/images/button_textr.png differ diff --git a/abs/core-testing/local-website/htdocs/remote/images/down.png b/abs/core-testing/local-website/htdocs/remote/images/down.png new file mode 100644 index 0000000..335f28c Binary files /dev/null and b/abs/core-testing/local-website/htdocs/remote/images/down.png differ diff --git a/abs/core-testing/local-website/htdocs/remote/images/down_g.png b/abs/core-testing/local-website/htdocs/remote/images/down_g.png new file mode 100644 index 0000000..5d31913 Binary files /dev/null and b/abs/core-testing/local-website/htdocs/remote/images/down_g.png differ diff --git a/abs/core-testing/local-website/htdocs/remote/images/down_r.png b/abs/core-testing/local-website/htdocs/remote/images/down_r.png new file mode 100644 index 0000000..00cde0b Binary files /dev/null and b/abs/core-testing/local-website/htdocs/remote/images/down_r.png differ diff --git a/abs/core-testing/local-website/htdocs/remote/images/fast_forward.png b/abs/core-testing/local-website/htdocs/remote/images/fast_forward.png new file mode 100644 index 0000000..6563f92 Binary files /dev/null and b/abs/core-testing/local-website/htdocs/remote/images/fast_forward.png differ diff --git a/abs/core-testing/local-website/htdocs/remote/images/fast_forward_g.png b/abs/core-testing/local-website/htdocs/remote/images/fast_forward_g.png new file mode 100644 index 0000000..f608095 Binary files /dev/null and b/abs/core-testing/local-website/htdocs/remote/images/fast_forward_g.png differ diff --git a/abs/core-testing/local-website/htdocs/remote/images/fast_forward_r.png b/abs/core-testing/local-website/htdocs/remote/images/fast_forward_r.png new file mode 100644 index 0000000..9c71739 Binary files /dev/null and b/abs/core-testing/local-website/htdocs/remote/images/fast_forward_r.png differ diff --git a/abs/core-testing/local-website/htdocs/remote/images/fast_rewind.png b/abs/core-testing/local-website/htdocs/remote/images/fast_rewind.png new file mode 100644 index 0000000..6daf86c Binary files /dev/null and b/abs/core-testing/local-website/htdocs/remote/images/fast_rewind.png differ diff --git a/abs/core-testing/local-website/htdocs/remote/images/fast_rewind_g.png b/abs/core-testing/local-website/htdocs/remote/images/fast_rewind_g.png new file mode 100644 index 0000000..a7ba769 Binary files /dev/null and b/abs/core-testing/local-website/htdocs/remote/images/fast_rewind_g.png differ diff --git a/abs/core-testing/local-website/htdocs/remote/images/fast_rewind_r.png b/abs/core-testing/local-website/htdocs/remote/images/fast_rewind_r.png new file mode 100644 index 0000000..f8c1151 Binary files /dev/null and b/abs/core-testing/local-website/htdocs/remote/images/fast_rewind_r.png differ diff --git a/abs/core-testing/local-website/htdocs/remote/images/left.png b/abs/core-testing/local-website/htdocs/remote/images/left.png new file mode 100644 index 0000000..c9c4b72 Binary files /dev/null and b/abs/core-testing/local-website/htdocs/remote/images/left.png differ diff --git a/abs/core-testing/local-website/htdocs/remote/images/left_g.png b/abs/core-testing/local-website/htdocs/remote/images/left_g.png new file mode 100644 index 0000000..5e93269 Binary files /dev/null and b/abs/core-testing/local-website/htdocs/remote/images/left_g.png differ diff --git a/abs/core-testing/local-website/htdocs/remote/images/left_r.png b/abs/core-testing/local-website/htdocs/remote/images/left_r.png new file mode 100644 index 0000000..960ed9e Binary files /dev/null and b/abs/core-testing/local-website/htdocs/remote/images/left_r.png differ diff --git a/abs/core-testing/local-website/htdocs/remote/images/ok.png b/abs/core-testing/local-website/htdocs/remote/images/ok.png new file mode 100644 index 0000000..269099c Binary files /dev/null and b/abs/core-testing/local-website/htdocs/remote/images/ok.png differ diff --git a/abs/core-testing/local-website/htdocs/remote/images/ok_g.png b/abs/core-testing/local-website/htdocs/remote/images/ok_g.png new file mode 100644 index 0000000..73a0931 Binary files /dev/null and b/abs/core-testing/local-website/htdocs/remote/images/ok_g.png differ diff --git a/abs/core-testing/local-website/htdocs/remote/images/ok_r.png b/abs/core-testing/local-website/htdocs/remote/images/ok_r.png new file mode 100644 index 0000000..8b5473f Binary files /dev/null and b/abs/core-testing/local-website/htdocs/remote/images/ok_r.png differ diff --git a/abs/core-testing/local-website/htdocs/remote/images/pause.png b/abs/core-testing/local-website/htdocs/remote/images/pause.png new file mode 100644 index 0000000..12a1e0e Binary files /dev/null and b/abs/core-testing/local-website/htdocs/remote/images/pause.png differ diff --git a/abs/core-testing/local-website/htdocs/remote/images/pause_g.png b/abs/core-testing/local-website/htdocs/remote/images/pause_g.png new file mode 100644 index 0000000..720798c Binary files /dev/null and b/abs/core-testing/local-website/htdocs/remote/images/pause_g.png differ diff --git a/abs/core-testing/local-website/htdocs/remote/images/pause_r.png b/abs/core-testing/local-website/htdocs/remote/images/pause_r.png new file mode 100644 index 0000000..df9d032 Binary files /dev/null and b/abs/core-testing/local-website/htdocs/remote/images/pause_r.png differ diff --git a/abs/core-testing/local-website/htdocs/remote/images/rec.png b/abs/core-testing/local-website/htdocs/remote/images/rec.png new file mode 100644 index 0000000..8dddf07 Binary files /dev/null and b/abs/core-testing/local-website/htdocs/remote/images/rec.png differ diff --git a/abs/core-testing/local-website/htdocs/remote/images/rec_g.png b/abs/core-testing/local-website/htdocs/remote/images/rec_g.png new file mode 100644 index 0000000..1f29994 Binary files /dev/null and b/abs/core-testing/local-website/htdocs/remote/images/rec_g.png differ diff --git a/abs/core-testing/local-website/htdocs/remote/images/rec_r.png b/abs/core-testing/local-website/htdocs/remote/images/rec_r.png new file mode 100644 index 0000000..8263119 Binary files /dev/null and b/abs/core-testing/local-website/htdocs/remote/images/rec_r.png differ diff --git a/abs/core-testing/local-website/htdocs/remote/images/right.png b/abs/core-testing/local-website/htdocs/remote/images/right.png new file mode 100644 index 0000000..3c94d77 Binary files /dev/null and b/abs/core-testing/local-website/htdocs/remote/images/right.png differ diff --git a/abs/core-testing/local-website/htdocs/remote/images/right_g.png b/abs/core-testing/local-website/htdocs/remote/images/right_g.png new file mode 100644 index 0000000..3b48fd0 Binary files /dev/null and b/abs/core-testing/local-website/htdocs/remote/images/right_g.png differ diff --git a/abs/core-testing/local-website/htdocs/remote/images/right_r.png b/abs/core-testing/local-website/htdocs/remote/images/right_r.png new file mode 100644 index 0000000..707bccb Binary files /dev/null and b/abs/core-testing/local-website/htdocs/remote/images/right_r.png differ diff --git a/abs/core-testing/local-website/htdocs/remote/images/skip_back.png b/abs/core-testing/local-website/htdocs/remote/images/skip_back.png new file mode 100644 index 0000000..4708f76 Binary files /dev/null and b/abs/core-testing/local-website/htdocs/remote/images/skip_back.png differ diff --git a/abs/core-testing/local-website/htdocs/remote/images/skip_back_g.png b/abs/core-testing/local-website/htdocs/remote/images/skip_back_g.png new file mode 100644 index 0000000..d5654e7 Binary files /dev/null and b/abs/core-testing/local-website/htdocs/remote/images/skip_back_g.png differ diff --git a/abs/core-testing/local-website/htdocs/remote/images/skip_back_r.png b/abs/core-testing/local-website/htdocs/remote/images/skip_back_r.png new file mode 100644 index 0000000..52554b3 Binary files /dev/null and b/abs/core-testing/local-website/htdocs/remote/images/skip_back_r.png differ diff --git a/abs/core-testing/local-website/htdocs/remote/images/skip_forward.png b/abs/core-testing/local-website/htdocs/remote/images/skip_forward.png new file mode 100644 index 0000000..4103f16 Binary files /dev/null and b/abs/core-testing/local-website/htdocs/remote/images/skip_forward.png differ diff --git a/abs/core-testing/local-website/htdocs/remote/images/skip_forward_g.png b/abs/core-testing/local-website/htdocs/remote/images/skip_forward_g.png new file mode 100644 index 0000000..af37f40 Binary files /dev/null and b/abs/core-testing/local-website/htdocs/remote/images/skip_forward_g.png differ diff --git a/abs/core-testing/local-website/htdocs/remote/images/skip_forward_r.png b/abs/core-testing/local-website/htdocs/remote/images/skip_forward_r.png new file mode 100644 index 0000000..bd464ac Binary files /dev/null and b/abs/core-testing/local-website/htdocs/remote/images/skip_forward_r.png differ diff --git a/abs/core-testing/local-website/htdocs/remote/images/stop.png b/abs/core-testing/local-website/htdocs/remote/images/stop.png new file mode 100644 index 0000000..0b10429 Binary files /dev/null and b/abs/core-testing/local-website/htdocs/remote/images/stop.png differ diff --git a/abs/core-testing/local-website/htdocs/remote/images/stop_g.png b/abs/core-testing/local-website/htdocs/remote/images/stop_g.png new file mode 100644 index 0000000..9f317f7 Binary files /dev/null and b/abs/core-testing/local-website/htdocs/remote/images/stop_g.png differ diff --git a/abs/core-testing/local-website/htdocs/remote/images/stop_r.png b/abs/core-testing/local-website/htdocs/remote/images/stop_r.png new file mode 100644 index 0000000..e53f0f4 Binary files /dev/null and b/abs/core-testing/local-website/htdocs/remote/images/stop_r.png differ diff --git a/abs/core-testing/local-website/htdocs/remote/images/up.png b/abs/core-testing/local-website/htdocs/remote/images/up.png new file mode 100644 index 0000000..42f5d67 Binary files /dev/null and b/abs/core-testing/local-website/htdocs/remote/images/up.png differ diff --git a/abs/core-testing/local-website/htdocs/remote/images/up_g.png b/abs/core-testing/local-website/htdocs/remote/images/up_g.png new file mode 100644 index 0000000..d944b71 Binary files /dev/null and b/abs/core-testing/local-website/htdocs/remote/images/up_g.png differ diff --git a/abs/core-testing/local-website/htdocs/remote/images/up_r.png b/abs/core-testing/local-website/htdocs/remote/images/up_r.png new file mode 100644 index 0000000..f8a7d16 Binary files /dev/null and b/abs/core-testing/local-website/htdocs/remote/images/up_r.png differ diff --git a/abs/core-testing/local-website/htdocs/remote/inc/process.php b/abs/core-testing/local-website/htdocs/remote/inc/process.php new file mode 100644 index 0000000..b71719b --- /dev/null +++ b/abs/core-testing/local-website/htdocs/remote/inc/process.php @@ -0,0 +1,131 @@ +<?php +# +# Original code (c) 2006 Mike Poublon <poublon@geeksoft.dyndns.org> +# +# Enhancements (c) 2006 Steven Ellis <support@openmedia.co.nz> +# +#change the line below that has tv.local to the address of your frontend. + +#echo time() . "<br>"; +if(isset($_POST['submit'])){ + $submit = $_POST['submit']; + #echo "form submitted = $submit<br>"; + + # We set jump when we want to perform more complex commands + $jump=""; + + if ($submit == "Power"){ + #Power - not really used yet + $key = ""; + } else if ($submit == "TV"){ + $jump = "livetv"; + } else if ($submit == "Music"){ + $jump = "playmusic"; + } else if ($submit == "Video" || $submit == "Videos"){ + $jump = "mythvideo"; + } else if ($submit == "Recordings" || $submit == "Recorded"){ + $jump = "playbackrecordings"; + } else if ($submit == "Guide"){ + $jump = "programguide"; + } else if ($submit == "Pictures"){ + $jump = "mythgallery"; + } else if ($submit == "Back" || $submit == "Clear") { + $key = "escape"; + } else if ($submit == "Info") { + $key = "i"; + } else if ($submit == "Menu") { + #Menu + $key = "m"; + } else if ($submit == "U" || $submit == "^") { + $key = "up"; + } else if ($submit == "L" || $submit == "<") { + $key = "left"; + } else if ($submit == "D" || $submit == "v") { + $key = "down"; + } else if ($submit == "R" || $submit == ">") { + $key = "right"; + } else if ($submit == "OK" || $submit == "Enter") { + $key = "enter"; + } else if ($submit == "Page Up" || $submit == "Chan Up") { + $key = "pageup"; + } else if ($submit == "Page Dn" || $submit == "Chan Dn") { + $key = "pagedown"; + } else if ($submit == "Vol Up") { + $key = "bracketright"; + } else if ($submit == "Vol Dn") { + $key = "bracketleft"; + } else if ($submit == "Mute") { + $key = "f9"; + } else if ($submit == "Pause") { + $key = "p"; + } else if ($submit == "Stop") { + $key = "s"; + } else if ($submit == "Rec") { + $key = "r"; + } else if ($submit == "Play") { + $key = "p"; + } else if ($submit == "<<") { + $key = "left"; + } else if ($submit == ">>") { + $key = "right"; + } else if ($submit == "|<") { + #skip commercial back + $key = "q"; + } else if ($submit == ">|") { + #skip commercial + $key = "z"; + # Special keys used by myPVR + } else if ($submit == "#") { + # Change tuner + $key = "y"; + } else if ($submit == "*") { + #skip commercial + $key = "z"; + } else if ($submit == "0" || + $submit == "1" || + $submit == "2" || + $submit == "3" || + $submit == "4" || + $submit == "5" || + $submit == "6" || + $submit == "7" || + $submit == "8" || + $submit == "9" ) { + $key = $submit; + } + + set_time_limit (5); + # change tv.local to the hostname/address of your frontend + $fp = fsockopen("localhost", 6546, $errno, $errstr, 30); + if (!$fp) { + $error = "ERROR: $errstr ($errno)"; + } else { + #stream_set_timeout ( $fp, 0, 100000); + #$banner = stream_get_contents($fp); + + $banner = ""; + + $c = fgetc($fp); + while ($c !== false && $c != "#") { + #echo "c = $c<br>\n"; + $banner .= $c; + $c = fgetc($fp); + } + if ($c !== false) { + $c = fgetc($fp); #Read in the extra space after the # + } + + if ($jump != "") { + $cmd = "jump $jump\x0d\x0a"; + $jump=""; + } else { + $cmd = "key $key\x0d\x0a"; + } + fwrite($fp,$cmd); + $res = fgets($fp); + #echo "result = $res<br>\n"; + + fclose($fp); + } +} +?> diff --git a/abs/core-testing/local-website/htdocs/remote/index.html b/abs/core-testing/local-website/htdocs/remote/index.html new file mode 100644 index 0000000..35ff9e7 --- /dev/null +++ b/abs/core-testing/local-website/htdocs/remote/index.html @@ -0,0 +1,19 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> + +<head> + <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type" /> + + + <title>MythWeb Remote + + + + +Please click through for the vertical remote control.

    +Or click through for the horizontal remote control.
    +
    +There is now an initial PDA version of the layout
    + + + diff --git a/abs/core-testing/local-website/htdocs/remote/layout-wide.html b/abs/core-testing/local-website/htdocs/remote/layout-wide.html new file mode 100644 index 0000000..d534199 --- /dev/null +++ b/abs/core-testing/local-website/htdocs/remote/layout-wide.html @@ -0,0 +1,250 @@ + + + + + + Wide Remote Control + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
       
       
         
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
       
       
      
    + +
    + +
    + + + diff --git a/abs/core-testing/local-website/htdocs/remote/layout.html b/abs/core-testing/local-website/htdocs/remote/layout.html new file mode 100644 index 0000000..7e44ade --- /dev/null +++ b/abs/core-testing/local-website/htdocs/remote/layout.html @@ -0,0 +1,269 @@ + + + + + + Remote Control + + + + + + + + + +
    + + + +
    + +
    + + + + +
    +
    + +
    +
    + +
    +
    + +
    +
    + + + +
    +
    + +
    +
    + +
    +
    + +
    +
    + + + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + + + +
    +
    + +
    +
    + +
    +
    + +
    +
    + + + +
    +
    + +
    +
    + +
    +
    + +
    +
    + + + +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    + +
    +
    + +
    +
    + +
    +
    + + + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + + + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    + + + diff --git a/abs/core-testing/local-website/htdocs/remote/nav.php b/abs/core-testing/local-website/htdocs/remote/nav.php new file mode 100644 index 0000000..916bfa2 --- /dev/null +++ b/abs/core-testing/local-website/htdocs/remote/nav.php @@ -0,0 +1,57 @@ + + + + +MythTV Web Remote + + + + + +
    + +
    +
    + Main + Nav + Digits +
    +
    +
    + + + +
    + +
    + + + +
    + +
    + + + +
    + +
    + + + +
    + +
    + + + +
    + +
    +
    + +
    + + diff --git a/abs/core-testing/local-website/htdocs/remote/num.php b/abs/core-testing/local-website/htdocs/remote/num.php new file mode 100644 index 0000000..1665947 --- /dev/null +++ b/abs/core-testing/local-website/htdocs/remote/num.php @@ -0,0 +1,57 @@ + + + + +MythTV Web Remote + + + + + +
    + +
    +
    + Main + Nav + Digits +
    +
    +
    + + + +
    + +
    + + + +
    + +
    + + + +
    + +
    + + + +
    + +
    + + + +
    + +
    +
    + +
    + + diff --git a/abs/core-testing/local-website/htdocs/remote/pda.php b/abs/core-testing/local-website/htdocs/remote/pda.php new file mode 100644 index 0000000..888c966 --- /dev/null +++ b/abs/core-testing/local-website/htdocs/remote/pda.php @@ -0,0 +1,39 @@ + + + + +MythTV Web Remote + + + + + +
    + +
    +
    + Main + Nav + Digits +
    +
    +
    + + + +
    + +
    + + + +
    + +
    +
    + +
    + + diff --git a/abs/core-testing/local-website/htdocs/remote/remote-wide.html b/abs/core-testing/local-website/htdocs/remote/remote-wide.html new file mode 100644 index 0000000..2806007 --- /dev/null +++ b/abs/core-testing/local-website/htdocs/remote/remote-wide.html @@ -0,0 +1,275 @@ + + + +MythTV Web Wide Remote + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
       
       
         
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
       
       
       
    + +
    + +
    + + + diff --git a/abs/core-testing/local-website/htdocs/remote/remote-wide.php b/abs/core-testing/local-website/htdocs/remote/remote-wide.php new file mode 100644 index 0000000..a9035df --- /dev/null +++ b/abs/core-testing/local-website/htdocs/remote/remote-wide.php @@ -0,0 +1,380 @@ + +# +# Enhancements (c) 2006 Steven Ellis +# +#change the line below that has tv.local to the address of your frontend. + +#echo time() . "
    "; +$submit = $_POST['submit']; +#echo "form submitted = $submit
    "; + +# We set jump when we want to perform more complex commands +$jump=""; + +if ($submit == "Power"){ + #Power - not really used yet + $key = ""; +} else if ($submit == "TV"){ + $jump = "livetv"; +} else if ($submit == "Music"){ + $jump = "playmusic"; +} else if ($submit == "Video"){ + $jump = "mythvideo"; +} else if ($submit == "Recordings"){ + $jump = "playbackrecordings"; +} else if ($submit == "Guide"){ + $jump = "programguide"; +} else if ($submit == "Pictures"){ + $jump = "mythgallery"; +} else if ($submit == "Back") { + $key = "escape"; +} else if ($submit == "Info") { + $key = "i"; +} else if ($submit == "Menu") { + #Menu + $key = "m"; +} else if ($submit == "U") { + $key = "up"; +} else if ($submit == "L") { + $key = "left"; +} else if ($submit == "D") { + $key = "down"; +} else if ($submit == "R") { + $key = "right"; +} else if ($submit == "OK") { + $key = "enter"; +} else if ($submit == "Page Up") { + $key = "pageup"; +} else if ($submit == "Page Dn") { + $key = "pagedown"; +} else if ($submit == "Vol Up") { + $key = "bracketright"; +} else if ($submit == "Vol Dn") { + $key = "bracketleft"; +} else if ($submit == "Mute") { + $key = "f9"; +} else if ($submit == "Pause") { + $key = "p"; +} else if ($submit == "Stop") { + $key = "s"; +} else if ($submit == "Play") { + $key = "p"; +} else if ($submit == "<<") { + $key = "left"; +} else if ($submit == ">>") { + $key = "right"; +} else if ($submit == "|<") { + #skip commercial back + $key = "q"; +} else if ($submit == ">|") { + #skip commercial + $key = "z"; +# Special keys used by myPVR +} else if ($submit == "#") { + # Change tuner + $key = "y"; +} else if ($submit == "*") { + #skip commercial + $key = "z"; +} else if ($submit == "0" || + $submit == "1" || + $submit == "2" || + $submit == "3" || + $submit == "4" || + $submit == "5" || + $submit == "6" || + $submit == "7" || + $submit == "8" || + $submit == "9" ) { + $key = $submit; +} + +set_time_limit (5); +# change tv.local to the hostname/address of your frontend +$fp = fsockopen("localhost", 6546, $errno, $errstr, 30); +if (!$fp) { + echo "ERROR: $errstr ($errno)
    \n"; +} else { + #stream_set_timeout ( $fp, 0, 100000); + #$banner = stream_get_contents($fp); + + $banner = ""; + + $c = fgetc($fp); + while ($c !== false && $c != "#") + { + #echo "c = $c
    \n"; + $banner .= $c; + $c = fgetc($fp); + } + if ($c !== false) + { + $c = fgetc($fp); #Read in the extra space after the # + } + + if ($jump != "") { + $cmd = "jump $jump\x0d\x0a"; + $jump=""; + } else { + $cmd = "key $key\x0d\x0a"; + } + fwrite($fp,$cmd); + $res = fgets($fp); + #echo "result = $res
    \n"; + + fclose($fp); +} + + +?> + + + + +MythTV Web Remote + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
       
       
         
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
       
       
       
    + +
    + +
    + + + + diff --git a/abs/core-testing/local-website/htdocs/remote/remote.css b/abs/core-testing/local-website/htdocs/remote/remote.css new file mode 100644 index 0000000..0678a65 --- /dev/null +++ b/abs/core-testing/local-website/htdocs/remote/remote.css @@ -0,0 +1,436 @@ +/* + * Style sheet (c) 2006 Steven Ellis + * + * Enhancements by Michael Lynch + * + * Published under http://creativecommons.org/licenses/by/2.5/ + */ + +body { + width:300px; + margin:10px 0 0 10px; + padding 3px; + behavior:url('csshover.htc'); +} + +#narrow { + width:300px; +} + +.mypda { + width:285; + background-color:#fff; + color:#000; +} + +#subround { + width:100%; + min-height:40px; + height:40px; + padding-top:1%; + padding-right:1%; + padding-bottom:1%; + padding-left:1%; +} + +#subwide { + width:100%; + min-height:25px; + height:25px; + padding-top:1%; + padding-right:1%; + padding-bottom:1%; + padding-left:1%; +} + +#subpda { + width:100%; + height:auto; + padding:3px 2px 3px 2px; +} + +#halves { + float:left; + width:49%; +} + +#thirds { + float:left; + width:32.5%; +} + +#fourths { + float:left; + width:24%; +} + +#fifths { + float:left; + width:19%; +} + +#sixths { + float:left; + width:15%; + border:1px solid black; +} + +input.txt { + background:none; + border-style:none; + width:80px; + height:24px; + text-align:center; + font-size:8pt; + font-weight:normal; + background:url(images/button_text.png) no-repeat; +} + +input.txt:hover { + background:url(images/button_textg.png) no-repeat; +} +input.txt:active { + background:url(images/button_textr.png) no-repeat; +} +input.tiny { + border:1px solid #f6f6f6; + background-color:#2991c7; + width:86px; + color:#fff; + text-align:center; + font-size:8pt; + font-weight:normal; +} + +input.tiny:hover { +} + +input.halfleft { + background:none; + border-style:none; + width:80px; + height:24px; + text-align:center; + font-size:8pt; + font-weight:normal; + background:url(images/button_text.png) no-repeat; + float:right; +} + +input.halfleft:hover { + background:url(images/button_textg.png) no-repeat; +} +input.halfleft:active { + background:url(images/button_textr.png) no-repeat; +} + +input.halfright { + background:none; + border-style:none; + width:80px; + height:24px; + text-align:center; + font-size:8pt; + font-weight:normal; + background:url(images/button_text.png) no-repeat; + float:left; +} + +input.halfright:hover { + background:url(images/button_textg.png) no-repeat; +} +input.halfright:active { + background:url(images/button_textr.png) no-repeat; +} + +input.notxt { + visibility:hidden; + background:none; + border-style:none; + width:80px; + height:24px; + text-align:center; + font-size:8pt; + font-weight:normal; + background:url(images/button_text.png) no-repeat; +} + +input.image { + background:#fff; + width:40px; + height:40px; + padding:2px; +} + +input.record { + background:url(images/rec.png) no-repeat; + width:40px; + height:40px; + padding:2px; +} + +input.record:hover { + background:url(images/rec_g.png) no-repeat; +} + +input.record:active { + background:url(images/rec_r.png) no-repeat; +} + +input.stop { + background:url(images/stop.png) no-repeat; + width:40px; + height:40px; + padding:2px; +} + +input.stop:hover { + background:url(images/stop_g.png) no-repeat; +} + +input.stop:active { + background:url(images/stop_r.png) no-repeat; +} + +input.pause { + background:url(images/pause.png) no-repeat; + width:40px; + height:40px; + padding:2px; +} + +input.pause:hover { + background:url(images/pause_g.png) no-repeat; +} + +input.pause:active { + background:url(images/pause_r.png) no-repeat; +} + +input.rewind { + background:url(images/fast_rewind.png) no-repeat; + width:40px; + height:40px; + padding:2px; +} + +input.rewind:hover { + background:url(images/fast_rewind_g.png) no-repeat; +} + +input.rewind:active { + background:url(images/fast_rewind_r.png) no-repeat; +} + +input.play { + background:url(images/right.png) no-repeat; + width:40px; + height:40px; + padding:2px; +} + +input.play:hover { + background:url(images/right_g.png) no-repeat; +} + +input.play:active { + background:url(images/right_r.png) no-repeat; +} + +input.ffwd { + background:url(images/fast_forward.png) no-repeat; + width:40px; + height:40px; + padding:2px; +} + +input.ffwd:hover { + background:url(images/fast_forward_g.png) no-repeat; +} + +input.ffwd:active { + background:url(images/fast_forward_r.png) no-repeat; +} + +input.sback { + background:url(images/skip_back.png) no-repeat; + width:40px; + height:40px; + padding:2px; +} + +input.sback:hover { + background:url(images/skip_back_g.png) no-repeat; +} + +input.sback:active { + background:url(images/skip_back_r.png) no-repeat; +} + +input.sfwd { + background:url(images/skip_forward.png) no-repeat; + width:40px; + height:40px; + padding:2px; +} + +input.sfwd:hover { + background:url(images/skip_forward_g.png) no-repeat; +} + +input.sfwd:active { + background:url(images/skip_forward_r.png) no-repeat; +} + +input.navup { + background:url(images/up.png) no-repeat; + width:40px; + height:40px; + padding:2px; + display:block; + margin-left:auto; + margin-right:auto; +} + +input.navup:hover { + background:url(images/up_g.png) no-repeat; +} +input.navup:active { + background:url(images/up_r.png) no-repeat; +} + + +input.navleft { + background:url(images/left.png) no-repeat; + width:40px; + height:40px; + padding:2px; + float:right; +} + +input.navleft:hover { + background:url(images/left_g.png) no-repeat; +} + +input.navleft:active { + background:url(images/left_r.png) no-repeat; +} + +input.navok { + background:url(images/ok.png) no-repeat; + width:40px; + height:40px; + padding:2px; + display:block; + margin-left:auto; + margin-right:auto; +} + +input.navok:hover { + background:url(images/ok_g.png) no-repeat; +} + +input.navok:active { + background:url(images/ok_r.png) no-repeat; +} + +input.navright { + background:url(images/right.png) no-repeat; + width:40px; + height:40px; + padding:2px; + float:left; +} + +input.navright:hover { + background:url(images/right_g.png) no-repeat; +} + +input.navright:active { + background:url(images/right_r.png) no-repeat; +} + +input.navdown { + background:url(images/down.png) no-repeat; + width:40px; + height:40px; + padding:2px; + display:block; + margin-left:auto; + margin-right:auto; +} + +input.navdown:hover { + background:url(images/down_g.png) no-repeat; +} +input.navdown:active { + background:url(images/down_r.png) no-repeat; +} + +input.noimage { + visibility:hidden; + border-radius:21px; + background: #fff; + width:40px; + height:40px; + padding:2px; +} + +input.number { + border: none; + width: 30px; + height: 30px; + background: url(./images/button_30.png) no-repeat; + font-size: 12pt; + font-weight: bold; + padding: 0px; + display:block; + margin-left:auto; + margin-right:auto; +} + +input.number:hover { + background: url(./images/button_30g.png) no-repeat; +} + +input.number:active { + background: url(./images/button_30r.png) no-repeat; +} + +div.tabArea { + font-size: 80%; + font-weight: bold; +} + +a.tab { + background-color: #f0f0f0; + border: 1px solid #000000; + border-bottom-width: 0px; + padding: 2px .3em 2px .3em; + position:relative; + text-decoration: none; + top:-1px; + z-index:100; +} + +a.tab, a.tab:visited { + color: #808080; +} + +a.tab:hover { + background-color: #d0d0d0; + color: #606060; +} + +a.tab.activeTab, a.tab.activeTab:hover, a.tab.activeTab:visited { + background-color: #c0c0c0; + color: #000000; + z-index:102; +} + +div.tabMain { + background-color: #c0c0c0; + border: 1px solid #000000; + position:relative; + z-index:101; +} diff --git a/abs/core-testing/local-website/htdocs/remote/remote.html b/abs/core-testing/local-website/htdocs/remote/remote.html new file mode 100644 index 0000000..71ec374 --- /dev/null +++ b/abs/core-testing/local-website/htdocs/remote/remote.html @@ -0,0 +1,307 @@ + + + +MythTV Web Remote + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
       
       
         
    + +
      
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
       
       
       
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + + + +
    + +
    + +
    + + + diff --git a/abs/core-testing/local-website/htdocs/remote/remote.php b/abs/core-testing/local-website/htdocs/remote/remote.php new file mode 100644 index 0000000..bacf6a3 --- /dev/null +++ b/abs/core-testing/local-website/htdocs/remote/remote.php @@ -0,0 +1,413 @@ + +# +# Enhancements (c) 2006 Steven Ellis +# +#change the line below that has tv.local to the address of your frontend. + +#echo time() . "
    "; +$submit = $_POST['submit']; +#echo "form submitted = $submit
    "; + +# We set jump when we want to perform more complex commands +$jump=""; + +if ($submit == "Power"){ + #Power - not really used yet + $key = ""; +} else if ($submit == "TV"){ + $jump = "livetv"; +} else if ($submit == "Music"){ + $jump = "playmusic"; +} else if ($submit == "Video"){ + $jump = "mythvideo"; +} else if ($submit == "Recordings"){ + $jump = "playbackrecordings"; +} else if ($submit == "Guide"){ + $jump = "programguide"; +} else if ($submit == "Pictures"){ + $jump = "mythgallery"; +} else if ($submit == "Back") { + $key = "escape"; +} else if ($submit == "Info") { + $key = "i"; +} else if ($submit == "Menu") { + #Menu + $key = "m"; +} else if ($submit == "U") { + $key = "up"; +} else if ($submit == "L") { + $key = "left"; +} else if ($submit == "D") { + $key = "down"; +} else if ($submit == "R") { + $key = "right"; +} else if ($submit == "OK") { + $key = "enter"; +} else if ($submit == "Page Up") { + $key = "pageup"; +} else if ($submit == "Page Dn") { + $key = "pagedown"; +} else if ($submit == "Vol Up") { + $key = "bracketright"; +} else if ($submit == "Vol Dn") { + $key = "bracketleft"; +} else if ($submit == "Mute") { + $key = "f9"; +} else if ($submit == "Pause") { + $key = "p"; +} else if ($submit == "Stop") { + $key = "s"; +} else if ($submit == "Play") { + $key = "p"; +} else if ($submit == "<<") { + $key = "left"; +} else if ($submit == ">>") { + $key = "right"; +} else if ($submit == "|<") { + #skip commercial back + $key = "q"; +} else if ($submit == ">|") { + #skip commercial + $key = "z"; +# Special keys used by myPVR +} else if ($submit == "#") { + # Change tuner + $key = "y"; +} else if ($submit == "*") { + #skip commercial + $key = "z"; +} else if ($submit == "0" || + $submit == "1" || + $submit == "2" || + $submit == "3" || + $submit == "4" || + $submit == "5" || + $submit == "6" || + $submit == "7" || + $submit == "8" || + $submit == "9" ) { + $key = $submit; +} + +set_time_limit (5); +# change tv.local to the hostname/address of your frontend +$fp = fsockopen("localhost", 6546, $errno, $errstr, 30); +if (!$fp) { + echo "ERROR: $errstr ($errno)
    \n"; +} else { + #stream_set_timeout ( $fp, 0, 100000); + #$banner = stream_get_contents($fp); + + $banner = ""; + + $c = fgetc($fp); + while ($c !== false && $c != "#") + { + #echo "c = $c
    \n"; + $banner .= $c; + $c = fgetc($fp); + } + if ($c !== false) + { + $c = fgetc($fp); #Read in the extra space after the # + } + + if ($jump != "") { + $cmd = "jump $jump\x0d\x0a"; + $jump=""; + } else { + $cmd = "key $key\x0d\x0a"; + } + fwrite($fp,$cmd); + $res = fgets($fp); + #echo "result = $res
    \n"; + + fclose($fp); +} + + +?> + + + + +MythTV Web Remote + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
       
       
         
    + +
      
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
       
       
       
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + + + +
    + +
    + +
    + + + diff --git a/abs/core-testing/local-website/htdocs/remote/svg/button.svg b/abs/core-testing/local-website/htdocs/remote/svg/button.svg new file mode 100644 index 0000000..6f34399 --- /dev/null +++ b/abs/core-testing/local-website/htdocs/remote/svg/button.svg @@ -0,0 +1,353 @@ + + + + + + + Etiquette Icons + + + + hash + + action + computer + icons + buttons + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + image/svg+xml + + + en + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/abs/core-testing/local-website/htdocs/remote/svg/button_30.xcf b/abs/core-testing/local-website/htdocs/remote/svg/button_30.xcf new file mode 100644 index 0000000..baa07b4 Binary files /dev/null and b/abs/core-testing/local-website/htdocs/remote/svg/button_30.xcf differ diff --git a/abs/core-testing/local-website/htdocs/remote/svg/button_g.svg b/abs/core-testing/local-website/htdocs/remote/svg/button_g.svg new file mode 100644 index 0000000..f219560 --- /dev/null +++ b/abs/core-testing/local-website/htdocs/remote/svg/button_g.svg @@ -0,0 +1,373 @@ + + + + + + + Etiquette Icons + + + + hash + + action + computer + icons + buttons + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + image/svg+xml + + + en + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/abs/core-testing/local-website/htdocs/remote/svg/button_r.svg b/abs/core-testing/local-website/htdocs/remote/svg/button_r.svg new file mode 100644 index 0000000..d2cb508 --- /dev/null +++ b/abs/core-testing/local-website/htdocs/remote/svg/button_r.svg @@ -0,0 +1,371 @@ + + + + + + + Etiquette Icons + + + + hash + + action + computer + icons + buttons + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + image/svg+xml + + + en + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/abs/core-testing/local-website/htdocs/remote/svg/down.svg b/abs/core-testing/local-website/htdocs/remote/svg/down.svg new file mode 100644 index 0000000..a321bc6 --- /dev/null +++ b/abs/core-testing/local-website/htdocs/remote/svg/down.svg @@ -0,0 +1,361 @@ + + + + + + + Etiquette Icons + + + + hash + + action + computer + icons + buttons + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + image/svg+xml + + + en + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/abs/core-testing/local-website/htdocs/remote/svg/fast_forward.svg b/abs/core-testing/local-website/htdocs/remote/svg/fast_forward.svg new file mode 100644 index 0000000..a19f70a --- /dev/null +++ b/abs/core-testing/local-website/htdocs/remote/svg/fast_forward.svg @@ -0,0 +1,406 @@ + + + + + + + Etiquette Icons + + + + hash + + action + computer + icons + buttons + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + image/svg+xml + + + en + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/abs/core-testing/local-website/htdocs/remote/svg/fast_rewind.svg b/abs/core-testing/local-website/htdocs/remote/svg/fast_rewind.svg new file mode 100644 index 0000000..fe872e4 --- /dev/null +++ b/abs/core-testing/local-website/htdocs/remote/svg/fast_rewind.svg @@ -0,0 +1,406 @@ + + + + + + + Etiquette Icons + + + + hash + + action + computer + icons + buttons + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + image/svg+xml + + + en + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/abs/core-testing/local-website/htdocs/remote/svg/left.svg b/abs/core-testing/local-website/htdocs/remote/svg/left.svg new file mode 100644 index 0000000..fdaec7e --- /dev/null +++ b/abs/core-testing/local-website/htdocs/remote/svg/left.svg @@ -0,0 +1,358 @@ + + + + + + + Etiquette Icons + + + + hash + + action + computer + icons + buttons + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + image/svg+xml + + + en + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/abs/core-testing/local-website/htdocs/remote/svg/ok.svg b/abs/core-testing/local-website/htdocs/remote/svg/ok.svg new file mode 100644 index 0000000..22975ff --- /dev/null +++ b/abs/core-testing/local-website/htdocs/remote/svg/ok.svg @@ -0,0 +1,378 @@ + + + + + + + Etiquette Icons + + + + hash + + action + computer + icons + buttons + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + image/svg+xml + + + en + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OK + diff --git a/abs/core-testing/local-website/htdocs/remote/svg/pause.svg b/abs/core-testing/local-website/htdocs/remote/svg/pause.svg new file mode 100644 index 0000000..26fcc74 --- /dev/null +++ b/abs/core-testing/local-website/htdocs/remote/svg/pause.svg @@ -0,0 +1,410 @@ + + + + + + + Etiquette Icons + + + + hash + + action + computer + icons + buttons + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + image/svg+xml + + + en + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/abs/core-testing/local-website/htdocs/remote/svg/rec.svg b/abs/core-testing/local-website/htdocs/remote/svg/rec.svg new file mode 100644 index 0000000..bc3cd54 --- /dev/null +++ b/abs/core-testing/local-website/htdocs/remote/svg/rec.svg @@ -0,0 +1,395 @@ + + + + + + + Etiquette Icons + + + + hash + + action + computer + icons + buttons + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + image/svg+xml + + + en + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/abs/core-testing/local-website/htdocs/remote/svg/right.svg b/abs/core-testing/local-website/htdocs/remote/svg/right.svg new file mode 100644 index 0000000..5873a44 --- /dev/null +++ b/abs/core-testing/local-website/htdocs/remote/svg/right.svg @@ -0,0 +1,370 @@ + + + + + + + Etiquette Icons + + + + hash + + action + computer + icons + buttons + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + image/svg+xml + + + en + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/abs/core-testing/local-website/htdocs/remote/svg/scratch.svg b/abs/core-testing/local-website/htdocs/remote/svg/scratch.svg new file mode 100644 index 0000000..9da222b --- /dev/null +++ b/abs/core-testing/local-website/htdocs/remote/svg/scratch.svg @@ -0,0 +1,243 @@ + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/abs/core-testing/local-website/htdocs/remote/svg/skip_back.svg b/abs/core-testing/local-website/htdocs/remote/svg/skip_back.svg new file mode 100644 index 0000000..de35870 --- /dev/null +++ b/abs/core-testing/local-website/htdocs/remote/svg/skip_back.svg @@ -0,0 +1,407 @@ + + + + + + + Etiquette Icons + + + + hash + + action + computer + icons + buttons + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + image/svg+xml + + + en + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/abs/core-testing/local-website/htdocs/remote/svg/skip_forward.svg b/abs/core-testing/local-website/htdocs/remote/svg/skip_forward.svg new file mode 100644 index 0000000..38bdc9c --- /dev/null +++ b/abs/core-testing/local-website/htdocs/remote/svg/skip_forward.svg @@ -0,0 +1,413 @@ + + + + + + + Etiquette Icons + + + + hash + + action + computer + icons + buttons + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + image/svg+xml + + + en + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/abs/core-testing/local-website/htdocs/remote/svg/stop.svg b/abs/core-testing/local-website/htdocs/remote/svg/stop.svg new file mode 100644 index 0000000..f3d082d --- /dev/null +++ b/abs/core-testing/local-website/htdocs/remote/svg/stop.svg @@ -0,0 +1,384 @@ + + + + + + + Etiquette Icons + + + + hash + + action + computer + icons + buttons + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + image/svg+xml + + + en + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/abs/core-testing/local-website/htdocs/remote/svg/up.svg b/abs/core-testing/local-website/htdocs/remote/svg/up.svg new file mode 100644 index 0000000..d980f23 --- /dev/null +++ b/abs/core-testing/local-website/htdocs/remote/svg/up.svg @@ -0,0 +1,349 @@ + + + + + + + Etiquette Icons + + + + hash + + action + computer + icons + buttons + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + image/svg+xml + + + en + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/abs/core-testing/local-website/htdocs/rrd/Disabled b/abs/core-testing/local-website/htdocs/rrd/Disabled new file mode 100644 index 0000000..e69de29 diff --git a/abs/core-testing/local-website/htdocs/rrd/index.html b/abs/core-testing/local-website/htdocs/rrd/index.html new file mode 100644 index 0000000..5f595b2 --- /dev/null +++ b/abs/core-testing/local-website/htdocs/rrd/index.html @@ -0,0 +1,29 @@ + + + + + + KnoppMyth R5.5 + + +

    + Tux with a Remote +

    + + + + + + +
    +

    KnoppMyth R5.5

    +

    +RRD Tool
    +Is disabled +by rrd_Configure.sh and may be re-enabled by running as root:
    +rrd_Configure.sh
    +

    +

     

    +
    + + diff --git a/abs/core-testing/local-website/htdocs/style.css b/abs/core-testing/local-website/htdocs/style.css new file mode 100644 index 0000000..535ffec --- /dev/null +++ b/abs/core-testing/local-website/htdocs/style.css @@ -0,0 +1,227 @@ +/* + * Global page handlers. +/*/ + + html,body { + border: 0; + margin: 0; + padding: 0; + font-size: 9pt; + font-family: Arial, Helvetica, sans-serif; + background-color: #191c26; + color: #dedede; + } + + /* For some reason, settings for the main body element doesn't always work for + * text inside of tables + /*/ + .body { + font-size: 12px; + font-family: Arial, Helvetica, sans-serif; + } + +/* + * We should try to keep links and labels looking consistent across the app. +/*/ + + a, a:link { color: #E0E0FF; text-decoration: none; } + a:active { color: #990033; text-decoration: none; } + a:visited { color: #E0E0FF; text-decoration: none; } + a:hover { color: #F0F000; text-decoration: underline; } + + label { color: #E0E0FF; text-decoration: none; } + label:hover { color: #F0F000; text-decoration: underline; } + +/* a class for the menu across the top of the page as well as menu headers throughout the page */ + .menu { background-color: #265990 } + .menu_border_t { border-top: 2px solid #9090B0 } + .menu_border_b { border-bottom: 2px solid #9090B0 } + .menu_border_l { border-left: 2px solid #9090B0 } + .menu_border_r { border-right: 2px solid #9090B0 } + +/* a class for commands and other user input boxes */ + +/* @deprecated old classes */ +.command { background-color: #1040A0 } +.command_border_t { border-top: 2px solid #9090B0 } +.command_border_b { border-bottom: 2px solid #9090B0 } +.command_border_l { border-left: 2px solid #9090B0 } +.command_border_r { border-right: 2px solid #9090B0 } +.activecommand { background-color: #108040 } + +/* New command classes */ + + /* Box to hold commands */ + .commandbox { + background-color: #102923; + color: #E0E0FF; + border: 1px solid #9090B0; + } + + /* Commands themselves */ + + .commands { /* Placeholder for handling sub-elements */ } + + .commands input.x-submit { + border: 2px outset #7b8; + padding: 0 .5em; + height: 2em; + background-color: #263; + color: #E0E0FF; + } + .commands input.x-submit:hover { + border: 1px outset #9da; + background-color: #485; + color: #F0F000; + text-decoration: underline; + } + + .commands a { + font-weight: bold; + border: 1px solid #7b8; + padding: .15em .5em; + background-color: #263; + } + .commands a:hover { + border: 1px solid #9da; + background-color: #485; + } + +/* + * The following styles refer to forms and form elements throughout MythWeb +/*/ + + /* Avoid those nasty extra linefeeds in IE tags */ + form { display: inline; } + + /* A special class for submit buttons */ + .submit { + border: 2px outset #7b8; + padding: 0 .5em; + background-color: #263; + color: #E0E0FF; + font-weight: bold; + height: 2em; + } + .submit:hover { + border: 2px outset #9da; + background-color: #485; + color: #F0F000; + text-decoration: underline; + } + + /* A special class for radio buttons and check boxes because some browsers render them weirdly */ + .radio { + height: 14px !important; + width: 14px !important; + color: #002000; + background-color: #C0D0C0; + } + + /* Default styles for form fields */ + select { + font-family: Arial, Helvetica, sans-serif; + color: #002000; + background-color: #C0D0C0; + font-size: 9pt; + } + + input { + padding-left: .25em; + font-family: Arial, Helvetica, sans-serif; + color: #002000; + background-color: #C0D0C0; + font-size: 9pt; + } + + textarea { + font-family: terminal, courier, courier-new; + color: #002000; + background-color: #C0D0C0; + font-size: 9pt; + } + + /* Quantity-sized elements look better with the text centered */ + input.quantity { + width: 2em !important; + text-align: center; + } + +/* + * A special class for error stuff, so all page errors look the same. +/*/ + + #error, .error { + color: #F03030; + background-color: #360000; + border-color: #F03030; + border: thin groove #F03030; + padding: 8px; + } + +/* + * The following represent some global classes to accommodate minor but + * oft-used manipulations like font sizes.0 +/*/ + + /* font size classes */ + .tiny { font-size: 9px; } + .small { font-size: 9pt; } + .normal { font-size: 10pt; } + .large { font-size: 12pt; } + .huge { font-size: 24px; } + + /* fony style classes */ + .bold, .bold a, .bold a:link, .bold a:visited, .bold a:active, .bold a:hover { + font-weight: bold !important; + } + .italic, .italic a, .italic a:link, .italic a:visited, .italic a:active, .italic a:hover { + font-style: italic !important; + } + + /* Handy for, well, hiding things.. Also for mouseover popup menus */ + .hidden { + visibility: hidden; + display: none; + } + +/* + * clearfix -- see http://positioniseverything.net/easyclearing.html for details on how/why this works +/*/ + + .clearfix:after { + content: "."; + display: block; + height: 0; + clear: both; + visibility: hidden; + } + .clearfix {display: inline-block;} + /* Hides from IE-mac \*/ + * html .clearfix {height: 1%;} + .clearfix {display: block;} + /* End hide from IE-mac */ + + /* Ajax little popup request thing style */ + #ajax_working { + position: fixed; + background-color: green; + bottom: 0px; + left: 1em; + padding: 1em; + width: 10em; + text-align: center; + } + + .link { + cursor: pointer; + } + +/* I don't think we have a single image with a border in the default template, so disable it */ + a img { + border: 0px; + } + + .nowrap { + white-space: nowrap; + } diff --git a/abs/core-testing/sqlite3/PKGBUILD b/abs/core-testing/sqlite3/PKGBUILD new file mode 100644 index 0000000..eb1dbc6 --- /dev/null +++ b/abs/core-testing/sqlite3/PKGBUILD @@ -0,0 +1,34 @@ +# $Id: PKGBUILD 12988 2008-09-25 16:26:35Z andyrtr $ +# Maintainer: Andreas Radke +# Contributor: Tom Newsom + +pkgname=sqlite3 +pkgver=3.6.3 +pkgrel=1 +pkgdesc="A C library that implements an SQL database engine" +arch=('i686' 'x86_64') +license=('custom') +url="http://www.sqlite.org/" +depends=('readline') +makedepends=('tcl') +conflicts=('sqlite') +replaces=('sqlite') +source=(http://www.sqlite.org/sqlite-$pkgver.tar.gz + sqlite-3.5.8-pkgconfig-version.patch + license.txt) +options=(!libtool) +md5sums=('671d2715f33158abc47a7a2ddd6066c5' + '025965a176173eaf21877f6daed088d4' + 'c1cdbc5544034d9012e421e75a5e4890') + +build() { + cd ${srcdir}/sqlite-${pkgver} + patch -Np1 -i ${srcdir}/sqlite-3.5.8-pkgconfig-version.patch || return 1 + ./configure --prefix=/usr --enable-threadsafe --disable-static || return 1 + make || return 1 + make DESTDIR=${pkgdir} install + install -Dm0644 sqlite3.1 ${pkgdir}/usr/share/man/man1/sqlite3.1 + + # license + install -Dm644 ${srcdir}/license.txt ${pkgdir}/usr/share/licenses/${pkgname}/license.txt +} diff --git a/abs/core-testing/sqlite3/build_fts_as_part_of_libsqlite.patch b/abs/core-testing/sqlite3/build_fts_as_part_of_libsqlite.patch new file mode 100644 index 0000000..54b04f0 --- /dev/null +++ b/abs/core-testing/sqlite3/build_fts_as_part_of_libsqlite.patch @@ -0,0 +1,139 @@ +Index: Makefile.in +=================================================================== +RCS file: /sqlite/sqlite/Makefile.in,v +retrieving revision 1.186 +diff -u -3 -p -r1.186 Makefile.in +--- Makefile.in 23 Nov 2007 15:12:44 -0000 1.186 ++++ Makefile.in 23 Nov 2007 19:27:56 -0000 +@@ -114,6 +114,23 @@ LTINSTALL = $(LIBTOOL) --mode=install $( + # nawk compatible awk. + NAWK = @AWK@ + ++# Need these defined unconditionally, as non-fts builds with ++# fts object files without using -DSQLITE_ENABLE_FTS[123] ++# will not work without it. ++# ++TCC += -DSQLITE_CORE ++TCC += -DSQLITE_ENABLE_BROKEN_FTS1 ++TCC += -DSQLITE_ENABLE_BROKEN_FTS2 ++ ++# uncomment to build fts1 as part of library ++# TCC += -DSQLITE_ENABLE_FTS1=1 ++ ++# uncomment to build fts2 as part of library ++# TCC += -DSQLITE_ENABLE_FTS2=1 ++ ++# uncomment to build fts3 as part of library ++# TCC += -DSQLITE_ENABLE_FTS3=1 ++ + # You should not have to change anything below this line + ############################################################################### + TCC += -DSQLITE_OMIT_LOAD_EXTENSION=1 +@@ -132,6 +149,17 @@ LIBOBJ = alter.lo analyze.lo attach.lo a + vdbe.lo vdbeapi.lo vdbeaux.lo vdbeblob.lo vdbefifo.lo vdbemem.lo \ + where.lo utf.lo legacy.lo vtab.lo + ++# Object files for FTS ++# ++LIBOBJ += \ ++ fts1.lo fts1_hash.lo fts1_porter.lo fts1_tokenizer1.lo ++ ++LIBOBJ += \ ++ fts2.lo fts2_hash.lo fts2_porter.lo fts2_tokenizer.lo fts2_tokenizer1.lo ++ ++LIBOBJ += \ ++ fts3.lo fts3_hash.lo fts3_porter.lo fts3_tokenizer.lo fts3_tokenizer1.lo ++ + # All of the source code files. + # + SRC = \ +@@ -209,6 +237,23 @@ SRC += \ + $(TOP)/ext/fts1/fts1_tokenizer.h \ + $(TOP)/ext/fts1/fts1_tokenizer1.c + ++SRC += \ ++ $(TOP)/ext/fts2/fts2.c \ ++ $(TOP)/ext/fts2/fts2.h \ ++ $(TOP)/ext/fts2/fts2_hash.c \ ++ $(TOP)/ext/fts2/fts2_hash.h \ ++ $(TOP)/ext/fts2/fts2_porter.c \ ++ $(TOP)/ext/fts2/fts2_tokenizer.h \ ++ $(TOP)/ext/fts2/fts2_tokenizer1.c ++ ++SRC += \ ++ $(TOP)/ext/fts3/fts3.c \ ++ $(TOP)/ext/fts3/fts3.h \ ++ $(TOP)/ext/fts3/fts3_hash.c \ ++ $(TOP)/ext/fts3/fts3_hash.h \ ++ $(TOP)/ext/fts3/fts3_porter.c \ ++ $(TOP)/ext/fts3/fts3_tokenizer.h \ ++ $(TOP)/ext/fts3/fts3_tokenizer1.c + + # Source code to the test files. + # +@@ -285,6 +330,16 @@ HDR += \ + $(TOP)/ext/fts1/fts1_hash.h \ + $(TOP)/ext/fts1/fts1_tokenizer.h + ++HDR += \ ++ $(TOP)/ext/fts2/fts2.h \ ++ $(TOP)/ext/fts2/fts2_hash.h \ ++ $(TOP)/ext/fts2/fts2_tokenizer.h ++ ++HDR += \ ++ $(TOP)/ext/fts3/fts3.h \ ++ $(TOP)/ext/fts3/fts3_hash.h \ ++ $(TOP)/ext/fts3/fts3_tokenizer.h ++ + # Header files used by the VDBE submodule + # + VDBEHDR = \ +@@ -616,3 +671,48 @@ sqlite3.def: $(REAL_LIBOBJ) + sqlite3.dll: $(REAL_LIBOBJ) sqlite3.def + $(TCC) -shared -o sqlite3.dll sqlite3.def \ + -Wl,"--strip-all" $(REAL_LIBOBJ) ++ ++# ++# FTS ++# ++fts1.lo: $(TOP)/ext/fts1/fts1.c $(HDR) ++ $(LTCOMPILE) -c $(TOP)/ext/fts1/fts1.c ++ ++fts1_hash.lo: $(TOP)/ext/fts1/fts1_hash.c $(HDR) ++ $(LTCOMPILE) -c $(TOP)/ext/fts1/fts1_hash.c ++ ++fts1_porter.lo: $(TOP)/ext/fts1/fts1_porter.c $(HDR) ++ $(LTCOMPILE) -c $(TOP)/ext/fts1/fts1_porter.c ++ ++fts1_tokenizer1.lo: $(TOP)/ext/fts1/fts1_tokenizer1.c $(HDR) ++ $(LTCOMPILE) -c $(TOP)/ext/fts1/fts1_tokenizer1.c ++ ++fts2.lo: $(TOP)/ext/fts2/fts2.c $(HDR) ++ $(LTCOMPILE) -c $(TOP)/ext/fts2/fts2.c ++ ++fts2_hash.lo: $(TOP)/ext/fts2/fts2_hash.c $(HDR) ++ $(LTCOMPILE) -c $(TOP)/ext/fts2/fts2_hash.c ++ ++fts2_porter.lo: $(TOP)/ext/fts2/fts2_porter.c $(HDR) ++ $(LTCOMPILE) -c $(TOP)/ext/fts2/fts2_porter.c ++ ++fts2_tokenizer.lo: $(TOP)/ext/fts2/fts2_tokenizer.c $(HDR) ++ $(LTCOMPILE) -c $(TOP)/ext/fts2/fts2_tokenizer.c ++ ++fts2_tokenizer1.lo: $(TOP)/ext/fts2/fts2_tokenizer1.c $(HDR) ++ $(LTCOMPILE) -c $(TOP)/ext/fts2/fts2_tokenizer1.c ++ ++fts3.lo: $(TOP)/ext/fts3/fts3.c $(HDR) ++ $(LTCOMPILE) -c $(TOP)/ext/fts3/fts3.c ++ ++fts3_hash.lo: $(TOP)/ext/fts3/fts3_hash.c $(HDR) ++ $(LTCOMPILE) -c $(TOP)/ext/fts3/fts3_hash.c ++ ++fts3_porter.lo: $(TOP)/ext/fts3/fts3_porter.c $(HDR) ++ $(LTCOMPILE) -c $(TOP)/ext/fts3/fts3_porter.c ++ ++fts3_tokenizer.lo: $(TOP)/ext/fts3/fts3_tokenizer.c $(HDR) ++ $(LTCOMPILE) -c $(TOP)/ext/fts3/fts3_tokenizer.c ++ ++fts3_tokenizer1.lo: $(TOP)/ext/fts3/fts3_tokenizer1.c $(HDR) ++ $(LTCOMPILE) -c $(TOP)/ext/fts3/fts3_tokenizer1.c diff --git a/abs/core-testing/sqlite3/license.txt b/abs/core-testing/sqlite3/license.txt new file mode 100644 index 0000000..118c5d5 --- /dev/null +++ b/abs/core-testing/sqlite3/license.txt @@ -0,0 +1,33 @@ +SQLite Copyright +SQLite is in the +Public Domain + + +All of the deliverable code in SQLite has been dedicated to the public domain by the authors. All code authors, and representatives of the companies they work for, have signed affidavits dedicating their contributions to the public domain and originals of those signed affidavits are stored in a firesafe at the main offices of Hwaci. Anyone is free to copy, modify, publish, use, compile, sell, or distribute the original SQLite code, either in source code form or as a compiled binary, for any purpose, commercial or non-commercial, and by any means. + +The previous paragraph applies to the deliverable code in SQLite - those parts of the SQLite library that you actually bundle and ship with a larger application. Portions of the documentation and some code used as part of the build process might fall under other licenses. The details here are unclear. We do not worry about the licensing of the documentation and build code so much because none of these things are part of the core deliverable SQLite library. + +All of the deliverable code in SQLite has been written from scratch. No code has been taken from other projects or from the open internet. Every line of code can be traced back to its original author, and all of those authors have public domain dedications on file. So the SQLite code base is clean and is uncontaminated with licensed code from other projects. +Obtaining An Explicit License To Use SQLite + +Even though SQLite is in the public domain and does not require a license, some users want to obtain a license anyway. Some reasons for obtaining a license include: +You are using SQLite in a jurisdiction that does not recognize the public domain. +You are using SQLite in a jurisdiction that does not recognize the right of an author to dedicate their work to the public domain. +You want to hold a tangible legal document as evidence that you have the legal right to use and distribute SQLite. +Your legal department tells you that you have to purchase a license. + +If you feel like you really have to purchase a license for SQLite, Hwaci, the company that employs the architect and principal developers of SQLite, will sell you one. +Contributed Code + +In order to keep SQLite completely free and unencumbered by copyright, all new contributors to the SQLite code base are asked to dedicate their contributions to the public domain. If you want to send a patch or enhancement for possible inclusion in the SQLite source tree, please accompany the patch with the following statement: +The author or authors of this code dedicate any and all copyright interest in this code to the public domain. We make this dedication for the benefit of the public at large and to the detriment of our heirs and successors. We intend this dedication to be an overt act of relinquishment in perpetuity of all present and future rights to this code under copyright law. + +We are not able to accept patches or changes to SQLite that are not accompanied by a statement such as the above. In addition, if you make changes or enhancements as an employee, then a simple statement such as the above is insufficient. You must also send by surface mail a copyright release signed by a company officer. A signed original of the copyright release should be mailed to: +Hwaci +6200 Maple Cove Lane +Charlotte, NC 28269 +USA + +A template copyright release is available in PDF or HTML. You can use this release to make future changes. + +see http://www.sqlite.org/copyright.html \ No newline at end of file diff --git a/abs/core-testing/sqlite3/sqlite-3.5.8-pkgconfig-version.patch b/abs/core-testing/sqlite3/sqlite-3.5.8-pkgconfig-version.patch new file mode 100644 index 0000000..cb5b5ef --- /dev/null +++ b/abs/core-testing/sqlite3/sqlite-3.5.8-pkgconfig-version.patch @@ -0,0 +1,12 @@ +diff -up sqlite-3.5.8/sqlite3.pc.in.release sqlite-3.5.8/sqlite3.pc.in +--- sqlite-3.5.8/sqlite3.pc.in.release 2008-04-23 09:11:38.000000000 +0300 ++++ sqlite-3.5.8/sqlite3.pc.in 2008-04-23 09:11:48.000000000 +0300 +@@ -7,7 +7,7 @@ includedir=@includedir@ + + Name: SQLite + Description: SQL database engine +-Version: @VERSION@ ++Version: @RELEASE@ + Libs: -L${libdir} -lsqlite3 + Libs.private: @LIBS@ + Cflags: -I${includedir} -- cgit v0.12