From c1e1d067d2f6b0fe184eae7ebf1fcb7b2d5ff5c7 Mon Sep 17 00:00:00 2001 From: bjornroche Date: Thu, 20 Mar 2008 14:24:39 +0000 Subject: [PATCH 1/1] moved trunk into place --- COMPILING.DARWIN | 1 + Doxyfile | 239 + LICENSE.txt | 81 + Makefile.in | 214 + README.txt | 98 + 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 0 -> 41362 bytes config.sub | Bin 0 -> 29973 bytes configure | Bin 0 -> 739337 bytes configure.in | 362 + 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 + fixdir.bat | 19 + fixfile.bat | 7 + 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 | 105 + install-sh | Bin 0 -> 5598 bytes ltmain.sh | 6971 ++++++++++++++++ missing | Bin 0 -> 11014 bytes pablio/README.txt | 45 + pablio/pablio.c | 314 + pablio/pablio.def | 35 + pablio/pablio.h | 116 + pablio/test_rw.c | 105 + pablio/test_rw_echo.c | 129 + pablio/test_w_saw.c | 114 + pablio/test_w_saw8.c | 112 + 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 + src/common/pa_trace.c | 97 + 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 + src/hostapi/asio/Callback_adaptation_.pdf | Bin 0 -> 50527 bytes src/hostapi/asio/Pa_ASIO.pdf | Bin 0 -> 50778 bytes 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 ++++ src/hostapi/oss/low_latency_tip.txt | Bin 0 -> 3111 bytes src/hostapi/oss/pa_unix_oss.c | 1985 +++++ src/hostapi/oss/recplay.c | 114 + 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 +++ src/os/win/pa_x86_plain_converters.h | 60 + test/README.txt | 60 + test/debug_convert.c | 138 + test/debug_dither_calc.c | 62 + test/debug_dual.c | 190 + test/debug_multi_in.c | 186 + test/debug_multi_out.c | 151 + test/debug_record.c | 346 + test/debug_record_reuse.c | 358 + test/debug_sine.c | 199 + test/debug_sine_amp.c | 164 + test/debug_sine_formats.c | 209 + test/debug_srate.c | 272 + test/debug_test1.c | 114 + test/pa_devs.c | 238 + test/pa_fuzz.c | 183 + test/pa_minlat.c | 194 + test/paqa_devs.c | 355 + test/paqa_errs.c | 400 + test/patest1.c | 208 + test/patest_buffer.c | 206 + test/patest_callbackstop.c | 252 + test/patest_clip.c | 190 + test/patest_converters.c | 392 + test/patest_dither.c | 190 + test/patest_dsound_surround.c | 205 + test/patest_hang.c | 164 + test/patest_in_overflow.c | 236 + test/patest_latency.c | 193 + test/patest_leftright.c | 185 + test/patest_longsine.c | 151 + test/patest_many.c | 210 + test/patest_maxsines.c | 216 + 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 + test/patest_pink.c | 280 + test/patest_prime.c | 234 + test/patest_read_record.c | 244 + test/patest_read_write_wire.c | 215 + test/patest_record.c | 352 + test/patest_ringmix.c | 86 + test/patest_saw.c | 133 + test/patest_sine.c | 176 + test/patest_sine8.c | 225 + test/patest_sine_channelmaps.c | 190 + test/patest_sine_formats.c | 203 + test/patest_sine_time.c | 219 + test/patest_start_stop.c | 172 + test/patest_stop.c | 324 + test/patest_stop_playout.c | 439 + test/patest_sync.c | 271 + test/patest_timing.c | 173 + test/patest_toomanysines.c | 185 + test/patest_two_rates.c | 178 + test/patest_underflow.c | 162 + 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 | 8 + 260 files changed, 96276 insertions(+) create mode 100644 COMPILING.DARWIN create mode 100644 Doxyfile create mode 100644 LICENSE.txt create mode 100644 Makefile.in create mode 100644 README.txt 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 config.guess create mode 100755 config.sub create mode 100755 configure create mode 100644 configure.in 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 create mode 100755 fixdir.bat create mode 100755 fixfile.bat 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 index.html create mode 100755 install-sh create mode 100644 ltmain.sh create mode 100755 missing create mode 100644 pablio/README.txt create mode 100644 pablio/pablio.c create mode 100644 pablio/pablio.def create mode 100644 pablio/pablio.h create mode 100644 pablio/test_rw.c create mode 100644 pablio/test_rw_echo.c create mode 100644 pablio/test_w_saw.c create mode 100644 pablio/test_w_saw8.c 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 create mode 100644 src/common/pa_trace.c 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 create mode 100644 src/hostapi/asio/Callback_adaptation_.pdf create mode 100644 src/hostapi/asio/Pa_ASIO.pdf 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 create mode 100644 src/hostapi/oss/low_latency_tip.txt create mode 100644 src/hostapi/oss/pa_unix_oss.c create mode 100644 src/hostapi/oss/recplay.c 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 create mode 100644 src/os/win/pa_x86_plain_converters.h create mode 100644 test/README.txt create mode 100644 test/debug_convert.c create mode 100644 test/debug_dither_calc.c create mode 100644 test/debug_dual.c create mode 100644 test/debug_multi_in.c create mode 100644 test/debug_multi_out.c create mode 100644 test/debug_record.c create mode 100644 test/debug_record_reuse.c create mode 100644 test/debug_sine.c create mode 100644 test/debug_sine_amp.c create mode 100644 test/debug_sine_formats.c create mode 100644 test/debug_srate.c create mode 100644 test/debug_test1.c create mode 100644 test/pa_devs.c create mode 100644 test/pa_fuzz.c create mode 100644 test/pa_minlat.c create mode 100644 test/paqa_devs.c create mode 100644 test/paqa_errs.c create mode 100644 test/patest1.c create mode 100644 test/patest_buffer.c create mode 100644 test/patest_callbackstop.c create mode 100644 test/patest_clip.c create mode 100644 test/patest_converters.c create mode 100644 test/patest_dither.c create mode 100644 test/patest_dsound_surround.c create mode 100644 test/patest_hang.c create mode 100644 test/patest_in_overflow.c create mode 100644 test/patest_latency.c create mode 100644 test/patest_leftright.c create mode 100644 test/patest_longsine.c create mode 100644 test/patest_many.c create mode 100644 test/patest_maxsines.c 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 create mode 100644 test/patest_pink.c create mode 100644 test/patest_prime.c create mode 100644 test/patest_read_record.c create mode 100644 test/patest_read_write_wire.c create mode 100644 test/patest_record.c create mode 100644 test/patest_ringmix.c create mode 100644 test/patest_saw.c create mode 100644 test/patest_sine.c create mode 100644 test/patest_sine8.c create mode 100644 test/patest_sine_channelmaps.c create mode 100644 test/patest_sine_formats.c create mode 100644 test/patest_sine_time.c create mode 100644 test/patest_start_stop.c create mode 100644 test/patest_stop.c create mode 100644 test/patest_stop_playout.c create mode 100644 test/patest_sync.c create mode 100644 test/patest_timing.c create mode 100644 test/patest_toomanysines.c create mode 100644 test/patest_two_rates.c create mode 100644 test/patest_underflow.c 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 create mode 100644 testcvs/changeme.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 new file mode 100644 index 0000000..e0ac4e8 --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,81 @@ +Portable header file to contain: +>>>>> +/* + * PortAudio Portable Real-Time Audio Library + * PortAudio API Header File + * Latest version available at: http://www.portaudio.com + * + * 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. + */ +<<<<< + + +Implementation files to contain: +>>>>> +/* + * PortAudio Portable Real-Time Audio Library + * Latest version at: http://www.portaudio.com + * Implementation + * Copyright (c) 1999-2000 + * + * 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. + */ +<<<<< \ No newline at end of file diff --git a/Makefile.in b/Makefile.in new file mode 100644 index 0000000..dca537d --- /dev/null +++ b/Makefile.in @@ -0,0 +1,214 @@ +# +# 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 = -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.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 = \ + 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_stop_playout \ + bin/patest_toomanysines \ + bin/patest_underflow \ + 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." + @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 $(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: + $(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) + $(CC) -c $(CFLAGS) $< -o $@ + +%.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 + +uninstall-recursive: + if test -n "$(SUBDIRS)" ; then for dir in "$(SUBDIRS)"; do $(MAKE) -C $$dir uninstall; done ; fi diff --git a/README.txt b/README.txt new file mode 100644 index 0000000..2113827 --- /dev/null +++ b/README.txt @@ -0,0 +1,98 @@ +README for PortAudio + +/* + * PortAudio Portable Real-Time Audio Library + * Latest Version at: http://www.portaudio.com + * + * 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 + * (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. + */ + + +PortAudio is a portable audio I/O library designed for cross-platform +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: + 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 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://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: + 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) + + +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 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 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 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 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