From 2a490d808667852d4db85653812b2b7275c46e4b Mon Sep 17 00:00:00 2001 From: bjornroche Date: Thu, 20 Mar 2008 14:17:32 +0000 Subject: [PATCH] tagged today's development branch --- COMPILING.DARWIN | 1 + Doxyfile | 239 + LICENSE.txt | 40 +- Makefile.in | 197 +- Makefile.linux | 59 - Makefile.mingw | 57 - README.txt | 103 +- SConstruct | 197 + aclocal.m4 | 6627 +++++++++++++++ bindings/cpp/AUTHORS | 0 bindings/cpp/COPYING | 31 + bindings/cpp/ChangeLog | 178 + bindings/cpp/INSTALL | 236 + bindings/cpp/Makefile.am | 7 + bindings/cpp/Makefile.in | 642 ++ bindings/cpp/NEWS | 0 bindings/cpp/README | 0 bindings/cpp/SConscript | 65 + bindings/cpp/aclocal.m4 | 7336 +++++++++++++++++ bindings/cpp/bin/Makefile.am | 9 + bindings/cpp/bin/Makefile.in | 470 ++ bindings/cpp/build/gnu/Makefile.in | 106 + bindings/cpp/build/gnu/OUT_OF_DATE | 0 bindings/cpp/build/gnu/aclocal.m4 | 57 + bindings/cpp/build/gnu/config.guess | Bin 0 -> 38293 bytes bindings/cpp/build/gnu/config.sub | Bin 0 -> 30339 bytes bindings/cpp/build/gnu/configure | Bin 0 -> 126971 bytes bindings/cpp/build/gnu/configure.ac | 214 + bindings/cpp/build/gnu/install-sh | Bin 0 -> 5598 bytes bindings/cpp/build/vc6/devs_example.dsp | 248 + bindings/cpp/build/vc6/devs_example.dsw | 44 + bindings/cpp/build/vc6/sine_example.dsp | 252 + bindings/cpp/build/vc6/sine_example.dsw | 44 + bindings/cpp/build/vc6/static_library.dsp | 395 + bindings/cpp/build/vc6/static_library.dsw | 29 + bindings/cpp/build/vc7/OUT_OF_DATE | 0 bindings/cpp/build/vc7_1/devs_example.sln | 30 + bindings/cpp/build/vc7_1/devs_example.vcproj | 195 + bindings/cpp/build/vc7_1/sine_example.sln | 30 + bindings/cpp/build/vc7_1/sine_example.vcproj | 327 + bindings/cpp/build/vc7_1/static_library.sln | 21 + .../cpp/build/vc7_1/static_library.vcproj | 218 + bindings/cpp/configure | Bin 0 -> 702299 bytes bindings/cpp/configure.ac | 54 + bindings/cpp/doc/Makefile.am | 5 + bindings/cpp/doc/Makefile.in | 326 + bindings/cpp/doc/README | 34 + bindings/cpp/doc/config.doxy | 211 + bindings/cpp/doc/config.doxy.linux | 210 + bindings/cpp/example/devs.cxx | 177 + bindings/cpp/example/sine.cxx | 137 + bindings/cpp/include/Makefile.am | 22 + bindings/cpp/include/Makefile.in | 423 + .../portaudiocpp/AsioDeviceAdapter.hxx | 44 + .../cpp/include/portaudiocpp/AutoSystem.hxx | 62 + .../include/portaudiocpp/BlockingStream.hxx | 45 + .../portaudiocpp/CFunCallbackStream.hxx | 49 + .../portaudiocpp/CallbackInterface.hxx | 45 + .../include/portaudiocpp/CallbackStream.hxx | 40 + .../portaudiocpp/CppFunCallbackStream.hxx | 86 + bindings/cpp/include/portaudiocpp/Device.hxx | 91 + .../DirectionSpecificStreamParameters.hxx | 77 + .../cpp/include/portaudiocpp/Exception.hxx | 108 + bindings/cpp/include/portaudiocpp/HostApi.hxx | 76 + .../portaudiocpp/InterfaceCallbackStream.hxx | 49 + .../portaudiocpp/MemFunCallbackStream.hxx | 107 + .../cpp/include/portaudiocpp/PortAudioCpp.hxx | 109 + .../include/portaudiocpp/SampleDataFormat.hxx | 35 + bindings/cpp/include/portaudiocpp/Stream.hxx | 82 + .../include/portaudiocpp/StreamParameters.hxx | 77 + bindings/cpp/include/portaudiocpp/System.hxx | 107 + .../portaudiocpp/SystemDeviceIterator.hxx | 66 + .../portaudiocpp/SystemHostApiIterator.hxx | 61 + bindings/cpp/lib/Makefile.am | 26 + bindings/cpp/lib/Makefile.in | 615 ++ bindings/cpp/portaudiocpp.pc.in | 12 + .../source/portaudiocpp/AsioDeviceAdapter.cxx | 83 + .../source/portaudiocpp/BlockingStream.cxx | 100 + .../portaudiocpp/CFunCallbackStream.cxx | 41 + .../source/portaudiocpp/CallbackInterface.cxx | 25 + .../source/portaudiocpp/CallbackStream.cxx | 20 + .../portaudiocpp/CppFunCallbackStream.cxx | 81 + bindings/cpp/source/portaudiocpp/Device.cxx | 168 + .../DirectionSpecificStreamParameters.cxx | 163 + .../cpp/source/portaudiocpp/Exception.cxx | 123 + bindings/cpp/source/portaudiocpp/HostApi.cxx | 121 + .../portaudiocpp/InterfaceCallbackStream.cxx | 45 + .../portaudiocpp/MemFunCallbackStream.cxx | 4 + bindings/cpp/source/portaudiocpp/Stream.cxx | 195 + .../source/portaudiocpp/StreamParameters.cxx | 165 + bindings/cpp/source/portaudiocpp/System.cxx | 308 + .../portaudiocpp/SystemDeviceIterator.cxx | 60 + .../portaudiocpp/SystemHostApiIterator.cxx | 59 + build/dev-cpp/Makefile-dll | 78 + build/dev-cpp/Makefile-static | 75 + build/dev-cpp/portaudio-dll.dev | 209 + build/dev-cpp/portaudio-static.dev | 209 + build/dev-cpp/readme.txt | 23 + build/msvc/portaudio.def | 43 + build/msvc/portaudio.dsp | 269 + build/msvc/portaudio.dsw | 29 + build/msvc/portaudio.sln | 26 + build/msvc/portaudio.vcproj | 1512 ++++ build/msvc/readme.txt | 80 + build/scons/SConscript_common | 30 + build/scons/SConscript_opts | 91 + config.guess | Bin 38293 -> 41362 bytes config.sub | Bin 28332 -> 29973 bytes configure | Bin 81647 -> 739337 bytes configure.in | 365 +- depcomp | Bin 0 -> 15936 bytes doc/src/license.dox | 38 + doc/src/mainpage.dox | 44 + doc/src/srcguide.dox | 43 + doc/utils/checkfiledocs.py | 77 + docs/index.html | 66 - docs/latency.html | 192 - docs/pa_impl_guide.html | 197 - docs/pa_impl_startstop.html | 190 - docs/pa_tut_asio.html | 55 - docs/pa_tut_callback.html | 91 - docs/pa_tut_devs.html | 65 - docs/pa_tut_explore.html | 42 - docs/pa_tut_init.html | 43 - docs/pa_tut_mac.html | 41 - docs/pa_tut_mac_osx.html | 46 - docs/pa_tut_open.html | 52 - docs/pa_tut_oss.html | 46 - docs/pa_tut_over.html | 92 - docs/pa_tut_pc.html | 78 - docs/pa_tut_run.html | 56 - docs/pa_tut_rw.html | 79 - docs/pa_tut_term.html | 47 - docs/pa_tut_util.html | 55 - docs/pa_tutorial.html | 46 - docs/portaudio_h.txt | 425 - docs/portaudio_icmc2001.pdf | Bin 50968 -> 0 bytes docs/proposals.html | Bin 1085 -> 0 bytes docs/releases.html | 339 - docs/style.html | 156 - include/pa_asio.h | 130 + include/pa_jack.h | 76 + include/pa_linux_alsa.h | 94 + include/pa_mac_core.h | 176 + include/pa_win_ds.h | 101 + include/pa_win_waveformat.h | 181 + include/pa_win_wmme.h | 177 + include/portaudio.h | 1134 +++ index.html | 46 +- ltmain.sh | 6971 ++++++++++++++++ missing | Bin 0 -> 11014 bytes pa_asio/borland_asio_readme.txt | 6 - pa_asio/pa_asio.cpp | 2998 ------- pa_asio/readme_asio_sdk_patch.txt | 25 - pa_beos/PlaybackNode.cc | 538 -- pa_beos/PlaybackNode.h | 108 - pa_beos/pa_beos_mk.cc | 441 - pa_common/pa_convert.c | 402 - pa_common/pa_host.h | 185 - pa_common/pa_lib.c | 806 -- pa_common/portaudio.h | 463 -- pa_dll_switch/PaDllEntry.h | 184 - pa_dll_switch/letter_from_tim_010817.txt | Bin 1176 -> 0 bytes pa_dll_switch/loadPA_DLL.cpp | 203 - pa_dll_switch/pa_lib.c | 827 -- pa_dll_switch/portaudio.h | 439 - pa_mac/pa_mac.c | 1656 ---- pa_mac_core/notes.txt | 34 - pa_mac_core/pa_mac_core.c | 1261 --- pa_sgi/Makefile | 53 - pa_sgi/pa_sgi.c | 1058 --- pa_sgi/pthread-Makefile | 52 - pa_sgi/pthread-pa_sgi.c | 908 -- pa_tests/pa_devs.c | 98 - pa_tests/paqa_errs.c | 330 - pa_tests/patest1.c | 114 - pa_tests/patest_ringmix.c | 41 - pa_tests/patest_wire.c | 144 - pa_unix_oss/Makefile | 43 - pa_unix_oss/Makefile_freebsd | 36 - pa_unix_oss/pa_unix_oss.c | 1377 ---- pa_win_ds/dsound_wrapper.c | 466 -- pa_win_ds/dsound_wrapper.h | 106 - pa_win_ds/pa_dsound.c | 1021 --- pa_win_ds/portaudio.def | 28 - pa_win_wmme/Makefile.cygwin | 34 - pa_win_wmme/pa_win_wmme.c | 1707 ---- pablio/README.txt | 14 +- pablio/pablio.c | 41 +- pablio/pablio.h | 17 +- pablio/ringbuffer.c | 199 - pablio/ringbuffer.h | 101 - pablio/test_rw.c | 16 +- pablio/test_rw_echo.c | 16 +- pablio/test_w_saw.c | 16 +- pablio/test_w_saw8.c | 16 +- portaudio-2.0.pc.in | 12 + src/SConscript | 219 + src/common/pa_allocation.c | 243 + src/common/pa_allocation.h | 104 + src/common/pa_converters.c | 1935 +++++ src/common/pa_converters.h | 263 + src/common/pa_cpuload.c | 105 + src/common/pa_cpuload.h | 72 + src/common/pa_debugprint.c | 107 + src/common/pa_debugprint.h | 149 + src/common/pa_dither.c | 213 + src/common/pa_dither.h | 100 + src/common/pa_endianness.h | 145 + src/common/pa_front.c | 1765 ++++ src/common/pa_hostapi.h | 259 + src/common/pa_memorybarrier.h | 123 + src/common/pa_process.c | 1772 ++++ src/common/pa_process.h | 750 ++ src/common/pa_ringbuffer.c | 227 + src/common/pa_ringbuffer.h | 218 + src/common/pa_skeleton.c | 818 ++ src/common/pa_stream.c | 150 + src/common/pa_stream.h | 205 + {pa_common => src/common}/pa_trace.c | 48 +- src/common/pa_trace.h | 101 + src/common/pa_types.h | 107 + src/common/pa_util.h | 162 + src/hostapi/alsa/pa_linux_alsa.c | 3586 ++++++++ src/hostapi/asihpi/pa_linux_asihpi.c | 2942 +++++++ src/hostapi/asio/ASIO-README.txt | 140 + .../hostapi/asio}/Callback_adaptation_.pdf | Bin {pa_asio => src/hostapi/asio}/Pa_ASIO.pdf | Bin src/hostapi/asio/iasiothiscallresolver.cpp | 563 ++ src/hostapi/asio/iasiothiscallresolver.h | 197 + src/hostapi/asio/pa_asio.cpp | 3965 +++++++++ src/hostapi/coreaudio/notes.txt | 196 + src/hostapi/coreaudio/pa_mac_core.c | 2343 ++++++ src/hostapi/coreaudio/pa_mac_core_blocking.c | 592 ++ src/hostapi/coreaudio/pa_mac_core_blocking.h | 136 + src/hostapi/coreaudio/pa_mac_core_internal.h | 164 + src/hostapi/coreaudio/pa_mac_core_old.c | 913 ++ src/hostapi/coreaudio/pa_mac_core_utilities.c | 738 ++ src/hostapi/coreaudio/pa_mac_core_utilities.h | 230 + src/hostapi/dsound/pa_win_ds.c | 2525 ++++++ src/hostapi/dsound/pa_win_ds_dynlink.c | 180 + src/hostapi/dsound/pa_win_ds_dynlink.h | 95 + src/hostapi/jack/pa_jack.c | 1761 ++++ .../hostapi/oss}/low_latency_tip.txt | Bin src/hostapi/oss/pa_unix_oss.c | 1985 +++++ {pa_unix_oss => src/hostapi/oss}/recplay.c | 0 src/hostapi/wasapi/pa_win_wasapi.cpp | 1911 +++++ src/hostapi/wdmks/pa_win_wdmks.c | 3283 ++++++++ src/hostapi/wdmks/readme.txt | 82 + src/hostapi/wmme/pa_win_wmme.c | 3902 +++++++++ src/os/unix/pa_unix_hostapis.c | 92 + src/os/unix/pa_unix_util.c | 666 ++ src/os/unix/pa_unix_util.h | 224 + src/os/win/pa_win_hostapis.c | 100 + src/os/win/pa_win_util.c | 147 + src/os/win/pa_win_waveformat.c | 159 + src/os/win/pa_win_wdmks_utils.c | 260 + src/os/win/pa_win_wdmks_utils.h | 65 + src/os/win/pa_x86_plain_converters.c | 1219 +++ .../os/win/pa_x86_plain_converters.h | 55 +- test/README.txt | 60 + {pa_tests => test}/debug_convert.c | 15 +- {pa_tests => test}/debug_dither_calc.c | 15 +- {pa_tests => test}/debug_dual.c | 15 +- {pa_tests => test}/debug_multi_in.c | 15 +- {pa_tests => test}/debug_multi_out.c | 15 +- {pa_tests => test}/debug_record.c | 15 +- {pa_tests => test}/debug_record_reuse.c | 15 +- {pa_tests => test}/debug_sine.c | 15 +- {pa_tests => test}/debug_sine_amp.c | 15 +- {pa_tests => test}/debug_sine_formats.c | 17 +- {pa_tests => test}/debug_srate.c | 15 +- {pa_tests => test}/debug_test1.c | 0 test/pa_devs.c | 238 + {pa_tests => test}/pa_fuzz.c | 80 +- {pa_tests => test}/pa_minlat.c | 110 +- {pa_tests => test}/paqa_devs.c | 232 +- test/paqa_errs.c | 400 + test/patest1.c | 208 + {pa_tests => test}/patest_buffer.c | 99 +- test/patest_callbackstop.c | 252 + {pa_tests => test}/patest_clip.c | 98 +- test/patest_converters.c | 392 + {pa_tests => test}/patest_dither.c | 182 +- test/patest_dsound_surround.c | 205 + {pa_tests => test}/patest_hang.c | 101 +- test/patest_in_overflow.c | 236 + {pa_tests => test}/patest_latency.c | 85 +- {pa_tests => test}/patest_leftright.c | 87 +- {pa_tests => test}/patest_longsine.c | 74 +- {pa_tests => test}/patest_many.c | 66 +- {pa_tests => test}/patest_maxsines.c | 124 +- test/patest_mono.c | 155 + test/patest_mono_asio_channel_select.c | 166 + test/patest_multi_sine.c | 205 + test/patest_out_underflow.c | 229 + {pa_tests => test}/patest_pink.c | 131 +- test/patest_prime.c | 234 + test/patest_read_record.c | 244 + test/patest_read_write_wire.c | 215 + {pa_tests => test}/patest_record.c | 214 +- test/patest_ringmix.c | 86 + {pa_tests => test}/patest_saw.c | 61 +- {pa_tests => test}/patest_sine.c | 93 +- {pa_tests => test}/patest_sine8.c | 141 +- test/patest_sine_channelmaps.c | 190 + {pa_tests => test}/patest_sine_formats.c | 76 +- {pa_tests => test}/patest_sine_time.c | 196 +- test/patest_start_stop.c | 172 + {pa_tests => test}/patest_stop.c | 153 +- test/patest_stop_playout.c | 439 + {pa_tests => test}/patest_sync.c | 144 +- test/patest_timing.c | 173 + {pa_tests => test}/patest_toomanysines.c | 77 +- .../patest_two_rates.c | 116 +- {pa_tests => test}/patest_underflow.c | 69 +- test/patest_wire.c | 300 + test/patest_wmme_surround.c | 206 + test/patest_write_sine.c | 159 + test/patest_write_stop.c | 165 + testcvs/changeme.txt | 3 +- testcvs/stuff/info.txt | 1 - 322 files changed, 89182 insertions(+), 22502 deletions(-) create mode 100644 COMPILING.DARWIN create mode 100644 Doxyfile delete mode 100644 Makefile.linux delete mode 100644 Makefile.mingw create mode 100644 SConstruct create mode 100644 aclocal.m4 create mode 100644 bindings/cpp/AUTHORS create mode 100644 bindings/cpp/COPYING create mode 100644 bindings/cpp/ChangeLog create mode 100644 bindings/cpp/INSTALL create mode 100644 bindings/cpp/Makefile.am create mode 100644 bindings/cpp/Makefile.in create mode 100644 bindings/cpp/NEWS create mode 100644 bindings/cpp/README create mode 100644 bindings/cpp/SConscript create mode 100644 bindings/cpp/aclocal.m4 create mode 100644 bindings/cpp/bin/Makefile.am create mode 100644 bindings/cpp/bin/Makefile.in create mode 100644 bindings/cpp/build/gnu/Makefile.in create mode 100644 bindings/cpp/build/gnu/OUT_OF_DATE create mode 100644 bindings/cpp/build/gnu/aclocal.m4 create mode 100644 bindings/cpp/build/gnu/config.guess create mode 100644 bindings/cpp/build/gnu/config.sub create mode 100644 bindings/cpp/build/gnu/configure create mode 100644 bindings/cpp/build/gnu/configure.ac create mode 100644 bindings/cpp/build/gnu/install-sh create mode 100644 bindings/cpp/build/vc6/devs_example.dsp create mode 100644 bindings/cpp/build/vc6/devs_example.dsw create mode 100644 bindings/cpp/build/vc6/sine_example.dsp create mode 100644 bindings/cpp/build/vc6/sine_example.dsw create mode 100644 bindings/cpp/build/vc6/static_library.dsp create mode 100644 bindings/cpp/build/vc6/static_library.dsw create mode 100644 bindings/cpp/build/vc7/OUT_OF_DATE create mode 100644 bindings/cpp/build/vc7_1/devs_example.sln create mode 100644 bindings/cpp/build/vc7_1/devs_example.vcproj create mode 100644 bindings/cpp/build/vc7_1/sine_example.sln create mode 100644 bindings/cpp/build/vc7_1/sine_example.vcproj create mode 100644 bindings/cpp/build/vc7_1/static_library.sln create mode 100644 bindings/cpp/build/vc7_1/static_library.vcproj create mode 100755 bindings/cpp/configure create mode 100644 bindings/cpp/configure.ac create mode 100644 bindings/cpp/doc/Makefile.am create mode 100644 bindings/cpp/doc/Makefile.in create mode 100644 bindings/cpp/doc/README create mode 100644 bindings/cpp/doc/config.doxy create mode 100644 bindings/cpp/doc/config.doxy.linux create mode 100644 bindings/cpp/example/devs.cxx create mode 100644 bindings/cpp/example/sine.cxx create mode 100644 bindings/cpp/include/Makefile.am create mode 100644 bindings/cpp/include/Makefile.in create mode 100644 bindings/cpp/include/portaudiocpp/AsioDeviceAdapter.hxx create mode 100644 bindings/cpp/include/portaudiocpp/AutoSystem.hxx create mode 100644 bindings/cpp/include/portaudiocpp/BlockingStream.hxx create mode 100644 bindings/cpp/include/portaudiocpp/CFunCallbackStream.hxx create mode 100644 bindings/cpp/include/portaudiocpp/CallbackInterface.hxx create mode 100644 bindings/cpp/include/portaudiocpp/CallbackStream.hxx create mode 100644 bindings/cpp/include/portaudiocpp/CppFunCallbackStream.hxx create mode 100644 bindings/cpp/include/portaudiocpp/Device.hxx create mode 100644 bindings/cpp/include/portaudiocpp/DirectionSpecificStreamParameters.hxx create mode 100644 bindings/cpp/include/portaudiocpp/Exception.hxx create mode 100644 bindings/cpp/include/portaudiocpp/HostApi.hxx create mode 100644 bindings/cpp/include/portaudiocpp/InterfaceCallbackStream.hxx create mode 100644 bindings/cpp/include/portaudiocpp/MemFunCallbackStream.hxx create mode 100644 bindings/cpp/include/portaudiocpp/PortAudioCpp.hxx create mode 100644 bindings/cpp/include/portaudiocpp/SampleDataFormat.hxx create mode 100644 bindings/cpp/include/portaudiocpp/Stream.hxx create mode 100644 bindings/cpp/include/portaudiocpp/StreamParameters.hxx create mode 100644 bindings/cpp/include/portaudiocpp/System.hxx create mode 100644 bindings/cpp/include/portaudiocpp/SystemDeviceIterator.hxx create mode 100644 bindings/cpp/include/portaudiocpp/SystemHostApiIterator.hxx create mode 100644 bindings/cpp/lib/Makefile.am create mode 100644 bindings/cpp/lib/Makefile.in create mode 100644 bindings/cpp/portaudiocpp.pc.in create mode 100644 bindings/cpp/source/portaudiocpp/AsioDeviceAdapter.cxx create mode 100644 bindings/cpp/source/portaudiocpp/BlockingStream.cxx create mode 100644 bindings/cpp/source/portaudiocpp/CFunCallbackStream.cxx create mode 100644 bindings/cpp/source/portaudiocpp/CallbackInterface.cxx create mode 100644 bindings/cpp/source/portaudiocpp/CallbackStream.cxx create mode 100644 bindings/cpp/source/portaudiocpp/CppFunCallbackStream.cxx create mode 100644 bindings/cpp/source/portaudiocpp/Device.cxx create mode 100644 bindings/cpp/source/portaudiocpp/DirectionSpecificStreamParameters.cxx create mode 100644 bindings/cpp/source/portaudiocpp/Exception.cxx create mode 100644 bindings/cpp/source/portaudiocpp/HostApi.cxx create mode 100644 bindings/cpp/source/portaudiocpp/InterfaceCallbackStream.cxx create mode 100644 bindings/cpp/source/portaudiocpp/MemFunCallbackStream.cxx create mode 100644 bindings/cpp/source/portaudiocpp/Stream.cxx create mode 100644 bindings/cpp/source/portaudiocpp/StreamParameters.cxx create mode 100644 bindings/cpp/source/portaudiocpp/System.cxx create mode 100644 bindings/cpp/source/portaudiocpp/SystemDeviceIterator.cxx create mode 100644 bindings/cpp/source/portaudiocpp/SystemHostApiIterator.cxx create mode 100644 build/dev-cpp/Makefile-dll create mode 100644 build/dev-cpp/Makefile-static create mode 100644 build/dev-cpp/portaudio-dll.dev create mode 100644 build/dev-cpp/portaudio-static.dev create mode 100644 build/dev-cpp/readme.txt create mode 100644 build/msvc/portaudio.def create mode 100644 build/msvc/portaudio.dsp create mode 100644 build/msvc/portaudio.dsw create mode 100644 build/msvc/portaudio.sln create mode 100644 build/msvc/portaudio.vcproj create mode 100644 build/msvc/readme.txt create mode 100644 build/scons/SConscript_common create mode 100644 build/scons/SConscript_opts create mode 100755 depcomp create mode 100644 doc/src/license.dox create mode 100644 doc/src/mainpage.dox create mode 100644 doc/src/srcguide.dox create mode 100644 doc/utils/checkfiledocs.py delete mode 100644 docs/index.html delete mode 100644 docs/latency.html delete mode 100644 docs/pa_impl_guide.html delete mode 100644 docs/pa_impl_startstop.html delete mode 100644 docs/pa_tut_asio.html delete mode 100644 docs/pa_tut_callback.html delete mode 100644 docs/pa_tut_devs.html delete mode 100644 docs/pa_tut_explore.html delete mode 100644 docs/pa_tut_init.html delete mode 100644 docs/pa_tut_mac.html delete mode 100644 docs/pa_tut_mac_osx.html delete mode 100644 docs/pa_tut_open.html delete mode 100644 docs/pa_tut_oss.html delete mode 100644 docs/pa_tut_over.html delete mode 100644 docs/pa_tut_pc.html delete mode 100644 docs/pa_tut_run.html delete mode 100644 docs/pa_tut_rw.html delete mode 100644 docs/pa_tut_term.html delete mode 100644 docs/pa_tut_util.html delete mode 100644 docs/pa_tutorial.html delete mode 100644 docs/portaudio_h.txt delete mode 100644 docs/portaudio_icmc2001.pdf delete mode 100644 docs/proposals.html delete mode 100644 docs/releases.html delete mode 100644 docs/style.html create mode 100644 include/pa_asio.h create mode 100644 include/pa_jack.h create mode 100644 include/pa_linux_alsa.h create mode 100644 include/pa_mac_core.h create mode 100644 include/pa_win_ds.h create mode 100644 include/pa_win_waveformat.h create mode 100644 include/pa_win_wmme.h create mode 100644 include/portaudio.h create mode 100644 ltmain.sh create mode 100755 missing delete mode 100644 pa_asio/borland_asio_readme.txt delete mode 100644 pa_asio/pa_asio.cpp delete mode 100755 pa_asio/readme_asio_sdk_patch.txt delete mode 100644 pa_beos/PlaybackNode.cc delete mode 100644 pa_beos/PlaybackNode.h delete mode 100644 pa_beos/pa_beos_mk.cc delete mode 100644 pa_common/pa_convert.c delete mode 100644 pa_common/pa_host.h delete mode 100644 pa_common/pa_lib.c delete mode 100644 pa_common/portaudio.h delete mode 100644 pa_dll_switch/PaDllEntry.h delete mode 100644 pa_dll_switch/letter_from_tim_010817.txt delete mode 100644 pa_dll_switch/loadPA_DLL.cpp delete mode 100644 pa_dll_switch/pa_lib.c delete mode 100644 pa_dll_switch/portaudio.h delete mode 100644 pa_mac/pa_mac.c delete mode 100644 pa_mac_core/notes.txt delete mode 100644 pa_mac_core/pa_mac_core.c delete mode 100644 pa_sgi/Makefile delete mode 100644 pa_sgi/pa_sgi.c delete mode 100644 pa_sgi/pthread-Makefile delete mode 100644 pa_sgi/pthread-pa_sgi.c delete mode 100644 pa_tests/pa_devs.c delete mode 100644 pa_tests/paqa_errs.c delete mode 100644 pa_tests/patest1.c delete mode 100644 pa_tests/patest_ringmix.c delete mode 100644 pa_tests/patest_wire.c delete mode 100644 pa_unix_oss/Makefile delete mode 100644 pa_unix_oss/Makefile_freebsd delete mode 100644 pa_unix_oss/pa_unix_oss.c delete mode 100644 pa_win_ds/dsound_wrapper.c delete mode 100644 pa_win_ds/dsound_wrapper.h delete mode 100644 pa_win_ds/pa_dsound.c delete mode 100644 pa_win_ds/portaudio.def delete mode 100644 pa_win_wmme/Makefile.cygwin delete mode 100644 pa_win_wmme/pa_win_wmme.c delete mode 100644 pablio/ringbuffer.c delete mode 100644 pablio/ringbuffer.h create mode 100644 portaudio-2.0.pc.in create mode 100644 src/SConscript create mode 100644 src/common/pa_allocation.c create mode 100644 src/common/pa_allocation.h create mode 100644 src/common/pa_converters.c create mode 100644 src/common/pa_converters.h create mode 100644 src/common/pa_cpuload.c create mode 100644 src/common/pa_cpuload.h create mode 100644 src/common/pa_debugprint.c create mode 100644 src/common/pa_debugprint.h create mode 100644 src/common/pa_dither.c create mode 100644 src/common/pa_dither.h create mode 100644 src/common/pa_endianness.h create mode 100644 src/common/pa_front.c create mode 100644 src/common/pa_hostapi.h create mode 100644 src/common/pa_memorybarrier.h create mode 100644 src/common/pa_process.c create mode 100644 src/common/pa_process.h create mode 100644 src/common/pa_ringbuffer.c create mode 100644 src/common/pa_ringbuffer.h create mode 100644 src/common/pa_skeleton.c create mode 100644 src/common/pa_stream.c create mode 100644 src/common/pa_stream.h rename {pa_common => src/common}/pa_trace.c (68%) create mode 100644 src/common/pa_trace.h create mode 100644 src/common/pa_types.h create mode 100644 src/common/pa_util.h create mode 100644 src/hostapi/alsa/pa_linux_alsa.c create mode 100644 src/hostapi/asihpi/pa_linux_asihpi.c create mode 100644 src/hostapi/asio/ASIO-README.txt rename {pa_asio => src/hostapi/asio}/Callback_adaptation_.pdf (100%) rename {pa_asio => src/hostapi/asio}/Pa_ASIO.pdf (100%) create mode 100644 src/hostapi/asio/iasiothiscallresolver.cpp create mode 100644 src/hostapi/asio/iasiothiscallresolver.h create mode 100644 src/hostapi/asio/pa_asio.cpp create mode 100644 src/hostapi/coreaudio/notes.txt create mode 100644 src/hostapi/coreaudio/pa_mac_core.c create mode 100644 src/hostapi/coreaudio/pa_mac_core_blocking.c create mode 100644 src/hostapi/coreaudio/pa_mac_core_blocking.h create mode 100644 src/hostapi/coreaudio/pa_mac_core_internal.h create mode 100644 src/hostapi/coreaudio/pa_mac_core_old.c create mode 100644 src/hostapi/coreaudio/pa_mac_core_utilities.c create mode 100644 src/hostapi/coreaudio/pa_mac_core_utilities.h create mode 100644 src/hostapi/dsound/pa_win_ds.c create mode 100644 src/hostapi/dsound/pa_win_ds_dynlink.c create mode 100644 src/hostapi/dsound/pa_win_ds_dynlink.h create mode 100644 src/hostapi/jack/pa_jack.c rename {pa_unix_oss => src/hostapi/oss}/low_latency_tip.txt (100%) create mode 100644 src/hostapi/oss/pa_unix_oss.c rename {pa_unix_oss => src/hostapi/oss}/recplay.c (100%) create mode 100644 src/hostapi/wasapi/pa_win_wasapi.cpp create mode 100644 src/hostapi/wdmks/pa_win_wdmks.c create mode 100644 src/hostapi/wdmks/readme.txt create mode 100644 src/hostapi/wmme/pa_win_wmme.c create mode 100644 src/os/unix/pa_unix_hostapis.c create mode 100644 src/os/unix/pa_unix_util.c create mode 100644 src/os/unix/pa_unix_util.h create mode 100644 src/os/win/pa_win_hostapis.c create mode 100644 src/os/win/pa_win_util.c create mode 100644 src/os/win/pa_win_waveformat.c create mode 100644 src/os/win/pa_win_wdmks_utils.c create mode 100644 src/os/win/pa_win_wdmks_utils.h create mode 100644 src/os/win/pa_x86_plain_converters.c rename pa_common/pa_trace.h => src/os/win/pa_x86_plain_converters.h (57%) create mode 100644 test/README.txt rename {pa_tests => test}/debug_convert.c (93%) rename {pa_tests => test}/debug_dither_calc.c (86%) rename {pa_tests => test}/debug_dual.c (95%) rename {pa_tests => test}/debug_multi_in.c (95%) rename {pa_tests => test}/debug_multi_out.c (94%) rename {pa_tests => test}/debug_record.c (97%) rename {pa_tests => test}/debug_record_reuse.c (97%) rename {pa_tests => test}/debug_sine.c (95%) rename {pa_tests => test}/debug_sine_amp.c (94%) rename {pa_tests => test}/debug_sine_formats.c (94%) rename {pa_tests => test}/debug_srate.c (96%) rename {pa_tests => test}/debug_test1.c (100%) create mode 100644 test/pa_devs.c rename {pa_tests => test}/pa_fuzz.c (64%) rename {pa_tests => test}/pa_minlat.c (62%) rename {pa_tests => test}/paqa_devs.c (55%) create mode 100644 test/paqa_errs.c create mode 100644 test/patest1.c rename {pa_tests => test}/patest_buffer.c (66%) create mode 100644 test/patest_callbackstop.c rename {pa_tests => test}/patest_clip.c (70%) create mode 100644 test/patest_converters.c rename {pa_tests => test}/patest_dither.c (52%) create mode 100644 test/patest_dsound_surround.c rename {pa_tests => test}/patest_hang.c (58%) create mode 100644 test/patest_in_overflow.c rename {pa_tests => test}/patest_latency.c (71%) rename {pa_tests => test}/patest_leftright.c (66%) rename {pa_tests => test}/patest_longsine.c (64%) rename {pa_tests => test}/patest_many.c (75%) rename {pa_tests => test}/patest_maxsines.c (61%) create mode 100644 test/patest_mono.c create mode 100644 test/patest_mono_asio_channel_select.c create mode 100644 test/patest_multi_sine.c create mode 100644 test/patest_out_underflow.c rename {pa_tests => test}/patest_pink.c (70%) create mode 100644 test/patest_prime.c create mode 100644 test/patest_read_record.c create mode 100644 test/patest_read_write_wire.c rename {pa_tests => test}/patest_record.c (59%) create mode 100644 test/patest_ringmix.c rename {pa_tests => test}/patest_saw.c (74%) rename {pa_tests => test}/patest_sine.c (65%) rename {pa_tests => test}/patest_sine8.c (60%) create mode 100644 test/patest_sine_channelmaps.c rename {pa_tests => test}/patest_sine_formats.c (73%) rename {pa_tests => test}/patest_sine_time.c (52%) create mode 100644 test/patest_start_stop.c rename {pa_tests => test}/patest_stop.c (73%) create mode 100644 test/patest_stop_playout.c rename {pa_tests => test}/patest_sync.c (68%) create mode 100644 test/patest_timing.c rename {pa_tests => test}/patest_toomanysines.c (69%) rename pa_tests/patest_multi_sine.c => test/patest_two_rates.c (59%) rename {pa_tests => test}/patest_underflow.c (72%) create mode 100644 test/patest_wire.c create mode 100644 test/patest_wmme_surround.c create mode 100644 test/patest_write_sine.c create mode 100644 test/patest_write_stop.c delete mode 100644 testcvs/stuff/info.txt diff --git a/COMPILING.DARWIN b/COMPILING.DARWIN new file mode 100644 index 0000000..6d7aa87 --- /dev/null +++ b/COMPILING.DARWIN @@ -0,0 +1 @@ +To compile on darwin, you will need to use the darwin makefile, gcc 3.3 or later and the universal SDK. for more info, see http://portaudio.com/trac/wiki/TutorialDir/Compile/MacintoshCoreAudio diff --git a/Doxyfile b/Doxyfile new file mode 100644 index 0000000..7dbfdfe --- /dev/null +++ b/Doxyfile @@ -0,0 +1,239 @@ +# Doxyfile 1.4.6 + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +PROJECT_NAME = PortAudio +PROJECT_NUMBER = 2.0 +OUTPUT_DIRECTORY = ./doc/ +CREATE_SUBDIRS = NO +OUTPUT_LANGUAGE = English +USE_WINDOWS_ENCODING = NO +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the +ALWAYS_DETAILED_SEC = NO +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = NO +STRIP_FROM_PATH = +STRIP_FROM_INC_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = NO +MULTILINE_CPP_IS_BRIEF = NO +DETAILS_AT_TOP = NO +INHERIT_DOCS = YES +SEPARATE_MEMBER_PAGES = NO +TAB_SIZE = 8 +ALIASES = +OPTIMIZE_OUTPUT_FOR_C = YES +OPTIMIZE_OUTPUT_JAVA = NO +BUILTIN_STL_SUPPORT = NO +DISTRIBUTE_GROUP_DOC = NO +SUBGROUPING = YES +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- +EXTRACT_ALL = YES +EXTRACT_PRIVATE = NO +EXTRACT_STATIC = NO +EXTRACT_LOCAL_CLASSES = YES +EXTRACT_LOCAL_METHODS = NO +HIDE_UNDOC_MEMBERS = NO +HIDE_UNDOC_CLASSES = NO +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = NO +CASE_SENSE_NAMES = YES +HIDE_SCOPE_NAMES = NO +SHOW_INCLUDE_FILES = YES +INLINE_INFO = YES +SORT_MEMBER_DOCS = YES +SORT_BRIEF_DOCS = NO +SORT_BY_SCOPE_NAME = NO +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 30 +SHOW_USED_FILES = YES +SHOW_DIRECTORIES = NO +FILE_VERSION_FILTER = +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- +QUIET = NO +WARNINGS = YES +WARN_IF_UNDOCUMENTED = YES +WARN_IF_DOC_ERROR = YES +WARN_NO_PARAMDOC = NO +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- +INPUT = doc/src \ + src \ + include \ + test +FILE_PATTERNS = *.h \ + *.c \ + *.cpp \ + *.dox +RECURSIVE = YES +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = +INPUT_FILTER = +FILTER_PATTERNS = +FILTER_SOURCE_FILES = NO +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = NO +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = YES +REFERENCES_RELATION = YES +USE_HTAGS = NO +VERBATIM_HEADERS = YES +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = NO +COLS_IN_ALPHA_INDEX = 5 +IGNORE_PREFIX = +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- +GENERATE_HTML = YES +HTML_OUTPUT = html +HTML_FILE_EXTENSION = .html +HTML_HEADER = +HTML_FOOTER = +HTML_STYLESHEET = +HTML_ALIGN_MEMBERS = YES +GENERATE_HTMLHELP = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +BINARY_TOC = NO +TOC_EXPAND = NO +DISABLE_INDEX = NO +ENUM_VALUES_PER_LINE = 4 +GENERATE_TREEVIEW = NO +TREEVIEW_WIDTH = 250 +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- +GENERATE_LATEX = NO +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4wide +EXTRA_PACKAGES = +LATEX_HEADER = +PDF_HYPERLINKS = NO +USE_PDFLATEX = NO +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- +GENERATE_MAN = NO +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_LINKS = NO +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = NO +XML_OUTPUT = xml +XML_SCHEMA = +XML_DTD = +XML_PROGRAMLISTING = YES +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- +GENERATE_AUTOGEN_DEF = NO +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = NO +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- +TAGFILES = +GENERATE_TAGFILE = +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +PERL_PATH = /usr/bin/perl +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- +CLASS_DIAGRAMS = NO +HIDE_UNDOC_RELATIONS = NO +HAVE_DOT = NO +CLASS_GRAPH = YES +COLLABORATION_GRAPH = YES +GROUP_GRAPHS = YES +UML_LOOK = NO +TEMPLATE_RELATIONS = YES +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = YES +CALL_GRAPH = NO +GRAPHICAL_HIERARCHY = YES +DIRECTORY_GRAPH = YES +DOT_IMAGE_FORMAT = png +DOT_PATH = +DOTFILE_DIRS = +MAX_DOT_GRAPH_WIDTH = 1024 +MAX_DOT_GRAPH_HEIGHT = 1024 +MAX_DOT_GRAPH_DEPTH = 1000 +DOT_TRANSPARENT = NO +DOT_MULTI_TARGETS = NO +GENERATE_LEGEND = YES +DOT_CLEANUP = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- +SEARCHENGINE = NO diff --git a/LICENSE.txt b/LICENSE.txt index 105da3f..e0ac4e8 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,10 +1,11 @@ Portable header file to contain: +>>>>> /* * PortAudio Portable Real-Time Audio Library * PortAudio API Header File - * Latest version available at: http://www.audiomulch.com/portaudio/ + * Latest version available at: http://www.portaudio.com * - * Copyright (c) 1999-2000 Ross Bencina and Phil Burk + * Copyright (c) 1999-2006 Ross Bencina and Phil Burk * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files @@ -17,10 +18,6 @@ Portable header file to contain: * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * - * Any person wishing to distribute modifications to the Software is - * requested to send the modifications to the original developer so that - * they can be incorporated into the canonical version. - * * 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. @@ -28,14 +25,26 @@ Portable header file to contain: * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/* + * The text above constitutes the entire PortAudio license; however, + * the PortAudio community also makes the following non-binding requests: * + * Any person wishing to distribute modifications to the Software is + * requested to send the modifications to the original developer so that + * they can be incorporated into the canonical version. It is also + * requested that these non-binding requests be included along with the + * license above. */ +<<<<< Implementation files to contain: +>>>>> /* * PortAudio Portable Real-Time Audio Library - * Latest version at: http://www.audiomulch.com/portaudio/ + * Latest version at: http://www.portaudio.com * Implementation * Copyright (c) 1999-2000 * @@ -50,10 +59,6 @@ Implementation files to contain: * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * - * Any person wishing to distribute modifications to the Software is - * requested to send the modifications to the original developer so that - * they can be incorporated into the canonical version. - * * 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. @@ -61,5 +66,16 @@ Implementation files to contain: * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/* + * The text above constitutes the entire PortAudio license; however, + * the PortAudio community also makes the following non-binding requests: * - */ \ No newline at end of file + * Any person wishing to distribute modifications to the Software is + * requested to send the modifications to the original developer so that + * they can be incorporated into the canonical version. It is also + * requested that these non-binding requests be included along with the + * license above. + */ +<<<<< \ No newline at end of file diff --git a/Makefile.in b/Makefile.in index 2a3cc34..dca537d 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1,76 +1,160 @@ # -# PortAudio Makefile.in +# PortAudio V19 Makefile.in # # Dominic Mazzoni +# Modifications by Mikael Magnusson # +top_srcdir = @top_srcdir@ +srcdir = @srcdir@ +VPATH = @srcdir@ +top_builddir = . PREFIX = @prefix@ +prefix = $(PREFIX) +exec_prefix = @exec_prefix@ +bindir = @bindir@ +libdir = @libdir@ +includedir = @includedir@ CC = @CC@ -CFLAGS = @CFLAGS@ -Ipa_common +CFLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/src/common -I$(top_srcdir)/src/os/unix @CFLAGS@ @DEFS@ LIBS = @LIBS@ AR = @AR@ RANLIB = @RANLIB@ +LIBTOOL = @LIBTOOL@ INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ SHARED_FLAGS = @SHARED_FLAGS@ +LDFLAGS = @LDFLAGS@ DLL_LIBS = @DLL_LIBS@ +CXXFLAGS = @CXXFLAGS@ +NASM = @NASM@ +NASMOPT = @NASMOPT@ +LN_S = @LN_S@ +LT_CURRENT=@LT_CURRENT@ +LT_REVISION=@LT_REVISION@ +LT_AGE=@LT_AGE@ OTHER_OBJS = @OTHER_OBJS@ -PALIB = libportaudio.a -PADLL = @PADLL@ -PADLLV = $(PADLL).0.0.18 -PAINC = pa_common/portaudio.h +PALIB = libportaudio.la +PAINC = include/portaudio.h + +PA_LDFLAGS = $(LDFLAGS) $(SHARED_FLAGS) -rpath $(libdir) -no-undefined \ + -export-symbols-regex "(Pa|PaMacCore|PaJack|PaAlsa)_.*" \ + -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) COMMON_OBJS = \ - pa_common/pa_convert.o \ - pa_common/pa_lib.o + src/common/pa_allocation.o \ + src/common/pa_converters.o \ + src/common/pa_cpuload.o \ + src/common/pa_dither.o \ + src/common/pa_debugprint.o \ + src/common/pa_front.o \ + src/common/pa_process.o \ + src/common/pa_skeleton.o \ + src/common/pa_stream.o \ + src/common/pa_trace.o TESTS = \ + bin/paqa_devs \ + bin/paqa_errs \ + bin/patest1 \ bin/patest_buffer \ + bin/patest_callbackstop \ bin/patest_clip \ bin/patest_dither \ bin/patest_hang \ + bin/patest_in_overflow \ bin/patest_latency \ bin/patest_leftright \ bin/patest_longsine \ bin/patest_many \ bin/patest_maxsines \ bin/patest_multi_sine \ + bin/patest_out_underflow \ bin/patest_pink \ + bin/patest_prime \ + bin/patest_read_record \ + bin/patest_read_write_wire \ bin/patest_record \ bin/patest_ringmix \ bin/patest_saw \ bin/patest_sine8 \ bin/patest_sine \ + bin/patest_sine_channelmaps \ bin/patest_sine_formats \ bin/patest_sine_time \ + bin/patest_start_stop \ bin/patest_stop \ - bin/patest_sync \ + bin/patest_stop_playout \ bin/patest_toomanysines \ bin/patest_underflow \ - bin/patest_wire - -OBJS = $(COMMON_OBJS) $(OTHER_OBJS) - -all: lib/$(PALIB) lib/$(PADLLV) tests - -tests: bin/ $(TESTS) - -lib/$(PALIB): lib/ $(OBJS) Makefile $(PAINC) - $(AR) ruv lib/$(PALIB) $(OBJS) - $(RANLIB) lib/$(PALIB) - -lib/$(PADLLV): lib/ $(OBJS) Makefile $(PAINC) - $(CC) $(SHARED_FLAGS) -o lib/$(PADLLV) $(OBJS) $(DLL_LIBS) - -$(TESTS): bin/%: lib/$(PALIB) Makefile $(PAINC) pa_tests/%.c - $(CC) -o $@ $(CFLAGS) pa_tests/$*.c lib/$(PALIB) $(LIBS) - -install: lib/$(PALIB) lib/$(PADLLV) - $(INSTALL) -m 644 lib/$(PADLLV) $(PREFIX)/lib/$(PADLLV) - $(INSTALL) -m 644 lib/$(PALIB) $(PREFIX)/lib/$(PALIB) - cd $(PREFIX)/lib && rm -f $(PADLL) && ln -s $(PADLLV) $(PADLL) - $(INSTALL) -m 644 pa_common/portaudio.h $(PREFIX)/include/portaudio.h + bin/patest_wire \ + bin/patest_write_sine \ + bin/pa_devs \ + bin/pa_fuzz \ + bin/pa_minlat + +# Most of these don't compile yet. Put them in TESTS, above, if +# you want to try to compile them... +ALL_TESTS = \ + $(TESTS) \ + bin/patest_sync \ + bin/debug_convert \ + bin/debug_dither_calc \ + bin/debug_dual \ + bin/debug_multi_in \ + bin/debug_multi_out \ + bin/debug_record \ + bin/debug_record_reuse \ + bin/debug_sine_amp \ + bin/debug_sine \ + bin/debug_sine_formats \ + bin/debug_srate \ + bin/debug_test1 + +OBJS := $(COMMON_OBJS) $(OTHER_OBJS) + +LTOBJS := $(OBJS:.o=.lo) + +SRC_DIRS = \ + src/common \ + src/hostapi/alsa \ + src/hostapi/asihpi \ + src/hostapi/asio \ + src/hostapi/coreaudio \ + src/hostapi/dsound \ + src/hostapi/jack \ + src/hostapi/oss \ + src/hostapi/wasapi \ + src/hostapi/wdmks \ + src/hostapi/wmme \ + src/os/mac_osx \ + src/os/unix \ + src/os/win + +SUBDIRS = +@ENABLE_CXX_TRUE@SUBDIRS += bindings/cpp + +all: lib/$(PALIB) all-recursive tests + +tests: bin-stamp $(TESTS) + + +lib/$(PALIB): lib-stamp $(LTOBJS) $(MAKEFILE) $(PAINC) + $(LIBTOOL) --mode=link $(CC) $(PA_LDFLAGS) -o lib/$(PALIB) $(LTOBJS) $(DLL_LIBS) + +$(ALL_TESTS): bin/%: lib/$(PALIB) $(MAKEFILE) $(PAINC) test/%.c + $(LIBTOOL) --mode=link $(CC) -o $@ $(CFLAGS) $(top_srcdir)/test/$*.c lib/$(PALIB) $(LIBS) + + +install: lib/$(PALIB) portaudio-2.0.pc + $(INSTALL) -d $(DESTDIR)$(libdir) + $(LIBTOOL) --mode=install $(INSTALL) lib/$(PALIB) $(DESTDIR)$(libdir) + $(INSTALL) -d $(DESTDIR)$(includedir) + $(INSTALL_DATA) -m 644 $(top_srcdir)/$(PAINC) $(DESTDIR)$(includedir)/portaudio.h + $(INSTALL) -d $(DESTDIR)$(libdir)/pkgconfig + $(INSTALL) -m 644 portaudio-2.0.pc $(DESTDIR)$(libdir)/pkgconfig/portaudio-2.0.pc @echo "" @echo "------------------------------------------------------------" @echo "PortAudio was successfully installed." @@ -78,18 +162,53 @@ install: lib/$(PALIB) lib/$(PADLLV) @echo "On some systems (e.g. Linux) you should run 'ldconfig' now" @echo "to make the shared object available. You may also need to" @echo "modify your LD_LIBRARY_PATH environment variable to include" - @echo "the directory $(PREFIX)/lib" + @echo "the directory $(libdir)" @echo "------------------------------------------------------------" @echo "" + $(MAKE) install-recursive + +uninstall: + $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$(PALIB) + $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(includedir)/portaudio.h + $(MAKE) uninstall-recursive clean: - rm -f $(OBJS) $(TESTS) lib/$(PALIB) + $(LIBTOOL) --mode=clean rm -f $(LTOBJS) $(ALL_TESTS) lib/$(PALIB) + $(RM) bin-stamp lib-stamp + -$(RM) -r bin lib + +distclean: clean + $(RM) config.log config.status Makefile libtool portaudio-2.0.pc -%.o: %.c Makefile $(PAINC) +%.o: %.c $(MAKEFILE) $(PAINC) $(CC) -c $(CFLAGS) $< -o $@ -bin: - mkdir bin +%.lo: %.c $(MAKEFILE) $(PAINC) + $(LIBTOOL) --mode=compile $(CC) -c $(CFLAGS) $< -o $@ + +%.o: %.cpp $(MAKEFILE) $(PAINC) + $(CXX) -c $(CXXFLAGS) $< -o $@ + +%.o: %.asm + $(NASM) $(NASMOPT) -o $@ $< + +bin-stamp: + -mkdir bin + touch $@ + +lib-stamp: + -mkdir lib + -mkdir -p $(SRC_DIRS) + touch $@ + +Makefile: Makefile.in config.status + $(SHELL) config.status + +all-recursive: + if test -n "$(SUBDIRS)" ; then for dir in "$(SUBDIRS)"; do $(MAKE) -C $$dir all; done ; fi + +install-recursive: + if test -n "$(SUBDIRS)" ; then for dir in "$(SUBDIRS)"; do $(MAKE) -C $$dir install; done ; fi -lib: - mkdir lib +uninstall-recursive: + if test -n "$(SUBDIRS)" ; then for dir in "$(SUBDIRS)"; do $(MAKE) -C $$dir uninstall; done ; fi diff --git a/Makefile.linux b/Makefile.linux deleted file mode 100644 index 4deee60..0000000 --- a/Makefile.linux +++ /dev/null @@ -1,59 +0,0 @@ -# Make PortAudio for Linux -# Updated 2001/08/25 Bill Eldridge bill@rfa.org -# Updated 2001/10/16, philburk@softsynth.com, s/unix_oss/unix_oss/ -# Updated 2002/04/30 Bill Eldridge bill@rfa.org -# Made the libinstall and tests compile a bit cleaner - -# A pretty bare makefile, that figures out all the test files -# and compiles them against the library in the pa_unix_oss directory. - -# Do "make all" and then when happy, "make libinstall" -# (if not happy, "make clean") - -# The ldconfig stuff in libinstall is the wrong way to do it - -# someone tell me the right way, please - - -LIBS = -lm -lpthread - -CDEFINES = -I../pa_common -CFLAGS = -g -LIBINST = /usr/local/lib - -TESTS:= $(wildcard pa_tests/pa*.c pa_tests/debug*.c) -TESTO:= $(wildcard pa_tests/pa*.o pa_tests/debug*.o) - -LIBFILES:= ./pa_common/pa_lib.c ./pa_unix_oss/pa_unix_oss.c - -#all: sharedlib libinstall tests -all: sharedlib libinstall testo testq - -.c.o: - -gcc -c -I./pa_common $< -o $*.o - -.o: - -gcc $*.o -o $* -Lpa_unix_oss $(LIBS) -lportaudio - -#.c.o: -# -gcc -c -I./pa_common $< -o $*.o -# -gcc $*.o -o $* -Lpa_unix_oss $(LIBS) -lportaudio - - -sharedlib: $(LIBFILES:.c=.o) - gcc -shared -o ./pa_unix_oss/libportaudio.so ./pa_common/pa_lib.o ./pa_unix_oss/pa_unix_oss.o - -libinstall: ./pa_unix_oss/libportaudio.so - @cp -f ./pa_unix_oss/libportaudio.so $(LIBINST) - @/sbin/ldconfig - -testo: $(TESTS:.c=.o) - -testq: $(TESTO:.o=) - -clean: - -@rm -f $(TESTS:.c=.o) - -@rm -f $(TESTS:.c=) - -@rm -f $(LIBFILES:.c=.o) - -@rm -f ./pa_unix_oss/libportaudio.so - - diff --git a/Makefile.mingw b/Makefile.mingw deleted file mode 100644 index 2043a16..0000000 --- a/Makefile.mingw +++ /dev/null @@ -1,57 +0,0 @@ - -# Makefile for PortAudio on mingw (http://mingw.sourceforge.net) - -# Contributed by Bill Eldridge, bill@rfa.org, Radio Free Asia -# Copyright 2002/02/20, GPL - -# Uses a common mingw32 cross-compiler that defaults -# to everything in /usr/local/cross-tools - -# First edit your path with -# export PATH=/usr/local/cross-tools/bin:$PATH - -# Usage: make -f Makefile.mingw all -# or make -f Makefile.mingw sharedlib -# make -f Makefile.mingw tests -# -# Then copy executables & portaudio.dll to your Windows machine -# -# To make work with pa_win_ds, you'll have to substitue -# all the pa_win_wmme files with pa_win_ds files, no biggie. - -CC= i586-mingw32msvc-gcc -DLLTOOL= i586-mingw32msvc-dlltool -DLLWRAP= i586-mingw32msvc-dllwrap - -ARCH= pa_win_wmme - -TESTS:= $(wildcard pa_tests/pa*.c pa_tests/debug*.c) - -.c.o: - -$(CC) -c -I./pa_common $< -o $*.o - -$(CC) $*.o -o $*.exe -L/usr/local/lib -L$(ARCH) -lportaudio.dll -lwinmm - -all: sharedlib tests - -sharedlib: ./pa_common/pa_lib.c - $(CC) -c -I./pa_common pa_common/pa_lib.c -o pa_common/pa_lib.o - $(CC) -c -I./pa_common pa_win_wmme/pa_win_wmme.c -o pa_win_wmme/pa_win_wmme.o - $(CC) -shared -mthreads -o portaudio.dll pa_common/pa_lib.o pa_win_wmme/pa_win_wmme.o -L/usr/local/cross-tools/i586-win32msvc/lib -lwinmm -lm - $(DLLWRAP) --export-all --output-def=libportaudio.def --output-lib=libportaudio.a --dllname=portaudio.dll --drivername=i586-mingw32msvc-gcc pa_common/pa_lib.o pa_win_wmme/pa_win_wmme.o -L/usr/local/cross-tools/i586-win32msvc/lib -lwinmm -lm - $(CC) -shared -Wl,--enable-auto-image-base -o portaudio.dll -Wl,--out-implib=pa_win_wmme/libportaudio.dll.a pa_common/pa_lib.o pa_win_wmme/pa_win_wmme.o -L/usr/local/cross-tools/i586-win32msvc/lib -lwinmm - - -tests: $(TESTS:.c=.o) - -sine: - $(CC) -c -I./pa_common pa_tests/patest_sine.c -o pa_tests/patest_sine.o - $(CC) pa_tests/patest_sine.o -o pa_tests/patest_sine.exe -L/usr/local/lib -lportaudio.dll -lwinmm - -clean: - -rm ./pa_tests/*.exe - -rm ./pa_tests/*.o - -nothing: - $(CC) pa_tests/patest_sine.o -L/usr/lib/w32api -L./pa_win_wmme -lportaudio.dll -lwinmm - - diff --git a/README.txt b/README.txt index d1e5d7d..2113827 100644 --- a/README.txt +++ b/README.txt @@ -1,11 +1,10 @@ README for PortAudio -Implementations for PC DirectSound and Mac SoundManager /* * PortAudio Portable Real-Time Audio Library - * Latest Version at: http://www.portaudio.com// + * Latest Version at: http://www.portaudio.com * - * Copyright (c) 1999-2000 Phil Burk and Ross Bencina + * Copyright (c) 1999-2008 Phil Burk and Ross Bencina * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files @@ -18,10 +17,6 @@ Implementations for PC DirectSound and Mac SoundManager * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * - * Any person wishing to distribute modifications to the Software is - * requested to send the modifications to the original developer so that - * they can be incorporated into the canonical version. - * * 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. @@ -29,53 +24,75 @@ Implementations for PC DirectSound and Mac SoundManager * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/* + * The text above constitutes the entire PortAudio license; however, + * the PortAudio community also makes the following non-binding requests: * + * Any person wishing to distribute modifications to the Software is + * requested to send the modifications to the original developer so that + * they can be incorporated into the canonical version. It is also + * requested that these non-binding requests be included along with the + * license above. */ + PortAudio is a portable audio I/O library designed for cross-platform -support of audio. It uses a callback mechanism to request audio processing. -Audio can be generated in various formats, including 32 bit floating point, -and will be converted to the native format internally. +support of audio. It uses either a callback mechanism to request audio +processing, or blocking read/write calls to buffer data between the +native audio subsystem and the client. Audio can be processed in various +formats, including 32 bit floating point, and will be converted to the +native format internally. Documentation: - See "pa_common/portaudio.h" for API spec. - See docs folder for a tutorial. + Documentation is available in "/doc/html/index.html" + Also see "src/common/portaudio.h" for API spec. Also see http://www.portaudio.com/docs/ - And see "pa_tests/patest_saw.c" for an example. + And see the "test/" directory for many examples of usage + (we suggest "test/patest_saw.c" for an example) For information on compiling programs with PortAudio, please see the tutorial at: - http://www.portaudio.com/docs/pa_tutorial.html + http://portaudio.com/trac/wiki/TutorialDir/TutorialStart +We have an active mailing list for user and developer discussions. +Please feel free to join. See http://www.portaudio.com for details. + + Important Files and Folders: - pa_common/ = platform independant code - pa_common/portaudio.h = header file for PortAudio API. Specifies API. - pa_common/pa_lib.c = host independant code for all implementations. + include/portaudio.h = header file for PortAudio API. Specifies API. + src/common/ = platform independant code, host independant + code for all implementations. + src/os = os specific (but host api neutral) code + src/hostapi = implementations for different host apis + + +Host API Implementations: + src/hostapi/alsa = Advanced Linux Sound Architecture (ALSA) + src/hostapi/asihpi = AudioScience HPI + src/hostapi/asio = ASIO for Windows and Macintosh + src/hostapi/coreaudio = Macintosh Core Audio for OS X + src/hostapi/dsound = Windows Direct Sound + src/hostapi/jack = JACK Audio Connection Kit + src/hostapi/oss = Unix Open Sound System (OSS) + src/hostapi/wasapi = Windows Vista WASAPI + src/hostapi/wdmks = Windows WDM Kernel Streaming + src/hostapi/wmme = Windows MultiMedia Extensions (MME) + - pablio = simple blocking read/write interface - -Platform Implementations - pa_asio = ASIO for Windows and Macintosh - pa_beos = BeOS - pa_mac = Macintosh Sound Manager for OS 8,9 and Carbon - pa_mac_core = Macintosh Core Audio for OS X - pa_sgi = Silicon Graphics AL - pa_unix_oss = OSS implementation for various Unixes - pa_win_ds = Windows Direct Sound - pa_win_wmme = Windows MME (most widely supported) - -Test Programs - pa_tests/pa_fuzz.c = guitar fuzz box - pa_tests/pa_devs.c = print a list of available devices - pa_tests/pa_minlat.c = determine minimum latency for your machine - pa_tests/paqa_devs.c = self test that opens all devices - pa_tests/paqa_errs.c = test error detection and reporting - pa_tests/patest_clip.c = hear a sine wave clipped and unclipped - pa_tests/patest_dither.c = hear effects of dithering (extremely subtle) - pa_tests/patest_pink.c = fun with pink noise - pa_tests/patest_record.c = record and playback some audio - pa_tests/patest_maxsines.c = how many sine waves can we play? Tests Pa_GetCPULoad(). - pa_tests/patest_sine.c = output a sine wave in a simple PA app - pa_tests/patest_sync.c = test syncronization of audio and video - pa_tests/patest_wire.c = pass input to output, wire simulator +Test Programs: + test/pa_fuzz.c = guitar fuzz box + test/pa_devs.c = print a list of available devices + test/pa_minlat.c = determine minimum latency for your machine + test/paqa_devs.c = self test that opens all devices + test/paqa_errs.c = test error detection and reporting + test/patest_clip.c = hear a sine wave clipped and unclipped + test/patest_dither.c = hear effects of dithering (extremely subtle) + test/patest_pink.c = fun with pink noise + test/patest_record.c = record and playback some audio + test/patest_maxsines.c = how many sine waves can we play? Tests Pa_GetCPULoad(). + test/patest_sine.c = output a sine wave in a simple PA app + test/patest_sync.c = test syncronization of audio and video + test/patest_wire.c = pass input to output, wire simulator diff --git a/SConstruct b/SConstruct new file mode 100644 index 0000000..37e67ba --- /dev/null +++ b/SConstruct @@ -0,0 +1,197 @@ +import sys, os.path + +def rsplit(toSplit, sub, max=-1): + """ str.rsplit seems to have been introduced in 2.4 :( """ + l = [] + i = 0 + while i != max: + try: idx = toSplit.rindex(sub) + except ValueError: break + + toSplit, splitOff = toSplit[:idx], toSplit[idx + len(sub):] + l.insert(0, splitOff) + i += 1 + + l.insert(0, toSplit) + return l + +sconsDir = os.path.join("build", "scons") +SConscript(os.path.join(sconsDir, "SConscript_common")) +Import("Platform", "Posix", "ApiVer") + +# SConscript_opts exports PortAudio options +optsDict = SConscript(os.path.join(sconsDir, "SConscript_opts")) +optionsCache = os.path.join(sconsDir, "options.cache") # Save options between runs in this cache +options = Options(optionsCache, args=ARGUMENTS) +for k in ("Installation Dirs", "Build Targets", "Host APIs", "Build Parameters", "Bindings"): + options.AddOptions(*optsDict[k]) +# Propagate options into environment +env = Environment(options=options) +# Save options for next run +options.Save(optionsCache, env) +# Generate help text for options +env.Help(options.GenerateHelpText(env)) + +buildDir = os.path.join("#", sconsDir, env["PLATFORM"]) + +# Determine parameters to build tools +if Platform in Posix: + threadCFlags = '' + if Platform != 'darwin': + threadCFlags = "-pthread " + baseLinkFlags = threadCFlags + baseCxxFlags = baseCFlags = "-Wall -pedantic -pipe " + threadCFlags + debugCxxFlags = debugCFlags = "-g" + optCxxFlags = optCFlags = "-O2" +env.Append(CCFLAGS = baseCFlags) +env.Append(CXXFLAGS = baseCxxFlags) +env.Append(LINKFLAGS = baseLinkFlags) +if env["enableDebug"]: + env.AppendUnique(CCFLAGS=debugCFlags.split()) + env.AppendUnique(CXXFLAGS=debugCxxFlags.split()) +if env["enableOptimize"]: + env.AppendUnique(CCFLAGS=optCFlags.split()) + env.AppendUnique(CXXFLAGS=optCxxFlags.split()) +if not env["enableAsserts"]: + env.AppendUnique(CPPDEFINES=["-DNDEBUG"]) +if env["customCFlags"]: + env.Append(CCFLAGS=Split(env["customCFlags"])) +if env["customCxxFlags"]: + env.Append(CXXFLAGS=Split(env["customCxxFlags"])) +if env["customLinkFlags"]: + env.Append(LINKFLAGS=Split(env["customLinkFlags"])) + +env.Append(CPPPATH=[os.path.join("#", "include"), "common"]) + +# Store all signatures in one file, otherwise .sconsign files will get installed along with our own files +env.SConsignFile(os.path.join(sconsDir, ".sconsign")) + +env.SConscriptChdir(False) +sources, sharedLib, staticLib, tests, portEnv, hostApis = env.SConscript(os.path.join("src", "SConscript"), + build_dir=buildDir, duplicate=False, exports=["env"]) + +if Platform in Posix: + prefix = env["prefix"] + includeDir = os.path.join(prefix, "include") + libDir = os.path.join(prefix, "lib") + env.Alias("install", includeDir) + env.Alias("install", libDir) + + # pkg-config + + def installPkgconfig(env, target, source): + tgt = str(target[0]) + src = str(source[0]) + f = open(src) + try: txt = f.read() + finally: f.close() + txt = txt.replace("@prefix@", prefix) + txt = txt.replace("@exec_prefix@", prefix) + txt = txt.replace("@libdir@", libDir) + txt = txt.replace("@includedir@", includeDir) + txt = txt.replace("@LIBS@", " ".join(["-l%s" % l for l in portEnv["LIBS"]])) + txt = txt.replace("@THREAD_CFLAGS@", threadCFlags) + + f = open(tgt, "w") + try: f.write(txt) + finally: f.close() + + pkgconfigTgt = "portaudio-%d.0.pc" % int(ApiVer.split(".", 1)[0]) + env.Command(os.path.join(libDir, "pkgconfig", pkgconfigTgt), + os.path.join("#", pkgconfigTgt + ".in"), installPkgconfig) + +# Default to None, since if the user disables all targets and no Default is set, all targets +# are built by default +env.Default(None) +if env["enableTests"]: + env.Default(tests) +if env["enableShared"]: + env.Default(sharedLib) + + if Platform in Posix: + def symlink(env, target, source): + trgt = str(target[0]) + src = str(source[0]) + + if os.path.islink(trgt) or os.path.exists(trgt): + os.remove(trgt) + os.symlink(os.path.basename(src), trgt) + + major, minor, micro = [int(c) for c in ApiVer.split(".")] + + soFile = "%s.%s" % (os.path.basename(str(sharedLib[0])), ApiVer) + env.InstallAs(target=os.path.join(libDir, soFile), source=sharedLib) + # Install symlinks + symTrgt = os.path.join(libDir, soFile) + env.Command(os.path.join(libDir, "libportaudio.so.%d.%d" % (major, minor)), + symTrgt, symlink) + symTrgt = rsplit(symTrgt, ".", 1)[0] + env.Command(os.path.join(libDir, "libportaudio.so.%d" % major), symTrgt, symlink) + symTrgt = rsplit(symTrgt, ".", 1)[0] + env.Command(os.path.join(libDir, "libportaudio.so"), symTrgt, symlink) + +if env["enableStatic"]: + env.Default(staticLib) + env.Install(libDir, staticLib) + +env.Install(includeDir, os.path.join("include", "portaudio.h")) + + +if env["enableCxx"]: + env.SConscriptChdir(True) + cxxEnv = env.Copy() + sharedLibs, staticLibs, headers = env.SConscript(os.path.join("bindings", "cpp", "SConscript"), + exports={"env": cxxEnv, "buildDir": buildDir}, build_dir=os.path.join(buildDir, "portaudiocpp"), duplicate=False) + if env["enableStatic"]: + env.Default(staticLibs) + env.Install(libDir, staticLibs) + if env["enableShared"]: + env.Default(sharedLibs) + env.Install(libDir, sharedLibs) + env.Install(os.path.join(includeDir, "portaudiocpp"), headers) + +# Generate portaudio_config.h header with compile-time definitions of which PA +# back-ends are available, and which includes back-end extension headers + +# Host-specific headers +hostApiHeaders = {"ALSA": "pa_linux_alsa.h", + "ASIO": "pa_asio.h", + "COREAUDIO": "pa_mac_core.h", + "JACK": "pa_jack.h", + "WMME": "pa_winwmme.h", + } + +def buildConfigH(target, source, env): + """builder for portaudio_config.h""" + global hostApiHeaders, hostApis + out = "" + for hostApi in hostApis: + out += "#define PA_HAVE_%s\n" % hostApi + + hostApiSpecificHeader = hostApiHeaders.get(hostApi, None) + if hostApiSpecificHeader: + out += "#include \"%s\"\n" % hostApiSpecificHeader + + out += "\n" + # Strip the last newline + if out and out[-1] == "\n": + out = out[:-1] + + f = file(str(target[0]), 'w') + try: f.write(out) + finally: f.close() + return 0 + +# Define the builder for the config header +env.Append(BUILDERS={"portaudioConfig": env.Builder( + action=Action(buildConfigH), target_factory=env.fs.File)}) + +confH = env.portaudioConfig(File("portaudio_config.h", "include"), + File("portaudio.h", "include")) +env.Default(confH) +env.Install(os.path.join(includeDir, "portaudio"), confH) + +for api in hostApis: + if api in hostApiHeaders: + env.Install(os.path.join(includeDir, "portaudio"), + File(hostApiHeaders[api], "include")) diff --git a/aclocal.m4 b/aclocal.m4 new file mode 100644 index 0000000..9e5b4fd --- /dev/null +++ b/aclocal.m4 @@ -0,0 +1,6627 @@ +# aclocal.m4 generated automatically by aclocal 1.6.3 -*- Autoconf -*- + +# Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 +# 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. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- + +# serial 48 AC_PROG_LIBTOOL + + +# 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_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 + +# 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 + +AC_LIBTOOL_SYS_MAX_CMD_LEN +AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE +AC_LIBTOOL_OBJDIR + +AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl +_LT_AC_PROG_ECHO_BACKSLASH + +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" + +AC_CHECK_TOOL(AR, ar, false) +AC_CHECK_TOOL(RANLIB, ranlib, :) +AC_CHECK_TOOL(STRIP, strip, :) + +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_deplibs' +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]) + +# 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_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no) +AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], +enable_win32_dll=yes, enable_win32_dll=no) + +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 + +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 + +# Check if we have a version mismatch between libtool.m4 and ltmain.sh. +# +# Note: This should be in AC_LIBTOOL_SETUP, _after_ $ltmain have been defined. +# We also should do it _before_ AC_LIBTOOL_LANG_C_CONFIG that actually +# calls AC_LIBTOOL_CONFIG and creates libtool. +# +_LT_VERSION_CHECK + +# Use C for the default configuration in the libtool script +tagname= +AC_LIBTOOL_LANG_C_CONFIG +_LT_AC_TAGCONFIG +])# AC_LIBTOOL_SETUP + + +# _LT_VERSION_CHECK +# ----------------- +AC_DEFUN([_LT_VERSION_CHECK], +[AC_MSG_CHECKING([for correct ltmain.sh version]) +if test "x$ltmain" = "x" ; then + AC_MSG_RESULT(no) + AC_MSG_ERROR([ + +*** @<:@Gentoo@:>@ sanity check failed! *** +*** \$ltmain is not defined, please check the patch for consistency! *** +]) +fi +gentoo_lt_version="1.5.22" +gentoo_ltmain_version=`sed -n '/^[[ ]]*VERSION=/{s/^[[ ]]*VERSION=//;p;q;}' "$ltmain"` +if test "x$gentoo_lt_version" != "x$gentoo_ltmain_version" ; then + AC_MSG_RESULT(no) + AC_MSG_ERROR([ + +*** @<:@Gentoo@:>@ sanity check failed! *** +*** libtool.m4 and ltmain.sh have a version mismatch! *** +*** (libtool.m4 = $gentoo_lt_version, ltmain.sh = $gentoo_ltmain_version) *** + +Please run: + + libtoolize --copy --force + +if appropriate, please contact the maintainer of this +package (or your distribution) for help. +]) +else + AC_MSG_RESULT(yes) +fi +])# _LT_VERSION_CHECK + + +# _LT_AC_SYS_COMPILER +# ------------------- +AC_DEFUN([_LT_AC_SYS_COMPILER], +[AC_REQUIRE([AC_PROG_CC])dnl + +# 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 + + +# _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-%%"` +]) + + +# _LT_COMPILER_BOILERPLATE +# ------------------------ +# Check for compiler boilerplate output or warnings with +# the simple compiler test code. +AC_DEFUN([_LT_COMPILER_BOILERPLATE], +[ac_outfile=conftest.$ac_objext +printf "$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_outfile=conftest.$ac_objext +printf "$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_LINK_IFELSE(AC_LANG_PROGRAM,[ +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# 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 '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; 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 + + +# _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 + +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 </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` && + (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null + then + break + 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. + + 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" + + 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 + fi + rm -rf conftest* + ;; + +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-*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-*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]) + printf "$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_CACHE_CHECK([$1], [$2], + [$2=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $3" + printf "$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 + ;; + *) + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + 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` + ;; + 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_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 + printf "$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" + 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_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" +if test "$GCC" = yes; then + 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 ';' >/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. + 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 +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 + ;; + + linux*) + 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' + 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 + 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 -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + else + $archive_expsym_cmds="$archive_cmds" + fi + else + ld_shlibs=no + fi + ;; + + *) + 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`' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + 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 + ;; + +kfreebsd*-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='GNU ld.so' + ;; + +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 + # Handle Gentoo/FreeBSD as it was Linux + case $host_vendor in + gentoo) + version_type=linux ;; + *) + version_type=freebsd-$objformat ;; + esac + + 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 + ;; + linux) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + need_lib_prefix=no + need_version=no + ;; + 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 + ;; + freebsd*) # from 4.6 on + 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' + ;; + +interix3*) + 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*) + 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)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;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' + ;; + +knetbsd*-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='GNU ld.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" + ;; + +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_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 recognise 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 recognise 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 + + +# 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_CHECKING([for non-GNU ld]) +fi +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; 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 + ;; + +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 + ;; + +interix3*) + # 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*) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd*) + 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 + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +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 + ;; + +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_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 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 + done + IFS="$lt_save_ifs" + done + test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm +fi]) +NM="$lt_cv_path_NM" +])# AC_PROG_NM + + +# 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* | *-*-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 + + +# 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 + 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 + + +# 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 + + +# AC_LIBTOOL_CXX +# -------------- +# enable support for C++ libraries +AC_DEFUN([AC_LIBTOOL_CXX], +[AC_REQUIRE([_LT_AC_LANG_CXX]) +])# AC_LIBTOOL_CXX + + +# _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 + +# _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 + + +# _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_LIBTOOL_GCJ +# -------------- +# enable support for GCJ libraries +AC_DEFUN([AC_LIBTOOL_GCJ], +[AC_REQUIRE([_LT_AC_LANG_GCJ]) +])# AC_LIBTOOL_GCJ + + +# _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_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_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;\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}\n' + +_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 + +# Report which library types will actually be built +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]) + +AC_LIBTOOL_CONFIG($1) + +AC_LANG_POP +CC="$lt_save_CC" +])# AC_LIBTOOL_LANG_C_CONFIG + + +# 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;\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }\n' + +# 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 +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 + +if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + AC_PROG_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 + _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' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${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 + _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= + + # 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 + + # 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 +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 + + # 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. + + _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 "$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 + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + 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 + + # 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 + ;; + + 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 + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + 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 + ;; + 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 "$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 + _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` $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 -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$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}' + ;; + *) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + 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* | kfreebsd*-gnu | 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)=: + + case $host_cpu in + hppa*64*|ia64*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' + ;; + *) + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + esac + fi + 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 + + 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 + ;; + interix3*) + _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*) + 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' + ;; + 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*) + 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 + # 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*) + _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' + ;; + 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' + + ;; + 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"' + + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=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. + _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"' + + 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 C++ compiler is used as linker so we must use $wl + # flag to pass the commands to the underlying system + # linker. We must also pass each convience library through + # to the system linker between allextract/defaultextract. + # The C++ compiler will combine linker options so we + # cannot just pass the convience library names through + # without $wl. + # Supported since Solaris 2.6 (maybe 2.5.1?) + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' + ;; + esac + _LT_AC_TAGVAR(link_all_deplibs, $1)=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. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_AC_TAGVAR(archive_cmds, $1)='$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. + _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 + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' + 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' + + 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' + + 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 + +_LT_AC_TAGVAR(GCC, $1)="$GXX" +_LT_AC_TAGVAR(LD, $1)="$LD" + +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 <> "$cfgfile" +ifelse([$1], [], +[#! $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 +# 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], +[# ### 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=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1) + +# 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) + +# 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_[]_LT_AC_TAGVAR(compiler, $1) + +# Is the compiler the GNU C compiler? +with_gcc=$_LT_AC_TAGVAR(GCC, $1) + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_[]_LT_AC_TAGVAR(LD, $1) + +# 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_AC_TAGVAR(lt_prog_compiler_wl, $1) + +# 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_AC_TAGVAR(lt_prog_compiler_pic, $1) +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_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) + +# 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_AC_TAGVAR(lt_prog_compiler_static, $1) + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1) + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1) + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1) + +# 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_[]_LT_AC_TAGVAR(old_archive_cmds, $1) +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_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1) + +# 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) + +# 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 + +# 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) + +# 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_[]_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) + +# 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_[]_LT_AC_TAGVAR(allow_undefined_flag, $1) + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1) + +# 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=$_LT_AC_TAGVAR(hardcode_action, $1) + +# 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_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) + +# 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) + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1) + +# 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) + +# 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) + +# 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) + +# 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) + +# 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=$_LT_AC_TAGVAR(link_all_deplibs, $1) + +# 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_AC_TAGVAR(fix_srcfile_path, $1)" + +# Set to yes if exported symbols are required. +always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1) + +# The commands to list exported symbols. +export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1) + +# 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_[]_LT_AC_TAGVAR(exclude_expsyms, $1) + +# Symbols that must always be exported. +include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1) + +ifelse([$1],[], +[# ### END LIBTOOL CONFIG], +[# ### END LIBTOOL TAG CONFIG: $tagname]) + +__EOF__ + +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 + + # 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_LIBTOOL_CONFIG + + +# 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 + + +# 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 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*) + 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' + + 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 + $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} +}; + +#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 + echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD + fi + else + echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD + 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 +]) +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 + + +# 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)= + +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' + + 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 + ;; + 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' + ;; + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | 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). + _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)= + ;; + interix3*) + # 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* | kfreebsd*-gnu | 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*) + 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' + ;; + *) + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd*) + ;; + 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' + + 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 + ;; + + 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' + ;; + + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + 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_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' + ;; + + interix3*) + # 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_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + enable_shared=no + ;; + + 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*) + # +Z the default + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + # 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 + ;; + + 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_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' + ;; + + 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' + ;; + + 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' + ;; + + newsos6) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + linux*) + 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' + ;; + esac + ;; + + 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' + ;; + + 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 + ;; + + 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' + ;; + + 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' + ;; + + 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 + ;; + + 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' + ;; + + unicos*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + + uts4*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *) + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +]) +AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)]) + +# +# 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 + +# +# 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_PROG_LD_SHLIBS([TAGNAME]) +# ------------------------------------ +# See if the linker supports building shared libraries. +AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS], +[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 + _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' + ;; + *) + _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 + + _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}' + + # 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 + + # 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 + +*** 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*) + _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 + ;; + + 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 + ;; + + 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/'\'' | $SED -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 + ;; + + interix3*) + _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' + ;; + + linux*) + 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 + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + 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 -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + netbsd*) + 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 + ;; + + solaris*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + _LT_AC_TAGVAR(ld_shlibs, $1)=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 + _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 + ;; + + 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 + +*** 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 + _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 + ;; + + 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 + ;; + + *) + 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 + + 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 + ;; + + 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 + + # 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. + + _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 + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + 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 + + # 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 + ;; + + 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 + ;; + + bsdi[[45]]*) + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-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. + _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 + ;; + + 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` $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 -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$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}' + ;; + *) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + fi + ;; + + 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 + ;; + + freebsd1*) + _LT_AC_TAGVAR(ld_shlibs, $1)=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*) + _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 + ;; + + # 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 + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | kfreebsd*-gnu | 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 + ;; + + 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' + ;; + + 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 + ;; + + 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' + + # 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 + ;; + + 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 + ;; + + netbsd*) + 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 + ;; + + 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 + ;; + + openbsd*) + _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 + ;; + + 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' + ;; + + 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)=: + ;; + + 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' + + # 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)=: + ;; + + 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 linker options so we + # cannot just pass the convience library names through + # without $wl, iff we do not link with $LD. + # Luckily, gcc supports the same syntax we need for Sun Studio. + # Supported since Solaris 2.6 (maybe 2.5.1?) + case $wlarc in + '') + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; + *) + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; + esac ;; + esac + _LT_AC_TAGVAR(link_all_deplibs, $1)=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. + _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 + ;; + + 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 + ;; + + 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' + ;; + + 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 + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7*) + _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 + ;; + + 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 + ;; + + 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 + ;; + + *) + _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 + +# +# 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 + + 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* + printf "$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 + + +# _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 + + +# _LT_AC_TAGVAR(VARNAME, [TAGNAME]) +# --------------------------------- +AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])]) + + +# 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]) + +# This is just to silence aclocal about the macro not being used +ifelse([AC_DISABLE_FAST_INSTALL]) + +AC_DEFUN([LT_AC_PROG_GCJ], +[AC_CHECK_TOOL(GCJ, gcj, no) + test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" + AC_SUBST(GCJFLAGS) +]) + +AC_DEFUN([LT_AC_PROG_RC], +[AC_CHECK_TOOL(RC, windres, no) +]) + +# 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 +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_MSG_RESULT([$SED]) +]) + +# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- +# +# Copyright © 2004 Scott James Remnant . +# +# 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. + +# PKG_PROG_PKG_CONFIG([MIN-VERSION]) +# ---------------------------------- +AC_DEFUN([PKG_PROG_PKG_CONFIG], +[m4_pattern_forbid([^_?PKG_[A-Z_]+$]) +m4_pattern_allow([^PKG_CONFIG(_PATH)?$]) +AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=m4_default([$1], [0.9.0]) + AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + PKG_CONFIG="" + fi + +fi[]dnl +])# PKG_PROG_PKG_CONFIG + +# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +# +# Check to see whether a particular set of modules exists. Similar +# to PKG_CHECK_MODULES(), but does not set variables or print errors. +# +# +# Similar to PKG_CHECK_MODULES, make sure that the first instance of +# this or PKG_CHECK_MODULES is called, or make sure to call +# PKG_CHECK_EXISTS manually +# -------------------------------------------------------------- +AC_DEFUN([PKG_CHECK_EXISTS], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +if test -n "$PKG_CONFIG" && \ + AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then + m4_ifval([$2], [$2], [:]) +m4_ifvaln([$3], [else + $3])dnl +fi]) + + +# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) +# --------------------------------------------- +m4_define([_PKG_CONFIG], +[if test -n "$PKG_CONFIG"; then + if test -n "$$1"; then + pkg_cv_[]$1="$$1" + else + PKG_CHECK_EXISTS([$3], + [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`], + [pkg_failed=yes]) + fi +else + pkg_failed=untried +fi[]dnl +])# _PKG_CONFIG + +# _PKG_SHORT_ERRORS_SUPPORTED +# ----------------------------- +AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi[]dnl +])# _PKG_SHORT_ERRORS_SUPPORTED + + +# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +# [ACTION-IF-NOT-FOUND]) +# +# +# Note that if there is a possibility the first call to +# PKG_CHECK_MODULES might not happen, you should be sure to include an +# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac +# +# +# -------------------------------------------------------------- +AC_DEFUN([PKG_CHECK_MODULES], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl +AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl + +pkg_failed=no +AC_MSG_CHECKING([for $1]) + +_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) +_PKG_CONFIG([$1][_LIBS], [libs], [$2]) + +m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS +and $1[]_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details.]) + +if test $pkg_failed = yes; then + _PKG_SHORT_ERRORS_SUPPORTED + if test $_pkg_short_errors_supported = yes; then + $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$2"` + else + $1[]_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"` + fi + # Put the nasty error message in config.log where it belongs + echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD + + ifelse([$4], , [AC_MSG_ERROR(dnl +[Package requirements ($2) were not met: + +$$1_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +_PKG_TEXT +])], + [$4]) +elif test $pkg_failed = untried; then + ifelse([$4], , [AC_MSG_FAILURE(dnl +[The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +_PKG_TEXT + +To get pkg-config, see .])], + [$4]) +else + $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS + $1[]_LIBS=$pkg_cv_[]$1[]_LIBS + AC_MSG_RESULT([yes]) + ifelse([$3], , :, [$3]) +fi[]dnl +])# PKG_CHECK_MODULES + diff --git a/bindings/cpp/AUTHORS b/bindings/cpp/AUTHORS new file mode 100644 index 0000000..e69de29 diff --git a/bindings/cpp/COPYING b/bindings/cpp/COPYING new file mode 100644 index 0000000..c1c60a0 --- /dev/null +++ b/bindings/cpp/COPYING @@ -0,0 +1,31 @@ +PortAudio Portable Real-Time Audio Library +Copyright (c) 1999-2006 Ross Bencina and Phil Burk + +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: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +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 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR +ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF +CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +The text above constitutes the entire PortAudio license; however, +the PortAudio community also makes the following non-binding requests: + +Any person wishing to distribute modifications to the Software is +requested to send the modifications to the original developer so that +they can be incorporated into the canonical version. It is also +requested that these non-binding requests be included along with the +license above. diff --git a/bindings/cpp/ChangeLog b/bindings/cpp/ChangeLog new file mode 100644 index 0000000..0201a0f --- /dev/null +++ b/bindings/cpp/ChangeLog @@ -0,0 +1,178 @@ +Note: Because PortAudioCpp is now in the main PortAudio SVN repository, having these per-release changelogs probably doesn't make much sense anymore. Perhaps it's better to just note mayor changes by date from now on. + +PortAudioCpp v19 revision 16 06/05/22: + + mblaauw: + - Added up-to-date MSVC 6.0 projects created by David Moore. Besides MSVC 6.0 users, MSVC 7.0 users may use these projects and automatically convert them to MSVC 7.0 projects. + - Changed the code and projects (MSVC 7.1 only) to be up-to-date with PortAudio's new directory structure. + - Added equivalents of the PaAsio_GetInputChannelName() and PaAsio_GetOutputChannelName() functions to the AsioDeviceAdapter wrapper-class (missing functions pointed out by David Moore). + - Added code to PortAudio's main SVN repository. + +PortAudioCpp v19 revision 15 (unknown release date): + + mblaauw: + - Changed some exception handling code in HostApi's constructor. + - Added accessors to PortAudio PaStream from PortAudioCpp Stream (their absense being pointed out + by Tom Jordan). + - Fixed a bug/typo in MemFunToCallbackInterfaceAdapter::init() thanks to Fredrik Viklund. + - Fixed issue with concrete Stream classes possibly throwing an exception and fixed documentation w.r.t. this. + - Moved files to portaudio/binding/cpp/. Made new msvc 7.1 projects to reflect the change and removed msvc 6.0 + and 7.0 projects (because I can no longer maintain them myself). Gnu projects will probably need updating. + +PortAudioCpp v19 revision 14 03/10/24: + + mblaauw: + - Fixed some error handling bugs in Stream and System (pointed out by Tom Jordan). + - Updated documentation a little (main page). + - Fixed order of members so initializer list was in the right order in + StreamParameters (pointed out by Ludwig Schwardt). + - Added new lines at EOF's (as indicated by Ludwig Schwardt). + +PortAudioCpp v19 revision 13 03/10/19: + + lschwardt: + - Added build files for GNU/Linux. + - Fixed bug in Exception where the inherited what() member function (and destructor) had looser + exception specification (namely no exception specification, i.e. could throw anything) than + the std::exception base class's what() member function (which had throw(), i.e. no-throw guarantee). + - Changed the iterators so that they have a set of public typedefs instead of deriving the C++ standard + library std::iterator<> struct. G++ 2.95 doesn't support std::exception<> and composition-by-aggregation + is prefered over composition-by-inheritance in this case. + - Changed some minor things to avoid G++ warning messages. + + mblaauw: + - Renamed this file (/WHATSNEW.txt) to /CHANGELOG. + - Renamed /PA_ISSUES.txt to /PA_ISSUES. + - Added /INSTALL file with some build info for GNU/Linux and VC6. + - Added MSVC 6.0 projects for building PortAudioCpp as a staticly or dynamically linkable library. + - Moved build files to /build/(gnu/ or vc6/). + - Moved Doxygen configuration files to /doc/ and output to /doc/api_reference/. + - Added a /doc/README with some info how to generate Doxygen documentation. + +PortAudioCpp v19 revision 12 03/09/02: + + mblaauw: + - Updated code to reflect changes on V19-devel CVS branch. + - Fixed some typos in the documentation. + +PortAudioCpp v19 revision 11 03/07/31: + + mblaauw: + - Renamed SingleDirecionStreamParameters to DirectionSpecificStreamParameters. + - Implemented BlockingStream. + - Updated code to reflect recent changes to PortAudio V19-devel. + - Fixed a potential memory leak when an exception was thrown in the HostApi + constructor. + - Renamed ``Latency'' to ``BufferSize'' in AsioDeviceAdapter. + - Updated class documentation. + +PortAudioCpp v19 revision 10 03/07/18: + + mblaauw: + - SingleDirectionStreamParameters now has a (static) null() method. + - StreamParameters uses references for the direction-specific stream parameters + instead of pointers (use null() method (above) instead of NULL). + - StreamParameters and SingleDirectionStreamParameters must now be fully specified + and now default values are used (because this was not very useful in general and + only made things more complex). + - Updated documentation. + +PortAudioCpp v19 revision 09 03/06/25: + + mblaauw: + - Changed some things in SingleDirectionStreamParameters to ease it's usage. + - Placed all SingleDirectionStreamParameters stuff into a separate file. + + Totally redid the callback stuff, now it's less ackward and supports C++ functions. + +PortAudioCpp v19 revision 08 03/06/20: + + mblaauw: + - Made deconstructors for Device and HostApi private. + + Added a AsioDeviceWrapper host api specific device extension class. + - Refactored Exception into a Exception base class and PaException and PaCppException + derived classes. + - Added ASIO specific device info to the devs.cxx example. + - Fixed a bug in System::hostApiCount() and System::defaultHostApi(). + + Moved Device::null to System::nullDevice. + - Fixed some bugs in Device and System. + +PortAudioCpp v19 revision 07 03/06/08: + + mblaauw: + - Updated some doxy comments. + + Renamed CbXyz to CallbackXyz. + + Renamed all ``configurations'' to ``parameters''. + + Renamed HalfDuplexStreamConfiguration to SingleDirectionStreamConfiguration. + - Renamed SingleDirectionStreamParameters::streamParameters() to + SingleDirectionStreamParameters::paSteamParameters. + - Added a non-constant version of SingleDirectionStreamParameters::paStreamParameters(). + - A few improvements to SingleDirectionStreamParameters. + - Allowed AutoSystem to be created without initializing the System singleton + (using a ctor flag). + - Added a BlockingStream class (not implemented for now). + - Fixed many bugs in the implementation of the iterators. + - Fixed a bug in Device::operator==(). + + Added a C++ version of the patest_sine.c test/example. + - Added a ctor for StreamParameters for a default half-duplex stream. + - Added SingleDirectionStreamParameters::setDevice() and setNumChannels(). + - Renamed System::numHostApis() to System::hostApiCount(). + + Rewrote the iterators and related classes. They are now fully STL compliant. The System now + has a static array of all HostApis and all Devices. Only the System can create HostApis and + Devices and they are non-copyable now. All HostApis and Devices are now passed by-reference. + - Renamed (System::) getVersion() to version() and getVersionText() to versionText(). + - Renamed (Device::) numXyzChannels() to maxXyzChannels(). + - Changed some stuff in StreamParameters. + + Added a C++ version of the patest_devs.c test/example. + +PortAudioCpp v19 revision 06 03/06/04: + + mblaauw: + + Added this file to the project (roughly, a `+' denotes a major change, a `-' a minor change). + - Added System::deviceByIndex(), useful when a Device's index is stored for instance. + - Renamed System::hostApiFromTypeId() to System::hostApiByTypeId(). + - Updated and added some Doxygen documentation. + - Made Stream::usedIntputLatency(), Stream::usedOutputLatency() and + Stream::usedSampleRate() throw an paInternalError equivalent exception instead of paBadStreamPtr. + - Changed exception handling in Stream::open() functions. They now follow the PA error handling + mechanism better and a couple of bugs regarding ownership of objects were fixed. + - Renamed Device::isDefaultXyzDevice() to Device::isSystemDefaultXyzDevice(). + - Added Device::isHostApiDefaultXyzDevice(). + - Added StreamConfiguration::unsetFlag(). + - Removed CUSTOM from SampleDataFormat. + - System::hostApiByTypeId() now throws an paInternalError if the type id was out-of-range; this + is a temporary work-around (see comments). + - Changed CbInterface to use paCallbackFun() instead of operator()(). + - Renamed ``object'' to ``instance'' in CbMemFunAdapter.hxx. + - Added StreamConfiguration::setXyzHostApiSpecificSampleFormat(). + - Added StreamConfiguration::isXyzSampleFormatHostApiSpecific(). + - Changed error handling in System::terminate(), it can now throw an Exception. + - Added error handling in System::defaultHostApi(). + - Added error handling in System::hostApisEnd(). + - Changed some (but probably not all) C casts to C++ casts to avoid confusion with a + certain Python person. + - Renamed RaiiSystem to AutoSystem (class and file) as this is a come common convention. + - Renamed System::numDevices() to System::deviceCount() to be more compatible with PortAudio + (although PortAudio uses Pa_CountDevices() instead, see comment). + - Renamed HostApi::numDevices() to HostApi::deviceCount(). + - Changed INC_ to INCLUDED_ in the header multiple include guards. + - Changed the order of functions in the StreamConfiguration class' header. + - Written some more info in PortAudioCpp.hxx (Doxygen). + - Added CallbackStream.hxx and CallbackStream.cxx files. + + Refactored StreamConfiguration to remove the duplication which was there. There is now a + HalfDuplexStreamConfiguration class. Also made some improvements to these classes while + doing the refactoring. + + Moved all code files to source/portaudiocpp/ and changed includes. + + Moved all header files to include/portaudiocpp/ to easy a binary build if needed. The project + must be set to have .../include/ as a path to look for includes. + + Refactored the Stream class into a Stream base class and a CallbackStream derived class. + - Renamed Stream::usingXyz() to Stream::xyz(). + - Updated some doxy comments. + - Changed ``using namespace portaudio'' in .cxx files to ``namespace portaudio { ... }''. + +PortAudioCpp v19 revision 05 03/04/09: + + mblaauw: + - Initial release on the PortAudio mailinglist. + + + diff --git a/bindings/cpp/INSTALL b/bindings/cpp/INSTALL new file mode 100644 index 0000000..23e5f25 --- /dev/null +++ b/bindings/cpp/INSTALL @@ -0,0 +1,236 @@ +Installation Instructions +************************* + +Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005 Free +Software Foundation, Inc. + +This file is free documentation; the Free Software Foundation gives +unlimited permission to copy, distribute and modify it. + +Basic Installation +================== + +These are generic installation instructions. + + The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions. Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, and a +file `config.log' containing compiler output (useful mainly for +debugging `configure'). + + It can also use an optional file (typically called `config.cache' +and enabled with `--cache-file=config.cache' or simply `-C') that saves +the results of its tests to speed up reconfiguring. (Caching is +disabled by default to prevent problems with accidental use of stale +cache files.) + + If you need to do unusual things to compile the package, please try +to figure out how `configure' could check whether to do them, and mail +diffs or instructions to the address given in the `README' so they can +be considered for the next release. If you are using the cache, and at +some point `config.cache' contains results you don't want to keep, you +may remove or edit it. + + The file `configure.ac' (or `configure.in') is used to create +`configure' by a program called `autoconf'. You only need +`configure.ac' if you want to change it or regenerate `configure' using +a newer version of `autoconf'. + +The simplest way to compile this package is: + + 1. `cd' to the directory containing the package's source code and type + `./configure' to configure the package for your system. If you're + using `csh' on an old version of System V, you might need to type + `sh ./configure' instead to prevent `csh' from trying to execute + `configure' itself. + + Running `configure' takes awhile. While running, it prints some + messages telling which features it is checking for. + + 2. Type `make' to compile the package. + + 3. Optionally, type `make check' to run any self-tests that come with + the package. + + 4. Type `make install' to install the programs and any data files and + documentation. + + 5. You can remove the program binaries and object files from the + source code directory by typing `make clean'. To also remove the + files that `configure' created (so you can compile the package for + a different kind of computer), type `make distclean'. There is + also a `make maintainer-clean' target, but that is intended mainly + for the package's developers. If you use it, you may have to get + all sorts of other programs in order to regenerate files that came + with the distribution. + +Compilers and Options +===================== + +Some systems require unusual options for compilation or linking that the +`configure' script does not know about. Run `./configure --help' for +details on some of the pertinent environment variables. + + You can give `configure' initial values for configuration parameters +by setting variables in the command line or in the environment. Here +is an example: + + ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix + + *Note Defining Variables::, for more details. + +Compiling For Multiple Architectures +==================================== + +You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you must use a version of `make' that +supports the `VPATH' variable, such as GNU `make'. `cd' to the +directory where you want the object files and executables to go and run +the `configure' script. `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'. + + If you have to use a `make' that does not support the `VPATH' +variable, you have to compile the package for one architecture at a +time in the source code directory. After you have installed the +package for one architecture, use `make distclean' before reconfiguring +for another architecture. + +Installation Names +================== + +By default, `make install' installs the package's commands under +`/usr/local/bin', include files under `/usr/local/include', etc. You +can specify an installation prefix other than `/usr/local' by giving +`configure' the option `--prefix=PREFIX'. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +pass the option `--exec-prefix=PREFIX' to `configure', the package uses +PREFIX as the prefix for installing programs and libraries. +Documentation and other data files still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like `--bindir=DIR' to specify different values for particular +kinds of files. Run `configure --help' for a list of the directories +you can set and what kinds of files go in them. + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + +Optional Features +================= + +Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System). The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + + For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + +Specifying the System Type +========================== + +There may be some features `configure' cannot figure out automatically, +but needs to determine by the type of machine the package will run on. +Usually, assuming the package is built to be run on the _same_ +architectures, `configure' can figure that out, but if it prints a +message saying it cannot guess the machine type, give it the +`--build=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name which has the form: + + CPU-COMPANY-SYSTEM + +where SYSTEM can have one of these forms: + + OS KERNEL-OS + + See the file `config.sub' for the possible values of each field. If +`config.sub' isn't included in this package, then this package doesn't +need to know the machine type. + + If you are _building_ compiler tools for cross-compiling, you should +use the option `--target=TYPE' to select the type of system they will +produce code for. + + If you want to _use_ a cross compiler, that generates code for a +platform different from the build platform, you should specify the +"host" platform (i.e., that on which the generated programs will +eventually be run) with `--host=TYPE'. + +Sharing Defaults +================ + +If you want to set default values for `configure' scripts to share, you +can create a site shell script called `config.site' that gives default +values for variables like `CC', `cache_file', and `prefix'. +`configure' looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists. Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: not all `configure' scripts look for a site script. + +Defining Variables +================== + +Variables not defined in a site shell script can be set in the +environment passed to `configure'. However, some packages may run +configure again during the build, and the customized values of these +variables may be lost. In order to avoid this problem, you should set +them in the `configure' command line, using `VAR=value'. For example: + + ./configure CC=/usr/local2/bin/gcc + +causes the specified `gcc' to be used as the C compiler (unless it is +overridden in the site shell script). Here is a another example: + + /bin/bash ./configure CONFIG_SHELL=/bin/bash + +Here the `CONFIG_SHELL=/bin/bash' operand causes subsequent +configuration-related scripts to be executed by `/bin/bash'. + +`configure' Invocation +====================== + +`configure' recognizes the following options to control how it operates. + +`--help' +`-h' + Print a summary of the options to `configure', and exit. + +`--version' +`-V' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`--cache-file=FILE' + Enable the cache: use and save the results of the tests in FILE, + traditionally `config.cache'. FILE defaults to `/dev/null' to + disable caching. + +`--config-cache' +`-C' + Alias for `--cache-file=config.cache'. + +`--quiet' +`--silent' +`-q' + Do not print messages saying which checks are being made. To + suppress all normal output, redirect it to `/dev/null' (any error + messages will still be shown). + +`--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + `configure' can determine that directory automatically. + +`configure' also accepts some other, not widely useful, options. Run +`configure --help' for more details. + diff --git a/bindings/cpp/Makefile.am b/bindings/cpp/Makefile.am new file mode 100644 index 0000000..b10449c --- /dev/null +++ b/bindings/cpp/Makefile.am @@ -0,0 +1,7 @@ +SUBDIRS = lib include bin +#doc + +EXTRA_DIST = portaudiocpp.pc + +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = portaudiocpp.pc diff --git a/bindings/cpp/Makefile.in b/bindings/cpp/Makefile.in new file mode 100644 index 0000000..f60601b --- /dev/null +++ b/bindings/cpp/Makefile.in @@ -0,0 +1,642 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 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. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = . +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +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) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +DIST_COMMON = README $(am__configure_deps) \ + $(srcdir)/../../config.guess $(srcdir)/../../config.sub \ + $(srcdir)/../../install-sh $(srcdir)/../../ltmain.sh \ + $(srcdir)/../../missing $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in $(srcdir)/portaudiocpp.pc.in \ + $(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS +subdir = . +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno configure.status.lineno +mkinstalldirs = $(install_sh) -d +CONFIG_CLEAN_FILES = portaudiocpp.pc +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-exec-recursive install-info-recursive \ + install-recursive installcheck-recursive installdirs-recursive \ + pdf-recursive ps-recursive uninstall-info-recursive \ + uninstall-recursive +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)$(pkgconfigdir)" +pkgconfigDATA_INSTALL = $(INSTALL_DATA) +DATA = $(pkgconfig_DATA) +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + { test ! -d $(distdir) \ + || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -fr $(distdir); }; } +DIST_ARCHIVES = $(distdir).tar.gz +GZIP_ENV = --best +distuninstallcheck_listfiles = find . -type f -print +distcleancheck_listfiles = find . -type f -print +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +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@ +DEFAULT_INCLUDES = @DEFAULT_INCLUDES@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +GREP = @GREP@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_VERSION_INFO = @LT_VERSION_INFO@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEINFO = @MAKEINFO@ +OBJDUMP = @OBJDUMP@ +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@ +PORTAUDIO_ROOT = @PORTAUDIO_ROOT@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +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@ +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@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +SUBDIRS = lib include bin +#doc +EXTRA_DIST = portaudiocpp.pc +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = portaudiocpp.pc +all: all-recursive + +.SUFFIXES: +am--refresh: + @: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \ + cd $(srcdir) && $(AUTOMAKE) --gnu \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +portaudiocpp.pc: $(top_builddir)/config.status $(srcdir)/portaudiocpp.pc.in + cd $(top_builddir) && $(SHELL) ./config.status $@ + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +install-pkgconfigDATA: $(pkgconfig_DATA) + @$(NORMAL_INSTALL) + test -z "$(pkgconfigdir)" || $(mkdir_p) "$(DESTDIR)$(pkgconfigdir)" + @list='$(pkgconfig_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(pkgconfigDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgconfigdir)/$$f'"; \ + $(pkgconfigDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgconfigdir)/$$f"; \ + done + +uninstall-pkgconfigDATA: + @$(NORMAL_UNINSTALL) + @list='$(pkgconfig_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(pkgconfigdir)/$$f'"; \ + rm -f "$(DESTDIR)$(pkgconfigdir)/$$f"; \ + done + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (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): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(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 +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + 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: ctags-recursive $(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=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + $(am__remove_distdir) + mkdir $(distdir) + $(mkdir_p) $(distdir)/. $(distdir)/../.. + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + 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 \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + 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 + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(mkdir_p) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + distdir) \ + || exit 1; \ + fi; \ + done + -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -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-gzip: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 + $(am__remove_distdir) + +dist-tarZ: distdir + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__remove_distdir) + +dist-shar: distdir + shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz + $(am__remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__remove_distdir) + +dist dist-all: distdir + tardir=$(distdir) && $(am__tar) | 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 + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + chmod -R a-w $(distdir); chmod a+w $(distdir) + mkdir $(distdir)/_build + mkdir $(distdir)/_inst + chmod a-w $(distdir) + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && cd $(distdir)/_build \ + && ../configure --srcdir=.. --prefix="$$dc_install_base" \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck + $(am__remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}' +distuninstallcheck: + @cd $(distuninstallcheck_dir) \ + && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +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 in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: check-recursive +all-am: Makefile $(DATA) +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(pkgconfigdir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +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: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-libtool \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +install-data-am: install-pkgconfigDATA + +install-exec-am: + +install-info: install-info-recursive + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-info-am uninstall-pkgconfigDATA + +uninstall-info: uninstall-info-recursive + +.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \ + check-am clean clean-generic clean-libtool clean-recursive \ + ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \ + dist-shar dist-tarZ dist-zip distcheck distclean \ + distclean-generic distclean-libtool distclean-recursive \ + distclean-tags distcleancheck distdir distuninstallcheck dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-exec install-exec-am \ + install-info install-info-am install-man install-pkgconfigDATA \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + maintainer-clean-recursive mostlyclean mostlyclean-generic \ + mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \ + tags tags-recursive uninstall uninstall-am uninstall-info-am \ + uninstall-pkgconfigDATA + +# 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. +.NOEXPORT: diff --git a/bindings/cpp/NEWS b/bindings/cpp/NEWS new file mode 100644 index 0000000..e69de29 diff --git a/bindings/cpp/README b/bindings/cpp/README new file mode 100644 index 0000000..e69de29 diff --git a/bindings/cpp/SConscript b/bindings/cpp/SConscript new file mode 100644 index 0000000..e69b93a --- /dev/null +++ b/bindings/cpp/SConscript @@ -0,0 +1,65 @@ +import os.path + +Import("env", "buildDir") +env.Append(CPPPATH="include") + +ApiVer = "0.0.12" +Major, Minor, Micro = [int(c) for c in ApiVer.split(".")] + +sharedLibs = [] +staticLibs = [] +Import("Platform", "Posix") +if Platform in Posix: + env["SHLIBSUFFIX"] = ".so.%d.%d.%d" % (Major, Minor, Micro) + soFile = "libportaudiocpp.so" + if Platform != 'darwin': + env.AppendUnique(SHLINKFLAGS="-Wl,-soname=%s.%d" % (soFile, Major)) + + # Create symlinks + def symlink(env, target, source): + trgt = str(target[0]) + src = str(source[0]) + if os.path.islink(trgt) or os.path.exists(trgt): + os.remove(trgt) + os.symlink(os.path.basename(src), trgt) + lnk0 = env.Command(soFile + ".%d" % (Major), soFile + ".%d.%d.%d" % (Major, Minor, Micro), symlink) + lnk1 = env.Command(soFile, soFile + ".%d" % (Major), symlink) + sharedLibs.append(lnk0) + sharedLibs.append(lnk1) + +src = [os.path.join("source", "portaudiocpp", "%s.cxx" % f) for f in ("BlockingStream", "CallbackInterface", \ + "CallbackStream", "CFunCallbackStream","CppFunCallbackStream", "Device", + "DirectionSpecificStreamParameters", "Exception", "HostApi", "InterfaceCallbackStream", + "MemFunCallbackStream", "Stream", "StreamParameters", "System", "SystemDeviceIterator", + "SystemHostApiIterator")] +env.Append(LIBS="portaudio", LIBPATH=buildDir) +sharedLib = env.SharedLibrary("portaudiocpp", src, LIBS=["portaudio"]) +staticLib = env.Library("portaudiocpp", src, LIBS=["portaudio"]) +sharedLibs.append(sharedLib) +staticLibs.append(staticLib) + +headers = Split("""AutoSystem.hxx + BlockingStream.hxx + CallbackInterface.hxx + CallbackStream.hxx + CFunCallbackStream.hxx + CppFunCallbackStream.hxx + Device.hxx + DirectionSpecificStreamParameters.hxx + Exception.hxx + HostApi.hxx + InterfaceCallbackStream.hxx + MemFunCallbackStream.hxx + PortAudioCpp.hxx + SampleDataFormat.hxx + Stream.hxx + StreamParameters.hxx + SystemDeviceIterator.hxx + SystemHostApiIterator.hxx + System.hxx + """) +if env["PLATFORM"] == "win32": + headers.append("AsioDeviceAdapter.hxx") +headers = [File(os.path.join("include", "portaudiocpp", h)) for h in headers] + +Return("sharedLibs", "staticLibs", "headers") diff --git a/bindings/cpp/aclocal.m4 b/bindings/cpp/aclocal.m4 new file mode 100644 index 0000000..38a7545 --- /dev/null +++ b/bindings/cpp/aclocal.m4 @@ -0,0 +1,7336 @@ +# generated automatically by aclocal 1.9.6 -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 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. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- + +# serial 48 AC_PROG_LIBTOOL + + +# 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_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 + +# 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 + +AC_LIBTOOL_SYS_MAX_CMD_LEN +AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE +AC_LIBTOOL_OBJDIR + +AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl +_LT_AC_PROG_ECHO_BACKSLASH + +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" + +AC_CHECK_TOOL(AR, ar, false) +AC_CHECK_TOOL(RANLIB, ranlib, :) +AC_CHECK_TOOL(STRIP, strip, :) + +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_deplibs' +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]) + +# 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_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no) +AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], +enable_win32_dll=yes, enable_win32_dll=no) + +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 + +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 + +# Check if we have a version mismatch between libtool.m4 and ltmain.sh. +# +# Note: This should be in AC_LIBTOOL_SETUP, _after_ $ltmain have been defined. +# We also should do it _before_ AC_LIBTOOL_LANG_C_CONFIG that actually +# calls AC_LIBTOOL_CONFIG and creates libtool. +# +_LT_VERSION_CHECK + +# Use C for the default configuration in the libtool script +tagname= +AC_LIBTOOL_LANG_C_CONFIG +_LT_AC_TAGCONFIG +])# AC_LIBTOOL_SETUP + + +# _LT_VERSION_CHECK +# ----------------- +AC_DEFUN([_LT_VERSION_CHECK], +[AC_MSG_CHECKING([for correct ltmain.sh version]) +if test "x$ltmain" = "x" ; then + AC_MSG_RESULT(no) + AC_MSG_ERROR([ + +*** @<:@Gentoo@:>@ sanity check failed! *** +*** \$ltmain is not defined, please check the patch for consistency! *** +]) +fi +gentoo_lt_version="1.5.22" +gentoo_ltmain_version=`sed -n '/^[[ ]]*VERSION=/{s/^[[ ]]*VERSION=//;p;q;}' "$ltmain"` +if test "x$gentoo_lt_version" != "x$gentoo_ltmain_version" ; then + AC_MSG_RESULT(no) + AC_MSG_ERROR([ + +*** @<:@Gentoo@:>@ sanity check failed! *** +*** libtool.m4 and ltmain.sh have a version mismatch! *** +*** (libtool.m4 = $gentoo_lt_version, ltmain.sh = $gentoo_ltmain_version) *** + +Please run: + + libtoolize --copy --force + +if appropriate, please contact the maintainer of this +package (or your distribution) for help. +]) +else + AC_MSG_RESULT(yes) +fi +])# _LT_VERSION_CHECK + + +# _LT_AC_SYS_COMPILER +# ------------------- +AC_DEFUN([_LT_AC_SYS_COMPILER], +[AC_REQUIRE([AC_PROG_CC])dnl + +# 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 + + +# _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-%%"` +]) + + +# _LT_COMPILER_BOILERPLATE +# ------------------------ +# Check for compiler boilerplate output or warnings with +# the simple compiler test code. +AC_DEFUN([_LT_COMPILER_BOILERPLATE], +[ac_outfile=conftest.$ac_objext +printf "$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_outfile=conftest.$ac_objext +printf "$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_LINK_IFELSE(AC_LANG_PROGRAM,[ +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# 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 '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; 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 + + +# _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 + +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 </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` && + (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null + then + break + 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. + + 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" + + 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 + fi + rm -rf conftest* + ;; + +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-*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-*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]) + printf "$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_CACHE_CHECK([$1], [$2], + [$2=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $3" + printf "$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 + ;; + *) + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + 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` + ;; + 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_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 + printf "$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" + 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_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" +if test "$GCC" = yes; then + 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 ';' >/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. + 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 +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 + ;; + + linux*) + 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' + 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 + 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 -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + else + $archive_expsym_cmds="$archive_cmds" + fi + else + ld_shlibs=no + fi + ;; + + *) + 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`' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + 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 + ;; + +kfreebsd*-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='GNU ld.so' + ;; + +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 + # Handle Gentoo/FreeBSD as it was Linux + case $host_vendor in + gentoo) + version_type=linux ;; + *) + version_type=freebsd-$objformat ;; + esac + + 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 + ;; + linux) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + need_lib_prefix=no + need_version=no + ;; + 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 + ;; + freebsd*) # from 4.6 on + 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' + ;; + +interix3*) + 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*) + 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)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;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' + ;; + +knetbsd*-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='GNU ld.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" + ;; + +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_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 recognise 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 recognise 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 + + +# 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_CHECKING([for non-GNU ld]) +fi +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; 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 + ;; + +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 + ;; + +interix3*) + # 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*) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd*) + 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 + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +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 + ;; + +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_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 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 + done + IFS="$lt_save_ifs" + done + test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm +fi]) +NM="$lt_cv_path_NM" +])# AC_PROG_NM + + +# 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* | *-*-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 + + +# 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 + 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 + + +# 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 + + +# AC_LIBTOOL_CXX +# -------------- +# enable support for C++ libraries +AC_DEFUN([AC_LIBTOOL_CXX], +[AC_REQUIRE([_LT_AC_LANG_CXX]) +])# AC_LIBTOOL_CXX + + +# _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 + +# _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 + + +# _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_LIBTOOL_GCJ +# -------------- +# enable support for GCJ libraries +AC_DEFUN([AC_LIBTOOL_GCJ], +[AC_REQUIRE([_LT_AC_LANG_GCJ]) +])# AC_LIBTOOL_GCJ + + +# _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_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_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;\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}\n' + +_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 + +# Report which library types will actually be built +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]) + +AC_LIBTOOL_CONFIG($1) + +AC_LANG_POP +CC="$lt_save_CC" +])# AC_LIBTOOL_LANG_C_CONFIG + + +# 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;\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }\n' + +# 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 +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 + +if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + AC_PROG_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 + _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' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${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 + _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= + + # 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 + + # 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 +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 + + # 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. + + _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 "$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 + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + 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 + + # 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 + ;; + + 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 + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + 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 + ;; + 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 "$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 + _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` $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 -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$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}' + ;; + *) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + 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* | kfreebsd*-gnu | 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)=: + + case $host_cpu in + hppa*64*|ia64*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' + ;; + *) + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + esac + fi + 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 + + 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 + ;; + interix3*) + _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*) + 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' + ;; + 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*) + 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 + # 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*) + _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' + ;; + 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' + + ;; + 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"' + + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=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. + _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"' + + 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 C++ compiler is used as linker so we must use $wl + # flag to pass the commands to the underlying system + # linker. We must also pass each convience library through + # to the system linker between allextract/defaultextract. + # The C++ compiler will combine linker options so we + # cannot just pass the convience library names through + # without $wl. + # Supported since Solaris 2.6 (maybe 2.5.1?) + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' + ;; + esac + _LT_AC_TAGVAR(link_all_deplibs, $1)=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. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_AC_TAGVAR(archive_cmds, $1)='$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. + _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 + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' + 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' + + 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' + + 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 + +_LT_AC_TAGVAR(GCC, $1)="$GXX" +_LT_AC_TAGVAR(LD, $1)="$LD" + +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 <> "$cfgfile" +ifelse([$1], [], +[#! $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 +# 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], +[# ### 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=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1) + +# 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) + +# 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_[]_LT_AC_TAGVAR(compiler, $1) + +# Is the compiler the GNU C compiler? +with_gcc=$_LT_AC_TAGVAR(GCC, $1) + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_[]_LT_AC_TAGVAR(LD, $1) + +# 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_AC_TAGVAR(lt_prog_compiler_wl, $1) + +# 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_AC_TAGVAR(lt_prog_compiler_pic, $1) +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_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) + +# 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_AC_TAGVAR(lt_prog_compiler_static, $1) + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1) + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1) + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1) + +# 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_[]_LT_AC_TAGVAR(old_archive_cmds, $1) +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_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1) + +# 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) + +# 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 + +# 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) + +# 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_[]_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) + +# 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_[]_LT_AC_TAGVAR(allow_undefined_flag, $1) + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1) + +# 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=$_LT_AC_TAGVAR(hardcode_action, $1) + +# 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_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) + +# 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) + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1) + +# 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) + +# 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) + +# 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) + +# 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) + +# 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=$_LT_AC_TAGVAR(link_all_deplibs, $1) + +# 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_AC_TAGVAR(fix_srcfile_path, $1)" + +# Set to yes if exported symbols are required. +always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1) + +# The commands to list exported symbols. +export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1) + +# 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_[]_LT_AC_TAGVAR(exclude_expsyms, $1) + +# Symbols that must always be exported. +include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1) + +ifelse([$1],[], +[# ### END LIBTOOL CONFIG], +[# ### END LIBTOOL TAG CONFIG: $tagname]) + +__EOF__ + +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 + + # 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_LIBTOOL_CONFIG + + +# 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 + + +# 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 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*) + 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' + + 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 + $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} +}; + +#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 + echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD + fi + else + echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD + 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 +]) +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 + + +# 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)= + +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' + + 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 + ;; + 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' + ;; + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | 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). + _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)= + ;; + interix3*) + # 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* | kfreebsd*-gnu | 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*) + 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' + ;; + *) + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd*) + ;; + 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' + + 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 + ;; + + 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' + ;; + + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + 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_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' + ;; + + interix3*) + # 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_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + enable_shared=no + ;; + + 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*) + # +Z the default + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + # 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 + ;; + + 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_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' + ;; + + 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' + ;; + + 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' + ;; + + newsos6) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + linux*) + 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' + ;; + esac + ;; + + 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' + ;; + + 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 + ;; + + 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' + ;; + + 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' + ;; + + 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 + ;; + + 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' + ;; + + unicos*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + + uts4*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *) + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +]) +AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)]) + +# +# 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 + +# +# 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_PROG_LD_SHLIBS([TAGNAME]) +# ------------------------------------ +# See if the linker supports building shared libraries. +AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS], +[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 + _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' + ;; + *) + _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 + + _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}' + + # 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 + + # 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 + +*** 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*) + _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 + ;; + + 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 + ;; + + 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/'\'' | $SED -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 + ;; + + interix3*) + _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' + ;; + + linux*) + 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 + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + 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 -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + netbsd*) + 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 + ;; + + solaris*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + _LT_AC_TAGVAR(ld_shlibs, $1)=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 + _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 + ;; + + 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 + +*** 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 + _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 + ;; + + 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 + ;; + + *) + 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 + + 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 + ;; + + 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 + + # 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. + + _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 + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + 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 + + # 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 + ;; + + 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 + ;; + + bsdi[[45]]*) + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-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. + _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 + ;; + + 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` $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 -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$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}' + ;; + *) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + fi + ;; + + 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 + ;; + + freebsd1*) + _LT_AC_TAGVAR(ld_shlibs, $1)=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*) + _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 + ;; + + # 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 + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | kfreebsd*-gnu | 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 + ;; + + 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' + ;; + + 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 + ;; + + 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' + + # 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 + ;; + + 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 + ;; + + netbsd*) + 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 + ;; + + 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 + ;; + + openbsd*) + _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 + ;; + + 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' + ;; + + 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)=: + ;; + + 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' + + # 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)=: + ;; + + 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 linker options so we + # cannot just pass the convience library names through + # without $wl, iff we do not link with $LD. + # Luckily, gcc supports the same syntax we need for Sun Studio. + # Supported since Solaris 2.6 (maybe 2.5.1?) + case $wlarc in + '') + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; + *) + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; + esac ;; + esac + _LT_AC_TAGVAR(link_all_deplibs, $1)=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. + _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 + ;; + + 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 + ;; + + 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' + ;; + + 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 + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7*) + _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 + ;; + + 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 + ;; + + 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 + ;; + + *) + _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 + +# +# 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 + + 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* + printf "$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 + + +# _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 + + +# _LT_AC_TAGVAR(VARNAME, [TAGNAME]) +# --------------------------------- +AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])]) + + +# 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]) + +# This is just to silence aclocal about the macro not being used +ifelse([AC_DISABLE_FAST_INSTALL]) + +AC_DEFUN([LT_AC_PROG_GCJ], +[AC_CHECK_TOOL(GCJ, gcj, no) + test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" + AC_SUBST(GCJFLAGS) +]) + +AC_DEFUN([LT_AC_PROG_RC], +[AC_CHECK_TOOL(RC, windres, no) +]) + +# 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 +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_MSG_RESULT([$SED]) +]) + +# Copyright (C) 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. + +# 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. +AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"]) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION so it can be traced. +# This function is AC_REQUIREd by AC_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], + [AM_AUTOMAKE_VERSION([1.9.6])]) + +# AM_AUX_DIR_EXPAND -*- Autoconf -*- + +# 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. + +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` +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright (C) 1997, 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. + +# serial 7 + +# 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]) +AC_SUBST([$1_FALSE]) +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])]) + + +# 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. + +# serial 8 + +# 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... + + +# _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 + +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=]) + +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 + + 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 $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/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 + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +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]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) + + +# 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]) +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# 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. + +#serial 3 + +# _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. + # So let's grep whole file. + if grep '^#.*generated by automake' $mf > /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 +done +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# 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"]) +]) + +# Do all the work for Automake. -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 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. + +# serial 12 + +# 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.58])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 +# test to see if srcdir already configured +if test "`cd $srcdir && pwd`" != "`pwd`" && + test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) +fi + +# 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 +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 + 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 +]) +]) + + +# 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 +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-"$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 + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) + +# Add --enable-maintainer-mode option to configure. -*- Autoconf -*- +# From Jim Meyering + +# Copyright (C) 1996, 1998, 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. + +# serial 4 + +AC_DEFUN([AM_MAINTAINER_MODE], +[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) + dnl maintainer-mode is disabled by default + AC_ARG_ENABLE(maintainer-mode, +[ --enable-maintainer-mode enable make rules and dependencies not useful + (and sometimes confusing) to the casual installer], + USE_MAINTAINER_MODE=$enableval, + USE_MAINTAINER_MODE=no) + AC_MSG_RESULT([$USE_MAINTAINER_MODE]) + AM_CONDITIONAL(MAINTAINER_MODE, [test $USE_MAINTAINER_MODE = yes]) + MAINT=$MAINTAINER_MODE_TRUE + AC_SUBST(MAINT)dnl +] +) + +AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE]) + +# 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 +# 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 +]) + +# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +# Copyright (C) 1997, 1999, 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. + +# serial 4 + +# 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 +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 +]) + +# Copyright (C) 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. + +# AM_PROG_MKDIR_P +# --------------- +# Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise. +# +# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories +# created by `make install' are always world readable, even if the +# installer happens to have an overly restrictive umask (e.g. 077). +# This was a mistake. There are at least two reasons why we must not +# use `-m 0755': +# - it causes special bits like SGID to be ignored, +# - it may be too restrictive (some setups expect 775 directories). +# +# Do not use -m 0755 and let people choose whatever they expect by +# setting umask. +# +# We cannot accept any implementation of `mkdir' that recognizes `-p'. +# Some implementations (such as Solaris 8's) are not thread-safe: if a +# parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c' +# concurrently, both version can detect that a/ is missing, but only +# one can create it and the other will error out. Consequently we +# restrict ourselves to GNU make (using the --version option ensures +# this.) +AC_DEFUN([AM_PROG_MKDIR_P], +[if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then + # We used to keeping the `.' as first argument, in order to + # allow $(mkdir_p) to be used without argument. As in + # $(mkdir_p) $(somedir) + # where $(somedir) is conditionally defined. However this is wrong + # for two reasons: + # 1. if the package is installed by a user who cannot write `.' + # make install will fail, + # 2. the above comment should most certainly read + # $(mkdir_p) $(DESTDIR)$(somedir) + # so it does not work when $(somedir) is undefined and + # $(DESTDIR) is not. + # To support the latter case, we have to write + # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), + # so the `.' trick is pointless. + mkdir_p='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. + for d in ./-p ./--version; + do + test -d $d && rmdir $d + done + # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. + if test -f "$ac_aux_dir/mkinstalldirs"; then + mkdir_p='$(mkinstalldirs)' + else + mkdir_p='$(install_sh) -d' + fi +fi +AC_SUBST([mkdir_p])]) + +# Helper functions for option handling. -*- 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_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _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])]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# 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. + +# serial 4 + +# 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 + + # 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. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT(yes)]) + +# 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_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="\${SHELL} \$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# Check how to create a tarball. -*- Autoconf -*- + +# 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. + +# serial 2 + +# _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 + + # 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 + + # 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 + +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 + diff --git a/bindings/cpp/bin/Makefile.am b/bindings/cpp/bin/Makefile.am new file mode 100644 index 0000000..5f97f94 --- /dev/null +++ b/bindings/cpp/bin/Makefile.am @@ -0,0 +1,9 @@ +BINDIR = $(top_srcdir)/example +LIBDIR = $(top_builddir)/lib + +noinst_PROGRAMS = devs sine + +LDADD = $(LIBDIR)/libportaudiocpp.la + +devs_SOURCES = $(BINDIR)/devs.cxx +sine_SOURCES = $(BINDIR)/sine.cxx diff --git a/bindings/cpp/bin/Makefile.in b/bindings/cpp/bin/Makefile.in new file mode 100644 index 0000000..fa45b04 --- /dev/null +++ b/bindings/cpp/bin/Makefile.in @@ -0,0 +1,470 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 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. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +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) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +noinst_PROGRAMS = devs$(EXEEXT) sine$(EXEEXT) +subdir = bin +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_CLEAN_FILES = +PROGRAMS = $(noinst_PROGRAMS) +am_devs_OBJECTS = devs.$(OBJEXT) +devs_OBJECTS = $(am_devs_OBJECTS) +devs_LDADD = $(LDADD) +devs_DEPENDENCIES = $(LIBDIR)/libportaudiocpp.la +am_sine_OBJECTS = sine.$(OBJEXT) +sine_OBJECTS = $(am_sine_OBJECTS) +sine_LDADD = $(LDADD) +sine_DEPENDENCIES = $(LIBDIR)/libportaudiocpp.la +depcomp = $(SHELL) $(top_srcdir)/../../depcomp +am__depfiles_maybe = depfiles +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CXXFLAGS) $(CXXFLAGS) +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +SOURCES = $(devs_SOURCES) $(sine_SOURCES) +DIST_SOURCES = $(devs_SOURCES) $(sine_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +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@ +DEFAULT_INCLUDES = @DEFAULT_INCLUDES@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +GREP = @GREP@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_VERSION_INFO = @LT_VERSION_INFO@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEINFO = @MAKEINFO@ +OBJDUMP = @OBJDUMP@ +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@ +PORTAUDIO_ROOT = @PORTAUDIO_ROOT@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +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@ +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@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +BINDIR = $(top_srcdir)/example +LIBDIR = $(top_builddir)/lib +LDADD = $(LIBDIR)/libportaudiocpp.la +devs_SOURCES = $(BINDIR)/devs.cxx +sine_SOURCES = $(BINDIR)/sine.cxx +all: all-am + +.SUFFIXES: +.SUFFIXES: .cxx .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(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 bin/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu bin/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +clean-noinstPROGRAMS: + @list='$(noinst_PROGRAMS)'; for p in $$list; do \ + f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f $$p $$f"; \ + rm -f $$p $$f ; \ + done +devs$(EXEEXT): $(devs_OBJECTS) $(devs_DEPENDENCIES) + @rm -f devs$(EXEEXT) + $(CXXLINK) $(devs_LDFLAGS) $(devs_OBJECTS) $(devs_LDADD) $(LIBS) +sine$(EXEEXT): $(sine_OBJECTS) $(sine_DEPENDENCIES) + @rm -f sine$(EXEEXT) + $(CXXLINK) $(sine_LDFLAGS) $(sine_OBJECTS) $(sine_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/devs.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sine.Po@am__quote@ + +.cxx.o: +@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@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 $@ $< + +.cxx.obj: +@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@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) '$<'` + +.cxx.lo: +@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@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 $@ $< + +devs.o: $(BINDIR)/devs.cxx +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT devs.o -MD -MP -MF "$(DEPDIR)/devs.Tpo" -c -o devs.o `test -f '$(BINDIR)/devs.cxx' || echo '$(srcdir)/'`$(BINDIR)/devs.cxx; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/devs.Tpo" "$(DEPDIR)/devs.Po"; else rm -f "$(DEPDIR)/devs.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(BINDIR)/devs.cxx' object='devs.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o devs.o `test -f '$(BINDIR)/devs.cxx' || echo '$(srcdir)/'`$(BINDIR)/devs.cxx + +devs.obj: $(BINDIR)/devs.cxx +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT devs.obj -MD -MP -MF "$(DEPDIR)/devs.Tpo" -c -o devs.obj `if test -f '$(BINDIR)/devs.cxx'; then $(CYGPATH_W) '$(BINDIR)/devs.cxx'; else $(CYGPATH_W) '$(srcdir)/$(BINDIR)/devs.cxx'; fi`; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/devs.Tpo" "$(DEPDIR)/devs.Po"; else rm -f "$(DEPDIR)/devs.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(BINDIR)/devs.cxx' object='devs.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o devs.obj `if test -f '$(BINDIR)/devs.cxx'; then $(CYGPATH_W) '$(BINDIR)/devs.cxx'; else $(CYGPATH_W) '$(srcdir)/$(BINDIR)/devs.cxx'; fi` + +sine.o: $(BINDIR)/sine.cxx +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT sine.o -MD -MP -MF "$(DEPDIR)/sine.Tpo" -c -o sine.o `test -f '$(BINDIR)/sine.cxx' || echo '$(srcdir)/'`$(BINDIR)/sine.cxx; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/sine.Tpo" "$(DEPDIR)/sine.Po"; else rm -f "$(DEPDIR)/sine.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(BINDIR)/sine.cxx' object='sine.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o sine.o `test -f '$(BINDIR)/sine.cxx' || echo '$(srcdir)/'`$(BINDIR)/sine.cxx + +sine.obj: $(BINDIR)/sine.cxx +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT sine.obj -MD -MP -MF "$(DEPDIR)/sine.Tpo" -c -o sine.obj `if test -f '$(BINDIR)/sine.cxx'; then $(CYGPATH_W) '$(BINDIR)/sine.cxx'; else $(CYGPATH_W) '$(srcdir)/$(BINDIR)/sine.cxx'; fi`; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/sine.Tpo" "$(DEPDIR)/sine.Po"; else rm -f "$(DEPDIR)/sine.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(BINDIR)/sine.cxx' object='sine.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o sine.obj `if test -f '$(BINDIR)/sine.cxx'; then $(CYGPATH_W) '$(BINDIR)/sine.cxx'; else $(CYGPATH_W) '$(srcdir)/$(BINDIR)/sine.cxx'; fi` + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: + +ID: $(HEADERS) $(SOURCES) $(LISP) $(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 +tags: TAGS + +TAGS: $(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; }'`; \ + 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=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + 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 \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + 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 +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 +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +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: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-libtool distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am + +.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-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 \ + pdf pdf-am ps ps-am tags uninstall uninstall-am \ + uninstall-info-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. +.NOEXPORT: diff --git a/bindings/cpp/build/gnu/Makefile.in b/bindings/cpp/build/gnu/Makefile.in new file mode 100644 index 0000000..0bc6f28 --- /dev/null +++ b/bindings/cpp/build/gnu/Makefile.in @@ -0,0 +1,106 @@ +# +# Makefile template for PortAudioCpp +# Ludwig Schwardt +# 01/10/2003 +# +# Not much to edit here - rather check configure.ac +# + +PREFIX = @prefix@ +CC = @CC@ +CXX = @CXX@ +CFLAGS = @CFLAGS@ @DEFS@ +CXXFLAGS = @CXXFLAGS@ +SHARED_FLAGS = @SHARED_FLAGS@ +LIBS = @LIBS@ +DLL_LIBS = @DLL_LIBS@ +AR = @AR@ +RANLIB = @RANLIB@ +INSTALL = @INSTALL@ + +PACPP_ROOT = @PACPP_ROOT@ +PORTAUDIO = @PORTAUDIO@ +PADLL = @PADLL@ +PACPP_DLL = @PACPP_DLL@ +PALIB = libportaudio.a +PACPP_LIB = libportaudiocpp.a +PACPP_DLLV = $(PACPP_DLL).0.0.12 + +SRCDIR = $(PACPP_ROOT)/source/portaudiocpp +BINDIR = $(PACPP_ROOT)/example +LIBDIR = $(PACPP_ROOT)/lib +DOCDIR = $(PACPP_ROOT)/doc + +OBJS = \ + $(SRCDIR)/BlockingStream.o \ + $(SRCDIR)/CallbackInterface.o \ + $(SRCDIR)/CallbackStream.o \ + $(SRCDIR)/CFunCallbackStream.o \ + $(SRCDIR)/CppFunCallbackStream.o \ + $(SRCDIR)/Device.o \ + $(SRCDIR)/DirectionSpecificStreamParameters.o \ + $(SRCDIR)/Exception.o \ + $(SRCDIR)/HostApi.o \ + $(SRCDIR)/InterfaceCallbackStream.o \ + $(SRCDIR)/MemFunCallbackStream.o \ + $(SRCDIR)/Stream.o \ + $(SRCDIR)/StreamParameters.o \ + $(SRCDIR)/System.o \ + $(SRCDIR)/SystemDeviceIterator.o \ + $(SRCDIR)/SystemHostApiIterator.o + +# Not supported yet +# $(SRCDIR)/AsioDeviceAdapter.o + +EXAMPLES = \ + $(BINDIR)/devs \ + $(BINDIR)/sine + +.PHONY: all clean docs + +all: $(EXAMPLES) $(LIBDIR)/$(PACPP_LIB) $(LIBDIR)/$(PACPP_DLL) + +clean: + rm -rf $(SRCDIR)/*.o $(BINDIR)/*.o $(EXAMPLES) $(LIBDIR) $(DOCDIR)/api_reference + rm -rf autom4te.cache config.status config.log + +docs: + cd $(DOCDIR); doxygen config.doxy.linux + +%.o: %.c + $(CC) -c $(CFLAGS) $< -o $@ + +%.o: %.cxx + $(CXX) -c $(CXXFLAGS) $< -o $@ + + +$(EXAMPLES): $(BINDIR)/%: $(BINDIR)/%.o $(OBJS) + $(CXX) $^ -o $@ $(LIBS) + +$(LIBDIR)/$(PACPP_LIB): $(LIBDIR) $(OBJS) + $(AR) ruv $(LIBDIR)/$(PACPP_LIB) $(OBJS) + $(RANLIB) $(LIBDIR)/$(PACPP_LIB) + +$(LIBDIR)/$(PACPP_DLLV): $(LIBDIR) $(OBJS) + $(CXX) $(SHARED_FLAGS) -o $(LIBDIR)/$(PACPP_DLLV) $(OBJS) $(DLL_LIBS) + +$(LIBDIR)/$(PACPP_DLL): $(LIBDIR) $(OBJS) + $(CXX) $(SHARED_FLAGS) -o $(LIBDIR)/$(PACPP_DLL) $(OBJS) $(DLL_LIBS) + +#install: $(LIBDIR)/$(PACPP_LIB) $(LIBDIR)/$(PACPP_DLLV) +# $(INSTALL) -m 644 $(LIBDIR)/$(PACPP_DLLV) $(PREFIX)/lib/$(PACPP_DLLV) +# $(INSTALL) -m 644 $(LIBDIR)/$(PACPP_LIB) $(PREFIX)/lib/$(PACPP_LIB) +# cd $(PREFIX)/lib && rm -f $(PACPP_DLL) && ln -s $(PACPP_DLLV) $(PACPP_DLL) +# @echo "" +# @echo "------------------------------------------------------------" +# @echo "PortAudioCpp was successfully installed." +# @echo "" +# @echo "On some systems (e.g. Linux) you should run 'ldconfig' now" +# @echo "to make the shared object available. You may also need to" +# @echo "modify your LD_LIBRARY_PATH environment variable to include" +# @echo "the directory $(PREFIX)/lib" +# @echo "------------------------------------------------------------" +# @echo "" + +$(LIBDIR): + mkdir $(LIBDIR) diff --git a/bindings/cpp/build/gnu/OUT_OF_DATE b/bindings/cpp/build/gnu/OUT_OF_DATE new file mode 100644 index 0000000..e69de29 diff --git a/bindings/cpp/build/gnu/aclocal.m4 b/bindings/cpp/build/gnu/aclocal.m4 new file mode 100644 index 0000000..c80e0ac --- /dev/null +++ b/bindings/cpp/build/gnu/aclocal.m4 @@ -0,0 +1,57 @@ + +dnl PKG_CHECK_MODULES(GSTUFF, gtk+-2.0 >= 1.3 glib = 1.3.4, action-if, action-not) +dnl defines GSTUFF_LIBS, GSTUFF_CFLAGS, see pkg-config man page +dnl also defines GSTUFF_PKG_ERRORS on error +AC_DEFUN(PKG_CHECK_MODULES, [ + succeeded=no + + if test -z "$PKG_CONFIG"; then + AC_PATH_PROG(PKG_CONFIG, pkg-config, no) + fi + + if test "$PKG_CONFIG" = "no" ; then + echo "*** The pkg-config script could not be found. Make sure it is" + echo "*** in your path, or set the PKG_CONFIG environment variable" + echo "*** to the full path to pkg-config." + echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config." + else + PKG_CONFIG_MIN_VERSION=0.9.0 + if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then + AC_MSG_CHECKING(for $2) + + if $PKG_CONFIG --exists "$2" ; then + AC_MSG_RESULT(yes) + succeeded=yes + + AC_MSG_CHECKING($1_CFLAGS) + $1_CFLAGS=`$PKG_CONFIG --cflags "$2"` + AC_MSG_RESULT($$1_CFLAGS) + + AC_MSG_CHECKING($1_LIBS) + $1_LIBS=`$PKG_CONFIG --libs "$2"` + AC_MSG_RESULT($$1_LIBS) + else + $1_CFLAGS="" + $1_LIBS="" + ## If we have a custom action on failure, don't print errors, but + ## do set a variable so people can do so. + $1_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"` + ifelse([$4], ,echo $$1_PKG_ERRORS,) + fi + + AC_SUBST($1_CFLAGS) + AC_SUBST($1_LIBS) + else + echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer." + echo "*** See http://www.freedesktop.org/software/pkgconfig" + fi + fi + + if test $succeeded = yes; then + ifelse([$3], , :, [$3]) + else + ifelse([$4], , AC_MSG_ERROR([Library requirements ($2) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them.]), [$4]) + fi +]) + + diff --git a/bindings/cpp/build/gnu/config.guess b/bindings/cpp/build/gnu/config.guess new file mode 100644 index 0000000000000000000000000000000000000000..297e5c30f41b65e95341322c77994c4d1d447134 GIT binary patch literal 38293 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 U)O!4AX9|J+poD;K<7?sn03Xu03;+NC literal 0 HcmV?d00001 diff --git a/bindings/cpp/build/gnu/config.sub b/bindings/cpp/build/gnu/config.sub new file mode 100644 index 0000000000000000000000000000000000000000..6eea72728397be8ff2576ff2874998620dd1a617 GIT binary patch literal 30339 zcmcItZFAd3lKyP{3Y_dcSu8;kNr{%?^X7Dpv+Fv)l_l3+%JwB72$6`0mjy_Qy7G^| z=jomq00b!8$z7ZhfSK-|p0}Q!o}T8zfANmSae7qFb{=}qv-CQiE{k9hXQ{Ue=J7;d z%jLMpmWw!zyfQ4}d~pb95AgY25l?3e@A30}uYZ0%IN;x*{5_Gsr}B3sf1k+TGx>Xd zAQT42$HxaA{`TcB@bNzMelDWOyUeZ^w?PqkKWEES89DG?rs3hv&LU2tauFo?vpvH5 z$4~tJlf4~~yqd+OcOB0o56{PO>g7e8hH*ZR_PsDm64Yyvc^9utj^Ue z0&rADX&8CgwHJ6v5YAX-P+2&#<#IYj*(H*Kg?IV(^@|225DJ6Tn+53vJP3>-bLe?5 z7v3a`N-xb8UYz9fyA~rv1~Z!#xn_G(SfXju4LXWb-OR`CP zeFqvyLd!)3_y8|ak(8_$KUn#{MQKz7bMM`9JdZ=~RUAfX8F@kJ7!x0f%_x0mQ4&;S6}Hf6dKI4bSgCjEZWU9;ZrZZ=5RakZi^U$1Y^I|o50?j zVF%vnxpx(zc_Q!KJivtTy~`yD42Q>T^Q?+=$3n4J&3 zixRw-c@)MNU(q^@q||&UJMAh+HA(_)0n?bQ)iv+fc$i~;?h6^z-oT<4J#%6W)^ z=doJ}4Cx`fNv7!mX^(gFC;%K}%LElzgfj>Mbj80ZqrOS{_i4I3%!=t>Ih>Z`gfm(y z7OfZ3BG;%kC`i@wsDS)H$w{zarJh6NOruxX)Qi$Zai=5ed9xuZDUQO8c*leXNr;^+ zjYCNM|3Sh=11|3J2=u^HPMIam!oI!c+-bHoK`B8X0)t|@Ou!2BESzc5WoEK4922+UM)GHSdT7@tct!0ugW+(`~(2cn(qUACSqi7<%(pW1>R4yw~Av6u-iByt(&%O;HV>oE@AiM#KC3qk$%+qX|N{a!2 z7|-8*kV4A?ue>W4QKDZ0jkd)YAg&A#E^J8@q;Wch;L@4fgHY@>mJ?R@1(qROG}{oP zEYH$19%FKnyCTZ70&6p-|11Wmv~aUuSSs4lEk07&Vu5jX1+FoK3oC$7^?-!Y3LN#I zy2MJr3VYX(SW9q?EQ624j>5d_B1@2EYBxu}0>3d%O!G(HG=qQ;`G$(wWg7(~K`yP% zMqLF(oGnXviaH{zSl~?|BU4be%e2UwYYbx1UNE*YFj1lgsLp1d^cE-24?7PZpx1uA z`sLjV|MkV24?kZ#zxwe0#e4tlyBF^-u3o#^|K`Q3F6u93hTIkupi<=LcknT(^N zj}`w*J4_xO?1PxsMse@02BI&2i=ooysYmhKwCFz+AO3 zO=cIKjCU41lTv3bT$z!(?E<}h8M0Vv7g=spW$HO0WGFh!@?Os3>%~)VTtvZ*F5)ndwR_`(cE>}3Su zPa$=^{|Zk|4i2$$e4!9wGSngA2$>;<8soo32C&be`0@7Bz`yxvXbCg zIq;)I$P|m@#!s_VU`7r&^&i^ynlH{0rOdCqjOVKsDrV?o`2+9GSM895nxZD*jS#-XnFY1dlfDAsLNRu(ikU9 zrLhvJnP41IP-Dl-l@)KQR+f6g$pR&lv1l08u}!<4wiFlgIX+) zqj`3FXa-qE@wD^6FPCW#BV>Q)0i@Tvf=dlGs5wAc-Ebbr28$Y{*i@J(x`P!}M#w#Q zfF6I~qs}67lQ@@Q=aodhB4&?n=&cAV~r3N{x%9LQf z(3wI8(2H1Juwzv|(y$O(&@@ZJ8rFv+%O1K{0A}%mHY>afm5=?wP;GW*!#q!AVq zp_L_2I0bn!Wjgw<2>7yC2#X{%gM9>w0TL(KJjZC`>kNj!Ir?kPkEvKM@Dh#_eq$q! zzX=usv;%7_&5G?~#Pnbtm+Wy&4*YFQv}affOkb9cO_C%6;hll%;#J1)D|-YgwdG30eh4 zFriPl?8=_)@K4s+R@L?i`|A(aWjVPKdViPzritxSybcck6gS~K*3sBx2gy0)x(|g0 z;;9JonH^Fn^3Sn9zk`xtE5MJ8GgGEUzUboR{&8aDer?cWJ(*;;B}A$zrF(=rup_*s ziyDEvE(!Qy`AcZWqPWBJXE#_^V9Ed%r#OL?fYl&>f-Zms)Yyr1qZSpk zYRWF%>W)oiPgS-?S+cM`^xiwwg372sRQ4%n3#WLdo~v7UtihMGZqPWD!Tw0YB8(3} zk3w09LF!J8)YiIdtUM(^WO;wke{y=v1?2SXm{R|X7YxpC%o`RDW(9mkoVRD6tIyL> z^*;Leq{_;};Pm6@$>$o8(TRl}ooo+0l2@0+}`1^4@ z|I8H&uhGZ(SePx671#Px_rZ6Yxhj;&@MH}%GhH-k(m!4yZ8FryoB)$D?~m4N1-LGT z$4I*_R{A|VgVuqB+1aT+^PG)0!=r!r@wiV0_(A5~+sE|QrlXCd{o~;i0>oz{d7SGb zaM}6bhS~q5sX;N4;h;bg#w?TMg&@h#86BZKy{g&dsPNTg zrTt@cHgoXCrqJ#wb2Nm$r|2lsPRk)ihh#&cPoV{Jeq;seE{XXh?~@RpWH|p_{+Qm( zGgwA*Vwg9nw0jq2(0u889%2|N;X51v#uNQ0XCP6|sLq~nbmJ9@Ee9OlkR(H{oXHR@ zp_JC3&Brjpix4hn!UP{K2|IT(S@Nm5d^;O)ib~=f%7lI8DVTX*v2_Jtbv`!a7qs6} zfJkYJV3rYlF@xQa&sZe`o)C}t2DC!1Fw2p^hvD=#a&5mpqikH4Ft?D}S~k~rm`iwH z;M6uy8vk>4!?mrk8a!)mWc_7&lV-Qrddb>~DK7nn=Pa~ueHpouG9W!1iJHxhH#+bCxWKW2Vid{Ty+vc2 zwnB%PDz6IrIxe}U+ON=U$HO5Lzjz4w#R9a9$tP~I{ zHU;v;z5Y0`uWn>Qv4Kd^Wav2hLM;bx!UES}O~s2D2uw5mFRyb4AmhW~^;t*vWri>@ zxav2vWaLzu%VxG{JFb+`iP3&GX;A;EL0Ju`1%`#c2_{<5CKwf;2AFC>buiI?9E^N5 zS(l{3v^#2UzFR=G#sSD?`$!V>qIyZA6C`xd5#4A5P_?5v<5Y?qkZMRSTa+RD#pO!? z(_D*BSLR7QNpq+vS$Nx1((R%n35;k-`u4kd=%~q4{iMExH$_wBsmjQqn>4?SAaW{{ z=2D4rL{yEkpD?550#uZ+9kO4gsB$KWR>QI%)UoWlXj$f?B2Q(@LWpwaKB;h-9K*G0 zTu9R*sbMLAYF*Vk^sedynpf=ux);7G0xRu4tAZ({)xh-2bX2+i(PD~DCYhp@x#ZZ2 zWl_=;Aa>#yiKj*&1hQy$78JUj?GP6!~ zK25b+pTiW@&wkxW*Gk(!NmBJdHH)Stz`9ddy?{G^J@~ek2X!OC*@0?9Joycr=|Ik| z=pm$b1D<5@>_E;@)w2$I%iBw+0mHKq4uskYX^f1T8cOvLa7H^E%D#t&cPw#y&=}7J zc(L$JY95-GGPs641(`6nuXC|}H8h-Ox`8DHN4>*HrM*!BQD?ycYnyRVW`cyQlIi6n zHe`cIHjZH6X`_$>tSkax&|m^xT7IB;#&A4D6|S-1w$Yi2lK}y;W$~PV4Z`Q}cy!jr zLZPrVG2h}Os8SnF>SHwXW-p+UqP}iyCCm_|)+)OPfCaO8n=lnX&9imBD_0IDo{9}9 z!Ba-DX?bt=b=v1diKQG>r=v za#pjw!6mz+!UnB#E@)TPF{`N%EVuC(@F2yM1SrGbIG6|UU2fM)Hu3f(%%Dx~&=LkQ zJntBKNW>XYaA)A@u@z8`m>o*m9vPxTgJP{9agprH z(IqnQ(#BHdNzphV;TMCoag)Zt(!k5N(HK-TaH5MU@Q4==d#vkke#^-(RS)%BQ3T(D zOB;ZYOK5W;Q{BS53IOMSzJj%A%n~%+~|5JK?jdUyXt{Ue4zReVmnc!V`;I zNO}5%*}`rOos!U&9*uF2V*8R(Es+9fSe9LAyByt|%3sTrjvRx zm>SlH^DL*H*&#S&K+JN>6v4Ky;sVF!ua-O^Jj=JP;|_%|RVg>;a*8N_Fji-I?Ymt! z?Lo9j#pn6WV3WelurEn%d{mNK!3O&9;{eB)+YxS>;G>PwYTxbhI{AG93QtUlQssKW zHX0bU^*TQ}6E+lG--!vY#Fzi|`o$0MwGu-w%cp%xaJNi`I@vQGJ@Ra0me*d-Z(wE` z$Y})9t5>A+=#mEmgm<>q1H&a?I^4QH{YlnLSCCYh&Hq$I;UWi>)m0UHe;OXz{K*o=EHjkMD>q(} zwSqkY!<>&T$jzM_0c|x@b&l~k>99wLVhT4vK&v-}@l6y>&j*&O*|G<9>Ed5qKe8b`Su+fuXeRKAV|rAOBo)T-uB zgRkD}_|27liooiaFw(N!UN#Td5JPip))f0@nl%zplDkQBB&hOtbW%A4DZzF>eJ{BU zV@Hy7x?VBaze$%1H$jlV>(REMaeogUscm+oO)L)An{tge ziY)_fi!3`WF&o2yKo()up+nXLvlOwi(C~VN!qqXZ;}aMVk!z~M`D2BjI-x_zwA(@0 zYRU+OHq7CJzF$#C6XNu5bu#yh2tH1xQ1OL#nBta8?_31+jqNwx$28& zbJCOLA2&8OJrJa>R1J{RAz`i3z$+;m&{$Tub~<@F`v@PeZafO*t#}wucR12)H%ZKcPKY@-p5R3=vAZ8^uD=aQ z0l_af*K+wI}V1J9n{-36D4%i~+9kx6kc8O!R1zL3h;ee%OCrqpYotA~qbA%{q zw?UO>=x6!qu^xnF`REv@Lv0+ZH^LX()TE&Xier-cCv{;ndqbktWTDs!(8-uPVlC+I zZ{00zwGw0{B6p{D0^qE&3nUL~!ige1M@nxS=y!9UhvGbFy#?Uit=}l5p5f0Wr`={2F=}(U z;fNpvx|+Qr@dvoaiDY-H;ncj+>rA`xBz=Fw`OcJ%tUpwGy^-KNT5CU0Y-WC~4e5K@ z#dEVAZ6Wuxq!9Y<+LRqTdQp#SW3+pxM}bqdHCM8{+Uw~iqdjnB$=J37fs;KwwK{Yp z)l%aKK}779pje1EF&|xxBJM3!9m?T37jr(kpe4NtEe^i`$Kh7H8iZfhrg4e$bNKhQ z0k`@Iz*nga&1yQ=rmAf@j>Wg>ehm0NZQw**76(!IqZk5+eO5+LAdE0F7iHR|$bc}p z7PiA~1K*(y<-}Rz>G9L1%hXMt=>mia75TWH#~zE5GUIy(b{*7Ir@F`|jh2^B+ITVs zH;%KcjiSt#9h*L;Zt}UHKj#+Ws^;33!s+Z{*}=c)WQf_tT*H2S|BB0*9di@Rqg>wH zwB!K>?~hJSDoE*So-T7IBuyh|9evU$z@gbqHOd`sEA7T`<&bJ+0jayJ7E-OGlg^S< zHPr^_DhgN~MRj7;%j!06w$Pe3Og0AxDIQ&7LPnZ$YTEoOoEaz>EezGO5jD{w3ns-f zMU1v~H|yN2hC|oJtnAvD*@1AEz-6oGIGEd*^=#|9tH@&5VaPMrxlY^rKvUeJ%QFIr z+Y!X?4vj$fyADxIXFRw`SCWr>*0yr$tS9)V+wkGccOSl7{(zrfcj@r|+l~yc(sq|o z%!|Kig~yIpuhZ?|E&0B{u;^Gt)K6l4W9?J)lW;x`3%Zh`HROrg;~m9e*J?~^I!j9sZV`9r@+A(_;91MQX;-1$Gi+Bes%-~WLz)7@=JqXs)Uw-f8@jjpA9aAK z<9VfaV)O}Y)i8M+;I#LK1aL(aKkTQkWRR| z!_69QBa=Jd#g;_4#|b%;$iU{-ysQKwEC0Xm%s*W6t{&7 z==qa)3KuX&^V*y<_nQ|C9$Xx-`c{XdJ)SopP9FpAd@o6d38IK6QzJ@B=x^H!KWW5- zdL4ZmAF(rzLMtc{q83WDr}gfmtlVXkr}geG!aPCfrj1BNdc5R$HpZC_5Q&-uUBgED zw1rBzC!&}LP4HSrkZgt|F;_yph8h&&o)TLe zQy>7V2)n?xxb#?Z?}yR{Sl3KnHlwn9F~#-2VB3O?)R$VM7-fX*E~{vBC*+s7TxLl( zeC08<^mMwJdpKC$Y8O6W*svoxMYSN^yg9HhF8o-tIw{oPfpCU^KLC@& zt5n{oZJR`KPpP{l`#os00)>kv@{CFgix@2=6qs-6Z5bx)c3!0K)%=^`Acu%V%x12< z;QUCQ^JS`WuO?Fi;sz|h%ezGGXz7$;d3t?A%QhD{9EpxOvR5G4%M(;y3AP92_Z~?%VQW&%ot_ht%>C z;8Kyiz$Z?gSujTYu6jioMu!D)pRAznO+wvB+9XR5a7JF~LDi&y{hlHUZIGhP&a_e# zX=F7z9}5sJrZll_@GQx7QL;8*?xx^HAaWC_4Q>(g4INltbgv<41q3e=>$NoQN0RL% zhI}p8IVLB#9!HjB9+|#p^rZ$F9-G=ZwzMoIH_AaV3lRTjBJtw7Kj8xwX)XhdHjqRbp*MmAntJP3aM5K6~z| zm(d9>$QzD+h=K_P!DZGw{d^lBlc>~1nQ;G-27oUHt6Iu@6YegOs|(UrR%FpJo{c0< z1Cqntsl2St&fwi&?=f}(!dyu%L2WJCNidB~ zSViM=rpe-_BCm7GZ>hAj07%^50s#0T<<#o`4Z47Ubm;-y%4DV5H@0gz0%Mh(L9J-P z9^KEf!dUEK4cp9m_CIwb{gklEc0{00LREtaAYV2MOKJgc6I(X=SiWo7^(>oA2Thk= z-8WEEZC6HsD2gr}tEeT!m?`LO%e#KsOkK=uUagpLVZ|n7jm@VnV=+y1S8Wg{B3y1c z5LYiYhF#6p|rdH0QUu_aWun^dc@>7wG;`gQx``qm-Wr(c8pQX zU*j>983_|1!eQso-x#{?0FP{98Aq4y?3NGz!X_R{!Gls%Z| zrkObu)D?KXa5VOO_Ek4qE_GP{)GyZa_KKYv?Aehml6aFd)%O=Km9T8fTA zMZIOtBaML9Xvq_lAdnG8>c8ZGO*CVIGMv&z%fmKX`z;ZTzBtZS{1G4dU7<3brucmd zVCqklfKjOxBYc0Q1dz}HBtfMRD0vT6ND(f#5HkQPB|p=HX2Ra{9=i-y<3jw7II(n( z(3jYroE~sY?x|a{ok+4on#m)%Wt50R0MWTg&^+$VY{VfPmNDdz3*(LsH-~AugR=pu zuE=mDfW{H*ODc|GJwi}k^ay`5jn+jTUpr=(uy?T`^THbHeWZo zC$7FQ{PkeNW6Wd=q8k=dV|y-YGiA{}IXtctFz4e95DH);VHq2nKLo&^_<}8-Og*E>ehtl28f`W$k&uW_^A-oTuV2s3F{Ke*p^)NhTKhn#f%$Jn_Jy& z;>n@8w?L{@hPbo3wyGU}_UOd94=$v)ASp~=iD_8-iBlf|=4p~*74=s~ocL_4N_rel zJ+H?qSq4qp_7CleUJn~9n@P3ORJ=!*8JiB%gG)vrXPewOKI&0Js>OEpH*#@gu?24? z=MrqB+J(xV^-r-#+^icWT;M5;DhV?JANG(ZrT8{+HhS(Fwj@`#RV+EKyRJ?!SK9Pu z^a%{_sm-C)#9^3-+BT2WI2t*-#mpT-s@qIhAZ(Vq3*`ErMj1zyYE?_ea=A61A2t>Y z11^gZ2W)ZFmt98clEn^X(&h4oV*$363jUsJf%we;#tXOQG+NLd2-w_8@9g<{$-65D z_qS{^O=6CXQvJtl9*eSS7<$&kC%3s(``RdJ=CBuCFR{|hr-i3Q!IgwF665;KHf_wt z9yVYWr;#DY5jICQM2?)?VyarU(x_ZoB|Js*xQ@5z9kOWNiZv25p3xs=%4aw?WAq+Q zfBU;tD%fbeq)?-tQ2ii){&YYdhc|*U&#)=P;@AMekK#}hd1jBWw(YzdM=uIwFWo(` zhA=kEg9nD7tb&rjiSa;wH^8Wm4h90L4nZqtgNB|tn(h4qwE{H&#+2hOU(BD4e7P~~ z@)I#0-2>om+&c~{M>$7DY^x0-Cgz8O5F2X)Vlu7sDaP1FzP%&pNT}tw0V6Jz4nT~e zv@oavs{y&uY&ICTt5oG8=*V^3VriM6ai~FEy%iiLjfRbUdtm1vXcTEcbTlds4UOS~ zri=!3i{AI`Zd|SHB}2y-t!s^vDknb!V~j@4b5OHUX(U40@b2Mmd1U6%(IcG(N4qA3 zzmVF|pU!EZ(nuxoJC7+0Uh(&N^mo(nn{N0)u7`-w70iFYuW?Q$@W9A!ygm6{NS{Bw zCJCjtSN;0dJ`k!e{vubg_`%zCznS!GZ?_4dzv2Xtzx;6L|K)g)@Xure2qFRyg8Bll GJO2ylD=8@e literal 0 HcmV?d00001 diff --git a/bindings/cpp/build/gnu/configure b/bindings/cpp/build/gnu/configure new file mode 100644 index 0000000000000000000000000000000000000000..69070c66d4f20c3c0d865bd202095a8f649f1eaf GIT binary patch literal 126971 zcmeFadqW$?^*{W#^(rPZjesD@IF8epD*a-CZCVUGfD^ZtBZRboYTcrh4Ak-OwLhQF zIWx1fs} zOs5-9#@*v7hKQrpA9lJYm!>;GGj5x5-am62LvhN-)$9IS+Fvm?Ew5Oa zX=v2L$UGcQ$AbtB=#NkiGgauGm`M~*OnG363vd2;@TB?E=KjIf?#?%HG^D zqyDtVnT*et%#YPh^tw8j_Il>-k6*9KNDK$cCNyw1pE+!|kU^w0$} zja#P?I=#`2iEo$=P7%-zlU6|?3`{FF$#mq_f2_dM#H#! zF~8ekuEI%|!+bCujex?KeI}ltMFRqfIocHt_u`}7-5UN|vpMiMAAT!t3Y?n!Mcd?$$~_%EP@{=^H!%{?7J+8B8(agEkj4DF9$$&9kBgnzg;Y z^H}~oTYtQ1w(HIHjg9@yg9CZo-sVqzcYAyNP!j8h|JajvbK_4PyGokFTN zpKh)nJlo%ViZm8{3OIl&u%7PjY#y%f|AXIm)}IQHoo7!s_qXc&w70&ux$nRnZfTjQxD`i(R$p-j?Z9B02d30mY&Dij zbC)5S&b&4L39v=JCCI|wJNTwLgMD1|GAPC8M@cr@c~djR=hdPg0@Ud8)Z9Z*v-?y_ zY9}h8V`d1_12P(2MD6K>%eYbiuzplK;sCjVAWL_O=C|Jjab+A(J3nDCD$CWz;)`FZ zFZthcW2w5lP%@3*F!#62bC>CPW3gIoEX_#?6F^Y#PX@WdLB1OhJ2W6_pAC(z{5MRV zF)^mARQ;v0+(@^hfreDym>Bi0R@cn0YvwKT-!i89%X4PMe{9h;S(ebfJRoru2^GRE z9m&Gy+BJhH>cpnLzan&YduwNNXV-s}Z_LI$ZvFMJ+cCOplkQGOpuF|7*0|N4L}Rnx z8k}-{V-DKmW-prHV_Yk>j@zB+9bm>oam$y`)1)-sGaU4Bp8U?1Lciy^;jqnjdiWSKh-f(1^2b+8A z`|F3h`*!F1s)qTUcs!TcFW&YHQPKQJK4D>@0_F(IoXBB{(M5M+fSktsm`ZM+VSfj; z5#GX;;WA{^wPJMuDsTaY09@2s1&hmro>`o}LB^z;T`R4X*bvUEqgWMQ1?wj&S zQi1LsvZwUAgJ>{puGSV5eUKURW53?b{rYVUM3cmc1MkY4Z_FxbrDqk607=LCBFtAb z7~^92=`I<0ZL<*I57RoIO?6$ zkh->}sq#5)y^fk&j}B@J__Jo@DLqqe>+E!8>s(-}ZcCCGpdAc=)!pgeAcOdh62g+{ zV~s7;^s!H`k~V^X2MyHRNZ|KlaOJP;uEQ?jpEN&;TWx>?8xesu?Qj5qFBnwtTj(eF z*%k1p;1oyW;W4Q7B?t370+T$R4p5sp0-IOgefo5LXM=cnn`19boDQPSi-5%rcN~G& zC!-Qf5PO3;3J^s{xQL18HVsY+IRq#D(Bp$3wJY}(aa)GUmJQ0i(M77M(E}5W$HVah zv~J-0s)g3fIAW*HyTlK4?l>Oy$fpxwubpCS zwjMVRo@{~v5-ci}mRvX7G~XCico-9ONvKtI8jo{6e;86(-i~`PX9zQk$1^gJc>Zq9 zfQPze*M=e&yLQV|mzVHYxhsdSRpKoH6-~JfMlz%+pAn@gr3jkED)u#G?Bpmxwi;wf z(RksF`>E;(|;zr`tF|b$OHoF&amsUaJj$3~~ihe1gMirGFfau@{gFIO&38F(vS9 zC15L9f(fdUhA?kg^J=-{2vEV9w%TX%L8cqr0QL?rd;*~}!~vfbp%c1$;57TnR%LTq z=>gb}*pzlkp&&k?56aL!=ouHLJxWGz)Py=j@f-Gi;?Al6Z@cm0lqDsP*O;h;1Dc8QRM zhcd23>~HNeIS`nI7k6H+0B@!-kqZQkN5W0WLpsFpX|4-B?=W^ z#pZa4bKEBtKc&dItGum>Wpao&zAi0k=DZOv?yJkUWv!kt+2;9RX}n6Yf^- z+!OqA%w}?oLdSiRleI)K4tlF6j5T6Awn411Gn^2B+?OQ2uefTICmJ+y%x#ZMd6YWG zfqL~MNd}HdU@t|8i4XRic-=5M7`;Itno+2>LcqMqj1rOhuXu1NkFd^yGoJ51w{zxb zjv)U{1eWewA_qdoMD~N+MVZ3#Ns;IF18h0OSX?<+sd>LO;{FAhxyXvK;9GX`>U(=e zMP&dv88_P_0OKZd`KM(|{H++{PkZ*=${7B%7XRtRFHQSVX#dMUHUD(_&P{MPAE|c4 zXTBNV{Ao10qB3+CM?d`i8CyRDIoPJb%&ZuQ#e@nDqI1g$0An#I?JkaFWOPWw#vSlD zl$H#7q$mX*B8%o0J2mJ@PwE>yVurF`{UXw%P!@NF10F?0{8a)@Rsw`vuX?Z)4u0DI zwt@?o?e1U-x%fDO$bCSb?Ra;a0A*?ta9{-CcY8<26V@T+c(jN(HRT~ToV5g84*9uP`ZLdE*!0-CsH|?XG=4uOX zLUy=pFUqiO;EJYo(d|$BmW|^!Lp}?e4md#Yv6w_)GWTX9`(S6-p7tU7;n2$slt-sH z!oF&TJb*?MN;S5yhn)#M^yhG#r9sPvucMAIXMiyr06Eare(R!%bs&Nn&@(NE>>y0o z=N^D}x0%=q%~kvM&(eb}Ug&iv!iEcd1wy{!rAuLNz5aJd;zjaaD}}dpxHqtAkj_&u zUn}uE(c)zu)?|`wub673)w{{ZgTwu;oyTd2xc^HsJbdq4AqN}HKu94(i4e46aPyb>&=HG2k z{JVC-zxpO)VMJ|ooQ1jBC<9PFiEE zUi$*M?t$e;EaRa+xTD#6cwp*vQQF2E=cGJgYdHSJKzvs8pX7#7@d9oi>|x*etx z%YmwL6X&TOucSep9l5|7$DI~Vz{3$wffVAmn_ZB|CTPv5=HFgJqK|ZYC!<301ctCD zWYuG`@We^bcQVZ2=M^q)XK@k-q3J*>gj78u=+zZ80mee?Kvi*mw#(Ctf`x!P!n}if zxdJ54dY-BA5qlftjci=OQg6xR)=J*DczQxApURhBQ?+>I0{<(-7{kG&hTlnqzhkbd zS^=YRJdE+-0%IjhC01Y;+$3=A+{M5Pbo6*@faTSroERrq6pz}IA&yLbz-2JO_ffx~ z7oG4L7;Fp{7&mpf*&AcLAXF^&p%+0x1i^*mp;kQ^4vVOY%qr73@X74Ro=@n)r;^LT zrUIHy5gYl~5EOs_8SHMTTrci;rT}_r=ZrhfGc*_7#HFq@Cu#u<4t1yl8~bs@6CY|j zTj9lhZ^cBDb_MN1XIkxc1nmg4uU{!Bxx)4Fn}F24<)&CFSXwrd$nT{>Lg8jI*rZay zl0Ifo6nG1r6tobqJuwUu(MTkvh+~+HogVd)BXGnrOvPYJtB4)h{-8yrLPA5sV)kpP zkfO4+lCU2>(GuNs!INRBpj0^gjxV~=q06spdTY>bDyr#y0q{{TQJJGV1Ouk2_TrDS z>+z|u7GMp)NuLfx!6cEhi`oZ>1k2-Gi>VyQc|@+YA;Q&^T7yptx~S(Bn; zqe_llX)9b!I8kvab-Jz70amb?Ttd^LLTD;{_mu*%`L%5K)Zd_AlYIn}sUO{g{k6h+ z+h1EsB$*aOZP}F|z63A9bMok)YLJ!l`zPP51W-=fgtC|A)X8C+_bN?viK3AaX61G5U{FYNROE|8 z495ntwX@IC3Hj`w+=Km1kD`O1*ka#oH}c-Xq~JMu#8bnLWvAuF!9kiubEv^l_oJ*6 zW~SWjrAT_l!B|sN6%kwW7T{V{!#pg3vH!YwsvZp z6f4UwekrGA1rV)z&PH#pS$>Z2wmZ;@EljBqXD}>$U(5AZi$YwJF`?E$00A>hE}#@w z%hhJ}6qHr^gL+xN$r`ORoQ&8*0^v*WoIIw=yU+I5BcyOdVVjhE`6_W9 zP=XTV3BK5t&wRm$hNWE|R3=mUHT4$0;JFb%N|OAOBaLATlbLYq@)Rd868hvJZCGa;$@! zd9L}-_UUYFnH(Tk0?Z!qAOjB|#sS3Sx#l13(^;Gc5t1$3L;;%gk4h>WG9J6#gZ=eg z6a0~Lxyn0iOHjhj57UxI|KuhuDVnpdC&vS+cHV0$F?{iuqa~9h|KuLh{Rt}4{v;o4 z2j+jsWJtf_tznT_A%w}nbMolMDX4H3x1IcnlQsKn`v?)0e{v7mZmSr}^;zD0Q)b`7 zq~JMuOd79+XIqX_Aeen=PWI7%OgGYI(>Cght#I}wNN`QDnQ~h~0ur<)_tmvZ62lii zv8VxwNs@n>>4&Sp_r-olnmy-3CPVraZw-rM+LSOkcn(IyRg*I+;n7}ua^;t7mZT}Z zSUOAUEquw8Op^SQd$7Nm;q~=#M(qfP-`q%C^KCX8zBJtU`oh_4nfLT7-Wn+gVRG=C zJo+a;X})Hjm1pP8N}@>+vX3%c{OBI+ul}S*(U#TW(-+&6*_R+8dGt^2!F9lvpKbZz zL^svsSDTc-Ll38u^2sRJqfbU)#@!A!7?!Pu2L~emO}cH9f@eQNlH?QkFwh1i;?{sC zKyEL1b%o}B$Ycns)H10I;Y;wGJo+c!K3{Xlwxon=Qs(L}*(|=9NwIX6)LZxxJg0&9 z1ovQn^(T#zNv+AkPJOeOcHOtxZ1~c!%Q7jP&6asjzoy>s(g?u?iOHjXau05OBrV8a z;K7L^`zWKvkM6<#>Q8z!ZCPF5`eIu$`w}E1kN(L$xDMFzvkTnbK!j(W>ps~I$St29 zgc^2agOZs{>DO$p^};aI`vkr}^#t&FHKM$A>Lb48H0ESB>&%zzhh*f!*5wd)SHIrZ zq&hn9(@dtBMx$gVQ~EW31Z{l|e{=-(W2SraKO$ozGo8#lTYlzC_Ct0AZJqOR(BE#A z<;Ix1gd5yUQnrPuj#hEPW*L=M2{nV@Y zG=BI*8THI0&Lmzr@>di_(iKJL7QCw1oI>-9 zzj8)lG>I#3u7LED`(%Ih$BnGs1IxGUqyOk06jAKWalkS;{R~z;`>dsTx8tAOgZ)h- zpo5?oXW#4y<-LVT!80BkmL{Q;PjEx)Ak9*i^i`=gF?D-7`zfg@$e7KRc~8I2KnRnA z=j72pg+=Yh%zy@s@+YZuFWvB@a^`)+w}ukKAVh7#Kl=KZAqS&GyF%;9Jo=CB!Tx62prvdp zR9C}RKJ(%lh=k#7;J=kCUN%udcVWuOXpKNPpUxI|> z(LcEd*M|^(4yL|lo2(L$G;j7f`Rt#x3r=?^*ck9hRF=6h%s#vFao0cb;U_;LA}6=y zY7d-9K*air{rc$hTfNLH?nkA-?{qO|YyYVCqZVdxKk93_;r(bbChmUJe#yNa{Uq+? z~J8((Gx-A7w z^PTc}X1-)U;Jx9;ON*tmq~5}p;5m6r1~X~G>>dr(f;svq(*Xpn!_z_c-&7nG&0bYU z(dWV;^jaH7@EU-tRNNVt#Oz8;s(4v9?yKji>#Yl^oq*v(&#CBuAJJin2Ct!eGk4qa z`&I4ZYLaNRe!uz%>O3h8A{{_i$qlzF)$+hlyo26{3}d3DX-6})X=oPb!KmHTJZ>r+ z4STfp{ORU{z&OO(l0aqBw48G`xRA1{QMQRR*?wSthM5O!HXfME;nYD;H3ZR$Um@n; z9-Y6+gLz~Lb*vQK{FIa{H<=VSR+)x49V=E#bx<_YE(z#sC$;12o50+`5h3JxiQ-4RWQ$FQ5Vg6Q=v1Jg_q=I{`$Z=R{70P(H>t)C78ep(FNInsq35pfT|vp{6N2` z>g<}0s|Tx=FXB-)zg*_9pe>3IXoN?Gd4nUB2h;hk<78EZt;_`mVDDhZ(-4dzrPO~Z zRds^mB~qeWaiv|)N1UBcZblBpd`@l1VFNLWh9lS$(+!Zix1v1+%_ndz1rvwiEBN9& zj)3D`I(|7?;6g890f1(S8O0g%F~46=Fodv*L^OLqR!c4qht}p!4RAWGOISdNcJ)F) zR|>44Ce^6@RKXr)7eY$HC3po`XKf6H)PyjJ>!idfPLL<4KI=FqYvtH)T^>_u-+Hft z#$kq{A{9b6(|f(9yF|k_C5_O)d^Pz zc8s!O0SETWVLE+aV)kg9?Ti%NDova=Vi;0gR2Ndg$OKjl*$(5Bj_!i!k?w&Wz!^6TeM~o)0Wk5Tl+G9=mkU~|xS;Z34mc$NaI-`zY3?W5!D4DFPO3P5F`O#F;9P9F zR_OGI3tUW!&Y|x|9c6KGaMGonrkmU{oj|G4QevusUg#%h^cr<|=0G=Li9}xxs4by~ zwA6snJ1wZis8bzuz|NR+0XJ)E^&=Aqz*IixHSWpTDw%#Hm2!COiq)wC0aUO1eAKP>oW(=70bk+PW$ z7K(*Y;mXC@a8~;{xCP5-WOyg=F0*JfXOYz|nV>CmcKXmwmo6Vzqi1>qrw{NUn_w;- zxm7BThJc5d>#@sw&HLcmwSzaQQ|ZuRyW=K^bVI2Snw_1knPoSZCvu}hBSDUbwn#lF zHI9<%;5~>=j7V+hG~@avTP$(s6xUP7uKtNYs3Y!-U}M(G18o ztkSVBhAg=FvdYT|R&9#=g`hBVwO_vj$ehgiP}$0a_}fM%A5v{hK7*~4CMI8k7A7C( zgR|`mvgSf$>q5T40t`Q;S{Np{HiqAVR)(Li0&82E%5K{lesl9!uUlaCda7mkZcEkc zK`ZjI+ZwYaI2LL??P?I4?Q|{j$=4)rVQreMn5eLPaaZdc2&~;2xZCROn+Fi)uwAuT zf)-p2!nVO>nuQ``V9o2@DA?CjJDdr=9|@Z&Xo=5aM1ttB;e)_Xvzlie z3fL{gSqg*$rNjgmjttP}z(qeHw>mAFg0p>aZ1f6>53of(aeiZ9llzRLg46dM^I~_8 zj=o=3Di!nMr}h2XPwU&yHu+j890HQsDPyL))dhF8=i~&vJ)xK3&D#vkp2_UP!0u7FemV9=LCARB;HU@ zG8*rIc~n>hhX}O5ms-K2bDO0F{VRC6L7}=GG~wv!cef1Vc@?61rc@qaxd?Y?Y&M)# z3HDIGS-g*FMlDoR`xaZ)6>=@Ht!Q)bLr*QJm;WpXt5XZ38~k%1*dc{2m17v3zX2y( zz=1&AzVJX%{)xSCSDJ*Q{~R=z5=e)|hk@-+`BxSfEge2s#TztcC@jbbew`+eH;aca zB6FouG8T&0OO0p%n??p9Lw7v>)ji_rCeB|HT@+G_L|Z&h@M zSYczVN+jn&EP>?kEKbbR5~UT9whAn|q)SrZgW<{U)6Ej-%Ojx0vG_YDQJ##4@XA5y zOGuxD;xRA%pibZ^3DsCKmuje!4S1BX{s;nG#dHHY+?HZW)lq+JUf3DpaOs3Q-Lh0c zbsL7wp$}xrEze>KAQ6z(5*SvkHNUJap~anrc~TbbhI7_VS-oM+!*!N3FBF^9r-Ag97N%Res<% zEFE#g1cqVB=w(|yWNS!FGHl?3qTbh7i*wzk{J8DP1vB{CJashRy~Uf?4|nmU(G1IDH5sM$R@EVd}#s~}CaHqo{K%&d6xX+OgMPs=RY{j0|7 z&LHt$Xz1KTinV<~v@R$o=XkjLT7*TH1s$ZG!?o?GYZe#J`~9e@Nw0NE-p-zJC7nJ|NlTanXH#JJO?mq-pg?4Z zexzWNR}ykhnNTY1E_CG`{sScemxK6Th%tqd_CnADVx#Qom8I&{`ZwRuF(1|$9AUw; zak>Rtf3f6jrWKiLl@tm;*CI8`YeNW%?SQ{K_m8c}8$ahEk4+7;=m_F)CA&ZV`ojxJ z2Yf<~$6e5Lat64$@6yLtAGDfo!HztuSt6f_>^uY%a1Ot?25SL)8YvLlV z>aH+&0I`8npnY#&jQ@JRG^q>5k_34SbxE^B|B%vlGAKP^CfI?VuRo0=E3$Otpt%U|J zrKxm$78=jW(RD|CrN8(lH+2moRuIv%!X$V4VKkIQ7=W)2W<<$Cp5v>=W;B2%^q&+R^yBkiq{K{0Gpp7ga zo0=-_<@ySmO}FVf9vru@KVJ7@r3&}%R`uwltC|R2N5QKrNH5o&-T}jdWP4$y@9Fu` za53rj+KgHgG#=9gKlR#98@d&w(|pj3_9F_n?M_^4_CRoIq*m= zw-fMF$koCHXTW>nxI*as%A*mkmf^$Dj*WPt#7lsWAvjrdy2RXCa*!#pW5IBiYN@uk z!gOXE=6YMn!f;bRr)o{k777M0w_00krmze>?^=+I^&_tcdEwoclLzFbx+lVGMh=VT z@azni<=*jKJh`+U(j_8gW>GLihP$MzdQcU(%<}|?ON0EIv;e_M)Yt92V&sgt4b(hs zmU7AUJA9t!m3@!u-nXhss|`=lwmY)$t>5t6hE=+QxoyMH`7yKow!M`oi*DqI^%=zo zaCWYw9y&sq7i4(}MfSI9yjLYehkLqR(VL=Zi*c(=G!W3TV5<~$0_@9oxVdojCC!T4 zeDBiyc8WK5ZH?ehxgh@V=Z0XV^ztKwTAddg)dpHU{1{dWPpo&1=rgJc>kt?h{_rz)=g@j6;CnA zHhd~GUo+oyDL#1Zv`;L@4jBMs8Y~R-T%gQ;;r~2S_eMsAcLWE|=;S*UuGVOX+CA)C zV8Hqn`|iWi@?Er|M4hB&-p%{F^$y<$qjt3DUa}YCLhayo_tju{J~%4aY~!%Z_-19| zuuOcjGOxojudgXnkTV)2U{%}7k(8eKdJP!yJZ~ZBQG(->`kID7Is`UWj`e<^3Q~X~ zDJCcXJS-;7!tohr0QznS%$k;qRMyzm*6=d{qgW-lG0FT z;PIR;5PTQpf$&^X8bUhX3_KY>ClE~X`th?#^I*=xbAvRDd(rEtXF>Y@5^ro$9?V&I zif9OMh=6`M?Sqh5lJbBd`wTps@+<{l@QHVhW%pqb>Qp2}m;F52X=Fqj)$lDzHe>f> zXgBmMQ-QTDZK^X!47c8RhFX<1bhZ=yfuH?*6fp`3Y}3K*T6ua%G^rwbfDk1kgiS>J z=-|4DM`(GsoD~Fk@L-ICIj%444H&nTDZB!uLD-8j=ZM=!k)c*5HxR&M9BuFiJo27Q zd7Hyf8#ssK)JQ+wzfKvUi~AJxTCsa1N`UGEwI5AdW%zK{0I*W-DV>u~&Ka-_qDqlE z;?QjGP_fD3Sb*4L2;GfQj>=wLmOjaC$QI%F{a)5&&EkMQ{pn85w^jKTN9wS?kFY<@ zR~Yst9H~!S7-2o!vvK6LR?S`2a<+$lR3?0tGF)(sE?g77>fw}kc{47S#H4P3^B>ca zIieLOKj1{haidhgsil|S(*c3_8Md=Z@YzSUK|Z<%itYF>+kj<+;9LG}xp<3zUo>7c zUN-(;<91`A@k`_D#xlYTFE!pY-ojnzZ;iFaUm8C){@N%u5CF}=11E_w3GGhs>O=y0 z&PH9&t%MgXa${>}LK=$LuOVkGQ-7x>N5{#koUBdBW5#SlW zi`kP*rS?8>_sp;MjymiASS-b~xZsO($t!@u7w;HU5!kySQ(LnDLKa&ke;W7XlQ)N+ zfgrMa$)j#Y<A9wJ${cl2;` zM!sL-Jvp?}!ZoaJi_*63wmEWMlt0|~G^G5@Sl!`%EeFb?MEOaN4@SK>DR(f}NH|qAp5au$Ar92l&_;BHuw-qZwhx$?qeU)9s6j=wQW5_%@^?*4 zVSY2GxR~I|kqlb+$kDQ8_r2DD37bIF*rvFcO$@xa&l0ZwrEhO})o-UNDZYhrRj5`k zzDS!!E>jOW`>oMfsv#>PoWlB|(OA`HHyU>p3{kDwHlQ)kg0qUB z98*Tg;Z1c>T1S`wQ9wpn$Cxx4`yj)lW;*S76n90h!N`O@r7tzEUPg8e*^!arxue2- z!HC#(DqVH=WHX~8(Cm0H-1qfkqF{C7zG75V;2Dlf&>o6G*)Bgoa$GsVHF{h*^P*1X zxN2nVxRA1I$(&KSYD{PWRIL88Q0)|Ddr%P(t#76Qsm?9xLnG@Sa3c#jicWR@%PBQ^5#SY?T9*s|}2 zJ}oRPOQo_$N&r0?t!dra+O+*8ib(a;WgD&MF0=ZrS=ET}7z5d3{170Pk$*0&fyKx% zzbOTs*YmqCQoF+~KAA+*dOhqyt$6nUA4Ri3<&=o&b&4D5UKcvl3{!@4zl5pdB~*0L zMmWui#5TtwT8y0Sd8O^Q?=LIZO6OhA7+z^jyw0hWnqg7MCr2>qi7pDnt1HSF73)@j5@kld)R>4?N|gwWkX(x^=jj>sQ|>D|94bnqOk&Ha}KJcrUqK$dJTI< zIU2I{Lb;NGnX!ml(D?2Q3U7~DC}h+Cz|tKDL}Z34RCILrMuqOLDMKShqhQjiznN+& z+d=`(O`?)bLB}uza+phIo;?&C%k&StxOadH*C_d;&Us*v9PGb&#5*7+P;B(g*+OM|#B{!9rYK`m&kv^3PvIzAN zK;E@9Oodw+tPmH3ob(kQk1-?s_ip_Ye+KBIMb7u@(KSGB*oP&%y8WrwQ8^9wW(Qw3 zRQMdN{>mQ6(w6fc>mKxY@Mc5KuA@^QTF)Bm3Y|1i>HRjvwgk z`#y_f*X6%iozN#oNLdNLH?@A5-00@uHBNX}<`3&c>y>^d#Efdm{CCoo8MmTSuxGq7 z$|0YL_)Dc@lxca~2v$3lM6nP8M$6L%+Zjg>KGN+B>jtF=Z)yCfLAC&_y6UC|dmhU3 zmdC+yeZkZ_QMVU!tAJilhE~}>lIt522448A0s+c2Dx7k_Bkho)v>dSIRF=(LnkizwSx^hk@PJ5|f(h;p;p`n`+o*99ij}gE zz^w3cO6?r@74Chm_;*|WnZx0ztePB&?lzVQWXq!wMCANuM8QlIzi_aGYyme8VCv7H zFOJhFw+=x-Z_)s}Jy%rj`lAktt=Daw`R2iXon}w1W6Zxnl|iw$um&v3F_m&RkYjiTYf;UTqbXj2ar}k!4_h3B zC*-6%(|-RFUK}yb88~a)3t3Zb;cog^mK^4&pv}V^r4pna%pTCqh0Xet-R6!d;^;J+ zksb{+N1bKv`y;)*gMAHWW5d&?^@fsVB}Dq*D_E4>th1B`XwRalajw^su|=q8!0n@@*w)mT31A@Tt|1WwQ9_eg z6E{bcs)!1hm?dz^91s>yMn?}g;rQfWiQe6$L_r=sPKHxZrYkEGR+c={Vf8|^yEv@gQvdMC5>8P-fIZeI&6VZAoKgv9M?+{n^aTLF*Me9 z2kPi>Krix)mN_1tLhH@l&%%vGM&}JiX9JiZjzv|yE9xPEsEq_J;aH%neAYeT-Mw$h zZPA7FRZ}W}%ApX6JCznh*(cDL;?1Cws6(NB*jHiq@RZ`=0gRtHnzzl9;W--ur}+~& z0iwDe6na{4R0K^Jn8ox}TTkTV(kB;9Kq?zpAS!c2^UyE$qh6&&(@HI=-3ZT#)R|M3V4yzu}3{Mo&bn!D+~Quu4vJu#E` z)}~sL)w{lOHy}C(hen6p?fmpXwpfZ$y6xQE*t1x;t_oleP63NtY9X;kqF+tz<(l%rYWq5D}3zTX#v8j!?#M zt@aGuHmT+Vy@H$25vB0K;71zjm4ZIwo%4IzLk6)g5x)wW*0DsDnWKyOv8%aGw??cE zhOg=9F}6NCz1=1>Kj4UhJgj4`t%Zu5f)K>f-E9_~O=9|LI~XLe-Moj@i$czp)qklS zk%xY+Dp>k$&B*q+aQCP{jUeipP+v}tJm+=oox0`rXN4OTR*bd zf5(2P_0)_SS7JgX9<3~{Lwmz%Hx>)k#5S&S2HnNwsxzgcK^8Mwb1b#Z3bn)nldbS` z;w=oYVV4~MQTPQ|TNnB;ATx_gusjBW(#&@p!E?*N+@XoA^*BQ$rxm+e=!u9%DSz@& zbm@{;do7oIFs%v+K&yi56m!hyBFKeAhJ%tER20NBOyFN#)M;3xOfRs|%|U#>Zaj`o z=}1?A(aLEHDm#qRC$``?p?A8i(*ck3Hp-$~n{eSPx?FH3Nv#@b3Iz?5DGaoS13-cT z9GV6-jX87)VuC=^CLl-F2#GKeaUoD&@G3MnD>E5#%**9!6+T13K+v21d0NV~jIBMMDu$JQ~3Lfk;v)Q5n4ADgUTaS^=uiL+B}d9>L@Y!6Vy1C^*S( zRiFo~F8b-~t_N#Mz`>n26a`@wDN$FERU)&XBwZiE7d2v5qoINJBHAh*NFf%2mXidl zgr=D4P!VBwu?3FBxh8bTpz3a|bwmN4ICwM|mSD>%1&=nLZ*D$6#BRWkXn)Jl9};b+ z)NlsD#{^|-04!^YadrZyeBB@J-|_n`)Y9x>MlA*bu8HxL1*yx@VUYdAMdChT#VLIf z0<)~OsjnmDoM@Z{ge7PoX390OS4_9{g2sTnd9~T!@O;r8o}9q0dATydT=2Iee@C5T z`Mo&!$5VMY*7xJ%Q+XZg-{XH7XAvSHzFC25xvwY5VYOQ^R^&&57?>(hV`*!i@uGG7 zQs`D#*vl(f+O2-x5^GQj4RB{C26|+uhR75(N(&*oqa|1o7e0)a|Cm)|`1tR?2P-Me<@eu%r%Y+db3=58 zJVog_3ag=VkRoM{8ec*os2T*KRTn?R;i-UAM9-x$cVi#s1t?3MTUZAG!?sRH-rq2C)83`6@~ySbmAMT9CagE5CL=d1Y2z5S|!Gh2HSX!$Gxvyy7! z821V7SFpxA6JI`9a_R{Pn&{}zI&8Lyr3jUF2VK{(NCCh$38zDLV8J>jV~71CMvOKb zIqf<~th{09%VDx-8GsPev+$lqmO*H*BtG1>AY5@*R4GF4qy%Kl5M%8D zuM&f03H^4fc5J_c%BW|O@c7}Vyd2)$u4-8tZi&gMC40(|qt7Qzx3Jn7)gVL~SrIJQY5r!Olr5f2CIo!r8(BKFbrnrutlwfle^$?y7kvyaE zYlfW`vXnFdBYXgX$snj%=78d=k^_l*@eQafTT6^j z1AqDm_w4>=99`BP@#a*g-0yr@EejtXLmj= z=wUy@Y@@ic-L(ZxpVOi_MAF97Bcm2>lh;wnuvi|Mw2TssmT-P#?u*HXUJ#1gsqCO6 zBFx*sIJi$%M>?O4;53a|mBbvlfRM5(?1^fY3^7)bFq}mjXjnQV|E0fxzSnYMNqCerJh7KyuTBIb51q%KUo~ z0_D5V<-ktSP+P(5Kph zrq8L_Q{fCttD%2C1eZQB%_gRy z-fTLi3ObpHGSG+rWZaTGlz)&dC^*qv+?(|h8 zZZ_xr!eglR9m(Vir3_l2D%wMa6*2|8hY>B`2S|dDKB*7=RPvZ_A^51wegjaGkW7@AD zAV|mexT!~oSn;u3iLIhpjJtcdK{}pNVF>s1=7Lu-g-2W4n`YT8E|1$Wq`QM9gr-Px zE>kT>%CSKPuPC{+R^S`lRWXj2S%$N(5fZE-gMM2c=@DIO>aI!53#)WCdeMDJy|WaI z6SJrV(UMcN!9vmcc-6^@mQf9GlzME?{g6*Ft9jjm5)}sNwS56(C_XH{UKydOFcHJz zK9x2iBLgNOh24-ue4^Ui;%j-cO$5}pRGib>!bLuHp_(?FQkC}tIo+VFnm0^bTs}dY z`P5ok!=Sq4yJ4~|t~r=@)as5UoVgVBom??GCyUEV*H48Eked~0!1xq_FYI`svltV6 z4m1F57ct;4Ut@+9b7zS*b9{br=cNSSGhs4fY`NrB%-meA!i96jfy2NDiaIwVNd@Lm z-H=YCPpB~k3pdEWovS6vnsGTGLKzo;<`VIW`*8_+TnHeKKy#FBQnL!q^Kad{RsOXH zAE&+7y&B!8;q$W|!r)zq(0cdaQFZlJ87puV2~YOQ&z_srJC(b4RHO|R#PO~2I>YE_ z8q~8;fzEfjpmcRXV04lyU+IPo5*?a)BZhH`y74RXf`1`*aWTJ-8sPV(u&N8 zR#1E?7EQWwMp|M}qbbh9M%1M|phZ=>Qu{tn4@F%V^>Fj}!obn4HqaT3L;o?0(5{1i8A>#6nPw~N70 z$^X?y+5v;q3=kwE3jN$A9APH?z6yG+|KzJd=eEutER!nc1U_8}FCwVgaZ0fjbJrHG4+`Ka@ZV91D$JkmR7c7PE z91#}kMC~4TbQnD|QZnx3P=Hnz95xgVERbDYfI|u-SH=2`8nifGV^7OK7Z2@ZB2sNd zov`Hq7^Y|gGzgdIN_U}x<#b)C{)arGl-r5=sDV|%iFtQC958%YuWyGmKm4wH^XGIfA;}A7D}5$``&gbc(mbN} z_ugIMiOKQh*o%BwpPwiT^5A#iF>q(E?nbU+Hqs0QukS$I!TU>`DV|rI8pJ1h~hH>G<`1#`-Tf7?;!S)4W@?Yx8-*qkwRPg-ym9Yw*Ki6Od)piCoBAS zikOKlyyO4viwo1{w|37w!u#Lx-#-4k=+&EJ{>4K0;^)U|?umdMv-_dqdUs!<4p*K( zPi75RoEbR{Ey}h9xY&v!JMU6 zC#NsH^USoyE62)I=ZRTt!pC$Do$~lY6uZ{tPuLOm7@7_2JpN#$KN_+5pL7=VkqL^Q zodoj&6!odr<$%oN7ZQ_#`Md|u$VckW7@@YoEcT2cZI?O?`7EYzTwiSqnQ==6V__ z!Uqn|7d`ARcW4)r&&t%q>32rm?ya(D2B%dS0+ZsIB6)hqpM&ZHwvYc_)q{M-aYo?Q8^DM`96(*| zUdD;mg8VZF#O!A@3qZK$6-jgSRqr}C!C32x?d z7PQBTj~TxjheVH^nW**ImU99oP5oN4jlnVVN=otmgh5MwDs&+1`$we)A>dq^5N7bI z1P)8S(1%?5kRCIOgL2!E&p&(&MJ0FVo>@d;Q#3|XLhi$~TJb@V_XqfY>T^h5!h~ei zCc%ud3pT&ADJh#<&+{d0VUCZf8Rh6ms#BKvv1ua0OYe;`MjWBm^rG46j%&`C70;r6 z2^(@gF6eKyQVAaMW<7Iyl6N9@b0|?2$D+MnIX?5GS~OH#MRMHijs=TQzs=r^&va4R zYylW3yy`}zirjSRJil6)ynl>p0p@1a#%JXEKB!6sfkB7qIxgn3y#*qRnu+hTT^M$t z5?XgtXQ1NPKba+ZQMYgGHC1n~nfnxut0}ID#^d4G`>XpXRouX%9C2PE>@-iOQ5*w< z4xVgoZ>zPmBDOd}=$=+2Ls4jgmWZdvSLH`?kb63guE>m3Dx@7UPDtX_9X@pjh*+Zy zL>37$B9Tv8h)y!>xKa1c+6{x%!l5r6>%ywkeK(6Ih*c7emuNT|4;iG^#O-l+1jhvM z0ud`P{I=l46|U`JKl%`18(Lz$MypL5DrZPn`Y=buT`R0S>CM1dzCS?1!DalDsYa8w zTX`!+q7%o*-GTeWY}3K+fu;m`k+8MD_1si5xnZ(zs%Zf0{qAXtAnFdPcnpS{VvB@u z?>`()j(bD;$Vaf?liqMNx@2siHUqy9TR=wr97)Ib5+5a(|w9OZS5Q!u5WKU+T_x3dCnD!8!1G7c9j1^ zxj+!0KRBc~P^jI8O7=w5h^;C3`PtCG$1fZX{6YN?DUNo4% zm4$VUs==F)j;*j#MWCBXm4B=4Is~=9$<30iN4_LW(Z6x|$&0Kx|2aWwe&Y3%4>C@# z)#5$X8r36M(ZQotF&96m@0#6>Lk68dbPB|f0qSD+AD#~+5Opj)b-RRY-Ok|$?b>Yu z7NMdizj699i6n`>AxahGJ4sk7BcAFkdF?SmI3zfMZy`5?cAEo^ zbqrAD$)3?l%Vn@c@GXyot2z`%LI1p(bU=H^a?YP^&x*O>5(d3I^f{^m3hv#ey*TW|zDK{G7RPeH;um;s4!#xNQP1f@|$xE;kk*xrLK zfzi~#1@eIF(BYIQW~L=wx(yda2tmN*Wvi9V6w3=iW`@%-A_riVMD59Ne2IuyQM*M- zApU+Bu+PHK5fioq@Y=6hr=W<5w_L4|Ylwb=JUoVY;{Y-|TYvaE!ro3MRo!4ov%vU_ zqaN6p*A@Z7p|RM5BL$#fTJZmCPH=9&qE@WS>jcURL88Podd7ZA`00Q9ehXW44+Cog z-r;!MVw@v#)Nfw5#%08SduwAFBBa~^>+&7c_qX;AQ$_XDwIw&!57$%W z_#rH1%6)VH-aS-%rEIG;ejkB%Yy2t5w73M<_dk?}QI24JAGiXPebH!CUvl^U>jQnH zd!2xBTHgoVTHn9k21a9hv}7fdP9~fGAI~(s-#&fq4vp9(oq0QScE|!!KT`~&^Ltv~ ze_%v?pF2q z60uu==+T(W90TBWPwC0LWn*N^oX?)$t}j0K6z92;cGK7Op+pWRXGA*(V#M%qIckC7 ztDKShN8AtH?jHW*aI?9)zp=TGcx(u8b-hoiPbp?d;O%q1YfszlAF+T_ju~M@VZI9b zj{vJ*J=}WS+}zpNTHj&3)vva<4iC3C?Uw?CB&T4$6$^B@Ae-Rp7x(t0m7ke=dkJ(+ z$<-PJMqtpfP~7T8Y*t+);wCOY3b4eWkN;zfBv>QxOPY*Efn!0sXqUv7wQ#~?LZFxR znd#pL8_(~mfFIWL&Kmf6Iz}HBfx;64;`15=H{wB-n%;N)=_4E~L|g}@;&J73vR%aO z48vl_?QXZ(@4t8n_VkUpb8+wPy&vET`QqO9_rK%s{mpy#=077>ml9$;a;6Nzq|LHLip~!yaS>_{=q`t6v%`m_cTpu6TBj#J=VK5+Gbs0BiNvA z@tQca&V2568C6vq6dmK*7PqQNi~jt>hO~Y2+fDiX^LIbU?+@SArA2@Kp)M``;k!Sx zuSwr5s9>1tck41t_3!^IMFB#J{`m(fdhx?|n|Imy^*_sR(m4e+w|Bm#O!s_e*uONx zWc+}wnWhJSg@fw3`l>ui-6X)VU5Zy3P5*vT+Ww36_A&e-8pmE94K{G5Ik-GX>kun1 z7fQwbSyE5MAzfl%ARNsc)a~x!VK3Sgz&D19!a{DH-b4VOimI0M`9?V5Opq-Tdm4^< zyXrDmob|#*JSZ+`Eo7n4_k0!Mo)1*_tTloYeh5=>jl}CD64>~!BAJ-&XF`9`Tm1jy zZ$$t)chRJW5;r5R{?BPM$WRnhT{i3Rz>MR1uREFGejFTj!cqPeadXGRzIoCbA9v&7 z;Om1)ggZUR&zGy1qv-&*EBJjQ^VJ(-N9~au*U(us$>fIYV-;H!GQlb9+d{6BWGe*YRNRoD;qd&Qh;vNOO^KO&Mf5Yc+L8`@ z#+)iR$lQf!88?|=++|73WyZk35uW|l$CPBw%CIOZLIGF)ycIvtY`hXHU1O%Ps0fwR zV3tGyh7roVSVy?)V69^XELYk?{G9f2Ur6nV<74@uCQEvz(qzEWX_w7;d?j@X;46&a zV3Gzx1V-*_#F#VmFg14m>LxeaeRlyb64hWNRQiq$WT~Lu%*B=phi}AafsJFsuDjcM z95+8hRCUnAwq=Dht8QVcoZWfF52WrlkbGLQZcnjf(hCyedjc1{r}h#cXfpO0vj{T9 zMgyyGtB0$-QED*K!qATf{~GxydoAK?5t2f4G?sATP>6uqk-gS})Nd#!lBZB?k%LCT z{kxs_&(xo6*8grE?e4oP$;}PuR@DE#{&@4iwQAGwe0NOR?jL~)0_qM1y z)uDRNR5Ub1!YoQ+(Atu#Nfc)g6E?O_og|Dn!kJtvzvZ1rJm@q>?S7N-b$At6hFS>S z`2}+{E4jU@;PoP>CBOCIS#b;@I5fc^Ka8TRoEC$&eA7h#sn3hhwtnJt_|{>!G&* zVrE_8J9!l9z;!#X%H@>j?#)pPZjMjS@V7OAE*vk0t>1O25{v_s2HWksEp&sD1_`^ok$gVaQqN$ z9g+^}i$uRpskBP$rP9gX-yb(+|7^plqP9PPdJ@srMRlFUHY~8OKw^$B`N<=xL=OV=eDZ zyd&%2UMMY~4jr!0u(q$gc(!5LSwR|T3Lnxe)szM^9@-bM0*G&NhH14+I+CuOWC>`md2-2wkfQgy;UONiLUu4%uHvn_f`Bh=KG(!e; z&0G$rMy~Ny2l0}3`N2?&o?xI;VCVeiaIV9HU;t8GCq7$J5{%l>4beFm!+b#Yvf_%K zz6*%!I(cKFEL}}CDs!as8SWS4(doy?i+*ahN7LGoszwB(3$-eDbZ#uZ_@(@Exv^9Z zpDOsUP;IPMOGg$ERA)QG@dv=Vo4^{z9{}fD!nu}Y2=P|hdOgL+X1<hbP`{$<+N3AePn^JwdF z(KBh+SZF6~(EDh!CZ#_Wt=41+K6JIKc54DpHreXU*LwvqBSmt7w%M;^cv!6ANkXZb7ufq=`JEZLwW|~W*+O3CRS$h??PG%#kaG` zWb~j~JwHFMoQz4K<5!d6s4^U%R^#ExpUw}sJjuTb*l)2*H6 zPn-LU-dwv=`Jr-0&|a*-g07XzE!_RV;~RoG)G>`a^HFL39^0P={SMTyYEe%Bzm1jB#H=80tP zp2@%brR977H^}Ro^+((5kKy#mYogB%K#*@{43f%>3G#u{OU+}O2ET4Vj&9IMHxvs2 z(4djYm}E1+E+}l%O@=_^cRka%Y{y-4f)mMlv*QqqV6A9Z zdYB|l&LrH1^4kezJYs>`GHs~UL3mnTMsM-Nd5J{r%njgDgskxIZpWh79e_tI={me=T-P9mDhZ}%o z)RW2%-j%*uAm~PRZ(8s)AS28~XGL^LIwbPUz%(&P0oSb{Dc7v?V#%vKm&?2$FH<1O z?&vEMj54Nn1X9t3^gosdcxmBh@!4Yhb&&QtmmzsP>4tIT@q!dX2A-Pz? zJkDt-dzx;je7T~bOutD(na?+rFZm6Xlp8d32%XQ=fbzo?%|!A|T8V7Fk$BE;BNJ}W zM0>Snyx75}5^N#OWz=AFpV)&2p25+pNCj_C3GpF0m+17~s>S z)vNMb+l@qKwIbN45md%ogj4BU;#Ct7cC|T^p*UZ1PLdSk!gM=BTPz+r~*sFCNr7bdZ@>|r+&u0uN%f=Qhk#(!og@>j) zQ2b4?JeuIk<*kTxX<<4NaLUEl@(*BKsx1hrM1fn-J34CDtXjTMj^>6Dn7`B!RYt#%l|r}c7%svFZ%Xw zFf}Y@my`!u>GXOtS^UEC*<@AC|ie}4LO)4vcYQMZh!i_znYB%>(KR@}-=u!(E#dQ|#s zRwgKNf-dC`!z`S)81>m=7JjGGZYML#pB{qsZqn=-#5$qFw=y)r;DqpG*zZns_b89x z1PS^d9@$cuw{d{)pkN!jKObbqWfl<=8bQi}NxE$W7*t#7jOl-P-m*hy_wVeYm(kYs zZb-zjvV+Tn>w2ct(@|)9**l*;XXMaHI3#bvld<4=vi{R1j|F>&Pxd$0 zH;lL7!I{sU7HmJ9L4%VIU#n?|X1b!hewDk|uTsO1)*_vo|2jn=@DpD0VHtpVY(n9d zo?*Rso+ntj-+M``Ja-Z6WOzG|#KnB)z>Qal@c>e`wlYz5JRX>*^>M}}iY;mb^;#uYhw=~>f z;2{!P+_*J_uSGbY6@(YI0D`ADOjb6>D8O9Kg1G)Vf4R zCUj!Wn^dcpp(C#YeIihKs|Gk6KxmVc%W&^0_j0y>C^wE0-Fu9O)_A0J96BM*li{%B zZ(C!t$m>@$5Th1Ntbro^q^Xrv2SW}oM>GiN4O<-=ILchHNl-jN8^&f?iY^;lhrky* zM}TR?arblpsSk1j#>ub;=ca_Bu1w%x&C+`$9->1@hI0%bQ09Ex6|+kAR!1Z7-ib?8 zTBnKsP6bH+>tdT9iD^C|!2FVO<`x`#!-7zZBZzF>{)k&3Ih;K>w`ZYeJva`ypqEjOD_f7|VOAhy!2Pqcqkvyr3=X7W z;+_@5qYu4Hwx5QMD6FgJ3>IgwaHm^knehN4;Fo|7VsII+qwJ6d?Lt%DfHZP$#o+~P zD}+*t>v{LR)-cvFHN_D}C|SY~p@-Z* zf1M8D0}p1&bUBNza3$lKOTPora2bz*E=x8`x3Pu;x2a;l8JhweIh_EeA@~rzXzRaXTrE{g1X3zhPgRP7T@iNJ4d{?J$?vttxP~4~`!APi|C9aJ zXe`x`6-wrfrD~(GS_81VrRvCu26235O)~=_9it7J9RN%VrdTX+#5MBX?!ne`85Jls zaKMtmxvDeo-E6darqSFG;GaOyL3HeO*g)K%Po)7r3_?UCFB~@L;Mb^wU*n*>c=Pt9 z>fe)s^BSnJ8lJl82=8lpTfjePehfPLSpCIQpz2pMKvkW;Mp(7R-M6+l+(QmJCG(@$ zcnjiFn*i?fpjIWXO`(jWrn)S0opPH8YwnW6v8myDba*xB9LB-^N;L~-1T58*eRxj=5VvHT@$L3A-9=@B>Wnp#msf4~er zrT_=u=~Y;Z(TVYG^V1$(>i0p$t>0-7U`Dhca|P1SkEB*^)gaI$hO$*IENWyEiKMac zMql0vP5eK7`9F1Fui!DGHWCVGda**aZqVP60Rqcrg$|)9-r;|H2-hCUFknNWft*yz z%>~|E&^R%622h0#(_gd`E*$%#$tB=`a89Q1*ABxuWR2*ApZ3K})smoD7=kz&BSk=g z$Q(!G7}Uz)9tKleEaQkEJ!}XN0?Xs|2-L7vs{ZoA+SP77J|GYkp=#-v0|Jz0WfRW!}1{b9Jmu5 z4^b4jNl?g(`nJ^1xccQL9ZPK^Kn1M|35#mt*c%Sv%bS8nfyceIB}^3U7QI)2r4^YC z&Mth`4rt`9-VbzZi_t|k!I)i48ZNuzi2F5R3+R>t7ud2b(*OM=RYTwk661ImTw8_B zPk3ubi5(G+R}>p=%fz7!_#Hm#Jc2TtTZ=FC?=s$&UM?>+mTV%)^h$X{XzI#o!S2w7 z8-NsuB>7iE>J%R6?hcs9dG!BoFZ}ZL^5W8)w~fYcYo+2}e*Ejpl}6)hR35K1UL=pf z*M*gZ1*DH0BZylLHNF?Zi1D{}{BbNf9OfD;ivxS1!?<9?3WZ)B zkrrzjVw77CCMw_ShgA57wi=irBNr$;XEZQc(=!4#CGi{QJXyK9H7`V>7`4 z1>HCwieCchsG@Y()WxWBT3In0y9Y#Oh7(d312RaJ0;tUPqb8c)+}J%-GdJvxZFsV( z92K~lYhdbxp(^WfEyU7b_5TLg*!xr9il$^LuzpK6rl2qcAjpiCfeK`=$a;V6t-38qLjf6e(!;Neh8Y9?!)09r?IU0{TxlwB z(uaLW9{f?3!~v%kby?1Z-kySq2c;m&`&%&Bw)LK!1TgrxCj~4LICGtDONjyY%G$|kDKT(i6nUJn|~fWakd}!K!KIM81+HvajuNdma+~5Jnxj` z!GhX(w!K|{x=~}`oZIG~XzsU_3t=Gd;dc~`Nl+zVHrR#{-N+Fi!K5s_S^cKC@PEa( zHc*(9$24J%urH{KRw{x|V}wXSr#HH>@aT#~5j=%a+JY5L>v{$=14C>fmTDzJE=R`m=j59SrapmF&LFtfSylX<$n zwJm>mQYh>l;H14^N_e-I5u`{$pwO#Y9ozDSOeMz*U#v)`xa6@O zhsY~SpeBFHOa|V9Ln3BQqaA@5Ixz+4ARQkaL&FoQii$I62ZJ3xFr~&~tFeRwxjzl3 zV_%`6%v5QvZCTB!w> z$iVnX+zd+C@#ZpuvS`sSO*{b_{rAa{=WTmXLs-a z+dnvb_S4VL|M5?s)k5V&CzaSY3&%q3bWh>9t5&+RdiUFV-`)TI&p$XIB0mJ1q?Ic~ z`=*8D;0z4IasrKl%%KN~HUxt7AQngi7T$1Vng^SE>-+16yDm%-Zo@#`{ZdyU(e1A^ zQfGXIOG5PPj51*+>5dLj7iQ0+74Ng*fL`r4F=I**j%NvI-(CUCtvU8 ze*LxvqDkV!fp_K2H*mokt{yV!POcZ^vx2>#=w0i(Vm9-)7*kLloI-p($V^EmrR=xO zBX|y`07+!=U;?lkQ6_+$i8My+YBAi9Dv*_+^Ca9!$X6Wda2ydBE>;@vVjvA9BcVq5 zcK`=35I9?Ne7YKM_Ale8cT!upqrNLCj^^h-ILxN*UUCw&G5UahAmBj*@rcWfDjJIK zatgJ(4!eYZB2AZjN{%GX{++H`L(?5Ixa=|d`8tA_uuq>BV7HG!twjI_13J0wLv6T< zI5YL#r%%^+Hi(A|qD!F@BsemN7<%X)i_jfA9Ijq83VJX>9B<4~F!wsba^?)sKIj>3 zlLe_=xv!uK%0sc6on)W7xmzpgwN|}`BMGnaL|_UzW9v8`_NHKki8@!PDOkrx?*i#M z1qRzuMM!tllQ7PLo28O!@uTPOjDQU83w`#Gn25go>}ScP9Ml#B6&z<*8)iaLQ37uZ z#yLC$^3^!GB4f~NBEWr4*U8IIj9599!kn<$ywF9mGx-$HE);&7RV9uM%o#TvE-mukH)k zkSy>FT)gIh#McBGUJ^hdA__W$b7L#R{=oB4nAN95ZLHQXrKtR#KekCum>beqz>+AT zS;98UpM-h=3m_d(34)M-sG?gE$rB8vhX{}jrZb@q)`>iCLy|4;Hl397fC>_as2@FC z(u&-I`v}3|48#is>@bJ;qVn$&IKdLI6^sU*j7me8x2$=!+;Ie`;CEXfiAMc>Wncs`Isstg1beAfkIrUe|L^;a4aJ1VHB_o6q%j=2Xozvpy_UCS9i#fj3R%pS_fltQ z@Ag)dgX9CipnQL-W5f&0Ojd~3aro2z35=|WjK)&NEbR0jfLrK@HbzyAKULp9gpHO1 zg#N9@@2K5uciQo?AO*uP=SY*&5*Aoj=QLY7eVD%b!RzLZb5A;%Bq(E5Te~|b1GeY4 zAM)R$gqy)Cad(>Slp`fULQqvRhL}gKqQn+>YFO{U%+wJoKDQEl7ZP7%m#u z{kcp}Ee+_FPTNKwD3+$SvWx^ski+7Ii}3)&wza3}dCrl7nSE-(@_gYge zf86S|zGy|zc3@{3+?pP+AhxIFD7DoKxCg$(5?q36Z69W&f^>^Hc6&Qm{QIOH<-sQ% zu$VRJQHBhD#!m-3OQ9X7cvYATQm4Ia@6c?PN1V)`8UyVCh5oJ!FWojwRO#toepp|B zVzyBxue7~*RvO3I6;XDV(E(oSMW@ z6z>em3$puG7iy8YuWf!M_Bb?3bc2rPCRb}of+u?GXQC&X?QVVLp+*SyZRly3^IL;m z4(5l$MrT+%c|sXaEz1T@S@7s4b|oQBws#FCJt@7zByDu}IKa2d>42IUY znC@sb0n^}A6lF?hiRs1{>gnLrda{hysH9a&axU0Y2W3kUMz+|*B~by8d!$24lJ{dLy6 z^w@2zPzur)GaVGkX6+bva)Qotw%fs&4#O?Hv%2VkqzC1(*+sw8eKLIVLI1T(1GoA8 z+AFDw(6Fh$&hjD@K@qgOWSPI4y3Z`Bzj~}P%bP1}&!(ofqzt#ksQ?P5$yJmL^mgkE zlKK5F4~K!UG0#P2e#QrSiraQ8HQx`bFNrGQ2h8*OXExR_2}v^)W3hi9%~^+REPa_SE*C=-Jt^ z9Tf@njs}+<#FksKaKVyIx>gR6hgh+?wYM2SO-;~;PrZ~b6dQxN#_P3pY0x%z8n3lr zb|4N~R-KbJga=N2sO7*vj|gTwh*HDi%2-IC|0d`}rZRL&@FV0{kzZ8=D_c~i_AiWU zy&iaNZmz>h8Z$mMRZMs1NF_|ao=V72E7<}v2}hyjFKn&+v@UJrPSjx4q(5e-;$O&cCG<|dj6w>_ z)YNj+TV;$ErkW1!3w3I0!?zgI%Ca~8iHFX95XZ&0gDZt?{4=4*5`CC3uOeG?0EHxr zlU^~ewx?>e*{crQ5=it^YP!?$=3JXtkhf849Y9THkan`|?ddpDRP+H&`z}^{L_^G> z!V!*7PjBySH+Qhv#^$X1wzWr+hG_VkXswa6(;*|#R;IEkAf`)PCZU^>V~5{0 zNH75g3qu7w9TGPu@e$q##Dlu%f%rcER+#A0IoNnO+#@Gg*BaVdo`9 z5h|Q{Q{H~4jM~kLiz9`BGO4bCx?QXbSSsMrN&n5I8JUC*qjRm!=De-#3Ukx$22xdC z+Ws1h$q_m6%5IT~!~adTg)5Trb7mx+#va~|8$FUD#KP=}_dmsR<J|yX)ES=B! zR}DloN-6cxwUb6op6R2Si~8t(i6qTg%iuv1%Q>3}$OQV4CK$vtESXrm6BWifJ+NtwhH5_yC|O?#GAbK=#=@@w#h zF_!0!yQ0Omrj@8iF)TLNclw>~pK-I_)j7AD`PXItoS)jlz=$n+&TyR$TP91i6M26C zH%6opnI0D`ohzEyd@Zi!LgQb=dWX=S5B34x^!+Em_0_6%Q*!N!;p3K$#<8r>{Z^l)4C z!T(ncNN0r4X~M6n$@v&{zy4&cASr(R$IOg?bt6Da8-L7+=^=jor(8i{Noe1JXG`yC2`R-HFHBzj z1Qcm3+vzA0+998qZdH|0h*>d9bYoe17WzDBj}Lm51%-Gan^)16Nmz=*QXM~2$FVB> zUv{sYK$C-~V>{lC76l=#nk3VbY1Ghuls6MovHR1uyfSlVT?-_^l9rtYywe$+cS06# z&(wr+AEG9jrZC0Ud$(4#<8Q6&;`VOAKN)*D3Nnbk%l=iu(p>Yde`&GwHa@k_U$7p< z*N7q!6S2Nq)^_FT37M;m#%4AGoM5Rml1q@6#1|Zx92D zc>*i(n30O2aFKWQB~laBBiS+xr`gw-^e|O#mqBZrwQX1R2G@yJM;^?&bd-(XJ=u`G zi74V+a(sqdk;WWg3XQ=y;&rnm-n<$R`||7A`PoM%MbY5bn613LjFrWQvi$zz-jrot zuYR`E3fB~qBN_^obaF-DjH}W)9ED~xixjUHyqXVXnWWhyJyo1i?KUP9u*c?5FQ@3= zaz7ac`eeMQNk`hmHA1 zjrqq?gJm;-eVO?}sz6Nbo_XXj{HwTE zODn)+O|k|fB`IEnWR5nqofg!HuV$Ye!A{ILfipZS$Vm^RMWGPTme$Yv@pe*kXV|Xs zqLqB{y07HHu~vxI7F5Rt6(b#_MP*F>ZdMQ)z*@Cp$4oju>b4iVi;I}#j=GEO^wfTW zo7;A?yQp9C{DFi~7fFeH^0J)7+}SC+C`5(@d~JUUEQYO%)_+^mpsN-ozs2okiS9@3 zMPm&X+rEKY0i{ZlQdzf>T~8?B?2c$NsW+(V^%@N3_p-b%z#`=uWLzauKt{?n$jz+{ z;vN@(o^TEB`shF(thakC-q zO2%(+H)Z5J-pDP)vRIu0HGn5Y3 z357l7965O!Zhy$>wqyDgc3>^uGK5q#8K8Q}`OZ{ki1IbV$QKjz`pIc-*g&d3)YDf} z`f5F06V>3ia=IcZk*c4Zw!BQr@^bZVK{b_T4>|qC)07cUIR~|J%1VzpPt51#uGNtq zbKc6Um6cc4N_)uZxPW@PKjd@*cdA*hUX>}i=2x%k?TzZJOn%NKU##xhNbr->*aaCG zs_=)L?xk~X`I=!u*t)yEvG&8p(oY~6OSuNQxxDdwUA<3$o^TEB>C)Cx0j1Xrv$R3Z z(nfw?x3HlbYimKIh=Z<|Dj)K-^z!NRHHwLp*>jb=(k9X5LA{E&ttjIS2c;e zcAj%?8J!A%@-@SxK&9lT$DC(tj12p&r|Rm%l%wadT))vU1NiG0%=swipO12$mM!V} zsij4QO0U&t3AwuBtzOzHv)rPt>P94LtX^`-;-Ve^inlsMENjcJt!-Z9Pfgi)%H^`- zu=0`pyy`Qn+#8ZEv1hR?UP~{8iFwiVu(S2geTdtdEP4o08fYD*S;9NGwdv zO}bVi=wHZ8*NrjEP!5f;>CeO_tK zrb3e1iE{)-k-1J)QfqCkm*KEC)(8*kFuc0Jr8Rr-ahExwXq`3PBqkzvh^K~0@nfmZ zuvps&olUc$P6t;*pQ@UW7w1e!MQmu?A3q%IEw;iW&2(M_o=a%_V4O}G2N&n>Y1KY< zYSEC=df6>4z51;aBE*;+LL9&1Ihb_NzE@KEqp!9=a5QfJfLLsro%(m*R2QuUDSEn# zulGCuz0~=y-JSF>*ZFp5X0iJp2Q8f+wPfofjzd>Y=xFAog&}S}sz@KqE?Er_&B*Eu z^F@*BCR>>HO~#wzW`%KEy>x1XYCtHhIr~Y-Vs_;E))erj8)^ffKGEDA@Ai4- zF#3AMm-vKfRx5YgEV~AH<0Pv?{muphVo$URXnGN>SgiQ~1OIgEGsm zWa4vl$QP0fhWZ}Tilx1z<<>A~0^Bu8jkf(I4AA^N4QJww%F3Z9@V%Y`@Yt-)I!4^CKbJA3h;WhuU@!di^S}&JMZ|d=0gc)7^`s zFpZlRYzEiWayS^iKiX4}Ie0cx!K_HQq0E^ot-g`tazHR3A2okRj~X@ zy;@sRVVy`zsNZMDal}yHSen9~Jzl67yh#NskX%@l!IwoaRIsZgY2GwqQr)VMP%6`SWH+= zK<~?_wCa;E9lRq(jrAxFc+Xkd8|*!jRD6Pr zCX5)8(3It5ft{z&1EbYNDtJfvWGIc0?=}&iwCkB1_+mwhKbDdu{r&|3pgI1Wv$Ri_ z+0}anskTbTP`zi6wA+tkx&bsX3yv$j)i9+*2NCX+lEH*HC04CUDH$xaD`iv|O9UA_ z2~upJ;>9!F;<2ENumc{m&o&8YwF&Mq%W)Yi0yWl$Z><#pBq=TM+xGgicP>x`N#3z3 zTJ2LwwClCh>hUCYDi5@DhfPhIZG>#~sXmuXo8}a0B}!MJ9YW6N!DP+HtO^5bVyy94 zvY1>Jflnoh&v$wd$=EC^<#p zK~iqR=9p1$*!%O?x;!{2LBVthh>Vf?1azatpx_gk86D`|m-RW=h>nb>hni430J$*KA9lpvw-bycgaO)zQB&P%z$aRA8s7^0~Q(kWP2d><%h zx^kz&bxTJ+`xe}73ibotHwS~Wg|N8i`ZEikaeT8Z% z1v-~`p+-E%9EV((KV0)Wx;kIRrgiq&hTdDmcd>iyjKqW=kv@v)A;q3wT!oz+y{k2M J@?Ix8@=wG#YQq2k literal 0 HcmV?d00001 diff --git a/bindings/cpp/build/gnu/configure.ac b/bindings/cpp/build/gnu/configure.ac new file mode 100644 index 0000000..5457c53 --- /dev/null +++ b/bindings/cpp/build/gnu/configure.ac @@ -0,0 +1,214 @@ +# +# PortAudioCpp V19 autoconf input file +# Shamelessly ripped from the PortAudio one by Dominic Mazzoni +# Ludwig Schwardt +# + +# Require autoconf >= 2.13 +AC_PREREQ(2.13) + +AC_INIT([PortAudioCpp], [12]) +AC_CONFIG_SRCDIR([../../include/portaudiocpp/PortAudioCpp.hxx]) + +###### Top-level directory of pacpp +###### This makes it easy to shuffle the build directories +###### Also edit AC_CONFIG_SRCDIR above (wouldn't accept this variable)! +PACPP_ROOT="../.." + +###### +###### SET THIS TO PORTAUDIO DIRECTORY +###### +PORTAUDIO="$PACPP_ROOT/../portaudio" + +# Various other variables and flags + +PACPP_INC="$PACPP_ROOT/include" +INCLUDES="-I$PACPP_INC -I$PORTAUDIO -I$PORTAUDIO/pa_common" +CFLAGS="-g -O2 -Wall -ansi -pedantic $INCLUDES" +CXXFLAGS="$CFLAGS" +PALIBDIR="$PORTAUDIO/lib" + +# Checks for programs + +AC_PROG_CC +AC_PROG_CXX +AC_PROG_LN_S +AC_PROG_RANLIB +AC_PROG_INSTALL +AC_PATH_PROG(AR, ar, no) +if [[ $AR = "no" ]] ; then + AC_MSG_ERROR("Could not find ar - needed to create a library"); +fi + +# This must be one of the first tests we do or it will fail... +AC_C_BIGENDIAN + +# Transfer these variables to the Makefile +AC_SUBST(PACPP_ROOT) +AC_SUBST(PORTAUDIO) +AC_SUBST(PADLL) +AC_SUBST(PACPP_DLL) +AC_SUBST(PACPP_INC) +AC_SUBST(SHARED_FLAGS) +AC_SUBST(DLL_LIBS) +AC_SUBST(CXXFLAGS) + +##################### CHECK FOR INSTALLED PACKAGES ############################ + +# checks for various host APIs and arguments to configure that +# turn them on or off + +AC_CHECK_LIB(asound, snd_pcm_open, have_alsa=yes, have_alsa=no) + +# Determine the host description for the subsequent test. +# PKG_CHECK_MODULES seems to check and set the host variable also, but +# that then requires pkg-config availability which is not standard on +# MinGW systems and can be a pain to install. +AC_CANONICAL_HOST + +PKG_CHECK_MODULES(JACK, jack, have_jack=yes, have_jack=no) + +AC_ARG_WITH(alsa, + [ --with-alsa (default=auto)], + with_alsa=$withval, with_alsa="yes") + +AC_ARG_WITH(jack, + [ --with-jack (default=auto)], + with_jack=$withval, with_jack="yes") + +AC_ARG_WITH(oss, + [ --with-oss (default=yes)], + with_oss=$withval, with_oss="yes") + +AC_ARG_WITH(host_os, + [ --with-host_os (no default)], + host_os=$withval) + +AC_ARG_WITH(winapi, + [ --with-winapi ((wmme/directx/asio) default=wmme)], + with_winapi=$withval, with_winapi="wmme") + +# Mac API added for ASIO, can have other api's listed +AC_ARG_WITH(macapi, + [ --with-macapi (asio) default=asio)], + with_macapi=$withval, with_macapi="asio") + +AC_ARG_WITH(asiodir, + [ --with-asiodir (default=/usr/local/asiosdk2)], + with_asiodir=$withval, with_asiodir="/usr/local/asiosdk2") + +AC_ARG_WITH(dxdir, + [ --with-dxdir (default=/usr/local/dx7sdk)], + with_dxdir=$withval, with_dxdir="/usr/local/dx7sdk") + + +##################### HOST-SPECIFIC LIBRARY SETTINGS ########################## + +case "${host_os}" in + darwin* ) + # Mac OS X configuration + + LIBS="-framework AudioUnit -framework AudioToolbox -framework CoreAudio"; + PADLL="libportaudio.dylib"; + PACPP_DLL="libportaudiocpp.dylib"; + SHARED_FLAGS="-framework AudioUnit -framework AudioToolbox"; + SHARED_FLAGS="$SHARED_FLAGS -framework CoreAudio -dynamiclib"; + if [[ $with_macapi = "asio" ]] ; then + if [[ $with_asiodir ]] ; then + ASIODIR="$with_asiodir"; + else + ASIODIR="/usr/local/asiosdk2"; + fi + echo "ASIODIR: $ASIODIR"; + fi + ;; + + mingw* ) + # MingW configuration + + echo "WINAPI: $with_winapi" + if [[ $with_winapi = "directx" ]] ; then + if [[ $with_dxdir ]] ; then + DXDIR="$with_dxdir"; + else + DXDIR="/usr/local/dx7sdk"; + fi + echo "DXDIR: $DXDIR" + LIBS="-L$PALIBDIR -lportaudio" + LIBS="$LIBS -lwinmm -lm -ldsound -lole32"; + PADLL="portaudio.dll"; + PACPP_DLL="portaudiocpp.dll"; + SHARED_FLAGS="-shared -mthreads"; + DLL_LIBS="-lwinmm -lm -L./dx7sdk/lib -ldsound -lole32"; + CFLAGS="$CFLAGS -DPA_NO_WMME -DPA_NO_ASIO"; + CXXFLAGS="$CFLAGS" + elif [[ $with_winapi = "asio" ]] ; then + if [[ $with_asiodir ]] ; then + ASIODIR="$with_asiodir"; + else + ASIODIR="/usr/local/asiosdk2"; + fi + echo "ASIODIR: $ASIODIR" + + LIBS="-L$PALIBDIR -lportaudio" + LIBS="$LIBS -lwinmm -lm -lstdc++ -lole32 -luuid"; + PADLL="portaudio.dll"; + PACPP_DLL="portaudiocpp.dll"; + SHARED_FLAGS="-shared -mthreads"; + DLL_LIBS="-lwinmm -lm -lstdc++ -lole32 -luuid"; + CFLAGS="$CFLAGS -ffast-math -fomit-frame-pointer -DPA_NO_WMME -DPA_NO_DS -DWINDOWS"; + CXXFLAGS="$CFLAGS"; + else # WMME default + LIBS="-L$PALIBDIR -lportaudio" + LIBS="$LIBS -lwinmm -lm -lstdc++ -lole32 -luuid"; + PADLL="portaudio.dll"; + PACPP_DLL="portaudiocpp.dll"; + SHARED_FLAGS="-shared -mthreads"; + DLL_LIBS="-lwinmm"; + CFLAGS="$CFLAGS -DPA_NO_DS -DPA_NO_ASIO"; + CXXFLAGS="$CFLAGS"; + fi + ;; + + cygwin* ) + # Cygwin configuration + + LIBS="-L$PALIBDIR -lportaudio" + LIBS="$LIBS -lwinmm -lm"; + PADLL="portaudio.dll"; + PACPP_DLL="portaudiocpp.dll"; + SHARED_FLAGS="-shared -mthreads"; + DLL_LIBS="-lwinmm"; + ;; + + *) + # Unix OSS configuration + + AC_CHECK_LIB(pthread, pthread_create, + , + AC_MSG_ERROR([libpthread not found!])) + + LIBS="$LIBS -L$PALIBDIR -lportaudio" + + if [[ $have_jack = "yes" ] && [ $with_jack != "no" ]] ; then + LIBS="$LIBS $JACK_LIBS" + CFLAGS="$CFLAGS $JACK_CFLAGS" + AC_DEFINE(PA_USE_JACK) + fi + + if [[ $have_alsa = "yes" ] && [ $with_alsa != "no" ]] ; then + LIBS="$LIBS -lasound" + AC_DEFINE(PA_USE_ALSA) + fi + + if [[ $with_oss != "no" ]] ; then + AC_DEFINE(PA_USE_OSS) + fi + LIBS="$LIBS -lm -lpthread"; + PADLL="libportaudio.so"; + PACPP_DLL="libportaudiocpp.so"; + SHARED_FLAGS="-shared"; +esac + +AC_CONFIG_FILES([Makefile]) +AC_OUTPUT diff --git a/bindings/cpp/build/gnu/install-sh b/bindings/cpp/build/gnu/install-sh new file mode 100644 index 0000000000000000000000000000000000000000..e9de23842dcd44d2953129c866b1ad25f7e1f1d9 GIT binary patch literal 5598 zcmbVQZExH*68^mU6_fR*TL=3RUoUsp7zToC(AGFO3GCo{K#`oe5_iQ~5(Sa+W|8K< z-!nr}yH1>@xd6e+A~`S5%seyH(Szm6G)q@zN7)gX#(7m$G#{Q6wVmB`s-BU{JJb3Z z*^Ub3)!I}VM_!l4QEqGPXx-VG{&RA2`Gmf$jbHZORLgM6Eu-j#D~}hV>j&HJIbGnmot zW>nk4tnphI=R32)=^3e}AgAG(XLFrh`>pDC)*8|Q(XA=))|bjd7(1d?_Ew8U!O6yYljC*UYSjT=Vw_>H z0dQ;`AElM`WfH>9+&wD0U`o69{1d6JZ(G}W(`-I=Du5tr*uF;9g6hTMeDQig5JW4@ zFcxB5ajPN4K@Q>#QEk7fOl~|d!GbakuK@P}WQGkvV$lP<2_)C*+^kJLgP?6^yw?pd zGXQz-%7Q4GQmY$a(pc(r+i91A0+?2eI5a?v>y1|{Q?W&&_Asm;g%6_7J;!i}(^xtD zJ!W%a9Q8Za@#)1U^3QrB0hc=Apo0fDR{E-%WVR00ypQVPtljBN=Bfdq0GegUfs$mAoz zSSiX-dAyGDY$10AiR`Zg>7Q56lZiuRqgLRxOEH2T(Fj4x=VgE~SBP^{?S{j)(ZN{c zuOe@1E;q!Ei!bMDf*4n#+CtG#&4u;yYKjO%wuubm7Fou7wWsGV&tJc~eEAathpM;y z>md=AbDRZz-uv7(Q_o3DPv?YWMS=Zw@g2LyC51vmAUkMBLSZvg_A=gQfNnFq*~uysv4+eaCtLTLm2nm6J#@)(;=IeFL?-P|tdR(0%9 zeaqglo{N98NAvm?dh#~C{o$3o&0Bt3g1UxAMe zu|NNG86}r^jb#qUuzdCU@;ofdYbzl%KY2o5u&(AMqO1l=|#W5H$=<;2!zp%SLCUHM%Na3f+Uq03I zS(TQBB+MrA$PxQGAsZHwz=n{RN?#|$9n(HalOf?g_2n*R{_N2)4VlC_b1gNGF#HZS zC}`@IbAPs6POra!=jx86At&zW8ML5(p99MI86y@i!o z$P+^3JP=EdKnpcZ7;z87Kgf)h1hY5=j_7=S=NK|t4ftWm z=6P1;QZ&^ex409W#+HfpyK`RG5HSoewYqg_BBgP1k zDlos}l0g{%O+H|o5^VsKb25OjyiWBmK!Q3xc24|@<;pY@bA@!>R|?YxCoj7ylX6NV zD8Q@4P@Ls~qvjekHT(7L^39{kYCB9|7u&SgVk-!Dg8>3Wx!}*Uqg_Oeq>FUO`zzkO@49VEwWuz3e z*}LBL3bzn6y+x?@2b`n=AOwwv3NG|o^_4&W@#<_k%BC4VV5Gs%eDZ$3_7nt;FcGpyA88a!E{5_R6=o>}2e!z~A29FRF&IYJ7J z-3~ktkPc^ODT#!U`&usmX}TTCWL!m9k41;YVCOb27?5D zW5Q` +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=devs_example - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "devs_example.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "devs_example.mak" CFG="devs_example - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "devs_example - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "devs_example - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "devs_example - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MTd /W3 /GX /O2 /I "../../include/" /I "../../../../include/" /I "../../../../src/common/" /I "../../../../../asiosdk2/common/" /I "../../../../../asiosdk2/host/" /I "../../../../../asiosdk2/host/pc/" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c +# SUBTRACT CPP /YX +# ADD BASE RSC /l 0x809 /d "NDEBUG" +# ADD RSC /l 0x809 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 portaudiocpp-vc6-r.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"../../bin/devs_example.exe" /libpath:"../../lib" + +!ELSEIF "$(CFG)" == "devs_example - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../include/" /I "../../../../include/" /I "../../../../src/common/" /I "../../../../../asiosdk2/common/" /I "../../../../../asiosdk2/host/" /I "../../../../../asiosdk2/host/pc/" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c +# SUBTRACT CPP /YX +# ADD BASE RSC /l 0x809 /d "_DEBUG" +# ADD RSC /l 0x809 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 portaudiocpp-vc6-d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"../../bin/devs_example.exe" /pdbtype:sept /libpath:"../../lib" + +!ENDIF + +# Begin Target + +# Name "devs_example - Win32 Release" +# Name "devs_example - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=..\..\..\..\pa_asio\iasiothiscallresolver.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\common\pa_allocation.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\pa_asio\pa_asio.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\common\pa_converters.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\common\pa_cpuload.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\common\pa_dither.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\common\pa_front.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\common\pa_process.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\common\pa_skeleton.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\common\pa_stream.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\common\pa_trace.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\hostapi\dsound\pa_win_ds.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\hostapi\dsound\pa_win_ds_dynlink.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\os\win\pa_win_hostapis.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\os\win\pa_win_util.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\hostapi\wmme\pa_win_wmme.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\os\win\pa_x86_plain_converters.c +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=..\..\..\..\pa_asio\iasiothiscallresolver.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\common\pa_allocation.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\common\pa_converters.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\common\pa_cpuload.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\common\pa_dither.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\common\pa_endianness.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\common\pa_hostapi.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\common\pa_process.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\common\pa_stream.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\common\pa_trace.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\common\pa_types.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\common\pa_util.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\hostapi\dsound\pa_win_ds_dynlink.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\os\win\pa_x86_plain_converters.h +# End Source File +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# End Group +# Begin Group "Example Files" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\example\devs.cxx +# End Source File +# End Group +# Begin Group "ASIO 2 SDK" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\..\..\..\asiosdk2\common\asio.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\..\asiosdk2\host\asiodrivers.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\..\asiosdk2\host\pc\asiolist.cpp +# End Source File +# End Group +# End Target +# End Project diff --git a/bindings/cpp/build/vc6/devs_example.dsw b/bindings/cpp/build/vc6/devs_example.dsw new file mode 100644 index 0000000..480c4d5 --- /dev/null +++ b/bindings/cpp/build/vc6/devs_example.dsw @@ -0,0 +1,44 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "devs_example"=".\devs_example.dsp" - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name static_library + End Project Dependency +}}} + +############################################################################### + +Project: "static_library"=".\static_library.dsp" - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/bindings/cpp/build/vc6/sine_example.dsp b/bindings/cpp/build/vc6/sine_example.dsp new file mode 100644 index 0000000..2539cbd --- /dev/null +++ b/bindings/cpp/build/vc6/sine_example.dsp @@ -0,0 +1,252 @@ +# Microsoft Developer Studio Project File - Name="sine_example" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=sine_example - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "sine_example.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "sine_example.mak" CFG="sine_example - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "sine_example - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "sine_example - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "sine_example - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MTd /W3 /GX /O2 /I "../../include/" /I "../../../../include/" /I "../../../../src/common/" /I "../../../../../asiosdk2/common/" /I "../../../../../asiosdk2/host/" /I "../../../../../asiosdk2/host/pc/" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c +# SUBTRACT CPP /YX +# ADD BASE RSC /l 0x809 /d "NDEBUG" +# ADD RSC /l 0x809 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 portaudiocpp-vc6-r.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"../../bin/sine_example.exe" /libpath:"../../lib" + +!ELSEIF "$(CFG)" == "sine_example - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../include/" /I "../../../../include/" /I "../../../../src/common/" /I "../../../../../asiosdk2/common/" /I "../../../../../asiosdk2/host/" /I "../../../../../asiosdk2/host/pc/" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c +# SUBTRACT CPP /YX +# ADD BASE RSC /l 0x809 /d "_DEBUG" +# ADD RSC /l 0x809 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 portaudiocpp-vc6-d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"../../bin/sine_example.exe" /pdbtype:sept /libpath:"../../lib" + +!ENDIF + +# Begin Target + +# Name "sine_example - Win32 Release" +# Name "sine_example - Win32 Debug" +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=..\..\..\..\pa_asio\iasiothiscallresolver.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\common\pa_allocation.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\common\pa_converters.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\common\pa_cpuload.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\common\pa_dither.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\common\pa_endianness.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\common\pa_hostapi.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\common\pa_process.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\common\pa_stream.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\common\pa_trace.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\common\pa_types.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\common\pa_util.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\hostapi\dsound\pa_win_ds_dynlink.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\os\win\pa_x86_plain_converters.h +# End Source File +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# End Group +# Begin Group "Example Files" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\example\sine.cxx +# End Source File +# End Group +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=..\..\..\..\pa_asio\iasiothiscallresolver.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\common\pa_allocation.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\pa_asio\pa_asio.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\common\pa_converters.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\common\pa_cpuload.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\common\pa_dither.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\common\pa_front.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\common\pa_process.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\common\pa_skeleton.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\common\pa_stream.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\common\pa_trace.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\hostapi\dsound\pa_win_ds.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\hostapi\dsound\pa_win_ds_dynlink.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\os\win\pa_win_hostapis.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\os\win\pa_win_util.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\hostapi\wasapi\pa_win_wasapi.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\hostapi\wmme\pa_win_wmme.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\os\win\pa_x86_plain_converters.c +# End Source File +# End Group +# Begin Group "ASIO 2 SDK" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\..\..\..\asiosdk2\common\asio.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\..\asiosdk2\host\asiodrivers.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\..\asiosdk2\host\pc\asiolist.cpp +# End Source File +# End Group +# End Target +# End Project diff --git a/bindings/cpp/build/vc6/sine_example.dsw b/bindings/cpp/build/vc6/sine_example.dsw new file mode 100644 index 0000000..04c4714 --- /dev/null +++ b/bindings/cpp/build/vc6/sine_example.dsw @@ -0,0 +1,44 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "sine_example"=".\sine_example.dsp" - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name static_library + End Project Dependency +}}} + +############################################################################### + +Project: "static_library"=".\static_library.dsp" - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/bindings/cpp/build/vc6/static_library.dsp b/bindings/cpp/build/vc6/static_library.dsp new file mode 100644 index 0000000..d33ba9f --- /dev/null +++ b/bindings/cpp/build/vc6/static_library.dsp @@ -0,0 +1,395 @@ +# Microsoft Developer Studio Project File - Name="static_library" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Static Library" 0x0104 + +CFG=static_library - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "static_library.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "static_library.mak" CFG="static_library - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "static_library - Win32 Release" (based on "Win32 (x86) Static Library") +!MESSAGE "static_library - Win32 Debug" (based on "Win32 (x86) Static Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "static_library - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c +# ADD CPP /nologo /MTd /W3 /GX /O2 /I "../../include/" /I "../../../../include/" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /FD /c +# SUBTRACT CPP /YX +# ADD BASE RSC /l 0x809 /d "NDEBUG" +# ADD RSC /l 0x809 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo /out:"../../lib/portaudiocpp-vc6-r.lib" + +!ELSEIF "$(CFG)" == "static_library - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c +# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../include/" /I "../../../../include/" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /FD /GZ /c +# SUBTRACT CPP /YX +# ADD BASE RSC /l 0x809 /d "_DEBUG" +# ADD RSC /l 0x809 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo /out:"../../lib/portaudiocpp-vc6-d.lib" + +!ENDIF + +# Begin Target + +# Name "static_library - Win32 Release" +# Name "static_library - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=..\..\source\portaudiocpp\AsioDeviceAdapter.cxx + +!IF "$(CFG)" == "static_library - Win32 Release" + +!ELSEIF "$(CFG)" == "static_library - Win32 Debug" + +# SUBTRACT CPP /YX + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\source\portaudiocpp\BlockingStream.cxx + +!IF "$(CFG)" == "static_library - Win32 Release" + +!ELSEIF "$(CFG)" == "static_library - Win32 Debug" + +# SUBTRACT CPP /YX + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\source\portaudiocpp\CallbackInterface.cxx + +!IF "$(CFG)" == "static_library - Win32 Release" + +!ELSEIF "$(CFG)" == "static_library - Win32 Debug" + +# SUBTRACT CPP /YX + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\source\portaudiocpp\CallbackStream.cxx + +!IF "$(CFG)" == "static_library - Win32 Release" + +!ELSEIF "$(CFG)" == "static_library - Win32 Debug" + +# SUBTRACT CPP /YX + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\source\portaudiocpp\CFunCallbackStream.cxx + +!IF "$(CFG)" == "static_library - Win32 Release" + +!ELSEIF "$(CFG)" == "static_library - Win32 Debug" + +# SUBTRACT CPP /YX + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\source\portaudiocpp\CppFunCallbackStream.cxx + +!IF "$(CFG)" == "static_library - Win32 Release" + +!ELSEIF "$(CFG)" == "static_library - Win32 Debug" + +# SUBTRACT CPP /YX + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\source\portaudiocpp\Device.cxx + +!IF "$(CFG)" == "static_library - Win32 Release" + +!ELSEIF "$(CFG)" == "static_library - Win32 Debug" + +# SUBTRACT CPP /YX + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\source\portaudiocpp\DirectionSpecificStreamParameters.cxx + +!IF "$(CFG)" == "static_library - Win32 Release" + +!ELSEIF "$(CFG)" == "static_library - Win32 Debug" + +# SUBTRACT CPP /YX + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\source\portaudiocpp\Exception.cxx + +!IF "$(CFG)" == "static_library - Win32 Release" + +!ELSEIF "$(CFG)" == "static_library - Win32 Debug" + +# SUBTRACT CPP /YX + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\source\portaudiocpp\HostApi.cxx + +!IF "$(CFG)" == "static_library - Win32 Release" + +!ELSEIF "$(CFG)" == "static_library - Win32 Debug" + +# SUBTRACT CPP /YX + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\source\portaudiocpp\InterfaceCallbackStream.cxx + +!IF "$(CFG)" == "static_library - Win32 Release" + +!ELSEIF "$(CFG)" == "static_library - Win32 Debug" + +# SUBTRACT CPP /YX + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\source\portaudiocpp\MemFunCallbackStream.cxx + +!IF "$(CFG)" == "static_library - Win32 Release" + +!ELSEIF "$(CFG)" == "static_library - Win32 Debug" + +# SUBTRACT CPP /YX + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\source\portaudiocpp\Stream.cxx + +!IF "$(CFG)" == "static_library - Win32 Release" + +!ELSEIF "$(CFG)" == "static_library - Win32 Debug" + +# SUBTRACT CPP /YX + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\source\portaudiocpp\StreamParameters.cxx + +!IF "$(CFG)" == "static_library - Win32 Release" + +!ELSEIF "$(CFG)" == "static_library - Win32 Debug" + +# SUBTRACT CPP /YX + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\source\portaudiocpp\System.cxx + +!IF "$(CFG)" == "static_library - Win32 Release" + +!ELSEIF "$(CFG)" == "static_library - Win32 Debug" + +# SUBTRACT CPP /YX + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\source\portaudiocpp\SystemDeviceIterator.cxx + +!IF "$(CFG)" == "static_library - Win32 Release" + +!ELSEIF "$(CFG)" == "static_library - Win32 Debug" + +# SUBTRACT CPP /YX + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\source\portaudiocpp\SystemHostApiIterator.cxx + +!IF "$(CFG)" == "static_library - Win32 Release" + +!ELSEIF "$(CFG)" == "static_library - Win32 Debug" + +# SUBTRACT CPP /YX + +!ENDIF + +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=..\..\include\portaudiocpp\AsioDeviceAdapter.hxx +# End Source File +# Begin Source File + +SOURCE=..\..\include\portaudiocpp\AutoSystem.hxx +# End Source File +# Begin Source File + +SOURCE=..\..\include\portaudiocpp\BlockingStream.hxx +# End Source File +# Begin Source File + +SOURCE=..\..\include\portaudiocpp\CallbackInterface.hxx +# End Source File +# Begin Source File + +SOURCE=..\..\include\portaudiocpp\CallbackStream.hxx +# End Source File +# Begin Source File + +SOURCE=..\..\include\portaudiocpp\CFunCallbackStream.hxx +# End Source File +# Begin Source File + +SOURCE=..\..\include\portaudiocpp\CppFunCallbackStream.hxx +# End Source File +# Begin Source File + +SOURCE=..\..\include\portaudiocpp\Device.hxx +# End Source File +# Begin Source File + +SOURCE=..\..\include\portaudiocpp\DirectionSpecificStreamParameters.hxx +# End Source File +# Begin Source File + +SOURCE=..\..\include\portaudiocpp\Exception.hxx +# End Source File +# Begin Source File + +SOURCE=..\..\include\portaudiocpp\HostApi.hxx +# End Source File +# Begin Source File + +SOURCE=..\..\include\portaudiocpp\InterfaceCallbackStream.hxx +# End Source File +# Begin Source File + +SOURCE=..\..\include\portaudiocpp\MemFunCallbackStream.hxx +# End Source File +# Begin Source File + +SOURCE=..\..\include\portaudiocpp\PortAudioCpp.hxx +# End Source File +# Begin Source File + +SOURCE=..\..\include\portaudiocpp\SampleDataFormat.hxx +# End Source File +# Begin Source File + +SOURCE=..\..\include\portaudiocpp\Stream.hxx +# End Source File +# Begin Source File + +SOURCE=..\..\include\portaudiocpp\StreamParameters.hxx +# End Source File +# Begin Source File + +SOURCE=..\..\include\portaudiocpp\System.hxx +# End Source File +# Begin Source File + +SOURCE=..\..\include\portaudiocpp\SystemDeviceIterator.hxx +# End Source File +# Begin Source File + +SOURCE=..\..\include\portaudiocpp\SystemHostApiIterator.hxx +# End Source File +# End Group +# End Target +# End Project diff --git a/bindings/cpp/build/vc6/static_library.dsw b/bindings/cpp/build/vc6/static_library.dsw new file mode 100644 index 0000000..cb9d090 --- /dev/null +++ b/bindings/cpp/build/vc6/static_library.dsw @@ -0,0 +1,29 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "static_library"=".\static_library.dsp" - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/bindings/cpp/build/vc7/OUT_OF_DATE b/bindings/cpp/build/vc7/OUT_OF_DATE new file mode 100644 index 0000000..e69de29 diff --git a/bindings/cpp/build/vc7_1/devs_example.sln b/bindings/cpp/build/vc7_1/devs_example.sln new file mode 100644 index 0000000..c443bce --- /dev/null +++ b/bindings/cpp/build/vc7_1/devs_example.sln @@ -0,0 +1,30 @@ +Microsoft Visual Studio Solution File, Format Version 8.00 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "devs_example", "devs_example.vcproj", "{1B9A038D-80A3-4DBD-9F0D-AF10B49B863A}" + ProjectSection(ProjectDependencies) = postProject + {D18EA0C9-8C65-441D-884C-55EB43A84F2A} = {D18EA0C9-8C65-441D-884C-55EB43A84F2A} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "static_library", "static_library.vcproj", "{D18EA0C9-8C65-441D-884C-55EB43A84F2A}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfiguration) = preSolution + Debug = Debug + Release = Release + EndGlobalSection + GlobalSection(ProjectConfiguration) = postSolution + {1B9A038D-80A3-4DBD-9F0D-AF10B49B863A}.Debug.ActiveCfg = Debug|Win32 + {1B9A038D-80A3-4DBD-9F0D-AF10B49B863A}.Debug.Build.0 = Debug|Win32 + {1B9A038D-80A3-4DBD-9F0D-AF10B49B863A}.Release.ActiveCfg = Release|Win32 + {1B9A038D-80A3-4DBD-9F0D-AF10B49B863A}.Release.Build.0 = Release|Win32 + {D18EA0C9-8C65-441D-884C-55EB43A84F2A}.Debug.ActiveCfg = Debug|Win32 + {D18EA0C9-8C65-441D-884C-55EB43A84F2A}.Debug.Build.0 = Debug|Win32 + {D18EA0C9-8C65-441D-884C-55EB43A84F2A}.Release.ActiveCfg = Release|Win32 + {D18EA0C9-8C65-441D-884C-55EB43A84F2A}.Release.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + EndGlobalSection + GlobalSection(ExtensibilityAddIns) = postSolution + EndGlobalSection +EndGlobal diff --git a/bindings/cpp/build/vc7_1/devs_example.vcproj b/bindings/cpp/build/vc7_1/devs_example.vcproj new file mode 100644 index 0000000..fc065f8 --- /dev/null +++ b/bindings/cpp/build/vc7_1/devs_example.vcproj @@ -0,0 +1,195 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bindings/cpp/build/vc7_1/sine_example.sln b/bindings/cpp/build/vc7_1/sine_example.sln new file mode 100644 index 0000000..7be7c58 --- /dev/null +++ b/bindings/cpp/build/vc7_1/sine_example.sln @@ -0,0 +1,30 @@ +Microsoft Visual Studio Solution File, Format Version 8.00 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sine_example", "sine_example.vcproj", "{1B9A038D-80A3-4DBD-9F0D-AF10B49B863A}" + ProjectSection(ProjectDependencies) = postProject + {D18EA0C9-8C65-441D-884C-55EB43A84F2A} = {D18EA0C9-8C65-441D-884C-55EB43A84F2A} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "static_library", "static_library.vcproj", "{D18EA0C9-8C65-441D-884C-55EB43A84F2A}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfiguration) = preSolution + Debug = Debug + Release = Release + EndGlobalSection + GlobalSection(ProjectConfiguration) = postSolution + {1B9A038D-80A3-4DBD-9F0D-AF10B49B863A}.Debug.ActiveCfg = Debug|Win32 + {1B9A038D-80A3-4DBD-9F0D-AF10B49B863A}.Debug.Build.0 = Debug|Win32 + {1B9A038D-80A3-4DBD-9F0D-AF10B49B863A}.Release.ActiveCfg = Release|Win32 + {1B9A038D-80A3-4DBD-9F0D-AF10B49B863A}.Release.Build.0 = Release|Win32 + {D18EA0C9-8C65-441D-884C-55EB43A84F2A}.Debug.ActiveCfg = Debug|Win32 + {D18EA0C9-8C65-441D-884C-55EB43A84F2A}.Debug.Build.0 = Debug|Win32 + {D18EA0C9-8C65-441D-884C-55EB43A84F2A}.Release.ActiveCfg = Release|Win32 + {D18EA0C9-8C65-441D-884C-55EB43A84F2A}.Release.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + EndGlobalSection + GlobalSection(ExtensibilityAddIns) = postSolution + EndGlobalSection +EndGlobal diff --git a/bindings/cpp/build/vc7_1/sine_example.vcproj b/bindings/cpp/build/vc7_1/sine_example.vcproj new file mode 100644 index 0000000..b1c7b62 --- /dev/null +++ b/bindings/cpp/build/vc7_1/sine_example.vcproj @@ -0,0 +1,327 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bindings/cpp/build/vc7_1/static_library.sln b/bindings/cpp/build/vc7_1/static_library.sln new file mode 100644 index 0000000..36f2ac1 --- /dev/null +++ b/bindings/cpp/build/vc7_1/static_library.sln @@ -0,0 +1,21 @@ +Microsoft Visual Studio Solution File, Format Version 8.00 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "static_library", "static_library.vcproj", "{D18EA0C9-8C65-441D-884C-55EB43A84F2A}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfiguration) = preSolution + Debug = Debug + Release = Release + EndGlobalSection + GlobalSection(ProjectConfiguration) = postSolution + {D18EA0C9-8C65-441D-884C-55EB43A84F2A}.Debug.ActiveCfg = Debug|Win32 + {D18EA0C9-8C65-441D-884C-55EB43A84F2A}.Debug.Build.0 = Debug|Win32 + {D18EA0C9-8C65-441D-884C-55EB43A84F2A}.Release.ActiveCfg = Release|Win32 + {D18EA0C9-8C65-441D-884C-55EB43A84F2A}.Release.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + EndGlobalSection + GlobalSection(ExtensibilityAddIns) = postSolution + EndGlobalSection +EndGlobal diff --git a/bindings/cpp/build/vc7_1/static_library.vcproj b/bindings/cpp/build/vc7_1/static_library.vcproj new file mode 100644 index 0000000..d67324e --- /dev/null +++ b/bindings/cpp/build/vc7_1/static_library.vcproj @@ -0,0 +1,218 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bindings/cpp/configure b/bindings/cpp/configure new file mode 100755 index 0000000000000000000000000000000000000000..608a95dd2fb2629e568551b50b0a8b628dba10f3 GIT binary patch literal 702299 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%0AbuN?j$i6fIz1*sVA9r&@$}H^@hQM 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 2.13 +AC_PREREQ(2.13) + +m4_define([lt_current], [0]) +m4_define([lt_revision], [12]) +m4_define([lt_age], [0]) + +AC_INIT([PortAudioCpp], [12]) +AC_CONFIG_SRCDIR([include/portaudiocpp/PortAudioCpp.hxx]) +AM_INIT_AUTOMAKE +AM_MAINTAINER_MODE + +###### Top-level directory of pacpp +###### This makes it easy to shuffle the build directories +###### Also edit AC_CONFIG_SRCDIR above (wouldn't accept this variable)! +PACPP_ROOT="\$(top_srcdir)" +PORTAUDIO_ROOT="../.." + +# Various other variables and flags +DEFAULT_INCLUDES="-I$PACPP_ROOT/include -I$PACPP_ROOT/$PORTAUDIO_ROOT/include" +CFLAGS=${CFLAGS-"-g -O2 -Wall -ansi -pedantic"} +CXXFLAGS=${CXXFLAGS-"${CFLAGS}"} + +LT_VERSION_INFO="lt_current:lt_revision:lt_age" + +# Checks for programs + +AC_PROG_CC +AC_PROG_CXX +AC_LIBTOOL_WIN32_DLL +AC_PROG_LIBTOOL + +# Transfer these variables to the Makefile +AC_SUBST(DEFAULT_INCLUDES) +AC_SUBST(PORTAUDIO_ROOT) +AC_SUBST(CXXFLAGS) +AC_SUBST(LT_VERSION_INFO) + +AC_CONFIG_FILES([ + Makefile + lib/Makefile + include/Makefile + bin/Makefile + doc/Makefile + portaudiocpp.pc + ]) +AC_OUTPUT diff --git a/bindings/cpp/doc/Makefile.am b/bindings/cpp/doc/Makefile.am new file mode 100644 index 0000000..7eb81ba --- /dev/null +++ b/bindings/cpp/doc/Makefile.am @@ -0,0 +1,5 @@ +PACPP_ROOT = . +#INCLUDES = -I$(srcdir)/$(PACPP_ROOT)/include -I$(top_srcdir)/include + +docs: + doxygen $(srcdir)/config.doxy.linux diff --git a/bindings/cpp/doc/Makefile.in b/bindings/cpp/doc/Makefile.in new file mode 100644 index 0000000..e9481ad --- /dev/null +++ b/bindings/cpp/doc/Makefile.in @@ -0,0 +1,326 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 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. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +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) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = doc +DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +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@ +DEFAULT_INCLUDES = @DEFAULT_INCLUDES@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +GREP = @GREP@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_VERSION_INFO = @LT_VERSION_INFO@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEINFO = @MAKEINFO@ +OBJDUMP = @OBJDUMP@ +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@ +PORTAUDIO_ROOT = @PORTAUDIO_ROOT@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +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@ +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@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +PACPP_ROOT = . +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(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 doc/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu doc/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(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 +uninstall-info-am: +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + 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 \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + 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 +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +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: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-libtool + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-am + +install-man: + +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 + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + 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-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ + uninstall-info-am + +#INCLUDES = -I$(srcdir)/$(PACPP_ROOT)/include -I$(top_srcdir)/include + +docs: + doxygen $(srcdir)/config.doxy.linux +# 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. +.NOEXPORT: diff --git a/bindings/cpp/doc/README b/bindings/cpp/doc/README new file mode 100644 index 0000000..5e22972 --- /dev/null +++ b/bindings/cpp/doc/README @@ -0,0 +1,34 @@ +GNU/Linux: +---------- + +1) Download and install a recent version of Doxygen (preferably version 1.3.3 or +later). See http://www.doxygen.org/. +2) Download and install a recent version of GraphViz. See +http://www.research.att.com/sw/tools/graphviz/. +3) Run ``doxygen config.doxy.linux'' in this directory or load and generate the file +config.doxy.linux from the Doxywizard application. Or alternatively ``make docs'' can +be run from the build/gnu folder. + +The generated html documentation will be placed in /doc/api_reference/. To open +the main page of the documentation, open the file /doc/api_reference/index.html in +an html browser. + + +Windows: +-------- + +1) Download and install a recent Doxygen (preferably version 1.3.4 or later). See +http://www.doxygen.org/. +2) Download and install a recent version of GraphViz. See +http://www.research.att.com/sw/tools/graphviz/. +3) If needed, edit the config.doxy file in an ascii text editor so that +``DOT_PATH'' variable points to the folder where GraphViz is installed. +4) Run ``doxygen config.doxy'' in this directory or load and generate the file +config.doxy from the Doxywizard application. + +The generated html documentation will be placed in /doc/api_reference/. To open +the main page of the documentation, open the file /doc/api_reference/index.html in +an html browser. + + + diff --git a/bindings/cpp/doc/config.doxy b/bindings/cpp/doc/config.doxy new file mode 100644 index 0000000..0bfe9d3 --- /dev/null +++ b/bindings/cpp/doc/config.doxy @@ -0,0 +1,211 @@ +# Doxyfile 1.3.6 + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +PROJECT_NAME = PortAudioCpp +PROJECT_NUMBER = 2.0 +OUTPUT_DIRECTORY = ./ +OUTPUT_LANGUAGE = English +USE_WINDOWS_ENCODING = YES +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ABBREVIATE_BRIEF = +ALWAYS_DETAILED_SEC = YES +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = NO +STRIP_FROM_PATH = +SHORT_NAMES = YES +JAVADOC_AUTOBRIEF = NO +MULTILINE_CPP_IS_BRIEF = NO +DETAILS_AT_TOP = YES +INHERIT_DOCS = YES +DISTRIBUTE_GROUP_DOC = NO +TAB_SIZE = 4 +ALIASES = +OPTIMIZE_OUTPUT_FOR_C = NO +OPTIMIZE_OUTPUT_JAVA = NO +SUBGROUPING = YES +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- +EXTRACT_ALL = YES +EXTRACT_PRIVATE = YES +EXTRACT_STATIC = YES +EXTRACT_LOCAL_CLASSES = YES +HIDE_UNDOC_MEMBERS = NO +HIDE_UNDOC_CLASSES = NO +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = NO +CASE_SENSE_NAMES = YES +HIDE_SCOPE_NAMES = NO +SHOW_INCLUDE_FILES = YES +INLINE_INFO = YES +SORT_MEMBER_DOCS = NO +SORT_BRIEF_DOCS = NO +SORT_BY_SCOPE_NAME = NO +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 30 +SHOW_USED_FILES = YES +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- +QUIET = NO +WARNINGS = YES +WARN_IF_UNDOCUMENTED = YES +WARN_IF_DOC_ERROR = YES +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- +INPUT = ../source \ + ../include +FILE_PATTERNS = *.hxx \ + *.cxx +RECURSIVE = YES +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = +INPUT_FILTER = +FILTER_SOURCE_FILES = NO +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = NO +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = YES +REFERENCES_RELATION = YES +VERBATIM_HEADERS = YES +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = YES +COLS_IN_ALPHA_INDEX = 2 +IGNORE_PREFIX = +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- +GENERATE_HTML = YES +HTML_OUTPUT = api_reference +HTML_FILE_EXTENSION = .html +HTML_HEADER = +HTML_FOOTER = +HTML_STYLESHEET = +HTML_ALIGN_MEMBERS = YES +GENERATE_HTMLHELP = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +BINARY_TOC = NO +TOC_EXPAND = NO +DISABLE_INDEX = NO +ENUM_VALUES_PER_LINE = 4 +GENERATE_TREEVIEW = NO +TREEVIEW_WIDTH = 250 +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- +GENERATE_LATEX = NO +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4wide +EXTRA_PACKAGES = +LATEX_HEADER = +PDF_HYPERLINKS = NO +USE_PDFLATEX = NO +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- +GENERATE_MAN = NO +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_LINKS = NO +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = NO +XML_OUTPUT = xml +XML_SCHEMA = +XML_DTD = +XML_PROGRAMLISTING = YES +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- +GENERATE_AUTOGEN_DEF = NO +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = NO +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- +TAGFILES = +GENERATE_TAGFILE = +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +PERL_PATH = /usr/bin/perl +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- +CLASS_DIAGRAMS = YES +HIDE_UNDOC_RELATIONS = YES +HAVE_DOT = YES +CLASS_GRAPH = YES +COLLABORATION_GRAPH = YES +UML_LOOK = YES +TEMPLATE_RELATIONS = YES +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = YES +CALL_GRAPH = NO +GRAPHICAL_HIERARCHY = YES +DOT_IMAGE_FORMAT = png +DOT_PATH = "c:/Program Files/ATT/Graphviz/bin/" +DOTFILE_DIRS = +MAX_DOT_GRAPH_WIDTH = 1024 +MAX_DOT_GRAPH_HEIGHT = 1024 +MAX_DOT_GRAPH_DEPTH = 0 +GENERATE_LEGEND = YES +DOT_CLEANUP = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- +SEARCHENGINE = NO diff --git a/bindings/cpp/doc/config.doxy.linux b/bindings/cpp/doc/config.doxy.linux new file mode 100644 index 0000000..38079f6 --- /dev/null +++ b/bindings/cpp/doc/config.doxy.linux @@ -0,0 +1,210 @@ +# Doxyfile 1.3.3 + +#--------------------------------------------------------------------------- +# General configuration options +#--------------------------------------------------------------------------- +PROJECT_NAME = PortAudioCpp +PROJECT_NUMBER = 2.0 +OUTPUT_DIRECTORY = ./ +OUTPUT_LANGUAGE = English +USE_WINDOWS_ENCODING = YES +EXTRACT_ALL = YES +EXTRACT_PRIVATE = YES +EXTRACT_STATIC = YES +EXTRACT_LOCAL_CLASSES = YES +HIDE_UNDOC_MEMBERS = NO +HIDE_UNDOC_CLASSES = NO +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ALWAYS_DETAILED_SEC = YES +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = NO +STRIP_FROM_PATH = +INTERNAL_DOCS = NO +CASE_SENSE_NAMES = YES +SHORT_NAMES = YES +HIDE_SCOPE_NAMES = NO +SHOW_INCLUDE_FILES = YES +JAVADOC_AUTOBRIEF = NO +MULTILINE_CPP_IS_BRIEF = NO +DETAILS_AT_TOP = YES +INHERIT_DOCS = YES +INLINE_INFO = YES +SORT_MEMBER_DOCS = NO +DISTRIBUTE_GROUP_DOC = NO +TAB_SIZE = 4 +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ALIASES = +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 30 +OPTIMIZE_OUTPUT_FOR_C = NO +OPTIMIZE_OUTPUT_JAVA = NO +SHOW_USED_FILES = YES +SUBGROUPING = YES +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- +QUIET = NO +WARNINGS = YES +WARN_IF_UNDOCUMENTED = YES +WARN_IF_DOC_ERROR = YES +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- +INPUT = ../source \ + ../include +FILE_PATTERNS = *.hxx \ + *.cxx +RECURSIVE = YES +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = +INPUT_FILTER = +FILTER_SOURCE_FILES = NO +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = NO +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = YES +REFERENCES_RELATION = YES +VERBATIM_HEADERS = YES +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = YES +COLS_IN_ALPHA_INDEX = 2 +IGNORE_PREFIX = +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- +GENERATE_HTML = YES +HTML_OUTPUT = api_reference +HTML_FILE_EXTENSION = .html +HTML_HEADER = +HTML_FOOTER = +HTML_STYLESHEET = +HTML_ALIGN_MEMBERS = YES +GENERATE_HTMLHELP = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +BINARY_TOC = NO +TOC_EXPAND = NO +DISABLE_INDEX = NO +ENUM_VALUES_PER_LINE = 4 +GENERATE_TREEVIEW = NO +TREEVIEW_WIDTH = 250 +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- +GENERATE_LATEX = NO +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4wide +EXTRA_PACKAGES = +LATEX_HEADER = +PDF_HYPERLINKS = NO +USE_PDFLATEX = NO +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- +GENERATE_MAN = NO +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_LINKS = NO +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = NO +XML_OUTPUT = xml +XML_SCHEMA = +XML_DTD = +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- +GENERATE_AUTOGEN_DEF = NO +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = NO +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = YES +#--------------------------------------------------------------------------- +# Configuration::addtions related to external references +#--------------------------------------------------------------------------- +TAGFILES = +GENERATE_TAGFILE = +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +PERL_PATH = /usr/bin/perl +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- +CLASS_DIAGRAMS = YES +HIDE_UNDOC_RELATIONS = YES +HAVE_DOT = YES +CLASS_GRAPH = YES +COLLABORATION_GRAPH = YES +UML_LOOK = YES +TEMPLATE_RELATIONS = YES +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = YES +CALL_GRAPH = NO +GRAPHICAL_HIERARCHY = YES +DOT_IMAGE_FORMAT = png +DOT_PATH = "/usr/bin/dot" +DOTFILE_DIRS = +MAX_DOT_GRAPH_WIDTH = 1024 +MAX_DOT_GRAPH_HEIGHT = 1024 +MAX_DOT_GRAPH_DEPTH = 0 +GENERATE_LEGEND = YES +DOT_CLEANUP = YES +#--------------------------------------------------------------------------- +# Configuration::addtions related to the search engine +#--------------------------------------------------------------------------- +SEARCHENGINE = NO +CGI_NAME = search.cgi +CGI_URL = +DOC_URL = +DOC_ABSPATH = +BIN_ABSPATH = /usr/local/bin/ +EXT_DOC_PATHS = diff --git a/bindings/cpp/example/devs.cxx b/bindings/cpp/example/devs.cxx new file mode 100644 index 0000000..31a560f --- /dev/null +++ b/bindings/cpp/example/devs.cxx @@ -0,0 +1,177 @@ +#include +#include "portaudiocpp/PortAudioCpp.hxx" + +#ifdef WIN32 +#include "portaudiocpp/AsioDeviceAdapter.hxx" +#endif + +// --------------------------------------------------------------------------------------- + +void printSupportedStandardSampleRates( + const portaudio::DirectionSpecificStreamParameters &inputParameters, + const portaudio::DirectionSpecificStreamParameters &outputParameters) +{ + static double STANDARD_SAMPLE_RATES[] = { + 8000.0, 9600.0, 11025.0, 12000.0, 16000.0, 22050.0, 24000.0, 32000.0, + 44100.0, 48000.0, 88200.0, 96000.0, -1 }; // negative terminated list + + int printCount = 0; + + for (int i = 0; STANDARD_SAMPLE_RATES[i] > 0; ++i) + { + portaudio::StreamParameters tmp = portaudio::StreamParameters(inputParameters, outputParameters, STANDARD_SAMPLE_RATES[i], 0, paNoFlag); + + if (tmp.isSupported()) + { + if (printCount == 0) + { + std::cout << " " << STANDARD_SAMPLE_RATES[i]; // 8.2 + printCount = 1; + } + else if (printCount == 4) + { + std::cout << "," << std::endl; + std::cout << " " << STANDARD_SAMPLE_RATES[i]; // 8.2 + printCount = 1; + } + else + { + std::cout << ", " << STANDARD_SAMPLE_RATES[i]; // 8.2 + ++printCount; + } + } + } + + if (printCount == 0) + std::cout << "None" << std::endl; + else + std::cout << std::endl; +} + +// --------------------------------------------------------------------------------------- + +int main(int, char*[]); +int main(int, char*[]) +{ + try + { + portaudio::AutoSystem autoSys; + + portaudio::System &sys = portaudio::System::instance(); + + std::cout << "PortAudio version number = " << sys.version() << std::endl; + std::cout << "PortAudio version text = '" << sys.versionText() << "'" << std::endl; + + int numDevices = sys.deviceCount(); + std::cout << "Number of devices = " << numDevices << std::endl; + + for (portaudio::System::DeviceIterator i = sys.devicesBegin(); i != sys.devicesEnd(); ++i) + { + std::cout << "--------------------------------------- device #" << (*i).index() << std::endl; + + // Mark global and API specific default devices: + bool defaultDisplayed = false; + + if ((*i).isSystemDefaultInputDevice()) + { + std::cout << "[ Default Input"; + defaultDisplayed = true; + } + else if ((*i).isHostApiDefaultInputDevice()) + { + std::cout << "[ Default " << (*i).hostApi().name() << " Input"; + defaultDisplayed = true; + } + + if ((*i).isSystemDefaultOutputDevice()) + { + std::cout << (defaultDisplayed ? "," : "["); + std::cout << " Default Output"; + defaultDisplayed = true; + } + else if ((*i).isHostApiDefaultOutputDevice()) + { + std::cout << (defaultDisplayed ? "," : "["); + std::cout << " Default " << (*i).hostApi().name() << " Output"; + defaultDisplayed = true; + } + + if (defaultDisplayed) + std::cout << " ]" << std::endl; + + // Print device info: + std::cout << "Name = " << (*i).name() << std::endl; + std::cout << "Host API = " << (*i).hostApi().name() << std::endl; + std::cout << "Max inputs = " << (*i).maxInputChannels() << ", Max outputs = " << (*i).maxOutputChannels() << std::endl; + + std::cout << "Default low input latency = " << (*i).defaultLowInputLatency() << std::endl; // 8.3 + std::cout << "Default low output latency = " << (*i).defaultLowOutputLatency() << std::endl; // 8.3 + std::cout << "Default high input latency = " << (*i).defaultHighInputLatency() << std::endl; // 8.3 + std::cout << "Default high output latency = " << (*i).defaultHighOutputLatency() << std::endl; // 8.3 + +#ifdef WIN32 + // ASIO specific latency information: + if ((*i).hostApi().typeId() == paASIO) + { + portaudio::AsioDeviceAdapter asioDevice((*i)); + + std::cout << "ASIO minimum buffer size = " << asioDevice.minBufferSize() << std::endl; + std::cout << "ASIO maximum buffer size = " << asioDevice.maxBufferSize() << std::endl; + std::cout << "ASIO preferred buffer size = " << asioDevice.preferredBufferSize() << std::endl; + + if (asioDevice.granularity() == -1) + std::cout << "ASIO buffer granularity = power of 2" << std::endl; + else + std::cout << "ASIO buffer granularity = " << asioDevice.granularity() << std::endl; + } +#endif // WIN32 + + std::cout << "Default sample rate = " << (*i).defaultSampleRate() << std::endl; // 8.2 + + // Poll for standard sample rates: + portaudio::DirectionSpecificStreamParameters inputParameters((*i), (*i).maxInputChannels(), portaudio::INT16, true, 0.0, NULL); + portaudio::DirectionSpecificStreamParameters outputParameters((*i), (*i).maxOutputChannels(), portaudio::INT16, true, 0.0, NULL); + + if (inputParameters.numChannels() > 0) + { + std::cout << "Supported standard sample rates" << std::endl; + std::cout << " for half-duplex 16 bit " << inputParameters.numChannels() << " channel input = " << std::endl; + printSupportedStandardSampleRates(inputParameters, portaudio::DirectionSpecificStreamParameters::null()); + } + + if (outputParameters.numChannels() > 0) + { + std::cout << "Supported standard sample rates" << std::endl; + std::cout << " for half-duplex 16 bit " << outputParameters.numChannels() << " channel output = " << std::endl; + printSupportedStandardSampleRates(portaudio::DirectionSpecificStreamParameters::null(), outputParameters); + } + + if (inputParameters.numChannels() > 0 && outputParameters.numChannels() > 0) + { + std::cout << "Supported standard sample rates" << std::endl; + std::cout << " for full-duplex 16 bit " << inputParameters.numChannels() << " channel input, " << outputParameters.numChannels() << " channel output = " << std::endl; + printSupportedStandardSampleRates(inputParameters, outputParameters); + } + } + + std::cout << "----------------------------------------------" << std::endl; + } + catch (const portaudio::PaException &e) + { + std::cout << "A PortAudio error occured: " << e.paErrorText() << std::endl; + } + catch (const portaudio::PaCppException &e) + { + std::cout << "A PortAudioCpp error occured: " << e.what() << std::endl; + } + catch (const std::exception &e) + { + std::cout << "A generic exception occured: " << e.what() << std::endl; + } + catch (...) + { + std::cout << "An unknown exception occured." << std::endl; + } + + return 0; +} diff --git a/bindings/cpp/example/sine.cxx b/bindings/cpp/example/sine.cxx new file mode 100644 index 0000000..577a247 --- /dev/null +++ b/bindings/cpp/example/sine.cxx @@ -0,0 +1,137 @@ +// --------------------------------------------------------------------------------------- + +#include +#include +#include +#include +#include "portaudiocpp/PortAudioCpp.hxx" + +// --------------------------------------------------------------------------------------- + +// Some constants: +const int NUM_SECONDS = 5; +const double SAMPLE_RATE = 44100.0; +const int FRAMES_PER_BUFFER = 64; +const int TABLE_SIZE = 200; + +// --------------------------------------------------------------------------------------- + +// SineGenerator class: +class SineGenerator +{ +public: + SineGenerator(int tableSize) : tableSize_(tableSize), leftPhase_(0), rightPhase_(0) + { + const double PI = 3.14159265; + table_ = new float[tableSize]; + for (int i = 0; i < tableSize; ++i) + { + table_[i] = 0.125f * (float)sin(((double)i/(double)tableSize)*PI*2.); + } + } + + ~SineGenerator() + { + delete[] table_; + } + + int generate(const void *inputBuffer, void *outputBuffer, unsigned long framesPerBuffer, + const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags) + { + assert(outputBuffer != NULL); + + float **out = static_cast(outputBuffer); + + for (unsigned int i = 0; i < framesPerBuffer; ++i) + { + out[0][i] = table_[leftPhase_]; + out[1][i] = table_[rightPhase_]; + + leftPhase_ += 1; + if (leftPhase_ >= tableSize_) + leftPhase_ -= tableSize_; + + rightPhase_ += 3; + if (rightPhase_ >= tableSize_) + rightPhase_ -= tableSize_; + } + + return paContinue; + } + +private: + float *table_; + int tableSize_; + int leftPhase_; + int rightPhase_; +}; + +// --------------------------------------------------------------------------------------- + +// main: +int main(int, char *[]); +int main(int, char *[]) +{ + try + { + // Create a SineGenerator object: + SineGenerator sineGenerator(TABLE_SIZE); + + std::cout << "Setting up PortAudio..." << std::endl; + + // Set up the System: + portaudio::AutoSystem autoSys; + portaudio::System &sys = portaudio::System::instance(); + + // Set up the parameters required to open a (Callback)Stream: + portaudio::DirectionSpecificStreamParameters outParams(sys.defaultOutputDevice(), 2, portaudio::FLOAT32, false, sys.defaultOutputDevice().defaultLowOutputLatency(), NULL); + portaudio::StreamParameters params(portaudio::DirectionSpecificStreamParameters::null(), outParams, SAMPLE_RATE, FRAMES_PER_BUFFER, paClipOff); + + std::cout << "Opening stereo output stream..." << std::endl; + + // Create (and open) a new Stream, using the SineGenerator::generate function as a callback: + portaudio::MemFunCallbackStream stream(params, sineGenerator, &SineGenerator::generate); + + std::cout << "Starting playback for " << NUM_SECONDS << " seconds." << std::endl; + + // Start the Stream (audio playback starts): + stream.start(); + + // Wait for 5 seconds: + sys.sleep(NUM_SECONDS * 1000); + + std::cout << "Closing stream..." < + +#include "portaudio.h" + +#include "portaudiocpp/SampleDataFormat.hxx" + +// --------------------------------------------------------------------------------------- + +// Forward declaration(s): +namespace portaudio +{ + class System; + class HostApi; +} + +// --------------------------------------------------------------------------------------- + +// Declaration(s): +namespace portaudio +{ + + ////// + /// @brief Class which represents a PortAudio device in the System. + /// + /// A single physical device in the system may have multiple PortAudio + /// Device representations using different HostApi 's though. A Device + /// can be half-duplex or full-duplex. A half-duplex Device can be used + /// to create a half-duplex Stream. A full-duplex Device can be used to + /// create a full-duplex Stream. If supported by the HostApi, two + /// half-duplex Devices can even be used to create a full-duplex Stream. + /// + /// Note that Device objects are very light-weight and can be passed around + /// by-value. + ////// + class Device + { + public: + // query info: name, max in channels, max out channels, + // default low/hight input/output latency, default sample rate + PaDeviceIndex index() const; + const char *name() const; + int maxInputChannels() const; + int maxOutputChannels() const; + PaTime defaultLowInputLatency() const; + PaTime defaultHighInputLatency() const; + PaTime defaultLowOutputLatency() const; + PaTime defaultHighOutputLatency() const; + double defaultSampleRate() const; + + bool isInputOnlyDevice() const; // extended + bool isOutputOnlyDevice() const; // extended + bool isFullDuplexDevice() const; // extended + bool isSystemDefaultInputDevice() const; // extended + bool isSystemDefaultOutputDevice() const; // extended + bool isHostApiDefaultInputDevice() const; // extended + bool isHostApiDefaultOutputDevice() const; // extended + + bool operator==(const Device &rhs); + bool operator!=(const Device &rhs); + + // host api reference + HostApi &hostApi(); + const HostApi &hostApi() const; + + private: + PaDeviceIndex index_; + const PaDeviceInfo *info_; + + private: + friend class System; + + explicit Device(PaDeviceIndex index); + ~Device(); + + Device(const Device &); // non-copyable + Device &operator=(const Device &); // non-copyable + }; + + // ----------------------------------------------------------------------------------- + +} // namespace portaudio + +// --------------------------------------------------------------------------------------- + +#endif // INCLUDED_PORTAUDIO_DEVICE_HXX + diff --git a/bindings/cpp/include/portaudiocpp/DirectionSpecificStreamParameters.hxx b/bindings/cpp/include/portaudiocpp/DirectionSpecificStreamParameters.hxx new file mode 100644 index 0000000..dd5ae0b --- /dev/null +++ b/bindings/cpp/include/portaudiocpp/DirectionSpecificStreamParameters.hxx @@ -0,0 +1,77 @@ +#ifndef INCLUDED_PORTAUDIO_SINGLEDIRECTIONSTREAMPARAMETERS_HXX +#define INCLUDED_PORTAUDIO_SINGLEDIRECTIONSTREAMPARAMETERS_HXX + +// --------------------------------------------------------------------------------------- + +#include + +#include "portaudio.h" + +#include "portaudiocpp/System.hxx" +#include "portaudiocpp/SampleDataFormat.hxx" + +// --------------------------------------------------------------------------------------- + +// Forward declaration(s): +namespace portaudio +{ + class Device; +} + +// --------------------------------------------------------------------------------------- + +// Declaration(s): +namespace portaudio +{ + + ////// + /// @brief All parameters for one direction (either in or out) of a Stream. Together with + /// parameters common to both directions, two DirectionSpecificStreamParameters can make up + /// a StreamParameters object which contains all parameters for a Stream. + ////// + class DirectionSpecificStreamParameters + { + public: + static DirectionSpecificStreamParameters null(); + + DirectionSpecificStreamParameters(); + DirectionSpecificStreamParameters(const Device &device, int numChannels, SampleDataFormat format, + bool interleaved, PaTime suggestedLatency, void *hostApiSpecificStreamInfo); + + // Set up methods: + void setDevice(const Device &device); + void setNumChannels(int numChannels); + + void setSampleFormat(SampleDataFormat format, bool interleaved = true); + void setHostApiSpecificSampleFormat(PaSampleFormat format, bool interleaved = true); + + void setSuggestedLatency(PaTime latency); + + void setHostApiSpecificStreamInfo(void *streamInfo); + + // Accessor methods: + PaStreamParameters *paStreamParameters(); + const PaStreamParameters *paStreamParameters() const; + + Device &device() const; + int numChannels() const; + + SampleDataFormat sampleFormat() const; + bool isSampleFormatInterleaved() const; + bool isSampleFormatHostApiSpecific() const; + PaSampleFormat hostApiSpecificSampleFormat() const; + + PaTime suggestedLatency() const; + + void *hostApiSpecificStreamInfo() const; + + private: + PaStreamParameters paStreamParameters_; + }; + + +} // namespace portaudio + +// --------------------------------------------------------------------------------------- + +#endif // INCLUDED_PORTAUDIO_SINGLEDIRECTIONSTREAMPARAMETERS_HXX diff --git a/bindings/cpp/include/portaudiocpp/Exception.hxx b/bindings/cpp/include/portaudiocpp/Exception.hxx new file mode 100644 index 0000000..a70c2f1 --- /dev/null +++ b/bindings/cpp/include/portaudiocpp/Exception.hxx @@ -0,0 +1,108 @@ +#ifndef INCLUDED_PORTAUDIO_EXCEPTION_HXX +#define INCLUDED_PORTAUDIO_EXCEPTION_HXX + +// --------------------------------------------------------------------------------------- + +#include + +#include "portaudio.h" + +// --------------------------------------------------------------------------------------- + +namespace portaudio +{ + + ////// + /// @brief Base class for all exceptions PortAudioCpp can throw. + /// + /// Class is derived from std::exception. + ////// + class Exception : public std::exception + { + public: + virtual ~Exception() throw() {} + + virtual const char *what() const throw() = 0; + }; + + // ----------------------------------------------------------------------------------- + + ////// + /// @brief Wrapper for PortAudio error codes to C++ exceptions. + /// + /// It wraps up PortAudio's error handling mechanism using + /// C++ exceptions and is derived from std::exception for + /// easy exception handling and to ease integration with + /// other code. + /// + /// To know what exceptions each function may throw, look up + /// the errors that can occure in the PortAudio documentation + /// for the equivalent functions. + /// + /// Some functions are likely to throw an exception (such as + /// Stream::open(), etc) and these should always be called in + /// try{} catch{} blocks and the thrown exceptions should be + /// handled properly (ie. the application shouldn't just abort, + /// but merely display a warning dialog to the user or something). + /// However nearly all functions in PortAudioCpp are capable + /// of throwing exceptions. When a function like Stream::isStopped() + /// throws an exception, it's such an exceptional state that it's + /// not likely that it can be recovered. PaExceptions such as these + /// can ``safely'' be left to be handled by some outer catch-all-like + /// mechanism for unrecoverable errors. + ////// + class PaException : public Exception + { + public: + explicit PaException(PaError error); + + const char *what() const throw(); + + PaError paError() const; + const char *paErrorText() const; + + bool isHostApiError() const; // extended + long lastHostApiError() const; + const char *lastHostApiErrorText() const; + + bool operator==(const PaException &rhs) const; + bool operator!=(const PaException &rhs) const; + + private: + PaError error_; + }; + + // ----------------------------------------------------------------------------------- + + ////// + /// @brief Exceptions specific to PortAudioCpp (ie. exceptions which do not have an + /// equivalent PortAudio error code). + ////// + class PaCppException : public Exception + { + public: + enum ExceptionSpecifier + { + UNABLE_TO_ADAPT_DEVICE + }; + + PaCppException(ExceptionSpecifier specifier); + + const char *what() const throw(); + + ExceptionSpecifier specifier() const; + + bool operator==(const PaCppException &rhs) const; + bool operator!=(const PaCppException &rhs) const; + + private: + ExceptionSpecifier specifier_; + }; + + +} // namespace portaudio + +// --------------------------------------------------------------------------------------- + +#endif // INCLUDED_PORTAUDIO_EXCEPTION_HXX + diff --git a/bindings/cpp/include/portaudiocpp/HostApi.hxx b/bindings/cpp/include/portaudiocpp/HostApi.hxx new file mode 100644 index 0000000..899fc42 --- /dev/null +++ b/bindings/cpp/include/portaudiocpp/HostApi.hxx @@ -0,0 +1,76 @@ +#ifndef INCLUDED_PORTAUDIO_HOSTAPI_HXX +#define INCLUDED_PORTAUDIO_HOSTAPI_HXX + +// --------------------------------------------------------------------------------------- + +#include "portaudio.h" + +#include "portaudiocpp/System.hxx" + +// --------------------------------------------------------------------------------------- + +// Forward declaration(s): +namespace portaudio +{ + class Device; +} + +// --------------------------------------------------------------------------------------- + +// Declaration(s): +namespace portaudio +{ + + + ////// + /// @brief HostApi represents a host API (usually type of driver) in the System. + /// + /// A single System can support multiple HostApi's each one typically having + /// a set of Devices using that HostApi (usually driver type). All Devices in + /// the HostApi can be enumerated and the default input/output Device for this + /// HostApi can be retreived. + ////// + class HostApi + { + public: + typedef System::DeviceIterator DeviceIterator; + + // query info: id, name, numDevices + PaHostApiTypeId typeId() const; + PaHostApiIndex index() const; + const char *name() const; + int deviceCount() const; + + // iterate devices + DeviceIterator devicesBegin(); + DeviceIterator devicesEnd(); + + // default devices + Device &defaultInputDevice() const; + Device &defaultOutputDevice() const; + + // comparison operators + bool operator==(const HostApi &rhs) const; + bool operator!=(const HostApi &rhs) const; + + private: + const PaHostApiInfo *info_; + Device **devices_; + + private: + friend class System; + + explicit HostApi(PaHostApiIndex index); + ~HostApi(); + + HostApi(const HostApi &); // non-copyable + HostApi &operator=(const HostApi &); // non-copyable + }; + + +} + +// --------------------------------------------------------------------------------------- + +#endif // INCLUDED_PORTAUDIO_HOSTAPI_HXX + diff --git a/bindings/cpp/include/portaudiocpp/InterfaceCallbackStream.hxx b/bindings/cpp/include/portaudiocpp/InterfaceCallbackStream.hxx new file mode 100644 index 0000000..e496dd2 --- /dev/null +++ b/bindings/cpp/include/portaudiocpp/InterfaceCallbackStream.hxx @@ -0,0 +1,49 @@ +#ifndef INCLUDED_PORTAUDIO_INTERFACECALLBACKSTREAM_HXX +#define INCLUDED_PORTAUDIO_INTERFACECALLBACKSTREAM_HXX + +// --------------------------------------------------------------------------------------- + +#include "portaudio.h" + +#include "portaudiocpp/CallbackStream.hxx" + +// --------------------------------------------------------------------------------------- + +// Forward declaration(s) +namespace portaudio +{ + class StreamParameters; + class CallbackInterface; +} + +// --------------------------------------------------------------------------------------- + +// Declaration(s): +namespace portaudio +{ + + + ////// + /// @brief Callback stream using an instance of an object that's derived from the CallbackInterface + /// interface. + ////// + class InterfaceCallbackStream : public CallbackStream + { + public: + InterfaceCallbackStream(); + InterfaceCallbackStream(const StreamParameters ¶meters, CallbackInterface &instance); + ~InterfaceCallbackStream(); + + void open(const StreamParameters ¶meters, CallbackInterface &instance); + + private: + InterfaceCallbackStream(const InterfaceCallbackStream &); // non-copyable + InterfaceCallbackStream &operator=(const InterfaceCallbackStream &); // non-copyable + }; + + +} // portaudio + +// --------------------------------------------------------------------------------------- + +#endif // INCLUDED_PORTAUDIO_INTERFACECALLBACKSTREAM_HXX diff --git a/bindings/cpp/include/portaudiocpp/MemFunCallbackStream.hxx b/bindings/cpp/include/portaudiocpp/MemFunCallbackStream.hxx new file mode 100644 index 0000000..a9e50ca --- /dev/null +++ b/bindings/cpp/include/portaudiocpp/MemFunCallbackStream.hxx @@ -0,0 +1,107 @@ +#ifndef INCLUDED_PORTAUDIO_MEMFUNCALLBACKSTREAM_HXX +#define INCLUDED_PORTAUDIO_MEMFUNCALLBACKSTREAM_HXX + +// --------------------------------------------------------------------------------------- + +#include "portaudio.h" + +#include "portaudiocpp/CallbackStream.hxx" +#include "portaudiocpp/CallbackInterface.hxx" +#include "portaudiocpp/StreamParameters.hxx" +#include "portaudiocpp/Exception.hxx" +#include "portaudiocpp/InterfaceCallbackStream.hxx" + +// --------------------------------------------------------------------------------------- + +namespace portaudio +{ + + + ////// + /// @brief Callback stream using a class's member function as a callback. Template argument T is the type of the + /// class of which a member function is going to be used. + /// + /// Example usage: + /// @verbatim MemFunCallback stream = MemFunCallbackStream(parameters, *this, &MyClass::myCallbackFunction); @endverbatim + ////// + template + class MemFunCallbackStream : public CallbackStream + { + public: + typedef int (T::*CallbackFunPtr)(const void *, void *, unsigned long, const PaStreamCallbackTimeInfo *, + PaStreamCallbackFlags); + + // ------------------------------------------------------------------------------- + + MemFunCallbackStream() + { + } + + MemFunCallbackStream(const StreamParameters ¶meters, T &instance, CallbackFunPtr memFun) : adapter_(instance, memFun) + { + open(parameters); + } + + ~MemFunCallbackStream() + { + close(); + } + + void open(const StreamParameters ¶meters, T &instance, CallbackFunPtr memFun) + { + // XXX: need to check if already open? + + adapter_.init(instance, memFun); + open(parameters); + } + + private: + MemFunCallbackStream(const MemFunCallbackStream &); // non-copyable + MemFunCallbackStream &operator=(const MemFunCallbackStream &); // non-copyable + + ////// + /// @brief Inner class which adapts a member function callback to a CallbackInterface compliant + /// class (so it can be adapted using the paCallbackAdapter function). + ////// + class MemFunToCallbackInterfaceAdapter : public CallbackInterface + { + public: + MemFunToCallbackInterfaceAdapter() {} + MemFunToCallbackInterfaceAdapter(T &instance, CallbackFunPtr memFun) : instance_(&instance), memFun_(memFun) {} + + void init(T &instance, CallbackFunPtr memFun) + { + instance_ = &instance; + memFun_ = memFun; + } + + int paCallbackFun(const void *inputBuffer, void *outputBuffer, unsigned long numFrames, + const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags) + { + return (instance_->*memFun_)(inputBuffer, outputBuffer, numFrames, timeInfo, statusFlags); + } + + private: + T *instance_; + CallbackFunPtr memFun_; + }; + + MemFunToCallbackInterfaceAdapter adapter_; + + void open(const StreamParameters ¶meters) + { + PaError err = Pa_OpenStream(&stream_, parameters.inputParameters().paStreamParameters(), parameters.outputParameters().paStreamParameters(), + parameters.sampleRate(), parameters.framesPerBuffer(), parameters.flags(), &impl::callbackInterfaceToPaCallbackAdapter, + static_cast(&adapter_)); + + if (err != paNoError) + throw PaException(err); + } + }; + + +} // portaudio + +// --------------------------------------------------------------------------------------- + +#endif // INCLUDED_PORTAUDIO_MEMFUNCALLBACKSTREAM_HXX diff --git a/bindings/cpp/include/portaudiocpp/PortAudioCpp.hxx b/bindings/cpp/include/portaudiocpp/PortAudioCpp.hxx new file mode 100644 index 0000000..f11e7fb --- /dev/null +++ b/bindings/cpp/include/portaudiocpp/PortAudioCpp.hxx @@ -0,0 +1,109 @@ +#ifndef INCLUDED_PORTAUDIO_PORTAUDIOCPP_HXX +#define INCLUDED_PORTAUDIO_PORTAUDIOCPP_HXX + +// --------------------------------------------------------------------------------------- + +////// +/// @mainpage PortAudioCpp +/// +///

PortAudioCpp - A Native C++ Binding of PortAudio V19

+///

PortAudio

+///

+/// PortAudio is a portable and mature C API for accessing audio hardware. It offers both callback-based and blocking +/// style input and output, deals with sample data format conversions, dithering and much more. There are a large number +/// of implementations available for various platforms including Windows MME, Windows DirectX, Windows and MacOS (Classic) +/// ASIO, MacOS Classic SoundManager, MacOS X CoreAudio, OSS (Linux), Linux ALSA, JACK (MacOS X and Linux) and SGI Irix +/// AL. Note that, currently not all of these implementations are equally complete or up-to-date (as PortAudio V19 is +/// still in development). Because PortAudio has a C API, it can easily be called from a variety of other programming +/// languages. +///

+///

PortAudioCpp

+///

+/// Although, it is possible to use PortAudio's C API from within a C++ program, this is usually a little awkward +/// as procedural and object-oriented paradigms need to be mixed. PortAudioCpp aims to resolve this by encapsulating +/// PortAudio's C API to form an equivalent object-oriented C++ API. It provides a more natural integration of PortAudio +/// into C++ programs as well as a more structured interface. PortAudio's concepts were preserved as much as possible and +/// no additional features were added except for some `convenience methods'. +///

+///

+/// PortAudioCpp's main features are: +///

    +///
  • Structured object model.
  • +///
  • C++ exception handling instead of C-style error return codes.
  • +///
  • Handling of callbacks using free functions (C and C++), static functions, member functions or instances of classes +/// derived from a given interface.
  • +///
  • STL compliant iterators to host APIs and devices.
  • +///
  • Some additional convenience functions to more easily set up and use PortAudio.
  • +///
+///

+///

+/// PortAudioCpp requires a recent version of the PortAudio V19 source code. This can be obtained from CVS or as a snapshot +/// from the website. The examples also require the ASIO 2 SDK which can be obtained from the Steinberg website. Alternatively, the +/// examples can easily be modified to compile without needing ASIO. +///

+///

+/// Supported platforms: +///

    +///
  • Microsoft Visual C++ 6.0, 7.0 (.NET 2002) and 7.1 (.NET 2003).
  • +///
  • GNU G++ 2.95 and G++ 3.3.
  • +///
+/// Other platforms should be easily supported as PortAudioCpp is platform-independent and (reasonably) C++ standard compliant. +///

+///

+/// This documentation mainly provides information specific to PortAudioCpp. For a more complete explaination of all of the +/// concepts used, please consult the PortAudio documentation. +///

+///

+/// PortAudioCpp was developed by Merlijn Blaauw with many great suggestions and help from Ross Bencina. Ludwig Schwardt provided +/// GNU/Linux build files and checked G++ compatibility. PortAudioCpp may be used under the same licensing, conditions and +/// warranty as PortAudio. See the PortAudio license for more details. +///

+///

Links

+///

+/// Official PortAudio site.
+///

+////// + +// --------------------------------------------------------------------------------------- + +////// +/// @namespace portaudio +/// +/// To avoid name collision, everything in PortAudioCpp is in the portaudio +/// namespace. If this name is too long it's usually pretty safe to use an +/// alias like ``namespace pa = portaudio;''. +////// + +// --------------------------------------------------------------------------------------- + +////// +/// @file PortAudioCpp.hxx +/// An include-all header file (for lazy programmers and using pre-compiled headers). +////// + +// --------------------------------------------------------------------------------------- + +#include "portaudio.h" + +#include "portaudiocpp/AutoSystem.hxx" +#include "portaudiocpp/BlockingStream.hxx" +#include "portaudiocpp/CallbackInterface.hxx" +#include "portaudiocpp/CallbackStream.hxx" +#include "portaudiocpp/CFunCallbackStream.hxx" +#include "portaudiocpp/CppFunCallbackStream.hxx" +#include "portaudiocpp/Device.hxx" +#include "portaudiocpp/Exception.hxx" +#include "portaudiocpp/HostApi.hxx" +#include "portaudiocpp/InterfaceCallbackStream.hxx" +#include "portaudiocpp/MemFunCallbackStream.hxx" +#include "portaudiocpp/SampleDataFormat.hxx" +#include "portaudiocpp/DirectionSpecificStreamParameters.hxx" +#include "portaudiocpp/Stream.hxx" +#include "portaudiocpp/StreamParameters.hxx" +#include "portaudiocpp/System.hxx" +#include "portaudiocpp/SystemDeviceIterator.hxx" +#include "portaudiocpp/SystemHostApiIterator.hxx" + +// --------------------------------------------------------------------------------------- + +#endif // INCLUDED_PORTAUDIO_PORTAUDIOCPP_HXX diff --git a/bindings/cpp/include/portaudiocpp/SampleDataFormat.hxx b/bindings/cpp/include/portaudiocpp/SampleDataFormat.hxx new file mode 100644 index 0000000..a7e25b2 --- /dev/null +++ b/bindings/cpp/include/portaudiocpp/SampleDataFormat.hxx @@ -0,0 +1,35 @@ +#ifndef INCLUDED_PORTAUDIO_SAMPLEDATAFORMAT_HXX +#define INCLUDED_PORTAUDIO_SAMPLEDATAFORMAT_HXX + +// --------------------------------------------------------------------------------------- + +#include "portaudio.h" + +// --------------------------------------------------------------------------------------- + +namespace portaudio +{ + + + ////// + /// @brief PortAudio sample data formats. + /// + /// Small helper enum to wrap the PortAudio defines. + ////// + enum SampleDataFormat + { + INVALID_FORMAT = 0, + FLOAT32 = paFloat32, + INT32 = paInt32, + INT24 = paInt24, + INT16 = paInt16, + INT8 = paInt8, + UINT8 = paUInt8 + }; + + +} // namespace portaudio + +// --------------------------------------------------------------------------------------- + +#endif // INCLUDED_PORTAUDIO_SAMPLEDATAFORMAT_HXX diff --git a/bindings/cpp/include/portaudiocpp/Stream.hxx b/bindings/cpp/include/portaudiocpp/Stream.hxx new file mode 100644 index 0000000..8a255ec --- /dev/null +++ b/bindings/cpp/include/portaudiocpp/Stream.hxx @@ -0,0 +1,82 @@ +#ifndef INCLUDED_PORTAUDIO_STREAM_HXX +#define INCLUDED_PORTAUDIO_STREAM_HXX + +#include "portaudio.h" + +// --------------------------------------------------------------------------------------- + +// Forward declaration(s): +namespace portaudio +{ + class StreamParameters; +} + +// --------------------------------------------------------------------------------------- + +// Declaration(s): +namespace portaudio +{ + + + ////// + /// @brief A Stream represents an active or inactive input and/or output data + /// stream in the System. + /// + /// Concrete Stream classes should ensure themselves being in a closed state at + /// destruction (i.e. by calling their own close() method in their deconstructor). + /// Following good C++ programming practices, care must be taken to ensure no + /// exceptions are thrown by the deconstructor of these classes. As a consequence, + /// clients need to explicitly call close() to ensure the stream closed successfully. + /// + /// The Stream object can be used to manipulate the Stream's state. Also, time-constant + /// and time-varying information about the Stream can be retreived. + ////// + class Stream + { + public: + // Opening/closing: + virtual ~Stream(); + + virtual void close(); + bool isOpen() const; + + // Additional set up: + void setStreamFinishedCallback(PaStreamFinishedCallback *callback); + + // State management: + void start(); + void stop(); + void abort(); + + bool isStopped() const; + bool isActive() const; + + // Stream info (time-constant, but might become time-variant soon): + PaTime inputLatency() const; + PaTime outputLatency() const; + double sampleRate() const; + + // Stream info (time-varying): + PaTime time() const; + + // Accessors for PortAudio PaStream, useful for interfacing + // with PortAudio add-ons (such as PortMixer) for instance: + const PaStream *paStream() const; + PaStream *paStream(); + + protected: + Stream(); // abstract class + + PaStream *stream_; + + private: + Stream(const Stream &); // non-copyable + Stream &operator=(const Stream &); // non-copyable + }; + + +} // namespace portaudio + + +#endif // INCLUDED_PORTAUDIO_STREAM_HXX + diff --git a/bindings/cpp/include/portaudiocpp/StreamParameters.hxx b/bindings/cpp/include/portaudiocpp/StreamParameters.hxx new file mode 100644 index 0000000..2b6aa2e --- /dev/null +++ b/bindings/cpp/include/portaudiocpp/StreamParameters.hxx @@ -0,0 +1,77 @@ +#ifndef INCLUDED_PORTAUDIO_STREAMPARAMETERS_HXX +#define INCLUDED_PORTAUDIO_STREAMPARAMETERS_HXX + +// --------------------------------------------------------------------------------------- + +#include "portaudio.h" + +#include "portaudiocpp/DirectionSpecificStreamParameters.hxx" + +// --------------------------------------------------------------------------------------- + +// Declaration(s): +namespace portaudio +{ + + ////// + /// @brief The entire set of parameters needed to configure and open + /// a Stream. + /// + /// It contains parameters of input, output and shared parameters. + /// Using the isSupported() method, the StreamParameters can be + /// checked if opening a Stream using this StreamParameters would + /// succeed or not. Accessors are provided to higher-level parameters + /// aswell as the lower-level parameters which are mainly intended for + /// internal use. + ////// + class StreamParameters + { + public: + StreamParameters(); + StreamParameters(const DirectionSpecificStreamParameters &inputParameters, + const DirectionSpecificStreamParameters &outputParameters, double sampleRate, + unsigned long framesPerBuffer, PaStreamFlags flags); + + // Set up for direction-specific: + void setInputParameters(const DirectionSpecificStreamParameters ¶meters); + void setOutputParameters(const DirectionSpecificStreamParameters ¶meters); + + // Set up for common parameters: + void setSampleRate(double sampleRate); + void setFramesPerBuffer(unsigned long framesPerBuffer); + void setFlag(PaStreamFlags flag); + void unsetFlag(PaStreamFlags flag); + void clearFlags(); + + // Validation: + bool isSupported() const; + + // Accessors (direction-specific): + DirectionSpecificStreamParameters &inputParameters(); + const DirectionSpecificStreamParameters &inputParameters() const; + DirectionSpecificStreamParameters &outputParameters(); + const DirectionSpecificStreamParameters &outputParameters() const; + + // Accessors (common): + double sampleRate() const; + unsigned long framesPerBuffer() const; + PaStreamFlags flags() const; + bool isFlagSet(PaStreamFlags flag) const; + + private: + // Half-duplex specific parameters: + DirectionSpecificStreamParameters inputParameters_; + DirectionSpecificStreamParameters outputParameters_; + + // Common parameters: + double sampleRate_; + unsigned long framesPerBuffer_; + PaStreamFlags flags_; + }; + + +} // namespace portaudio + +// --------------------------------------------------------------------------------------- + +#endif // INCLUDED_PORTAUDIO_STREAMPARAMETERS_HXX diff --git a/bindings/cpp/include/portaudiocpp/System.hxx b/bindings/cpp/include/portaudiocpp/System.hxx new file mode 100644 index 0000000..f5fb713 --- /dev/null +++ b/bindings/cpp/include/portaudiocpp/System.hxx @@ -0,0 +1,107 @@ +#ifndef INCLUDED_PORTAUDIO_SYSTEM_HXX +#define INCLUDED_PORTAUDIO_SYSTEM_HXX + +// --------------------------------------------------------------------------------------- + +#include "portaudio.h" + +// --------------------------------------------------------------------------------------- + +// Forward declaration(s): +namespace portaudio +{ + class Device; + class Stream; + class HostApi; +} + +// --------------------------------------------------------------------------------------- + +// Declaration(s): +namespace portaudio +{ + + + ////// + /// @brief System singleton which represents the PortAudio system. + /// + /// The System is used to initialize/terminate PortAudio and provide + /// a single acccess point to the PortAudio System (instance()). + /// It can be used to iterate through all HostApi 's in the System as + /// well as all devices in the System. It also provides some utility + /// functionality of PortAudio. + /// + /// Terminating the System will also abort and close the open streams. + /// The Stream objects will need to be deallocated by the client though + /// (it's usually a good idea to have them cleaned up automatically). + ////// + class System + { + public: + class HostApiIterator; // forward declaration + class DeviceIterator; // forward declaration + + // ------------------------------------------------------------------------------- + + static int version(); + static const char *versionText(); + + static void initialize(); + static void terminate(); + + static System &instance(); + static bool exists(); + + // ------------------------------------------------------------------------------- + + // host apis: + HostApiIterator hostApisBegin(); + HostApiIterator hostApisEnd(); + + HostApi &defaultHostApi(); + + HostApi &hostApiByTypeId(PaHostApiTypeId type); + HostApi &hostApiByIndex(PaHostApiIndex index); + + int hostApiCount(); + + // ------------------------------------------------------------------------------- + + // devices: + DeviceIterator devicesBegin(); + DeviceIterator devicesEnd(); + + Device &defaultInputDevice(); + Device &defaultOutputDevice(); + + Device &deviceByIndex(PaDeviceIndex index); + + int deviceCount(); + + static Device &nullDevice(); + + // ------------------------------------------------------------------------------- + + // misc: + void sleep(long msec); + int sizeOfSample(PaSampleFormat format); + + private: + System(); + ~System(); + + static System *instance_; + static int initCount_; + + static HostApi **hostApis_; + static Device **devices_; + + static Device *nullDevice_; + }; + + +} // namespace portaudio + + +#endif // INCLUDED_PORTAUDIO_SYSTEM_HXX + diff --git a/bindings/cpp/include/portaudiocpp/SystemDeviceIterator.hxx b/bindings/cpp/include/portaudiocpp/SystemDeviceIterator.hxx new file mode 100644 index 0000000..613fc3d --- /dev/null +++ b/bindings/cpp/include/portaudiocpp/SystemDeviceIterator.hxx @@ -0,0 +1,66 @@ +#ifndef INCLUDED_PORTAUDIO_SYSTEMDEVICEITERATOR_HXX +#define INCLUDED_PORTAUDIO_SYSTEMDEVICEITERATOR_HXX + +// --------------------------------------------------------------------------------------- + +#include +#include + +#include "portaudiocpp/System.hxx" + +// --------------------------------------------------------------------------------------- + +// Forward declaration(s): +namespace portaudio +{ + class Device; + class HostApi; +} + +// --------------------------------------------------------------------------------------- + +// Declaration(s): +namespace portaudio +{ + + + ////// + /// @brief Iterator class for iterating through all Devices in a System. + /// + /// Devices will be iterated by iterating all Devices in each + /// HostApi in the System. Compliant with the STL bidirectional + /// iterator concept. + ////// + class System::DeviceIterator + { + public: + typedef std::bidirectional_iterator_tag iterator_category; + typedef Device value_type; + typedef ptrdiff_t difference_type; + typedef Device * pointer; + typedef Device & reference; + + Device &operator*() const; + Device *operator->() const; + + DeviceIterator &operator++(); + DeviceIterator operator++(int); + DeviceIterator &operator--(); + DeviceIterator operator--(int); + + bool operator==(const DeviceIterator &rhs); + bool operator!=(const DeviceIterator &rhs); + + private: + friend class System; + friend class HostApi; + Device **ptr_; + }; + + +} // namespace portaudio + +// --------------------------------------------------------------------------------------- + +#endif // INCLUDED_PORTAUDIO_SYSTEMDEVICEITERATOR_HXX + diff --git a/bindings/cpp/include/portaudiocpp/SystemHostApiIterator.hxx b/bindings/cpp/include/portaudiocpp/SystemHostApiIterator.hxx new file mode 100644 index 0000000..b9b13b8 --- /dev/null +++ b/bindings/cpp/include/portaudiocpp/SystemHostApiIterator.hxx @@ -0,0 +1,61 @@ +#ifndef INCLUDED_PORTAUDIO_SYSTEMHOSTAPIITERATOR_HXX +#define INCLUDED_PORTAUDIO_SYSTEMHOSTAPIITERATOR_HXX + +// --------------------------------------------------------------------------------------- + +#include +#include + +#include "portaudiocpp/System.hxx" + +// --------------------------------------------------------------------------------------- + +// Forward declaration(s): +namespace portaudio +{ + class HostApi; +} + +// --------------------------------------------------------------------------------------- + +// Declaration(s): +namespace portaudio +{ + + + ////// + /// @brief Iterator class for iterating through all HostApis in a System. + /// + /// Compliant with the STL bidirectional iterator concept. + ////// + class System::HostApiIterator + { + public: + typedef std::bidirectional_iterator_tag iterator_category; + typedef Device value_type; + typedef ptrdiff_t difference_type; + typedef HostApi * pointer; + typedef HostApi & reference; + + HostApi &operator*() const; + HostApi *operator->() const; + + HostApiIterator &operator++(); + HostApiIterator operator++(int); + HostApiIterator &operator--(); + HostApiIterator operator--(int); + + bool operator==(const HostApiIterator &rhs); + bool operator!=(const HostApiIterator &rhs); + + private: + friend class System; + HostApi **ptr_; + }; + + +} // namespace portaudio + +// --------------------------------------------------------------------------------------- + +#endif // INCLUDED_PORTAUDIO_SYSTEMHOSTAPIITERATOR_HXX diff --git a/bindings/cpp/lib/Makefile.am b/bindings/cpp/lib/Makefile.am new file mode 100644 index 0000000..a27f7c5 --- /dev/null +++ b/bindings/cpp/lib/Makefile.am @@ -0,0 +1,26 @@ +SRCDIR = $(top_srcdir)/source/portaudiocpp + +lib_LTLIBRARIES = libportaudiocpp.la + +LDADD = libportaudiocpp.la + +libportaudiocpp_la_LDFLAGS = -version-info $(LT_VERSION_INFO) -no-undefined + +libportaudiocpp_la_LIBADD = $(top_builddir)/$(PORTAUDIO_ROOT)/lib/libportaudio.la +libportaudiocpp_la_SOURCES = \ + $(SRCDIR)/BlockingStream.cxx \ + $(SRCDIR)/CallbackInterface.cxx \ + $(SRCDIR)/CallbackStream.cxx \ + $(SRCDIR)/CFunCallbackStream.cxx \ + $(SRCDIR)/CppFunCallbackStream.cxx \ + $(SRCDIR)/Device.cxx \ + $(SRCDIR)/DirectionSpecificStreamParameters.cxx \ + $(SRCDIR)/Exception.cxx \ + $(SRCDIR)/HostApi.cxx \ + $(SRCDIR)/InterfaceCallbackStream.cxx \ + $(SRCDIR)/MemFunCallbackStream.cxx \ + $(SRCDIR)/Stream.cxx \ + $(SRCDIR)/StreamParameters.cxx \ + $(SRCDIR)/System.cxx \ + $(SRCDIR)/SystemDeviceIterator.cxx \ + $(SRCDIR)/SystemHostApiIterator.cxx diff --git a/bindings/cpp/lib/Makefile.in b/bindings/cpp/lib/Makefile.in new file mode 100644 index 0000000..11be8c1 --- /dev/null +++ b/bindings/cpp/lib/Makefile.in @@ -0,0 +1,615 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 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. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +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) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = lib +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +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) +libportaudiocpp_la_DEPENDENCIES = \ + $(top_builddir)/$(PORTAUDIO_ROOT)/lib/libportaudio.la +am_libportaudiocpp_la_OBJECTS = BlockingStream.lo CallbackInterface.lo \ + CallbackStream.lo CFunCallbackStream.lo \ + CppFunCallbackStream.lo Device.lo \ + DirectionSpecificStreamParameters.lo Exception.lo HostApi.lo \ + InterfaceCallbackStream.lo MemFunCallbackStream.lo Stream.lo \ + StreamParameters.lo System.lo SystemDeviceIterator.lo \ + SystemHostApiIterator.lo +libportaudiocpp_la_OBJECTS = $(am_libportaudiocpp_la_OBJECTS) +depcomp = $(SHELL) $(top_srcdir)/../../depcomp +am__depfiles_maybe = depfiles +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CXXFLAGS) $(CXXFLAGS) +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +SOURCES = $(libportaudiocpp_la_SOURCES) +DIST_SOURCES = $(libportaudiocpp_la_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +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@ +DEFAULT_INCLUDES = @DEFAULT_INCLUDES@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +GREP = @GREP@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_VERSION_INFO = @LT_VERSION_INFO@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEINFO = @MAKEINFO@ +OBJDUMP = @OBJDUMP@ +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@ +PORTAUDIO_ROOT = @PORTAUDIO_ROOT@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +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@ +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@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +SRCDIR = $(top_srcdir)/source/portaudiocpp +lib_LTLIBRARIES = libportaudiocpp.la +LDADD = libportaudiocpp.la +libportaudiocpp_la_LDFLAGS = -version-info $(LT_VERSION_INFO) -no-undefined +libportaudiocpp_la_LIBADD = $(top_builddir)/$(PORTAUDIO_ROOT)/lib/libportaudio.la +libportaudiocpp_la_SOURCES = \ + $(SRCDIR)/BlockingStream.cxx \ + $(SRCDIR)/CallbackInterface.cxx \ + $(SRCDIR)/CallbackStream.cxx \ + $(SRCDIR)/CFunCallbackStream.cxx \ + $(SRCDIR)/CppFunCallbackStream.cxx \ + $(SRCDIR)/Device.cxx \ + $(SRCDIR)/DirectionSpecificStreamParameters.cxx \ + $(SRCDIR)/Exception.cxx \ + $(SRCDIR)/HostApi.cxx \ + $(SRCDIR)/InterfaceCallbackStream.cxx \ + $(SRCDIR)/MemFunCallbackStream.cxx \ + $(SRCDIR)/Stream.cxx \ + $(SRCDIR)/StreamParameters.cxx \ + $(SRCDIR)/System.cxx \ + $(SRCDIR)/SystemDeviceIterator.cxx \ + $(SRCDIR)/SystemHostApiIterator.cxx + +all: all-am + +.SUFFIXES: +.SUFFIXES: .cxx .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(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 lib/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu lib/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)" + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + 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) + @set -x; list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + 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 +libportaudiocpp.la: $(libportaudiocpp_la_OBJECTS) $(libportaudiocpp_la_DEPENDENCIES) + $(CXXLINK) -rpath $(libdir) $(libportaudiocpp_la_LDFLAGS) $(libportaudiocpp_la_OBJECTS) $(libportaudiocpp_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BlockingStream.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CFunCallbackStream.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CallbackInterface.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CallbackStream.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CppFunCallbackStream.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Device.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DirectionSpecificStreamParameters.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Exception.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HostApi.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/InterfaceCallbackStream.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MemFunCallbackStream.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Stream.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/StreamParameters.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/System.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SystemDeviceIterator.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SystemHostApiIterator.Plo@am__quote@ + +.cxx.o: +@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@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 $@ $< + +.cxx.obj: +@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@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) '$<'` + +.cxx.lo: +@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@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 $@ $< + +BlockingStream.lo: $(SRCDIR)/BlockingStream.cxx +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT BlockingStream.lo -MD -MP -MF "$(DEPDIR)/BlockingStream.Tpo" -c -o BlockingStream.lo `test -f '$(SRCDIR)/BlockingStream.cxx' || echo '$(srcdir)/'`$(SRCDIR)/BlockingStream.cxx; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/BlockingStream.Tpo" "$(DEPDIR)/BlockingStream.Plo"; else rm -f "$(DEPDIR)/BlockingStream.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(SRCDIR)/BlockingStream.cxx' object='BlockingStream.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o BlockingStream.lo `test -f '$(SRCDIR)/BlockingStream.cxx' || echo '$(srcdir)/'`$(SRCDIR)/BlockingStream.cxx + +CallbackInterface.lo: $(SRCDIR)/CallbackInterface.cxx +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT CallbackInterface.lo -MD -MP -MF "$(DEPDIR)/CallbackInterface.Tpo" -c -o CallbackInterface.lo `test -f '$(SRCDIR)/CallbackInterface.cxx' || echo '$(srcdir)/'`$(SRCDIR)/CallbackInterface.cxx; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/CallbackInterface.Tpo" "$(DEPDIR)/CallbackInterface.Plo"; else rm -f "$(DEPDIR)/CallbackInterface.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(SRCDIR)/CallbackInterface.cxx' object='CallbackInterface.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o CallbackInterface.lo `test -f '$(SRCDIR)/CallbackInterface.cxx' || echo '$(srcdir)/'`$(SRCDIR)/CallbackInterface.cxx + +CallbackStream.lo: $(SRCDIR)/CallbackStream.cxx +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT CallbackStream.lo -MD -MP -MF "$(DEPDIR)/CallbackStream.Tpo" -c -o CallbackStream.lo `test -f '$(SRCDIR)/CallbackStream.cxx' || echo '$(srcdir)/'`$(SRCDIR)/CallbackStream.cxx; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/CallbackStream.Tpo" "$(DEPDIR)/CallbackStream.Plo"; else rm -f "$(DEPDIR)/CallbackStream.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(SRCDIR)/CallbackStream.cxx' object='CallbackStream.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o CallbackStream.lo `test -f '$(SRCDIR)/CallbackStream.cxx' || echo '$(srcdir)/'`$(SRCDIR)/CallbackStream.cxx + +CFunCallbackStream.lo: $(SRCDIR)/CFunCallbackStream.cxx +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT CFunCallbackStream.lo -MD -MP -MF "$(DEPDIR)/CFunCallbackStream.Tpo" -c -o CFunCallbackStream.lo `test -f '$(SRCDIR)/CFunCallbackStream.cxx' || echo '$(srcdir)/'`$(SRCDIR)/CFunCallbackStream.cxx; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/CFunCallbackStream.Tpo" "$(DEPDIR)/CFunCallbackStream.Plo"; else rm -f "$(DEPDIR)/CFunCallbackStream.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(SRCDIR)/CFunCallbackStream.cxx' object='CFunCallbackStream.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o CFunCallbackStream.lo `test -f '$(SRCDIR)/CFunCallbackStream.cxx' || echo '$(srcdir)/'`$(SRCDIR)/CFunCallbackStream.cxx + +CppFunCallbackStream.lo: $(SRCDIR)/CppFunCallbackStream.cxx +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT CppFunCallbackStream.lo -MD -MP -MF "$(DEPDIR)/CppFunCallbackStream.Tpo" -c -o CppFunCallbackStream.lo `test -f '$(SRCDIR)/CppFunCallbackStream.cxx' || echo '$(srcdir)/'`$(SRCDIR)/CppFunCallbackStream.cxx; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/CppFunCallbackStream.Tpo" "$(DEPDIR)/CppFunCallbackStream.Plo"; else rm -f "$(DEPDIR)/CppFunCallbackStream.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(SRCDIR)/CppFunCallbackStream.cxx' object='CppFunCallbackStream.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o CppFunCallbackStream.lo `test -f '$(SRCDIR)/CppFunCallbackStream.cxx' || echo '$(srcdir)/'`$(SRCDIR)/CppFunCallbackStream.cxx + +Device.lo: $(SRCDIR)/Device.cxx +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT Device.lo -MD -MP -MF "$(DEPDIR)/Device.Tpo" -c -o Device.lo `test -f '$(SRCDIR)/Device.cxx' || echo '$(srcdir)/'`$(SRCDIR)/Device.cxx; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/Device.Tpo" "$(DEPDIR)/Device.Plo"; else rm -f "$(DEPDIR)/Device.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(SRCDIR)/Device.cxx' object='Device.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o Device.lo `test -f '$(SRCDIR)/Device.cxx' || echo '$(srcdir)/'`$(SRCDIR)/Device.cxx + +DirectionSpecificStreamParameters.lo: $(SRCDIR)/DirectionSpecificStreamParameters.cxx +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT DirectionSpecificStreamParameters.lo -MD -MP -MF "$(DEPDIR)/DirectionSpecificStreamParameters.Tpo" -c -o DirectionSpecificStreamParameters.lo `test -f '$(SRCDIR)/DirectionSpecificStreamParameters.cxx' || echo '$(srcdir)/'`$(SRCDIR)/DirectionSpecificStreamParameters.cxx; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/DirectionSpecificStreamParameters.Tpo" "$(DEPDIR)/DirectionSpecificStreamParameters.Plo"; else rm -f "$(DEPDIR)/DirectionSpecificStreamParameters.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(SRCDIR)/DirectionSpecificStreamParameters.cxx' object='DirectionSpecificStreamParameters.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o DirectionSpecificStreamParameters.lo `test -f '$(SRCDIR)/DirectionSpecificStreamParameters.cxx' || echo '$(srcdir)/'`$(SRCDIR)/DirectionSpecificStreamParameters.cxx + +Exception.lo: $(SRCDIR)/Exception.cxx +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT Exception.lo -MD -MP -MF "$(DEPDIR)/Exception.Tpo" -c -o Exception.lo `test -f '$(SRCDIR)/Exception.cxx' || echo '$(srcdir)/'`$(SRCDIR)/Exception.cxx; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/Exception.Tpo" "$(DEPDIR)/Exception.Plo"; else rm -f "$(DEPDIR)/Exception.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(SRCDIR)/Exception.cxx' object='Exception.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o Exception.lo `test -f '$(SRCDIR)/Exception.cxx' || echo '$(srcdir)/'`$(SRCDIR)/Exception.cxx + +HostApi.lo: $(SRCDIR)/HostApi.cxx +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT HostApi.lo -MD -MP -MF "$(DEPDIR)/HostApi.Tpo" -c -o HostApi.lo `test -f '$(SRCDIR)/HostApi.cxx' || echo '$(srcdir)/'`$(SRCDIR)/HostApi.cxx; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/HostApi.Tpo" "$(DEPDIR)/HostApi.Plo"; else rm -f "$(DEPDIR)/HostApi.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(SRCDIR)/HostApi.cxx' object='HostApi.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o HostApi.lo `test -f '$(SRCDIR)/HostApi.cxx' || echo '$(srcdir)/'`$(SRCDIR)/HostApi.cxx + +InterfaceCallbackStream.lo: $(SRCDIR)/InterfaceCallbackStream.cxx +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT InterfaceCallbackStream.lo -MD -MP -MF "$(DEPDIR)/InterfaceCallbackStream.Tpo" -c -o InterfaceCallbackStream.lo `test -f '$(SRCDIR)/InterfaceCallbackStream.cxx' || echo '$(srcdir)/'`$(SRCDIR)/InterfaceCallbackStream.cxx; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/InterfaceCallbackStream.Tpo" "$(DEPDIR)/InterfaceCallbackStream.Plo"; else rm -f "$(DEPDIR)/InterfaceCallbackStream.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(SRCDIR)/InterfaceCallbackStream.cxx' object='InterfaceCallbackStream.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o InterfaceCallbackStream.lo `test -f '$(SRCDIR)/InterfaceCallbackStream.cxx' || echo '$(srcdir)/'`$(SRCDIR)/InterfaceCallbackStream.cxx + +MemFunCallbackStream.lo: $(SRCDIR)/MemFunCallbackStream.cxx +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT MemFunCallbackStream.lo -MD -MP -MF "$(DEPDIR)/MemFunCallbackStream.Tpo" -c -o MemFunCallbackStream.lo `test -f '$(SRCDIR)/MemFunCallbackStream.cxx' || echo '$(srcdir)/'`$(SRCDIR)/MemFunCallbackStream.cxx; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/MemFunCallbackStream.Tpo" "$(DEPDIR)/MemFunCallbackStream.Plo"; else rm -f "$(DEPDIR)/MemFunCallbackStream.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(SRCDIR)/MemFunCallbackStream.cxx' object='MemFunCallbackStream.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o MemFunCallbackStream.lo `test -f '$(SRCDIR)/MemFunCallbackStream.cxx' || echo '$(srcdir)/'`$(SRCDIR)/MemFunCallbackStream.cxx + +Stream.lo: $(SRCDIR)/Stream.cxx +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT Stream.lo -MD -MP -MF "$(DEPDIR)/Stream.Tpo" -c -o Stream.lo `test -f '$(SRCDIR)/Stream.cxx' || echo '$(srcdir)/'`$(SRCDIR)/Stream.cxx; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/Stream.Tpo" "$(DEPDIR)/Stream.Plo"; else rm -f "$(DEPDIR)/Stream.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(SRCDIR)/Stream.cxx' object='Stream.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o Stream.lo `test -f '$(SRCDIR)/Stream.cxx' || echo '$(srcdir)/'`$(SRCDIR)/Stream.cxx + +StreamParameters.lo: $(SRCDIR)/StreamParameters.cxx +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT StreamParameters.lo -MD -MP -MF "$(DEPDIR)/StreamParameters.Tpo" -c -o StreamParameters.lo `test -f '$(SRCDIR)/StreamParameters.cxx' || echo '$(srcdir)/'`$(SRCDIR)/StreamParameters.cxx; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/StreamParameters.Tpo" "$(DEPDIR)/StreamParameters.Plo"; else rm -f "$(DEPDIR)/StreamParameters.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(SRCDIR)/StreamParameters.cxx' object='StreamParameters.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o StreamParameters.lo `test -f '$(SRCDIR)/StreamParameters.cxx' || echo '$(srcdir)/'`$(SRCDIR)/StreamParameters.cxx + +System.lo: $(SRCDIR)/System.cxx +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT System.lo -MD -MP -MF "$(DEPDIR)/System.Tpo" -c -o System.lo `test -f '$(SRCDIR)/System.cxx' || echo '$(srcdir)/'`$(SRCDIR)/System.cxx; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/System.Tpo" "$(DEPDIR)/System.Plo"; else rm -f "$(DEPDIR)/System.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(SRCDIR)/System.cxx' object='System.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o System.lo `test -f '$(SRCDIR)/System.cxx' || echo '$(srcdir)/'`$(SRCDIR)/System.cxx + +SystemDeviceIterator.lo: $(SRCDIR)/SystemDeviceIterator.cxx +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT SystemDeviceIterator.lo -MD -MP -MF "$(DEPDIR)/SystemDeviceIterator.Tpo" -c -o SystemDeviceIterator.lo `test -f '$(SRCDIR)/SystemDeviceIterator.cxx' || echo '$(srcdir)/'`$(SRCDIR)/SystemDeviceIterator.cxx; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/SystemDeviceIterator.Tpo" "$(DEPDIR)/SystemDeviceIterator.Plo"; else rm -f "$(DEPDIR)/SystemDeviceIterator.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(SRCDIR)/SystemDeviceIterator.cxx' object='SystemDeviceIterator.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o SystemDeviceIterator.lo `test -f '$(SRCDIR)/SystemDeviceIterator.cxx' || echo '$(srcdir)/'`$(SRCDIR)/SystemDeviceIterator.cxx + +SystemHostApiIterator.lo: $(SRCDIR)/SystemHostApiIterator.cxx +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT SystemHostApiIterator.lo -MD -MP -MF "$(DEPDIR)/SystemHostApiIterator.Tpo" -c -o SystemHostApiIterator.lo `test -f '$(SRCDIR)/SystemHostApiIterator.cxx' || echo '$(srcdir)/'`$(SRCDIR)/SystemHostApiIterator.cxx; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/SystemHostApiIterator.Tpo" "$(DEPDIR)/SystemHostApiIterator.Plo"; else rm -f "$(DEPDIR)/SystemHostApiIterator.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(SRCDIR)/SystemHostApiIterator.cxx' object='SystemHostApiIterator.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o SystemHostApiIterator.lo `test -f '$(SRCDIR)/SystemHostApiIterator.cxx' || echo '$(srcdir)/'`$(SRCDIR)/SystemHostApiIterator.cxx + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: + +ID: $(HEADERS) $(SOURCES) $(LISP) $(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 +tags: TAGS + +TAGS: $(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; }'`; \ + 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=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + 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 \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + 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 +check-am: all-am +check: check-am +all-am: Makefile $(LTLIBRARIES) +installdirs: + 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 +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +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: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-libtool distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: install-libLTLIBRARIES + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am uninstall-libLTLIBRARIES + +.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-exec \ + install-exec-am install-info install-info-am \ + install-libLTLIBRARIES install-man 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-info-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. +.NOEXPORT: diff --git a/bindings/cpp/portaudiocpp.pc.in b/bindings/cpp/portaudiocpp.pc.in new file mode 100644 index 0000000..8b126d1 --- /dev/null +++ b/bindings/cpp/portaudiocpp.pc.in @@ -0,0 +1,12 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: PortAudioCpp +Description: Portable audio I/O C++ bindings +Version: 12 +Requires: portaudio-2.0 + +Libs: -L${libdir} -lportaudiocpp +Cflags: -I${includedir} diff --git a/bindings/cpp/source/portaudiocpp/AsioDeviceAdapter.cxx b/bindings/cpp/source/portaudiocpp/AsioDeviceAdapter.cxx new file mode 100644 index 0000000..c4ee25f --- /dev/null +++ b/bindings/cpp/source/portaudiocpp/AsioDeviceAdapter.cxx @@ -0,0 +1,83 @@ +#include "portaudiocpp/AsioDeviceAdapter.hxx" + +#include "portaudio.h" +#include "pa_asio.h" + +#include "portaudiocpp/Device.hxx" +#include "portaudiocpp/HostApi.hxx" +#include "portaudiocpp/Exception.hxx" + +namespace portaudio +{ + AsioDeviceAdapter::AsioDeviceAdapter(Device &device) + { + if (device.hostApi().typeId() != paASIO) + throw PaCppException(PaCppException::UNABLE_TO_ADAPT_DEVICE); + + device_ = &device; + + PaError err = PaAsio_GetAvailableLatencyValues(device_->index(), &minBufferSize_, &maxBufferSize_, + &preferredBufferSize_, &granularity_); + + if (err != paNoError) + throw PaException(err); + + } + + Device &AsioDeviceAdapter::device() + { + return *device_; + } + + long AsioDeviceAdapter::minBufferSize() const + { + return minBufferSize_; + } + + long AsioDeviceAdapter::maxBufferSize() const + { + return maxBufferSize_; + } + + long AsioDeviceAdapter::preferredBufferSize() const + { + return preferredBufferSize_; + } + + long AsioDeviceAdapter::granularity() const + { + return granularity_; + } + + void AsioDeviceAdapter::showControlPanel(void *systemSpecific) + { + PaError err = PaAsio_ShowControlPanel(device_->index(), systemSpecific); + + if (err != paNoError) + throw PaException(err); + } + + const char *AsioDeviceAdapter::inputChannelName(int channelIndex) const + { + const char *channelName; + PaError err = PaAsio_GetInputChannelName(device_->index(), channelIndex, &channelName); + + if (err != paNoError) + throw PaException(err); + + return channelName; + } + + const char *AsioDeviceAdapter::outputChannelName(int channelIndex) const + { + const char *channelName; + PaError err = PaAsio_GetOutputChannelName(device_->index(), channelIndex, &channelName); + + if (err != paNoError) + throw PaException(err); + + return channelName; + } +} + + diff --git a/bindings/cpp/source/portaudiocpp/BlockingStream.cxx b/bindings/cpp/source/portaudiocpp/BlockingStream.cxx new file mode 100644 index 0000000..c21535f --- /dev/null +++ b/bindings/cpp/source/portaudiocpp/BlockingStream.cxx @@ -0,0 +1,100 @@ +#include "portaudiocpp/BlockingStream.hxx" + +#include "portaudio.h" + +#include "portaudiocpp/StreamParameters.hxx" +#include "portaudiocpp/Exception.hxx" + +namespace portaudio +{ + + // -------------------------------------------------------------------------------------- + + BlockingStream::BlockingStream() + { + } + + BlockingStream::BlockingStream(const StreamParameters ¶meters) + { + open(parameters); + } + + BlockingStream::~BlockingStream() + { + try + { + close(); + } + catch (...) + { + // ignore all errors + } + } + + // -------------------------------------------------------------------------------------- + + void BlockingStream::open(const StreamParameters ¶meters) + { + PaError err = Pa_OpenStream(&stream_, parameters.inputParameters().paStreamParameters(), parameters.outputParameters().paStreamParameters(), + parameters.sampleRate(), parameters.framesPerBuffer(), parameters.flags(), NULL, NULL); + + if (err != paNoError) + { + throw PaException(err); + } + } + + // -------------------------------------------------------------------------------------- + + void BlockingStream::read(void *buffer, unsigned long numFrames) + { + PaError err = Pa_ReadStream(stream_, buffer, numFrames); + + if (err != paNoError) + { + throw PaException(err); + } + } + + void BlockingStream::write(const void *buffer, unsigned long numFrames) + { + PaError err = Pa_WriteStream(stream_, buffer, numFrames); + + if (err != paNoError) + { + throw PaException(err); + } + } + + // -------------------------------------------------------------------------------------- + + signed long BlockingStream::availableReadSize() const + { + signed long avail = Pa_GetStreamReadAvailable(stream_); + + if (avail < 0) + { + throw PaException(avail); + } + + return avail; + } + + signed long BlockingStream::availableWriteSize() const + { + signed long avail = Pa_GetStreamWriteAvailable(stream_); + + if (avail < 0) + { + throw PaException(avail); + } + + return avail; + } + + // -------------------------------------------------------------------------------------- + +} // portaudio + + + diff --git a/bindings/cpp/source/portaudiocpp/CFunCallbackStream.cxx b/bindings/cpp/source/portaudiocpp/CFunCallbackStream.cxx new file mode 100644 index 0000000..fd2fb53 --- /dev/null +++ b/bindings/cpp/source/portaudiocpp/CFunCallbackStream.cxx @@ -0,0 +1,41 @@ +#include "portaudiocpp/CFunCallbackStream.hxx" + +#include "portaudiocpp/StreamParameters.hxx" +#include "portaudiocpp/Exception.hxx" + +namespace portaudio +{ + CFunCallbackStream::CFunCallbackStream() + { + } + + CFunCallbackStream::CFunCallbackStream(const StreamParameters ¶meters, PaStreamCallback *funPtr, void *userData) + { + open(parameters, funPtr, userData); + } + + CFunCallbackStream::~CFunCallbackStream() + { + try + { + close(); + } + catch (...) + { + // ignore all errors + } + } + + // ---------------------------------------------------------------------------------== + + void CFunCallbackStream::open(const StreamParameters ¶meters, PaStreamCallback *funPtr, void *userData) + { + PaError err = Pa_OpenStream(&stream_, parameters.inputParameters().paStreamParameters(), parameters.outputParameters().paStreamParameters(), + parameters.sampleRate(), parameters.framesPerBuffer(), parameters.flags(), funPtr, userData); + + if (err != paNoError) + { + throw PaException(err); + } + } +} diff --git a/bindings/cpp/source/portaudiocpp/CallbackInterface.cxx b/bindings/cpp/source/portaudiocpp/CallbackInterface.cxx new file mode 100644 index 0000000..7e34312 --- /dev/null +++ b/bindings/cpp/source/portaudiocpp/CallbackInterface.cxx @@ -0,0 +1,25 @@ +#include "portaudiocpp/CallbackInterface.hxx" + +namespace portaudio +{ + + namespace impl + { + + ////// + /// Adapts any CallbackInterface object to a C-callable function (ie this function). A + /// pointer to the object should be passed as ``userData'' when setting up the callback. + ////// + int callbackInterfaceToPaCallbackAdapter(const void *inputBuffer, void *outputBuffer, unsigned long numFrames, + const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags, void *userData) + { + CallbackInterface *cb = static_cast(userData); + return cb->paCallbackFun(inputBuffer, outputBuffer, numFrames, timeInfo, statusFlags); + } + + + } // namespace impl + +} // namespace portaudio + + diff --git a/bindings/cpp/source/portaudiocpp/CallbackStream.cxx b/bindings/cpp/source/portaudiocpp/CallbackStream.cxx new file mode 100644 index 0000000..4204dbb --- /dev/null +++ b/bindings/cpp/source/portaudiocpp/CallbackStream.cxx @@ -0,0 +1,20 @@ +#include "portaudiocpp/CallbackStream.hxx" + +namespace portaudio +{ + CallbackStream::CallbackStream() + { + } + + CallbackStream::~CallbackStream() + { + } + + // ----------------------------------------------------------------------------------- + + double CallbackStream::cpuLoad() const + { + return Pa_GetStreamCpuLoad(stream_); + } + +} // namespace portaudio diff --git a/bindings/cpp/source/portaudiocpp/CppFunCallbackStream.cxx b/bindings/cpp/source/portaudiocpp/CppFunCallbackStream.cxx new file mode 100644 index 0000000..9538139 --- /dev/null +++ b/bindings/cpp/source/portaudiocpp/CppFunCallbackStream.cxx @@ -0,0 +1,81 @@ +#include "portaudiocpp/CppFunCallbackStream.hxx" + +#include "portaudiocpp/StreamParameters.hxx" +#include "portaudiocpp/Exception.hxx" + +namespace portaudio +{ + namespace impl + { + ////// + /// Adapts any a C++ callback to a C-callable function (ie this function). A + /// pointer to a struct with the C++ function pointer and the actual user data should be + /// passed as the ``userData'' parameter when setting up the callback. + ////// + int cppCallbackToPaCallbackAdapter(const void *inputBuffer, void *outputBuffer, unsigned long numFrames, + const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags, void *userData) + { + FunCallbackStream::CppToCCallbackData *data = static_cast(userData); + return data->funPtr(inputBuffer, outputBuffer, numFrames, timeInfo, statusFlags, data->userData); + } + } + + // ----------------------------------------------------------------------------------- + + FunCallbackStream::CppToCCallbackData::CppToCCallbackData() + { + } + + FunCallbackStream::CppToCCallbackData::CppToCCallbackData(CallbackFunPtr funPtr, void *userData) : funPtr(funPtr), userData(userData) + { + } + + void FunCallbackStream::CppToCCallbackData::init(CallbackFunPtr funPtr, void *userData) + { + this->funPtr = funPtr; + this->userData = userData; + } + + // ----------------------------------------------------------------------------------- + + FunCallbackStream::FunCallbackStream() + { + } + + FunCallbackStream::FunCallbackStream(const StreamParameters ¶meters, CallbackFunPtr funPtr, void *userData) : adapterData_(funPtr, userData) + { + open(parameters); + } + + FunCallbackStream::~FunCallbackStream() + { + try + { + close(); + } + catch (...) + { + // ignore all errors + } + } + + void FunCallbackStream::open(const StreamParameters ¶meters, CallbackFunPtr funPtr, void *userData) + { + adapterData_.init(funPtr, userData); + open(parameters); + } + + void FunCallbackStream::open(const StreamParameters ¶meters) + { + PaError err = Pa_OpenStream(&stream_, parameters.inputParameters().paStreamParameters(), parameters.outputParameters().paStreamParameters(), + parameters.sampleRate(), parameters.framesPerBuffer(), parameters.flags(), &impl::cppCallbackToPaCallbackAdapter, + static_cast(&adapterData_)); + + if (err != paNoError) + { + throw PaException(err); + } + } + + // ----------------------------------------------------------------------------------- +} diff --git a/bindings/cpp/source/portaudiocpp/Device.cxx b/bindings/cpp/source/portaudiocpp/Device.cxx new file mode 100644 index 0000000..cd7eb7c --- /dev/null +++ b/bindings/cpp/source/portaudiocpp/Device.cxx @@ -0,0 +1,168 @@ +#include "portaudiocpp/Device.hxx" + +#include + +#include "portaudiocpp/HostApi.hxx" +#include "portaudiocpp/System.hxx" +#include "portaudiocpp/Exception.hxx" + +namespace portaudio +{ + + // ------------------------------------------------------------------------------- + + Device::Device(PaDeviceIndex index) : index_(index) + { + if (index == paNoDevice) + info_ = NULL; + else + info_ = Pa_GetDeviceInfo(index); + } + + Device::~Device() + { + } + + PaDeviceIndex Device::index() const + { + return index_; + } + + const char *Device::name() const + { + if (info_ == NULL) + return ""; + + return info_->name; + } + + int Device::maxInputChannels() const + { + if (info_ == NULL) + return 0; + + return info_->maxInputChannels; + } + + int Device::maxOutputChannels() const + { + if (info_ == NULL) + return 0; + + return info_->maxOutputChannels; + } + + PaTime Device::defaultLowInputLatency() const + { + if (info_ == NULL) + return static_cast(0.0); + + return info_->defaultLowInputLatency; + } + + PaTime Device::defaultHighInputLatency() const + { + if (info_ == NULL) + return static_cast(0.0); + + return info_->defaultHighInputLatency; + } + + PaTime Device::defaultLowOutputLatency() const + { + if (info_ == NULL) + return static_cast(0.0); + + return info_->defaultLowOutputLatency; + } + + PaTime Device::defaultHighOutputLatency() const + { + if (info_ == NULL) + return static_cast(0.0); + + return info_->defaultHighOutputLatency; + } + + double Device::defaultSampleRate() const + { + if (info_ == NULL) + return 0.0; + + return info_->defaultSampleRate; + } + + // ------------------------------------------------------------------------------- + + bool Device::isInputOnlyDevice() const + { + return (maxOutputChannels() == 0); + } + + bool Device::isOutputOnlyDevice() const + { + return (maxInputChannels() == 0); + } + + bool Device::isFullDuplexDevice() const + { + return (maxInputChannels() > 0 && maxOutputChannels() > 0); + } + + bool Device::isSystemDefaultInputDevice() const + { + return (System::instance().defaultInputDevice() == *this); + } + + bool Device::isSystemDefaultOutputDevice() const + { + return (System::instance().defaultOutputDevice() == *this); + } + + bool Device::isHostApiDefaultInputDevice() const + { + return (hostApi().defaultInputDevice() == *this); + } + + bool Device::isHostApiDefaultOutputDevice() const + { + return (hostApi().defaultOutputDevice() == *this); + } + + // ------------------------------------------------------------------------------- + + bool Device::operator==(const Device &rhs) + { + return (index_ == rhs.index_); + } + + bool Device::operator!=(const Device &rhs) + { + return !(*this == rhs); + } + + // ------------------------------------------------------------------------------- + + HostApi &Device::hostApi() + { + // NOTE: will cause an exception when called for the null device + if (info_ == NULL) + throw PaException(paInternalError); + + return System::instance().hostApiByIndex(info_->hostApi); + } + + const HostApi &Device::hostApi() const + { + // NOTE; will cause an exception when called for the null device + if (info_ == NULL) + throw PaException(paInternalError); + + return System::instance().hostApiByIndex(info_->hostApi); + } + + // ------------------------------------------------------------------------------- + +} // namespace portaudio + + diff --git a/bindings/cpp/source/portaudiocpp/DirectionSpecificStreamParameters.cxx b/bindings/cpp/source/portaudiocpp/DirectionSpecificStreamParameters.cxx new file mode 100644 index 0000000..d3c307c --- /dev/null +++ b/bindings/cpp/source/portaudiocpp/DirectionSpecificStreamParameters.cxx @@ -0,0 +1,163 @@ +#include "portaudiocpp/DirectionSpecificStreamParameters.hxx" + +#include "portaudiocpp/Device.hxx" + +namespace portaudio +{ + + // ----------------------------------------------------------------------------------- + + ////// + /// Returns a `nil' DirectionSpecificStreamParameters object. This can be used to + /// specify that one direction of a Stream is not required (i.e. when creating + /// a half-duplex Stream). All fields of the null DirectionSpecificStreamParameters + /// object are invalid except for the device and the number of channel, which are set + /// to paNoDevice and 0 respectively. + ////// + DirectionSpecificStreamParameters DirectionSpecificStreamParameters::null() + { + DirectionSpecificStreamParameters tmp; + tmp.paStreamParameters_.device = paNoDevice; + tmp.paStreamParameters_.channelCount = 0; + return tmp; + } + + // ----------------------------------------------------------------------------------- + + ////// + /// Default constructor -- all parameters will be uninitialized. + ////// + DirectionSpecificStreamParameters::DirectionSpecificStreamParameters() + { + } + + ////// + /// Constructor which sets all required fields. + ////// + DirectionSpecificStreamParameters::DirectionSpecificStreamParameters(const Device &device, int numChannels, + SampleDataFormat format, bool interleaved, PaTime suggestedLatency, void *hostApiSpecificStreamInfo) + { + setDevice(device); + setNumChannels(numChannels); + setSampleFormat(format, interleaved); + setSuggestedLatency(suggestedLatency); + setHostApiSpecificStreamInfo(hostApiSpecificStreamInfo); + } + + // ----------------------------------------------------------------------------------- + + void DirectionSpecificStreamParameters::setDevice(const Device &device) + { + paStreamParameters_.device = device.index(); + } + + void DirectionSpecificStreamParameters::setNumChannels(int numChannels) + { + paStreamParameters_.channelCount = numChannels; + } + + void DirectionSpecificStreamParameters::setSampleFormat(SampleDataFormat format, bool interleaved) + { + paStreamParameters_.sampleFormat = static_cast(format); + + if (!interleaved) + paStreamParameters_.sampleFormat |= paNonInterleaved; + } + + void DirectionSpecificStreamParameters::setHostApiSpecificSampleFormat(PaSampleFormat format, bool interleaved) + { + paStreamParameters_.sampleFormat = format; + + paStreamParameters_.sampleFormat |= paCustomFormat; + + if (!interleaved) + paStreamParameters_.sampleFormat |= paNonInterleaved; + } + + void DirectionSpecificStreamParameters::setSuggestedLatency(PaTime latency) + { + paStreamParameters_.suggestedLatency = latency; + } + + void DirectionSpecificStreamParameters::setHostApiSpecificStreamInfo(void *streamInfo) + { + paStreamParameters_.hostApiSpecificStreamInfo = streamInfo; + } + + // ----------------------------------------------------------------------------------- + + PaStreamParameters *DirectionSpecificStreamParameters::paStreamParameters() + { + if (paStreamParameters_.channelCount > 0 && paStreamParameters_.device != paNoDevice) + return &paStreamParameters_; + else + return NULL; + } + + const PaStreamParameters *DirectionSpecificStreamParameters::paStreamParameters() const + { + if (paStreamParameters_.channelCount > 0 && paStreamParameters_.device != paNoDevice) + return &paStreamParameters_; + else + return NULL; + } + + Device &DirectionSpecificStreamParameters::device() const + { + return System::instance().deviceByIndex(paStreamParameters_.device); + } + + int DirectionSpecificStreamParameters::numChannels() const + { + return paStreamParameters_.channelCount; + } + + ////// + /// Returns the (non host api-specific) sample format, without including + /// the paNonInterleaved flag. If the sample format is host api-spefific, + /// INVALID_FORMAT (0) will be returned. + ////// + SampleDataFormat DirectionSpecificStreamParameters::sampleFormat() const + { + if (isSampleFormatHostApiSpecific()) + return INVALID_FORMAT; + else + return static_cast(paStreamParameters_.sampleFormat & ~paNonInterleaved); + } + + bool DirectionSpecificStreamParameters::isSampleFormatInterleaved() const + { + return ((paStreamParameters_.sampleFormat & paNonInterleaved) == 0); + } + + bool DirectionSpecificStreamParameters::isSampleFormatHostApiSpecific() const + { + return ((paStreamParameters_.sampleFormat & paCustomFormat) == 0); + } + + ////// + /// Returns the host api-specific sample format, without including any + /// paCustomFormat or paNonInterleaved flags. Will return 0 if the sample format is + /// not host api-specific. + ////// + PaSampleFormat DirectionSpecificStreamParameters::hostApiSpecificSampleFormat() const + { + if (isSampleFormatHostApiSpecific()) + return paStreamParameters_.sampleFormat & ~paCustomFormat & ~paNonInterleaved; + else + return 0; + } + + PaTime DirectionSpecificStreamParameters::suggestedLatency() const + { + return paStreamParameters_.suggestedLatency; + } + + void *DirectionSpecificStreamParameters::hostApiSpecificStreamInfo() const + { + return paStreamParameters_.hostApiSpecificStreamInfo; + } + + // ----------------------------------------------------------------------------------- + +} // namespace portaudio diff --git a/bindings/cpp/source/portaudiocpp/Exception.cxx b/bindings/cpp/source/portaudiocpp/Exception.cxx new file mode 100644 index 0000000..2e7e701 --- /dev/null +++ b/bindings/cpp/source/portaudiocpp/Exception.cxx @@ -0,0 +1,123 @@ +#include "portaudiocpp/Exception.hxx" + +namespace portaudio +{ + // ----------------------------------------------------------------------------------- + // PaException: + // ----------------------------------------------------------------------------------- + + ////// + /// Wraps a PortAudio error into a PortAudioCpp PaException. + ////// + PaException::PaException(PaError error) : error_(error) + { + } + + // ----------------------------------------------------------------------------------- + + ////// + /// Alias for paErrorText(), to have std::exception compliance. + ////// + const char *PaException::what() const throw() + { + return paErrorText(); + } + + // ----------------------------------------------------------------------------------- + + ////// + /// Returns the PortAudio error code (PaError). + ////// + PaError PaException::paError() const + { + return error_; + } + + ////// + /// Returns the error as a (zero-terminated) text string. + ////// + const char *PaException::paErrorText() const + { + return Pa_GetErrorText(error_); + } + + ////// + /// Returns true is the error is a HostApi error. + ////// + bool PaException::isHostApiError() const + { + return (error_ == paUnanticipatedHostError); + } + + ////// + /// Returns the last HostApi error (which is the current one if + /// isHostApiError() returns true) as an error code. + ////// + long PaException::lastHostApiError() const + { + return Pa_GetLastHostErrorInfo()->errorCode; + } + + ////// + /// Returns the last HostApi error (which is the current one if + /// isHostApiError() returns true) as a (zero-terminated) text + /// string, if it's available. + ////// + const char *PaException::lastHostApiErrorText() const + { + return Pa_GetLastHostErrorInfo()->errorText; + } + + // ----------------------------------------------------------------------------------- + + bool PaException::operator==(const PaException &rhs) const + { + return (error_ == rhs.error_); + } + + bool PaException::operator!=(const PaException &rhs) const + { + return !(*this == rhs); + } + + // ----------------------------------------------------------------------------------- + // PaCppException: + // ----------------------------------------------------------------------------------- + + PaCppException::PaCppException(ExceptionSpecifier specifier) : specifier_(specifier) + { + } + + const char *PaCppException::what() const throw() + { + switch (specifier_) + { + case UNABLE_TO_ADAPT_DEVICE: + { + return "Unable to adapt the given device to the specified host api specific device extension"; + } + } + + return "Unknown exception"; + } + + PaCppException::ExceptionSpecifier PaCppException::specifier() const + { + return specifier_; + } + + bool PaCppException::operator==(const PaCppException &rhs) const + { + return (specifier_ == rhs.specifier_); + } + + bool PaCppException::operator!=(const PaCppException &rhs) const + { + return !(*this == rhs); + } + + // ----------------------------------------------------------------------------------- + +} // namespace portaudio + + diff --git a/bindings/cpp/source/portaudiocpp/HostApi.cxx b/bindings/cpp/source/portaudiocpp/HostApi.cxx new file mode 100644 index 0000000..c6ae019 --- /dev/null +++ b/bindings/cpp/source/portaudiocpp/HostApi.cxx @@ -0,0 +1,121 @@ +#include "portaudiocpp/HostApi.hxx" + +#include "portaudiocpp/System.hxx" +#include "portaudiocpp/Device.hxx" +#include "portaudiocpp/SystemDeviceIterator.hxx" +#include "portaudiocpp/Exception.hxx" + +namespace portaudio +{ + + // ----------------------------------------------------------------------------------- + + HostApi::HostApi(PaHostApiIndex index) : devices_(NULL) + { + try + { + info_ = Pa_GetHostApiInfo(index); + + // Create and populate devices array: + int numDevices = deviceCount(); + + devices_ = new Device*[numDevices]; + + for (int i = 0; i < numDevices; ++i) + { + PaDeviceIndex deviceIndex = Pa_HostApiDeviceIndexToDeviceIndex(index, i); + + if (deviceIndex < 0) + { + throw PaException(deviceIndex); + } + + devices_[i] = &System::instance().deviceByIndex(deviceIndex); + } + } + catch (const std::exception &e) + { + // Delete any (partially) constructed objects (deconstructor isn't called): + delete[] devices_; // devices_ is either NULL or valid + + // Re-throw exception: + throw e; + } + } + + HostApi::~HostApi() + { + // Destroy devices array: + delete[] devices_; + } + + // ----------------------------------------------------------------------------------- + + PaHostApiTypeId HostApi::typeId() const + { + return info_->type; + } + + PaHostApiIndex HostApi::index() const + { + PaHostApiIndex index = Pa_HostApiTypeIdToHostApiIndex(typeId()); + + if (index < 0) + throw PaException(index); + + return index; + } + + const char *HostApi::name() const + { + return info_->name; + } + + int HostApi::deviceCount() const + { + return info_->deviceCount; + } + + // ----------------------------------------------------------------------------------- + + HostApi::DeviceIterator HostApi::devicesBegin() + { + DeviceIterator tmp; + tmp.ptr_ = &devices_[0]; // begin (first element) + return tmp; + } + + HostApi::DeviceIterator HostApi::devicesEnd() + { + DeviceIterator tmp; + tmp.ptr_ = &devices_[deviceCount()]; // end (one past last element) + return tmp; + } + + // ----------------------------------------------------------------------------------- + + Device &HostApi::defaultInputDevice() const + { + return System::instance().deviceByIndex(info_->defaultInputDevice); + } + + Device &HostApi::defaultOutputDevice() const + { + return System::instance().deviceByIndex(info_->defaultOutputDevice); + } + + // ----------------------------------------------------------------------------------- + + bool HostApi::operator==(const HostApi &rhs) const + { + return (typeId() == rhs.typeId()); + } + + bool HostApi::operator!=(const HostApi &rhs) const + { + return !(*this == rhs); + } + + // ----------------------------------------------------------------------------------- + +} // namespace portaudio diff --git a/bindings/cpp/source/portaudiocpp/InterfaceCallbackStream.cxx b/bindings/cpp/source/portaudiocpp/InterfaceCallbackStream.cxx new file mode 100644 index 0000000..09e02de --- /dev/null +++ b/bindings/cpp/source/portaudiocpp/InterfaceCallbackStream.cxx @@ -0,0 +1,45 @@ +#include "portaudiocpp/InterfaceCallbackStream.hxx" + +#include "portaudiocpp/StreamParameters.hxx" +#include "portaudiocpp/Exception.hxx" +#include "portaudiocpp/CallbackInterface.hxx" + +namespace portaudio +{ + + // ---------------------------------------------------------------------------------== + + InterfaceCallbackStream::InterfaceCallbackStream() + { + } + + InterfaceCallbackStream::InterfaceCallbackStream(const StreamParameters ¶meters, CallbackInterface &instance) + { + open(parameters, instance); + } + + InterfaceCallbackStream::~InterfaceCallbackStream() + { + try + { + close(); + } + catch (...) + { + // ignore all errors + } + } + + // ---------------------------------------------------------------------------------== + + void InterfaceCallbackStream::open(const StreamParameters ¶meters, CallbackInterface &instance) + { + PaError err = Pa_OpenStream(&stream_, parameters.inputParameters().paStreamParameters(), parameters.outputParameters().paStreamParameters(), + parameters.sampleRate(), parameters.framesPerBuffer(), parameters.flags(), &impl::callbackInterfaceToPaCallbackAdapter, static_cast(&instance)); + + if (err != paNoError) + { + throw PaException(err); + } + } +} diff --git a/bindings/cpp/source/portaudiocpp/MemFunCallbackStream.cxx b/bindings/cpp/source/portaudiocpp/MemFunCallbackStream.cxx new file mode 100644 index 0000000..113fe5a --- /dev/null +++ b/bindings/cpp/source/portaudiocpp/MemFunCallbackStream.cxx @@ -0,0 +1,4 @@ +#include "portaudiocpp/MemFunCallbackStream.hxx" + +// (... template class ...) + diff --git a/bindings/cpp/source/portaudiocpp/Stream.cxx b/bindings/cpp/source/portaudiocpp/Stream.cxx new file mode 100644 index 0000000..3b21f09 --- /dev/null +++ b/bindings/cpp/source/portaudiocpp/Stream.cxx @@ -0,0 +1,195 @@ +#include "portaudiocpp/Stream.hxx" + +#include + +#include "portaudiocpp/Exception.hxx" +#include "portaudiocpp/System.hxx" + +namespace portaudio +{ + + // ----------------------------------------------------------------------------------- + + Stream::Stream() : stream_(NULL) + { + } + + Stream::~Stream() + { + // (can't call close here, + // the derived class should atleast call + // close() in it's deconstructor) + } + + // ----------------------------------------------------------------------------------- + + ////// + /// Closes the Stream if it's open, else does nothing. + ////// + void Stream::close() + { + if (isOpen() && System::exists()) + { + PaError err = Pa_CloseStream(stream_); + stream_ = NULL; + + if (err != paNoError) + throw PaException(err); + } + } + + ////// + /// Returns true if the Stream is open. + ////// + bool Stream::isOpen() const + { + return (stream_ != NULL); + } + + // ----------------------------------------------------------------------------------- + + void Stream::setStreamFinishedCallback(PaStreamFinishedCallback *callback) + { + PaError err = Pa_SetStreamFinishedCallback(stream_, callback); + + if (err != paNoError) + throw PaException(err); + } + + // ----------------------------------------------------------------------------------- + + void Stream::start() + { + PaError err = Pa_StartStream(stream_); + + if (err != paNoError) + throw PaException(err); + } + + void Stream::stop() + { + PaError err = Pa_StopStream(stream_); + + if (err != paNoError) + throw PaException(err); + } + + void Stream::abort() + { + PaError err = Pa_AbortStream(stream_); + + if (err != paNoError) + throw PaException(err); + } + + bool Stream::isStopped() const + { + PaError ret = Pa_IsStreamStopped(stream_); + + if (ret < 0) + throw PaException(ret); + + return (ret == 1); + } + + bool Stream::isActive() const + { + PaError ret = Pa_IsStreamActive(stream_); + + if (ret < 0) + throw PaException(ret); + + return (ret == 1); + } + + // ----------------------------------------------------------------------------------- + + ////// + /// Returns the best known input latency for the Stream. This value may differ from the + /// suggested input latency set in the StreamParameters. Includes all sources of + /// latency known to PortAudio such as internal buffering, and Host API reported latency. + /// Doesn't include any estimates of unknown latency. + ////// + PaTime Stream::inputLatency() const + { + const PaStreamInfo *info = Pa_GetStreamInfo(stream_); + if (info == NULL) + { + throw PaException(paInternalError); + return PaTime(0.0); + } + + return info->inputLatency; + } + + ////// + /// Returns the best known output latency for the Stream. This value may differ from the + /// suggested output latency set in the StreamParameters. Includes all sources of + /// latency known to PortAudio such as internal buffering, and Host API reported latency. + /// Doesn't include any estimates of unknown latency. + ////// + PaTime Stream::outputLatency() const + { + const PaStreamInfo *info = Pa_GetStreamInfo(stream_); + if (info == NULL) + { + throw PaException(paInternalError); + return PaTime(0.0); + } + + return info->outputLatency; + } + + ////// + /// Returns the sample rate of the Stream. Usually this will be the + /// best known estimate of the used sample rate. For instance when opening a + /// Stream setting 44100.0 Hz in the StreamParameters, the actual sample + /// rate might be something like 44103.2 Hz (due to imperfections in the + /// sound card hardware). + ////// + double Stream::sampleRate() const + { + const PaStreamInfo *info = Pa_GetStreamInfo(stream_); + if (info == NULL) + { + throw PaException(paInternalError); + return 0.0; + } + + return info->sampleRate; + } + + // ----------------------------------------------------------------------------------- + + PaTime Stream::time() const + { + return Pa_GetStreamTime(stream_); + } + + // ----------------------------------------------------------------------------------- + + ////// + /// Accessor (const) for PortAudio PaStream pointer, useful for interfacing with + /// PortAudio add-ons such as PortMixer for instance. Normally accessing this + /// pointer should not be needed as PortAudioCpp aims to provide all of PortAudio's + /// functionality. + ////// + const PaStream *Stream::paStream() const + { + return stream_; + } + + ////// + /// Accessor (non-const) for PortAudio PaStream pointer, useful for interfacing with + /// PortAudio add-ons such as PortMixer for instance. Normally accessing this + /// pointer should not be needed as PortAudioCpp aims to provide all of PortAudio's + /// functionality. + ////// + PaStream *Stream::paStream() + { + return stream_; + } + + // ----------------------------------------------------------------------------------- + +} // namespace portaudio diff --git a/bindings/cpp/source/portaudiocpp/StreamParameters.cxx b/bindings/cpp/source/portaudiocpp/StreamParameters.cxx new file mode 100644 index 0000000..670873b --- /dev/null +++ b/bindings/cpp/source/portaudiocpp/StreamParameters.cxx @@ -0,0 +1,165 @@ +#include "portaudiocpp/StreamParameters.hxx" + +#include + +#include "portaudiocpp/Device.hxx" + +namespace portaudio +{ + // ----------------------------------------------------------------------------------- + + ////// + /// Default constructor; does nothing. + ////// + StreamParameters::StreamParameters() + { + } + + ////// + /// Sets up the all parameters needed to open either a half-duplex or full-duplex Stream. + /// + /// @param inputParameters The parameters for the input direction of the to-be opened + /// Stream or DirectionSpecificStreamParameters::null() for an output-only Stream. + /// @param outputParameters The parameters for the output direction of the to-be opened + /// Stream or DirectionSpecificStreamParameters::null() for an input-only Stream. + /// @param sampleRate The to-be opened Stream's sample rate in Hz. + /// @param framesPerBuffer The number of frames per buffer for a CallbackStream, or + /// the preferred buffer granularity for a BlockingStream. + /// @param flags The flags for the to-be opened Stream; default paNoFlag. + ////// + StreamParameters::StreamParameters(const DirectionSpecificStreamParameters &inputParameters, + const DirectionSpecificStreamParameters &outputParameters, double sampleRate, unsigned long framesPerBuffer, + PaStreamFlags flags) : inputParameters_(inputParameters), outputParameters_(outputParameters), + sampleRate_(sampleRate), framesPerBuffer_(framesPerBuffer), flags_(flags) + { + } + + // ----------------------------------------------------------------------------------- + + ////// + /// Sets the requested sample rate. If this sample rate isn't supported by the hardware, the + /// Stream will fail to open. The real-life sample rate used might differ slightly due to + /// imperfections in the sound card hardware; use Stream::sampleRate() to retreive the + /// best known estimate for this value. + ////// + void StreamParameters::setSampleRate(double sampleRate) + { + sampleRate_ = sampleRate; + } + + ////// + /// Either the number of frames per buffer for a CallbackStream, or + /// the preferred buffer granularity for a BlockingStream. See PortAudio + /// documentation. + ////// + void StreamParameters::setFramesPerBuffer(unsigned long framesPerBuffer) + { + framesPerBuffer_ = framesPerBuffer; + } + + ////// + /// Sets the specified flag or does nothing when the flag is already set. Doesn't + /// `unset' any previously existing flags (use clearFlags() for that). + ////// + void StreamParameters::setFlag(PaStreamFlags flag) + { + flags_ |= flag; + } + + ////// + /// Unsets the specified flag or does nothing if the flag isn't set. Doesn't affect + /// any other flags. + ////// + void StreamParameters::unsetFlag(PaStreamFlags flag) + { + flags_ &= ~flag; + } + + ////// + /// Clears or `unsets' all set flags. + ////// + void StreamParameters::clearFlags() + { + flags_ = paNoFlag; + } + + // ----------------------------------------------------------------------------------- + + void StreamParameters::setInputParameters(const DirectionSpecificStreamParameters ¶meters) + { + inputParameters_ = parameters; + } + + void StreamParameters::setOutputParameters(const DirectionSpecificStreamParameters ¶meters) + { + outputParameters_ = parameters; + } + + // ----------------------------------------------------------------------------------- + + bool StreamParameters::isSupported() const + { + return (Pa_IsFormatSupported(inputParameters_.paStreamParameters(), + outputParameters_.paStreamParameters(), sampleRate_) == paFormatIsSupported); + } + + // ----------------------------------------------------------------------------------- + + double StreamParameters::sampleRate() const + { + return sampleRate_; + } + + unsigned long StreamParameters::framesPerBuffer() const + { + return framesPerBuffer_; + } + + ////// + /// Returns all currently set flags as a binary combined + /// integer value (PaStreamFlags). Use isFlagSet() to + /// avoid dealing with the bitmasks. + ////// + PaStreamFlags StreamParameters::flags() const + { + return flags_; + } + + ////// + /// Returns true if the specified flag is currently set + /// or false if it isn't. + ////// + bool StreamParameters::isFlagSet(PaStreamFlags flag) const + { + return ((flags_ & flag) != 0); + } + + // ----------------------------------------------------------------------------------- + + DirectionSpecificStreamParameters &StreamParameters::inputParameters() + { + return inputParameters_; + } + + const DirectionSpecificStreamParameters &StreamParameters::inputParameters() const + { + return inputParameters_; + } + + DirectionSpecificStreamParameters &StreamParameters::outputParameters() + { + return outputParameters_; + } + + const DirectionSpecificStreamParameters &StreamParameters::outputParameters() const + { + return outputParameters_; + } + + // ----------------------------------------------------------------------------------- +} // namespace portaudio + + + + + diff --git a/bindings/cpp/source/portaudiocpp/System.cxx b/bindings/cpp/source/portaudiocpp/System.cxx new file mode 100644 index 0000000..692c7a1 --- /dev/null +++ b/bindings/cpp/source/portaudiocpp/System.cxx @@ -0,0 +1,308 @@ +#include "portaudiocpp/System.hxx" + +#include +#include + +#include "portaudiocpp/HostApi.hxx" +#include "portaudiocpp/Device.hxx" +#include "portaudiocpp/Stream.hxx" +#include "portaudiocpp/Exception.hxx" +#include "portaudiocpp/SystemHostApiIterator.hxx" +#include "portaudiocpp/SystemDeviceIterator.hxx" + +namespace portaudio +{ + // ----------------------------------------------------------------------------------- + + // Static members: + System *System::instance_ = NULL; + int System::initCount_ = 0; + HostApi **System::hostApis_ = NULL; + Device **System::devices_ = NULL; + Device *System::nullDevice_ = NULL; + + // ----------------------------------------------------------------------------------- + + int System::version() + { + return Pa_GetVersion(); + } + + const char *System::versionText() + { + return Pa_GetVersionText(); + } + + void System::initialize() + { + ++initCount_; + + if (initCount_ == 1) + { + // Create singleton: + assert(instance_ == NULL); + instance_ = new System(); + + // Initialize the PortAudio system: + { + PaError err = Pa_Initialize(); + + if (err != paNoError) + throw PaException(err); + } + + // Create and populate device array: + { + int numDevices = instance().deviceCount(); + + devices_ = new Device*[numDevices]; + + for (int i = 0; i < numDevices; ++i) + devices_[i] = new Device(i); + } + + // Create and populate host api array: + { + int numHostApis = instance().hostApiCount(); + + hostApis_ = new HostApi*[numHostApis]; + + for (int i = 0; i < numHostApis; ++i) + hostApis_[i] = new HostApi(i); + } + + // Create null device: + nullDevice_ = new Device(paNoDevice); + } + } + + void System::terminate() + { + PaError err = paNoError; + + if (initCount_ == 1) + { + // Destroy null device: + delete nullDevice_; + + // Destroy host api array: + { + if (hostApis_ != NULL) + { + int numHostApis = instance().hostApiCount(); + + for (int i = 0; i < numHostApis; ++i) + delete hostApis_[i]; + + delete[] hostApis_; + hostApis_ = NULL; + } + } + + // Destroy device array: + { + if (devices_ != NULL) + { + int numDevices = instance().deviceCount(); + + for (int i = 0; i < numDevices; ++i) + delete devices_[i]; + + delete[] devices_; + devices_ = NULL; + } + } + + // Terminate the PortAudio system: + assert(instance_ != NULL); + err = Pa_Terminate(); + + // Destroy singleton: + delete instance_; + instance_ = NULL; + } + + if (initCount_ > 0) + --initCount_; + + if (err != paNoError) + throw PaException(err); + } + + + System &System::instance() + { + assert(exists()); + + return *instance_; + } + + bool System::exists() + { + return (instance_ != NULL); + } + + // ----------------------------------------------------------------------------------- + + System::HostApiIterator System::hostApisBegin() + { + System::HostApiIterator tmp; + tmp.ptr_ = &hostApis_[0]; // begin (first element) + return tmp; + } + + System::HostApiIterator System::hostApisEnd() + { + int count = hostApiCount(); + + System::HostApiIterator tmp; + tmp.ptr_ = &hostApis_[count]; // end (one past last element) + return tmp; + } + + HostApi &System::defaultHostApi() + { + PaHostApiIndex defaultHostApi = Pa_GetDefaultHostApi(); + + if (defaultHostApi < 0) + throw PaException(defaultHostApi); + + return *hostApis_[defaultHostApi]; + } + + HostApi &System::hostApiByTypeId(PaHostApiTypeId type) + { + PaHostApiIndex index = Pa_HostApiTypeIdToHostApiIndex(type); + + if (index < 0) + throw PaException(index); + + return *hostApis_[index]; + } + + HostApi &System::hostApiByIndex(PaHostApiIndex index) + { + if (index < 0 || index >= hostApiCount()) + throw PaException(paInternalError); + + return *hostApis_[index]; + } + + int System::hostApiCount() + { + PaHostApiIndex count = Pa_GetHostApiCount(); + + if (count < 0) + throw PaException(count); + + return count; + } + + // ----------------------------------------------------------------------------------- + + System::DeviceIterator System::devicesBegin() + { + DeviceIterator tmp; + tmp.ptr_ = &devices_[0]; + + return tmp; + } + + System::DeviceIterator System::devicesEnd() + { + int count = deviceCount(); + + DeviceIterator tmp; + tmp.ptr_ = &devices_[count]; + + return tmp; + } + + ////// + /// Returns the System's default input Device, or the null Device if none + /// was available. + ////// + Device &System::defaultInputDevice() + { + PaDeviceIndex index = Pa_GetDefaultInputDevice(); + return deviceByIndex(index); + } + + ////// + /// Returns the System's default output Device, or the null Device if none + /// was available. + ////// + Device &System::defaultOutputDevice() + { + PaDeviceIndex index = Pa_GetDefaultOutputDevice(); + return deviceByIndex(index); + } + + ////// + /// Returns the Device for the given index. + /// Will throw a paInternalError equivalent PaException if the given index + /// is out of range. + ////// + Device &System::deviceByIndex(PaDeviceIndex index) + { + if (index < -1 || index >= deviceCount()) + { + throw PaException(paInternalError); + } + + if (index == -1) + return System::instance().nullDevice(); + + return *devices_[index]; + } + + int System::deviceCount() + { + PaDeviceIndex count = Pa_GetDeviceCount(); + + if (count < 0) + throw PaException(count); + + return count; + } + + Device &System::nullDevice() + { + return *nullDevice_; + } + + // ----------------------------------------------------------------------------------- + + void System::sleep(long msec) + { + Pa_Sleep(msec); + } + + int System::sizeOfSample(PaSampleFormat format) + { + PaError err = Pa_GetSampleSize(format); + if (err < 0) + { + throw PaException(err); + return 0; + } + + return err; + } + + // ----------------------------------------------------------------------------------- + + System::System() + { + // (left blank intentionally) + } + + System::~System() + { + // (left blank intentionally) + } + + // ----------------------------------------------------------------------------------- + +} // namespace portaudio + diff --git a/bindings/cpp/source/portaudiocpp/SystemDeviceIterator.cxx b/bindings/cpp/source/portaudiocpp/SystemDeviceIterator.cxx new file mode 100644 index 0000000..c3c00f7 --- /dev/null +++ b/bindings/cpp/source/portaudiocpp/SystemDeviceIterator.cxx @@ -0,0 +1,60 @@ +#include "portaudiocpp/SystemDeviceIterator.hxx" + +namespace portaudio +{ + // ----------------------------------------------------------------------------------- + + Device &System::DeviceIterator::operator*() const + { + return **ptr_; + } + + Device *System::DeviceIterator::operator->() const + { + return &**this; + } + + // ----------------------------------------------------------------------------------- + + System::DeviceIterator &System::DeviceIterator::operator++() + { + ++ptr_; + return *this; + } + + System::DeviceIterator System::DeviceIterator::operator++(int) + { + System::DeviceIterator prev = *this; + ++*this; + return prev; + } + + System::DeviceIterator &System::DeviceIterator::operator--() + { + --ptr_; + return *this; + } + + System::DeviceIterator System::DeviceIterator::operator--(int) + { + System::DeviceIterator prev = *this; + --*this; + return prev; + } + + // ----------------------------------------------------------------------------------- + + bool System::DeviceIterator::operator==(const System::DeviceIterator &rhs) + { + return (ptr_ == rhs.ptr_); + } + + bool System::DeviceIterator::operator!=(const System::DeviceIterator &rhs) + { + return !(*this == rhs); + } + + // ----------------------------------------------------------------------------------- +} // namespace portaudio + + diff --git a/bindings/cpp/source/portaudiocpp/SystemHostApiIterator.cxx b/bindings/cpp/source/portaudiocpp/SystemHostApiIterator.cxx new file mode 100644 index 0000000..f34ca40 --- /dev/null +++ b/bindings/cpp/source/portaudiocpp/SystemHostApiIterator.cxx @@ -0,0 +1,59 @@ +#include "portaudiocpp/SystemHostApiIterator.hxx" + +namespace portaudio +{ + // ----------------------------------------------------------------------------------- + + HostApi &System::HostApiIterator::operator*() const + { + return **ptr_; + } + + HostApi *System::HostApiIterator::operator->() const + { + return &**this; + } + + // ----------------------------------------------------------------------------------- + + System::HostApiIterator &System::HostApiIterator::operator++() + { + ++ptr_; + return *this; + } + + System::HostApiIterator System::HostApiIterator::operator++(int) + { + System::HostApiIterator prev = *this; + ++*this; + return prev; + } + + System::HostApiIterator &System::HostApiIterator::operator--() + { + --ptr_; + return *this; + } + + System::HostApiIterator System::HostApiIterator::operator--(int) + { + System::HostApiIterator prev = *this; + --*this; + return prev; + } + + // ----------------------------------------------------------------------------------- + + bool System::HostApiIterator::operator==(const System::HostApiIterator &rhs) + { + return (ptr_ == rhs.ptr_); + } + + bool System::HostApiIterator::operator!=(const System::HostApiIterator &rhs) + { + return !(*this == rhs); + } + + // ----------------------------------------------------------------------------------- +} // namespace portaudio + diff --git a/build/dev-cpp/Makefile-dll b/build/dev-cpp/Makefile-dll new file mode 100644 index 0000000..856af63 --- /dev/null +++ b/build/dev-cpp/Makefile-dll @@ -0,0 +1,78 @@ +# Project: portaudio-dll +# Makefile created by Dev-C++ 4.9.8.2 + +CPP = g++.exe +CC = gcc.exe +WINDRES = windres.exe +RES = +OBJ = ./pa_skeleton.o ./pa_stream.o ./pa_trace.o ./pa_allocation.o ./pa_converters.o ./pa_cpuload.o ./pa_dither.o ./pa_front.o ./pa_process.o ./pa_asio.o ./pa_win_util.o ./pa_win_hostapis.o ./pa_win_ds.o ./dsound_wrapper.o ./pa_win_wmme.o ./iasiothiscallresolver.o $(RES) +LINKOBJ = ./pa_skeleton.o ./pa_stream.o ./pa_trace.o ./pa_allocation.o ./pa_converters.o ./pa_cpuload.o ./pa_dither.o ./pa_front.o ./pa_process.o ./pa_asio.o ./pa_win_util.o ./pa_win_hostapis.o ./pa_win_ds.o ./dsound_wrapper.o ./pa_win_wmme.o ./iasiothiscallresolver.o $(RES) +LIBS = -L"C:/Dev-CPP/lib" -fmessage-length=0 --no-export-all-symbols --add-stdcall-alias ../../../asiosdk2/asiosdk2.a -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -luuid -lodbc32 -lodbccp32 -lwinmm -O3 -s +INCS = -I"C:/Dev-CPP/include" -I"../../../asiosdk2" -I"../../../asiosdk2/common" -I"../../../asiosdk2/host" -I"../../../asiosdk2/host/pc" -I"../../pa_common" +CXXINCS = -I"C:/Dev-CPP/include/c++" -I"C:/Dev-CPP/include/c++/mingw32" -I"C:/Dev-CPP/include/c++/backward" -I"C:/Dev-CPP/include" -I"../../../asiosdk2" -I"../../../asiosdk2/common" -I"../../../asiosdk2/host" -I"../../../asiosdk2/host/pc" -I"../../pa_common" +BIN = portaudio-dll.dll +CXXFLAGS = $(CXXINCS)-O3 -fmessage-length=0 -Wall +CFLAGS = $(INCS)-DBUILDING_DLL=1 -O3 -fmessage-length=0 -Wall + +.PHONY: all all-before all-after clean clean-custom + +all: all-before portaudio-dll.dll all-after + + +clean: clean-custom + rm -f $(OBJ) $(BIN) + +DLLWRAP=dllwrap.exe +DEFFILE=libportaudio-dll.def +STATICLIB=libportaudio-dll.a + +$(BIN): $(LINKOBJ) + $(DLLWRAP) --output-def $(DEFFILE) --driver-name c++ --implib $(STATICLIB) $(LINKOBJ) $(LIBS) -o $(BIN) + +./pa_skeleton.o: ../../pa_common/pa_skeleton.c + $(CPP) -c ../../pa_common/pa_skeleton.c -o ./pa_skeleton.o $(CXXFLAGS) + +./pa_stream.o: ../../pa_common/pa_stream.c + $(CPP) -c ../../pa_common/pa_stream.c -o ./pa_stream.o $(CXXFLAGS) + +./pa_trace.o: ../../pa_common/pa_trace.c + $(CPP) -c ../../pa_common/pa_trace.c -o ./pa_trace.o $(CXXFLAGS) + +./pa_allocation.o: ../../pa_common/pa_allocation.c + $(CPP) -c ../../pa_common/pa_allocation.c -o ./pa_allocation.o $(CXXFLAGS) + +./pa_converters.o: ../../pa_common/pa_converters.c + $(CPP) -c ../../pa_common/pa_converters.c -o ./pa_converters.o $(CXXFLAGS) + +./pa_cpuload.o: ../../pa_common/pa_cpuload.c + $(CPP) -c ../../pa_common/pa_cpuload.c -o ./pa_cpuload.o $(CXXFLAGS) + +./pa_dither.o: ../../pa_common/pa_dither.c + $(CPP) -c ../../pa_common/pa_dither.c -o ./pa_dither.o $(CXXFLAGS) + +./pa_front.o: ../../pa_common/pa_front.c + $(CPP) -c ../../pa_common/pa_front.c -o ./pa_front.o $(CXXFLAGS) + +./pa_process.o: ../../pa_common/pa_process.c + $(CPP) -c ../../pa_common/pa_process.c -o ./pa_process.o $(CXXFLAGS) + +./pa_asio.o: ../../pa_asio/pa_asio.cpp + $(CPP) -c ../../pa_asio/pa_asio.cpp -o ./pa_asio.o $(CXXFLAGS) + +./pa_win_util.o: ../pa_win_util.c + $(CPP) -c ../pa_win_util.c -o ./pa_win_util.o $(CXXFLAGS) + +./pa_win_hostapis.o: ../pa_win_hostapis.c + $(CPP) -c ../pa_win_hostapis.c -o ./pa_win_hostapis.o $(CXXFLAGS) + +./pa_win_ds.o: ../../pa_win_ds/pa_win_ds.c + $(CPP) -c ../../pa_win_ds/pa_win_ds.c -o ./pa_win_ds.o $(CXXFLAGS) + +./dsound_wrapper.o: ../../pa_win_ds/dsound_wrapper.c + $(CPP) -c ../../pa_win_ds/dsound_wrapper.c -o ./dsound_wrapper.o $(CXXFLAGS) + +./pa_win_wmme.o: ../../pa_win_wmme/pa_win_wmme.c + $(CPP) -c ../../pa_win_wmme/pa_win_wmme.c -o ./pa_win_wmme.o $(CXXFLAGS) + +./iasiothiscallresolver.o: ../../pa_asio/iasiothiscallresolver.cpp + $(CPP) -c ../../pa_asio/iasiothiscallresolver.cpp -o ./iasiothiscallresolver.o $(CXXFLAGS) diff --git a/build/dev-cpp/Makefile-static b/build/dev-cpp/Makefile-static new file mode 100644 index 0000000..2a1647d --- /dev/null +++ b/build/dev-cpp/Makefile-static @@ -0,0 +1,75 @@ +# Project: portaudio-static +# Makefile created by Dev-C++ 4.9.8.2 + +CPP = g++.exe +CC = gcc.exe +WINDRES = windres.exe +RES = +OBJ = ./pa_skeleton.o ./pa_stream.o ./pa_trace.o ./pa_allocation.o ./pa_converters.o ./pa_cpuload.o ./pa_dither.o ./pa_front.o ./pa_process.o ./pa_asio.o ./pa_win_util.o ./pa_win_hostapis.o ./pa_win_ds.o ./dsound_wrapper.o ./pa_win_wmme.o ./iasiothiscallresolver.o $(RES) +LINKOBJ = ./pa_skeleton.o ./pa_stream.o ./pa_trace.o ./pa_allocation.o ./pa_converters.o ./pa_cpuload.o ./pa_dither.o ./pa_front.o ./pa_process.o ./pa_asio.o ./pa_win_util.o ./pa_win_hostapis.o ./pa_win_ds.o ./dsound_wrapper.o ./pa_win_wmme.o ./iasiothiscallresolver.o $(RES) +LIBS = -L"C:/Dev-CPP/lib" -fmessage-length=0 -O3 -s +INCS = -I"C:/Dev-CPP/include" -I"../../../asiosdk2" -I"../../../asiosdk2/common" -I"../../../asiosdk2/host" -I"../../../asiosdk2/host/pc" -I"../../pa_common" +CXXINCS = -I"C:/Dev-CPP/include/c++" -I"C:/Dev-CPP/include/c++/mingw32" -I"C:/Dev-CPP/include/c++/backward" -I"C:/Dev-CPP/include" -I"../../../asiosdk2" -I"../../../asiosdk2/common" -I"../../../asiosdk2/host" -I"../../../asiosdk2/host/pc" -I"../../pa_common" +BIN = portaudio-static.a +CXXFLAGS = $(CXXINCS)-O3 -fmessage-length=0 -Wall +CFLAGS = $(INCS)-O3 -fmessage-length=0 -Wall + +.PHONY: all all-before all-after clean clean-custom + +all: all-before portaudio-static.a all-after + + +clean: clean-custom + rm -f $(OBJ) $(BIN) + +$(BIN): $(LINKOBJ) + ar r $(BIN) $(LINKOBJ) + ranlib $(BIN) + +./pa_skeleton.o: ../../pa_common/pa_skeleton.c + $(CPP) -c ../../pa_common/pa_skeleton.c -o ./pa_skeleton.o $(CXXFLAGS) + +./pa_stream.o: ../../pa_common/pa_stream.c + $(CPP) -c ../../pa_common/pa_stream.c -o ./pa_stream.o $(CXXFLAGS) + +./pa_trace.o: ../../pa_common/pa_trace.c + $(CPP) -c ../../pa_common/pa_trace.c -o ./pa_trace.o $(CXXFLAGS) + +./pa_allocation.o: ../../pa_common/pa_allocation.c + $(CPP) -c ../../pa_common/pa_allocation.c -o ./pa_allocation.o $(CXXFLAGS) + +./pa_converters.o: ../../pa_common/pa_converters.c + $(CPP) -c ../../pa_common/pa_converters.c -o ./pa_converters.o $(CXXFLAGS) + +./pa_cpuload.o: ../../pa_common/pa_cpuload.c + $(CPP) -c ../../pa_common/pa_cpuload.c -o ./pa_cpuload.o $(CXXFLAGS) + +./pa_dither.o: ../../pa_common/pa_dither.c + $(CPP) -c ../../pa_common/pa_dither.c -o ./pa_dither.o $(CXXFLAGS) + +./pa_front.o: ../../pa_common/pa_front.c + $(CPP) -c ../../pa_common/pa_front.c -o ./pa_front.o $(CXXFLAGS) + +./pa_process.o: ../../pa_common/pa_process.c + $(CPP) -c ../../pa_common/pa_process.c -o ./pa_process.o $(CXXFLAGS) + +./pa_asio.o: ../../pa_asio/pa_asio.cpp + $(CPP) -c ../../pa_asio/pa_asio.cpp -o ./pa_asio.o $(CXXFLAGS) + +./pa_win_util.o: ../pa_win_util.c + $(CPP) -c ../pa_win_util.c -o ./pa_win_util.o $(CXXFLAGS) + +./pa_win_hostapis.o: ../pa_win_hostapis.c + $(CPP) -c ../pa_win_hostapis.c -o ./pa_win_hostapis.o $(CXXFLAGS) + +./pa_win_ds.o: ../../pa_win_ds/pa_win_ds.c + $(CPP) -c ../../pa_win_ds/pa_win_ds.c -o ./pa_win_ds.o $(CXXFLAGS) + +./dsound_wrapper.o: ../../pa_win_ds/dsound_wrapper.c + $(CPP) -c ../../pa_win_ds/dsound_wrapper.c -o ./dsound_wrapper.o $(CXXFLAGS) + +./pa_win_wmme.o: ../../pa_win_wmme/pa_win_wmme.c + $(CPP) -c ../../pa_win_wmme/pa_win_wmme.c -o ./pa_win_wmme.o $(CXXFLAGS) + +./iasiothiscallresolver.o: ../../pa_asio/iasiothiscallresolver.cpp + $(CPP) -c ../../pa_asio/iasiothiscallresolver.cpp -o ./iasiothiscallresolver.o $(CXXFLAGS) diff --git a/build/dev-cpp/portaudio-dll.dev b/build/dev-cpp/portaudio-dll.dev new file mode 100644 index 0000000..086e109 --- /dev/null +++ b/build/dev-cpp/portaudio-dll.dev @@ -0,0 +1,209 @@ +[Project] +FileName=portaudio-dll.dev +Name=portaudio-dll +UnitCount=16 +Type=3 +Ver=1 +ObjFiles= +Includes=..\..\..\asiosdk2;..\..\..\asiosdk2\common;..\..\..\asiosdk2\host;..\..\..\asiosdk2\host\pc;..\..\pa_common +Libs= +PrivateResource= +ResourceIncludes= +MakeIncludes= +Compiler=-DBUILDING_DLL=1_@@_-O3_@@_ +CppCompiler=-O3_@@_ +Linker=--no-export-all-symbols --add-stdcall-alias_@@_../../../asiosdk2/asiosdk2.a_@@_-lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -luuid -lodbc32 -lodbccp32 -lwinmm_@@_-O3 -s_@@_ +IsCpp=1 +Icon= +ExeOutput=. +ObjectOutput=. +OverrideOutput=0 +OverrideOutputName=portaudio.a +HostApplication= +Folders= +CommandLine= +IncludeVersionInfo=0 +SupportXPThemes=0 +CompilerSet=0 +CompilerSettings=0000000000000000000 +UseCustomMakefile=0 +CustomMakefile= + +[Unit1] +FileName=..\..\pa_common\pa_skeleton.c +CompileCpp=1 +Folder=portaudio +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd=$(CC) -c pa_skeleton.c -o ./pa_skeleton.o $(CFLAGS) + +[Unit2] +FileName=..\..\pa_common\pa_stream.c +CompileCpp=1 +Folder=portaudio +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd=$(CC) -c pa_stream.c -o ./pa_stream.o $(CFLAGS) + +[Unit3] +FileName=..\..\pa_common\pa_trace.c +CompileCpp=1 +Folder=portaudio +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd=$(CC) -c pa_trace.c -o ./pa_trace.o $(CFLAGS) + +[Unit4] +FileName=..\..\pa_common\pa_allocation.c +CompileCpp=1 +Folder=portaudio +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd=$(CC) -c pa_allocation.c -o ./pa_allocation.o $(CFLAGS) + +[Unit5] +FileName=..\..\pa_common\pa_converters.c +CompileCpp=1 +Folder=portaudio +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd=$(CC) -c pa_converters.c -o ./pa_converters.o $(CFLAGS) + +[Unit6] +FileName=..\..\pa_common\pa_cpuload.c +CompileCpp=1 +Folder=portaudio +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd=$(CC) -c pa_cpuload.c -o ./pa_cpuload.o $(CFLAGS) + +[Unit7] +FileName=..\..\pa_common\pa_dither.c +CompileCpp=1 +Folder=portaudio +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd=$(CC) -c pa_dither.c -o ./pa_dither.o $(CFLAGS) + +[Unit8] +FileName=..\..\pa_common\pa_front.c +CompileCpp=1 +Folder=portaudio +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd=$(CC) -c pa_front.c -o ./pa_front.o $(CFLAGS) + +[Unit9] +FileName=..\..\pa_common\pa_process.c +CompileCpp=1 +Folder=portaudio +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd=$(CC) -c pa_process.c -o ./pa_process.o $(CFLAGS) + +[VersionInfo] +Major=0 +Minor=1 +Release=1 +Build=1 +LanguageID=1033 +CharsetID=1252 +CompanyName= +FileVersion= +FileDescription=Developed using the Dev-C++ IDE +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion= +AutoIncBuildNr=0 + +[Unit10] +FileName=..\..\pa_asio\pa_asio.cpp +CompileCpp=1 +Folder=portaudio +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd=$(CPP) -c pa_asio.cpp -o ./pa_asio.o $(CXXFLAGS) + +[Unit11] +FileName=..\pa_win_util.c +CompileCpp=1 +Folder=portaudio +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd=$(CC) -c pa_win_util.c -o ./pa_win_util.o $(CFLAGS) + +[Unit12] +FileName=..\pa_win_hostapis.c +CompileCpp=1 +Folder=portaudio +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd=$(CC) -c pa_win_hostapis.c -o ./pa_win_hostapis.o $(CFLAGS) + +[Unit13] +FileName=..\..\pa_win_ds\pa_win_ds.c +CompileCpp=1 +Folder=portaudio +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd=$(CC) -c pa_win_ds.c -o ./pa_win_ds.o $(CFLAGS) + +[Unit14] +FileName=..\..\pa_win_ds\dsound_wrapper.c +CompileCpp=1 +Folder=portaudio +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd=$(CC) -c dsound_wrapper.c -o ./dsound_wrapper.o $(CFLAGS) + +[Unit15] +FileName=..\..\pa_win_wmme\pa_win_wmme.c +CompileCpp=1 +Folder=portaudio +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd=$(CC) -c pa_win_wmme.c -o ./pa_win_wmme.o $(CFLAGS) + +[Unit16] +FileName=..\..\pa_asio\iasiothiscallresolver.cpp +CompileCpp=1 +Folder=portaudio +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + diff --git a/build/dev-cpp/portaudio-static.dev b/build/dev-cpp/portaudio-static.dev new file mode 100644 index 0000000..2aae584 --- /dev/null +++ b/build/dev-cpp/portaudio-static.dev @@ -0,0 +1,209 @@ +[Project] +FileName=portaudio-static.dev +Name=portaudio-static +UnitCount=16 +Type=2 +Ver=1 +ObjFiles= +Includes=..\..\..\asiosdk2;..\..\..\asiosdk2\common;..\..\..\asiosdk2\host;..\..\..\asiosdk2\host\pc;..\..\pa_common +Libs= +PrivateResource= +ResourceIncludes= +MakeIncludes= +Compiler=-O3_@@_ +CppCompiler=-O3_@@_ +Linker=-O3 -s_@@_ +IsCpp=1 +Icon= +ExeOutput=. +ObjectOutput=. +OverrideOutput=0 +OverrideOutputName=portaudio.a +HostApplication= +Folders= +CommandLine= +IncludeVersionInfo=0 +SupportXPThemes=0 +CompilerSet=0 +CompilerSettings=0000000000000000000 +UseCustomMakefile=0 +CustomMakefile= + +[Unit1] +FileName=..\..\pa_common\pa_skeleton.c +CompileCpp=1 +Folder=portaudio +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd=$(CC) -c pa_skeleton.c -o ./pa_skeleton.o $(CFLAGS) + +[Unit2] +FileName=..\..\pa_common\pa_stream.c +CompileCpp=1 +Folder=portaudio +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd=$(CC) -c pa_stream.c -o ./pa_stream.o $(CFLAGS) + +[Unit3] +FileName=..\..\pa_common\pa_trace.c +CompileCpp=1 +Folder=portaudio +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd=$(CC) -c pa_trace.c -o ./pa_trace.o $(CFLAGS) + +[Unit4] +FileName=..\..\pa_common\pa_allocation.c +CompileCpp=1 +Folder=portaudio +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd=$(CC) -c pa_allocation.c -o ./pa_allocation.o $(CFLAGS) + +[Unit5] +FileName=..\..\pa_common\pa_converters.c +CompileCpp=1 +Folder=portaudio +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd=$(CC) -c pa_converters.c -o ./pa_converters.o $(CFLAGS) + +[Unit6] +FileName=..\..\pa_common\pa_cpuload.c +CompileCpp=1 +Folder=portaudio +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd=$(CC) -c pa_cpuload.c -o ./pa_cpuload.o $(CFLAGS) + +[Unit7] +FileName=..\..\pa_common\pa_dither.c +CompileCpp=1 +Folder=portaudio +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd=$(CC) -c pa_dither.c -o ./pa_dither.o $(CFLAGS) + +[Unit8] +FileName=..\..\pa_common\pa_front.c +CompileCpp=1 +Folder=portaudio +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd=$(CC) -c pa_front.c -o ./pa_front.o $(CFLAGS) + +[Unit9] +FileName=..\..\pa_common\pa_process.c +CompileCpp=1 +Folder=portaudio +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd=$(CC) -c pa_process.c -o ./pa_process.o $(CFLAGS) + +[VersionInfo] +Major=0 +Minor=1 +Release=1 +Build=1 +LanguageID=1033 +CharsetID=1252 +CompanyName= +FileVersion= +FileDescription=Developed using the Dev-C++ IDE +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion= +AutoIncBuildNr=0 + +[Unit10] +FileName=..\..\pa_asio\pa_asio.cpp +CompileCpp=1 +Folder=portaudio +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd=$(CPP) -c pa_asio.cpp -o ./pa_asio.o $(CXXFLAGS) + +[Unit11] +FileName=..\..\pa_win\pa_win_util.c +CompileCpp=1 +Folder=portaudio +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd=$(CC) -c pa_win_util.c -o ./pa_win_util.o $(CFLAGS) + +[Unit12] +FileName=..\..\pa_win\pa_win_hostapis.c +CompileCpp=1 +Folder=portaudio +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd=$(CC) -c pa_win_hostapis.c -o ./pa_win_hostapis.o $(CFLAGS) + +[Unit13] +FileName=..\..\pa_win_ds\pa_win_ds.c +CompileCpp=1 +Folder=portaudio +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd=$(CC) -c pa_win_ds.c -o ./pa_win_ds.o $(CFLAGS) + +[Unit14] +FileName=..\..\pa_win_ds\dsound_wrapper.c +CompileCpp=1 +Folder=portaudio +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd=$(CC) -c dsound_wrapper.c -o ./dsound_wrapper.o $(CFLAGS) + +[Unit15] +FileName=..\..\pa_win_wmme\pa_win_wmme.c +CompileCpp=1 +Folder=portaudio +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd=$(CC) -c pa_win_wmme.c -o ./pa_win_wmme.o $(CFLAGS) + +[Unit16] +FileName=..\..\pa_asio\iasiothiscallresolver.cpp +CompileCpp=1 +Folder=portaudio +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + diff --git a/build/dev-cpp/readme.txt b/build/dev-cpp/readme.txt new file mode 100644 index 0000000..07108a7 --- /dev/null +++ b/build/dev-cpp/readme.txt @@ -0,0 +1,23 @@ +From: "Peter L Jones" +Sent: Wednesday, September 17, 2003 5:18 AM +Subject: Dev-C++ project files + +I attach two project files intended for portaudio/pa_win/dev-cpp (i.e. in +parallel with the msvc directory), if you want them. One is for a static +library build and one for a DLL. I've used the static library (in building +a single monolithic DLL) but I can't guarantee the DLL version will build a +working library (I think it's mostly there, though!). + +I also attach the resulting makefiles, which may be of use to other MinGW +users. + +They're rooted in the directory given above and drop their object and +library files in the same place. They assume the asiosdk2 files are in the +same directory as portaudio/ in a sub-directory called asiosdk2/. Oh! The +DLL is built against a static asiosdk2.a library... maybe not the best way +to do it... I ought to figure out how to link against a "home made" dll in +Dev-C++, I guess ;-) + +Cheers, + +-- Peter diff --git a/build/msvc/portaudio.def b/build/msvc/portaudio.def new file mode 100644 index 0000000..08929d6 --- /dev/null +++ b/build/msvc/portaudio.def @@ -0,0 +1,43 @@ +EXPORTS + +; +Pa_GetVersion @1 +Pa_GetVersionText @2 +Pa_GetErrorText @3 +Pa_Initialize @4 +Pa_Terminate @5 +Pa_GetHostApiCount @6 +Pa_GetDefaultHostApi @7 +Pa_GetHostApiInfo @8 +Pa_HostApiTypeIdToHostApiIndex @9 +Pa_HostApiDeviceIndexToDeviceIndex @10 +Pa_GetLastHostErrorInfo @11 +Pa_GetDeviceCount @12 +Pa_GetDefaultInputDevice @13 +Pa_GetDefaultOutputDevice @14 +Pa_GetDeviceInfo @15 +Pa_IsFormatSupported @16 +Pa_OpenStream @17 +Pa_OpenDefaultStream @18 +Pa_CloseStream @19 +Pa_SetStreamFinishedCallback @20 +Pa_StartStream @21 +Pa_StopStream @22 +Pa_AbortStream @23 +Pa_IsStreamStopped @24 +Pa_IsStreamActive @25 +Pa_GetStreamInfo @26 +Pa_GetStreamTime @27 +Pa_GetStreamCpuLoad @28 +Pa_ReadStream @29 +Pa_WriteStream @30 +Pa_GetStreamReadAvailable @31 +Pa_GetStreamWriteAvailable @32 +Pa_GetSampleSize @33 +Pa_Sleep @34 +PaAsio_GetAvailableLatencyValues @50 +PaAsio_ShowControlPanel @51 +PaUtil_InitializeX86PlainConverters @52 +PaAsio_GetInputChannelName @53 +PaAsio_GetOutputChannelName @54 +PaUtil_SetDebugPrintFunction @55 \ No newline at end of file diff --git a/build/msvc/portaudio.dsp b/build/msvc/portaudio.dsp new file mode 100644 index 0000000..bb2ce45 --- /dev/null +++ b/build/msvc/portaudio.dsp @@ -0,0 +1,269 @@ +# Microsoft Developer Studio Project File - Name="portaudio" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=portaudio - Win32 Release +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "portaudio.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "portaudio.mak" CFG="portaudio - Win32 Release" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "portaudio - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "portaudio - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "portaudio - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release_x86" +# PROP BASE Intermediate_Dir "Release_x86" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release_x86" +# PROP Intermediate_Dir "Release_x86" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /FD /c +# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\src\common" /I "..\..\include" /I ".\\" /I "..\..\src\os\win" /D "WIN32" /D "NDEBUG" /D "_USRDLL" /D "PA_ENABLE_DEBUG_OUTPUT" /D "_CRT_SECURE_NO_DEPRECATE" /D "PAWIN_USE_WDMKS_DEVICE_INFO" /FD /c +# SUBTRACT CPP /YX /Yc /Yu +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib setupapi.lib /nologo /dll /machine:I386 /out:"./Release_x86/portaudio_x86.dll" + +!ELSEIF "$(CFG)" == "portaudio - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug_x86" +# PROP BASE Intermediate_Dir "Debug_x86" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug_x86" +# PROP Intermediate_Dir "Debug_x86" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /FD /GZ /c +# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\src\common" /I "..\..\include" /I ".\\" /I "..\..\src\os\win" /D "WIN32" /D "_DEBUG" /D "_USRDLL" /D "PA_ENABLE_DEBUG_OUTPUT" /D "_CRT_SECURE_NO_DEPRECATE" /D "PAWIN_USE_WDMKS_DEVICE_INFO" /FD /GZ /c +# SUBTRACT CPP /YX /Yc /Yu +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib setupapi.lib /nologo /dll /debug /machine:I386 /out:"./Debug_x86/portaudio_x86.dll" /pdbtype:sept + +!ENDIF + +# Begin Target + +# Name "portaudio - Win32 Release" +# Name "portaudio - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Group "common" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\common\pa_allocation.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\common\pa_converters.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\common\pa_cpuload.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\common\pa_debugprint.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\common\pa_dither.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\common\pa_front.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\common\pa_process.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\common\pa_ringbuffer.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\common\pa_skeleton.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\common\pa_stream.c +# End Source File +# End Group +# Begin Group "hostapi" + +# PROP Default_Filter "" +# Begin Group "ASIO" + +# PROP Default_Filter "" +# Begin Group "ASIOSDK" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\hostapi\asio\ASIOSDK\common\asio.cpp +# ADD CPP /I "..\..\src\hostapi\asio\ASIOSDK\host" /I "..\..\src\hostapi\asio\ASIOSDK\host\pc" /I "..\..\src\hostapi\asio\ASIOSDK\common" +# End Source File +# Begin Source File + +SOURCE=..\..\src\hostapi\asio\ASIOSDK\host\ASIOConvertSamples.cpp +# ADD CPP /I "..\..\src\hostapi\asio\ASIOSDK\host" /I "..\..\src\hostapi\asio\ASIOSDK\host\pc" /I "..\..\src\hostapi\asio\ASIOSDK\common" +# End Source File +# Begin Source File + +SOURCE=..\..\src\hostapi\asio\ASIOSDK\host\asiodrivers.cpp +# ADD CPP /I "..\..\src\hostapi\asio\ASIOSDK\host" /I "..\..\src\hostapi\asio\ASIOSDK\host\pc" /I "..\..\src\hostapi\asio\ASIOSDK\common" +# End Source File +# Begin Source File + +SOURCE=..\..\src\hostapi\asio\ASIOSDK\host\pc\asiolist.cpp +# ADD CPP /I "..\..\src\hostapi\asio\ASIOSDK\host" /I "..\..\src\hostapi\asio\ASIOSDK\host\pc" /I "..\..\src\hostapi\asio\ASIOSDK\common" +# End Source File +# Begin Source File + +SOURCE=..\..\src\hostapi\asio\ASIOSDK\common\combase.cpp +# ADD CPP /I "..\..\src\hostapi\asio\ASIOSDK\host" /I "..\..\src\hostapi\asio\ASIOSDK\host\pc" /I "..\..\src\hostapi\asio\ASIOSDK\common" +# End Source File +# Begin Source File + +SOURCE=..\..\src\hostapi\asio\ASIOSDK\common\debugmessage.cpp +# ADD CPP /I "..\..\src\hostapi\asio\ASIOSDK\host" /I "..\..\src\hostapi\asio\ASIOSDK\host\pc" /I "..\..\src\hostapi\asio\ASIOSDK\common" +# End Source File +# Begin Source File + +SOURCE=..\..\src\hostapi\asio\ASIOSDK\common\register.cpp +# ADD CPP /I "..\..\src\hostapi\asio\ASIOSDK\host" /I "..\..\src\hostapi\asio\ASIOSDK\host\pc" /I "..\..\src\hostapi\asio\ASIOSDK\common" +# End Source File +# End Group +# Begin Source File + +SOURCE=..\..\src\hostapi\asio\pa_asio.cpp +# ADD CPP /I "..\..\src\hostapi\asio\ASIOSDK\host" /I "..\..\src\hostapi\asio\ASIOSDK\host\pc" /I "..\..\src\hostapi\asio\ASIOSDK\common" +# End Source File +# End Group +# Begin Group "dsound" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\hostapi\dsound\pa_win_ds.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\hostapi\dsound\pa_win_ds_dynlink.c +# End Source File +# End Group +# Begin Group "wmme" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\hostapi\wmme\pa_win_wmme.c +# End Source File +# End Group +# Begin Group "wasapi" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\hostapi\wasapi\pa_win_wasapi.cpp +# End Source File +# End Group +# Begin Group "wdm-ks" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\hostapi\wdmks\pa_win_wdmks.c +# End Source File +# End Group +# End Group +# Begin Group "os" + +# PROP Default_Filter "" +# Begin Group "win" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\os\win\pa_win_hostapis.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\os\win\pa_win_util.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\os\win\pa_win_waveformat.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\os\win\pa_win_wdmks_utils.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\os\win\pa_x86_plain_converters.c +# End Source File +# End Group +# End Group +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# Begin Source File + +SOURCE=.\portaudio.def +# End Source File +# End Group +# End Target +# End Project diff --git a/build/msvc/portaudio.dsw b/build/msvc/portaudio.dsw new file mode 100644 index 0000000..6af88f4 --- /dev/null +++ b/build/msvc/portaudio.dsw @@ -0,0 +1,29 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "portaudio"=".\portaudio.dsp" - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/build/msvc/portaudio.sln b/build/msvc/portaudio.sln new file mode 100644 index 0000000..d4cc5dc --- /dev/null +++ b/build/msvc/portaudio.sln @@ -0,0 +1,26 @@ + +Microsoft Visual Studio Solution File, Format Version 9.00 +# Visual Studio 2005 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "portaudio", "portaudio.vcproj", "{0A18A071-125E-442F-AFF7-A3F68ABECF99}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|Win32.ActiveCfg = Debug|Win32 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|Win32.Build.0 = Debug|Win32 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64.ActiveCfg = Debug|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64.Build.0 = Debug|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|Win32.ActiveCfg = Release|Win32 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|Win32.Build.0 = Release|Win32 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64.ActiveCfg = Release|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/build/msvc/portaudio.vcproj b/build/msvc/portaudio.vcproj new file mode 100644 index 0000000..759f934 --- /dev/null +++ b/build/msvc/portaudio.vcproj @@ -0,0 +1,1512 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/msvc/readme.txt b/build/msvc/readme.txt new file mode 100644 index 0000000..5364797 --- /dev/null +++ b/build/msvc/readme.txt @@ -0,0 +1,80 @@ +Hello + + This is a small list of steps in order to build portaudio +(Currently v19-devel) into a VC6 DLL and lib file. +This DLL contains all 3 current win32 PA APIS (MM/DS/ASIO) + +1)Copy the source dirs that comes with the ASIO SDK inside src\hostapi\asio\ASIOSDK + so you should now have example: + + portaudio19svn\src\hostapi\asio\ASIOSDK\common + portaudio19svn\src\hostapi\asio\ASIOSDK\host + portaudio19svn\src\hostapi\asio\ASIOSDK\host\sample + portaudio19svn\src\hostapi\asio\ASIOSDK\host\pc + portaudio19svn\src\hostapi\asio\ASIOSDK\host\mac (not needed) + + You dont need "driver" + +2) + *If you have Visual Studio 6.0*, please make sure you have it updated with the latest (and final) + microsoft libraries for it, namely: + + Service pack 5: + Latest known URL: + http://msdn2.microsoft.com/en-us/vstudio/aa718363.aspx + Yes there EXISTS a service pack 6 , but the processor pack (below) isnt compatible with it. + + Processor Pack(only works with above SP5) + Latest known URL: + http://msdn2.microsoft.com/en-us/vstudio/Aa718349.aspx + This isnt absolutely required for portaudio, but if you plan on using SSE intrinsics and similar things. + Up to you to decide upon Service pack 5 or 6 depending on your need for intrinsics. + + Platform SDK (Feb 2003) : + Latest known URL: + http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm + (This will allow your code base to be x64 friendly, with correct defines + for LONG_PTR and such) + NOTE A) Yes you have to use IE activex scripts to install that - wont work in Firefox, you + may have to temporarily change tyour default browser(aint life unfair) + NOTE B) Dont forget to hit "Register PSDK Directories with Visual Studio". + you can make sure its right in VC6 if you open tools/options/directories/include files and you see SDK 2003 as the FIRST entry + (it must be the same for libs) + + DirectX 9.0 SDK Update - (Summer 2003) + Latest known URL: + http://www.microsoft.com/downloads/details.aspx?familyid=9216652f-51e0-402e-b7b5-feb68d00f298&displaylang=en + Again register the links in VC6, and check inside vc6 if headers are in second place right after SDk 2003 + + *If you have 7.0(VC.NET/2001) or 7.1(VC.2003) * + then I suggest you open portaudio.dsp (and convert if needed) + + *If you have Visual Studio 2005*, I suggest you open the portaudio.sln file + which contains 4 configurations. Win32/x64 in both Release and Debug variants + + hit compile and hope for the best. + +3)Now in any project, in which you require portaudio, + you can just link with portaudio_x86.lib, (or _x64) and of course include the + relevant headers + (portaudio.h, and/or pa_asio.h , pa_x86_plain_converters.h) See (*) + +4) Your new exe should now use portaudio_xXX.dll. + + +Have fun! + +(*): you may want to add/remove some DLL entry points. +Right now those 6 entries are _not_ from portaudio.h + +(from portaudio.def) +(...) +PaAsio_GetAvailableLatencyValues @50 +PaAsio_ShowControlPanel @51 +PaUtil_InitializeX86PlainConverters @52 +PaAsio_GetInputChannelName @53 +PaAsio_GetOutputChannelName @54 +PaUtil_SetLogPrintFunction @55 + +----- +David Viens, davidv@plogue.com \ No newline at end of file diff --git a/build/scons/SConscript_common b/build/scons/SConscript_common new file mode 100644 index 0000000..eaf4e3c --- /dev/null +++ b/build/scons/SConscript_common @@ -0,0 +1,30 @@ +import os.path, sys + +class ConfigurationError(Exception): + def __init__(self, reason): + Exception.__init__(self, "Configuration failed: %s" % reason) + +env = Environment() + +# sunos, aix, hpux, irix, sunos appear to be platforms known by SCons, assuming they're POSIX compliant +Posix = ("linux", "darwin", "sunos", "aix", "hpux", "irix", "sunos", "netbsd") +Windows = ("win32", "cygwin") + +if env["PLATFORM"] == "posix": + if sys.platform[:5] == "linux": + Platform = "linux" + elif sys.platform[:6] == "netbsd": + Platform = "netbsd" + else: + raise ConfigurationError("Unknown platform %s" % sys.platform) +else: + if not env["PLATFORM"] in ("win32", "cygwin") + Posix: + raise ConfigurationError("Unknown platform %s" % env["PLATFORM"]) + Platform = env["PLATFORM"] + +# Inspired by the versioning scheme followed by Qt, it seems sensible enough. There are three components: major, minor +# and micro. Major changes with each subtraction from the API (backward-incompatible, i.e. V19 vs. V18), minor changes +# with each addition to the API (backward-compatible), micro changes with each revision of the source code. +ApiVer = "2.0.0" + +Export("Platform", "Posix", "ConfigurationError", "ApiVer") diff --git a/build/scons/SConscript_opts b/build/scons/SConscript_opts new file mode 100644 index 0000000..6a4b0a9 --- /dev/null +++ b/build/scons/SConscript_opts @@ -0,0 +1,91 @@ +import os.path, sys + +def _PackageOption(pkgName, default=1): + """ Allow user to choose whether a package should be used if available. This results in a commandline option use, + where Pkgname is the name of the package with a capitalized first letter. + @param pkgName: Name of package. + @param default: The default value for this option ("yes"/"no"). + """ + return BoolOption("use%s" % pkgName[0].upper() + pkgName[1:], "use %s if available" % (pkgName), default) + +def _BoolOption(opt, explanation, default=1): + """ Allow user to enable/disable a certain option. This results in a commandline option enable